diff --git a/DEPS b/DEPS
index e40b8800..1cfa208 100644
--- a/DEPS
+++ b/DEPS
@@ -167,11 +167,11 @@
   # 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': '7fd7a8aef06c2f97eaa64a87e33e2a2245acb4e7',
+  'skia_revision': '6c2b2bb02402f48d06536db177c1e9612759d97b',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
-  'v8_revision': 'd372b6c1137a069dcbff58166df8c46240d06aee',
+  'v8_revision': 'f505d9d8ac44d693d227abd6eddf48e04712a557',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling swarming_client
   # and whatever else without interference from each other.
@@ -179,7 +179,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': '32bee0fd038e1c3a5d5660aff8080b433b11e1fd',
+  'angle_revision': '6950a87f905453f8626aa6932463fb9be6528628',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling SwiftShader
   # and whatever else without interference from each other.
@@ -230,7 +230,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': '383a4e801d419cda7368487d17cd2388face3144',
+  'catapult_revision': '284b45288355d9b698867dff1667dd2267b30279',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
@@ -862,7 +862,7 @@
 
   # Build tools for Chrome OS. Note: This depends on third_party/pyelftools.
   'src/third_party/chromite': {
-      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + 'f1f2e8606a69ac3dd9d5add3fd38425debbdc5c5',
+      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '88c57b498266573fa404657944b256e97ec259f3',
       'condition': 'checkout_linux',
   },
 
@@ -887,7 +887,7 @@
   },
 
   'src/third_party/depot_tools':
-    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '6a1d77869d77b61189247ce8b47ac9d86684a6c2',
+    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '8e57b4bc55c05081b8f6331da37f41b558920dfb',
 
   'src/third_party/devtools-node-modules':
     Var('chromium_git') + '/external/github.com/ChromeDevTools/devtools-node-modules' + '@' + Var('devtools_node_modules_revision'),
@@ -956,7 +956,7 @@
   },
 
   'src/third_party/glslang/src':
-    Var('chromium_git') + '/external/github.com/KhronosGroup/glslang.git' + '@' + '1ff0c181bb37b06371e2ffa2810d473c5e01c9b7',
+    Var('chromium_git') + '/external/github.com/KhronosGroup/glslang.git' + '@' + 'ee8e9c15222c2aff93dfea451b1e8a892497ec2d',
 
   'src/third_party/google_toolbox_for_mac/src': {
       'url': Var('chromium_git') + '/external/github.com/google/google-toolbox-for-mac.git' + '@' + Var('google_toolbox_for_mac_revision'),
@@ -1047,7 +1047,7 @@
     Var('chromium_git') + '/chromium/deps/hunspell_dictionaries.git' + '@' + '681ca92480ecc11d35feae8c1c00e4e035630f43',
 
   'src/third_party/icu':
-    Var('chromium_git') + '/chromium/deps/icu.git' + '@' + '93a34f0ec19e6eb8a4d13322a62a3f1cec499ec9',
+    Var('chromium_git') + '/chromium/deps/icu.git' + '@' + '5005010d694e16571b8dfbf07d70817841f80a69',
 
   'src/third_party/icu4j': {
       'packages': [
@@ -1470,7 +1470,7 @@
     Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + '2701c130839edbeb226735b0775966b6423d9e83',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + 'd62ac3f0b8308a77c0944d444b5de7686c389a07',
+    Var('webrtc_git') + '/src.git' + '@' + 'e6f9bd000949fe31b177cef8311792a1f8f5563d',
 
   'src/third_party/xdg-utils': {
       'url': Var('chromium_git') + '/chromium/deps/xdg-utils.git' + '@' + 'd80274d5869b17b8c9067a1022e4416ee7ed5e0d',
@@ -1532,7 +1532,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@847b3f98194ef5d4efbb0ff2e643fe0de895448b',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@54b0677aeba54b28b88e49933cefbd9ea5f8612a',
     'condition': 'checkout_src_internal',
   },
 
diff --git a/android_webview/browser/aw_variations_seed_bridge.cc b/android_webview/browser/aw_variations_seed_bridge.cc
index 5726af6..8aa5430 100644
--- a/android_webview/browser/aw_variations_seed_bridge.cc
+++ b/android_webview/browser/aw_variations_seed_bridge.cc
@@ -27,8 +27,7 @@
       Java_AwVariationsSeedBridge_getSignature(env);
   base::android::ScopedJavaLocalRef<jstring> j_country =
       Java_AwVariationsSeedBridge_getCountry(env);
-  base::android::ScopedJavaLocalRef<jstring> j_date =
-      Java_AwVariationsSeedBridge_getDate(env);
+  jlong j_date = Java_AwVariationsSeedBridge_getDate(env);
   jboolean j_is_gzip_compressed =
       Java_AwVariationsSeedBridge_getIsGzipCompressed(env);
   base::android::ScopedJavaLocalRef<jbyteArray> j_data =
@@ -39,7 +38,7 @@
   base::android::JavaByteArrayToString(env, j_data, &java_seed->data);
   java_seed->signature = base::android::ConvertJavaStringToUTF8(j_signature);
   java_seed->country = base::android::ConvertJavaStringToUTF8(j_country);
-  java_seed->date = base::android::ConvertJavaStringToUTF8(j_date);
+  java_seed->date = static_cast<long>(j_date);
   java_seed->is_gzip_compressed = static_cast<bool>(j_is_gzip_compressed);
   return java_seed;
 }
diff --git a/android_webview/java/src/org/chromium/android_webview/AwVariationsSeedBridge.java b/android_webview/java/src/org/chromium/android_webview/AwVariationsSeedBridge.java
index fc5da83..acd6b22 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwVariationsSeedBridge.java
+++ b/android_webview/java/src/org/chromium/android_webview/AwVariationsSeedBridge.java
@@ -40,7 +40,7 @@
     }
 
     @CalledByNative
-    private static String getDate() {
+    private static long getDate() {
         return sSeed.date;
     }
 
diff --git a/android_webview/java/src/org/chromium/android_webview/VariationsSeedLoader.java b/android_webview/java/src/org/chromium/android_webview/VariationsSeedLoader.java
index 12d89b16..6969427 100644
--- a/android_webview/java/src/org/chromium/android_webview/VariationsSeedLoader.java
+++ b/android_webview/java/src/org/chromium/android_webview/VariationsSeedLoader.java
@@ -28,7 +28,6 @@
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
-import java.text.ParseException;
 import java.util.Date;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.FutureTask;
@@ -148,13 +147,7 @@
 
             // Note the date field of whatever seed was loaded, if any.
             if (seed != null) {
-                try {
-                    mCurrentSeedDate = seed.parseDate().getTime();
-                } catch (ParseException e) {
-                    // Should never happen, as date was already verified by readSeedFile.
-                    assert false;
-                    return null;
-                }
+                mCurrentSeedDate = seed.date;
             }
 
             return seed;
diff --git a/android_webview/java/src/org/chromium/android_webview/common/variations/VariationsUtils.java b/android_webview/java/src/org/chromium/android_webview/common/variations/VariationsUtils.java
index bc630e6..197f6c3 100644
--- a/android_webview/java/src/org/chromium/android_webview/common/variations/VariationsUtils.java
+++ b/android_webview/java/src/org/chromium/android_webview/common/variations/VariationsUtils.java
@@ -115,17 +115,20 @@
             info.isGzipCompressed = proto.getIsGzipCompressed();
             info.seedData = proto.getSeedData().toByteArray();
 
-            try {
-                info.parseDate();
-            } catch (ParseException e) {
-                Log.e(TAG, "Malformed seed date: " + e.getMessage());
-                return null;
+            // |dateHeader| is deprecated in favor of |date|, but parse |dateHeader| in case this
+            // seed predates the deprecation.
+            // TODO(crbug.com/1013390): Remove this fallback logic.
+            if (proto.hasDateHeader()) {
+                info.date = SeedInfo.parseDateHeader(proto.getDateHeader());
             }
 
             return info;
         } catch (IOException e) {
             Log.e(TAG, "Failed reading seed file \"" + inFile + "\": " + e.getMessage());
             return null;
+        } catch (ParseException e) {
+            Log.e(TAG, "Malformed seed date: " + e.getMessage());
+            return null;
         } finally {
             closeSafely(in);
         }
diff --git a/android_webview/java/src/org/chromium/android_webview/services/AwVariationsSeedFetcher.java b/android_webview/java/src/org/chromium/android_webview/services/AwVariationsSeedFetcher.java
index b64c830..805cda7 100644
--- a/android_webview/java/src/org/chromium/android_webview/services/AwVariationsSeedFetcher.java
+++ b/android_webview/java/src/org/chromium/android_webview/services/AwVariationsSeedFetcher.java
@@ -26,6 +26,7 @@
 import org.chromium.components.version_info.VersionConstants;
 
 import java.io.IOException;
+import java.text.ParseException;
 import java.util.Date;
 import java.util.concurrent.TimeUnit;
 
@@ -141,10 +142,10 @@
                             newSeed, /*onFinished=*/() -> jobFinished(mParams));
                     shouldFinish = false; // jobFinished will be deferred until updateSeed is done.
                 }
-            } catch (IOException e) {
-                // downloadContent() logs and re-throws IOExceptions, so there's no need to log
-                // here. IOException includes InterruptedIOException, which may happen inside
-                // downloadContent() if the task is cancelled.
+            } catch (IOException | ParseException e) {
+                // downloadContent() logs and re-throws these exceptions, so there's no need to log
+                // here. IOException includes SocketTimeoutException and UnknownHostException,
+                // which may happen inside downloadContent().
             } finally {
                 if (shouldFinish) jobFinished(mParams);
             }
diff --git a/android_webview/java/src/org/chromium/android_webview/services/VariationsSeedHolder.java b/android_webview/java/src/org/chromium/android_webview/services/VariationsSeedHolder.java
index 4638653d..c7d9b1f 100644
--- a/android_webview/java/src/org/chromium/android_webview/services/VariationsSeedHolder.java
+++ b/android_webview/java/src/org/chromium/android_webview/services/VariationsSeedHolder.java
@@ -17,8 +17,6 @@
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
-import java.text.ParseException;
-import java.util.Date;
 
 /**
  * VariationsSeedHolder is a singleton which manages the local copy of the variations seed - both
@@ -79,16 +77,7 @@
                 // If there's no seed available, the app will have to request again.
                 if (VariationsSeedHolder.this.mSeed == null) return;
 
-                Date loadedSeedDate;
-                try {
-                    loadedSeedDate = VariationsSeedHolder.this.mSeed.parseDate();
-                } catch (ParseException e) {
-                    // Should never happen, as date was alread verified by readSeedFile.
-                    assert false;
-                    return;
-                }
-
-                if (mDestinationDate < loadedSeedDate.getTime()) {
+                if (mDestinationDate < VariationsSeedHolder.this.mSeed.date) {
                     writeSeedWithoutClosing(VariationsSeedHolder.this.mSeed, mDestination);
                 }
             } finally {
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwActivityTestRule.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwActivityTestRule.java
index ac1767e..c225ae4 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/AwActivityTestRule.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwActivityTestRule.java
@@ -37,8 +37,10 @@
 
 import java.lang.annotation.Annotation;
 import java.util.Map;
+import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.Callable;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -484,6 +486,22 @@
     }
 
     /**
+     * Takes an element out of the {@link BlockingQueue} (or times out).
+     */
+    public static <T> T waitForNextQueueElement(BlockingQueue<T> queue) throws Exception {
+        T value = queue.poll(WAIT_TIMEOUT_MS, TimeUnit.MILLISECONDS);
+        if (value == null) {
+            // {@code null} is the special value which means {@link BlockingQueue#poll} has timed
+            // out (also: there's no risk for collision with real values, because BlockingQueue does
+            // not allow null entries). Instead of returning this special value, let's throw a
+            // proper TimeoutException.
+            throw new TimeoutException(
+                    "Timeout while trying to take next entry from BlockingQueue");
+        }
+        return value;
+    }
+
+    /**
      * Clears the resource cache. Note that the cache is per-application, so this will clear the
      * cache for all WebViews used.
      */
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/JsJavaInteractionTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/JsJavaInteractionTest.java
index 37b2d49..9b41d2d 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/JsJavaInteractionTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/JsJavaInteractionTest.java
@@ -4,8 +4,6 @@
 
 package org.chromium.android_webview.test;
 
-import static org.chromium.base.test.util.ScalableTimeout.scaleTimeout;
-
 import android.net.Uri;
 import android.support.test.InstrumentationRegistry;
 import android.support.test.filters.MediumTest;
@@ -29,8 +27,6 @@
 import org.chromium.net.test.EmbeddedTestServer;
 
 import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
 
 /**
  * Test suite for JavaScript Java interaction.
@@ -57,9 +53,6 @@
     private static final String DATA_HTML = "<html><body>data</body></html>";
     private static final int MESSAGE_COUNT = 10000;
 
-    // Timeout to failure, in milliseconds
-    private static final long TIMEOUT = scaleTimeout(5000);
-
     private EmbeddedTestServer mTestServer;
     private TestAwContentsClient mContentsClient;
     private AwContents mAwContents;
@@ -92,7 +85,7 @@
         }
 
         public Data waitForOnPostMessage() throws Exception {
-            return waitForNextQueueElement(mQueue);
+            return AwActivityTestRule.waitForNextQueueElement(mQueue);
         }
 
         public boolean hasNoMoreOnPostMessage() {
@@ -100,15 +93,6 @@
         }
     }
 
-    private static <T> T waitForNextQueueElement(LinkedBlockingQueue<T> queue) throws Exception {
-        T value = queue.poll(TIMEOUT, TimeUnit.MILLISECONDS);
-        if (value == null) {
-            throw new TimeoutException(
-                    "Timeout while trying to take next entry from BlockingQueue");
-        }
-        return value;
-    }
-
     @Before
     public void setUp() throws Exception {
         mContentsClient = new TestAwContentsClient();
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/PostMessageTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/PostMessageTest.java
index 9be8f0a2..fd60d30 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/PostMessageTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/PostMessageTest.java
@@ -34,7 +34,6 @@
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
 
 /**
  * The tests for content postMessage API.
@@ -70,7 +69,7 @@
         }
 
         public Data waitForMessage() throws Exception {
-            return waitForNextQueueElement(mQueue);
+            return AwActivityTestRule.waitForNextQueueElement(mQueue);
         }
     }
 
@@ -106,7 +105,7 @@
         }
 
         public Data waitForMessageCallback() throws Exception {
-            return waitForNextQueueElement(mQueue);
+            return AwActivityTestRule.waitForNextQueueElement(mQueue);
         }
 
         public boolean isQueueEmpty() {
@@ -114,15 +113,6 @@
         }
     }
 
-    private static <T> T waitForNextQueueElement(LinkedBlockingQueue<T> queue) throws Exception {
-        T value = queue.poll(TIMEOUT, TimeUnit.MILLISECONDS);
-        if (value == null) {
-            throw new TimeoutException(
-                    "Timeout while trying to take next entry from BlockingQueue");
-        }
-        return value;
-    }
-
     private MessageObject mMessageObject;
     private TestAwContentsClient mContentsClient;
     private AwTestContainerView mTestContainerView;
@@ -260,7 +250,7 @@
             }
             Assert.fail();
         });
-        boolean ignore = latch.await(TIMEOUT, java.util.concurrent.TimeUnit.MILLISECONDS);
+        boolean ignore = latch.await(TIMEOUT, TimeUnit.MILLISECONDS);
     }
 
     // There are two cases that put a port in a started state.
@@ -286,7 +276,7 @@
             }
             Assert.fail();
         });
-        boolean ignore = latch.await(TIMEOUT, java.util.concurrent.TimeUnit.MILLISECONDS);
+        boolean ignore = latch.await(TIMEOUT, TimeUnit.MILLISECONDS);
     }
 
     // see documentation in testStartedPortCannotBeTransferredUsingPostMessageToMainFrame1
@@ -310,7 +300,7 @@
             }
             Assert.fail();
         });
-        boolean ignore = latch.await(TIMEOUT, java.util.concurrent.TimeUnit.MILLISECONDS);
+        boolean ignore = latch.await(TIMEOUT, TimeUnit.MILLISECONDS);
     }
 
     // see documentation in testStartedPortCannotBeTransferredUsingPostMessageToMainFrame1
@@ -333,7 +323,7 @@
             }
             Assert.fail();
         });
-        boolean ignore = latch.await(TIMEOUT, java.util.concurrent.TimeUnit.MILLISECONDS);
+        boolean ignore = latch.await(TIMEOUT, TimeUnit.MILLISECONDS);
     }
 
     // see documentation in testStartedPortCannotBeTransferredUsingPostMessageToMainFrame1
@@ -357,7 +347,7 @@
             }
             Assert.fail();
         });
-        boolean ignore = latch.await(TIMEOUT, java.util.concurrent.TimeUnit.MILLISECONDS);
+        boolean ignore = latch.await(TIMEOUT, TimeUnit.MILLISECONDS);
     }
 
 
@@ -384,7 +374,7 @@
             }
             Assert.fail();
         });
-        boolean ignore = latch.await(TIMEOUT, java.util.concurrent.TimeUnit.MILLISECONDS);
+        boolean ignore = latch.await(TIMEOUT, TimeUnit.MILLISECONDS);
     }
 
     // Verify a closed port cannot be transferred to a frame.
@@ -406,7 +396,7 @@
             }
             Assert.fail();
         });
-        boolean ignore = latch.await(TIMEOUT, java.util.concurrent.TimeUnit.MILLISECONDS);
+        boolean ignore = latch.await(TIMEOUT, TimeUnit.MILLISECONDS);
     }
 
     // Verify a closed port cannot be transferred to a port.
@@ -428,7 +418,7 @@
             }
             Assert.fail();
         });
-        boolean ignore = latch.await(TIMEOUT, java.util.concurrent.TimeUnit.MILLISECONDS);
+        boolean ignore = latch.await(TIMEOUT, TimeUnit.MILLISECONDS);
     }
 
     // Verify messages cannot be posted to closed ports.
@@ -449,7 +439,7 @@
             }
             Assert.fail();
         });
-        boolean ignore = latch.await(TIMEOUT, java.util.concurrent.TimeUnit.MILLISECONDS);
+        boolean ignore = latch.await(TIMEOUT, TimeUnit.MILLISECONDS);
     }
 
     // Verify messages posted before closing a port is received at the destination port.
@@ -488,7 +478,7 @@
             }
             Assert.fail();
         });
-        boolean ignore = latch.await(TIMEOUT, java.util.concurrent.TimeUnit.MILLISECONDS);
+        boolean ignore = latch.await(TIMEOUT, TimeUnit.MILLISECONDS);
     }
 
     // Verify a transferred port using postMessageToMainFrame cannot be closed.
@@ -512,7 +502,7 @@
             }
             Assert.fail();
         });
-        boolean ignore = latch.await(TIMEOUT, java.util.concurrent.TimeUnit.MILLISECONDS);
+        boolean ignore = latch.await(TIMEOUT, TimeUnit.MILLISECONDS);
     }
 
     // Create two message channels, and while they are in pending state, transfer the
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/VariationsSeedHolderTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/VariationsSeedHolderTest.java
index 09720fe6..012f297 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/VariationsSeedHolderTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/VariationsSeedHolderTest.java
@@ -137,7 +137,7 @@
             throws IOException, TimeoutException, ParseException {
         try {
             SeedInfo mockSeed = VariationsTestUtils.createMockSeed();
-            long mockDateMinusOneDay = mockSeed.parseDate().getTime() - TimeUnit.DAYS.toMillis(1);
+            long mockDateMinusOneDay = mockSeed.date - TimeUnit.DAYS.toMillis(1);
             TestHolder holder = new TestHolder();
             holder.updateSeedBlocking(mockSeed);
             File file = null;
@@ -162,13 +162,12 @@
             throws IOException, TimeoutException, ParseException {
         try {
             SeedInfo mockSeed = VariationsTestUtils.createMockSeed();
-            long mockDate = mockSeed.parseDate().getTime();
             TestHolder holder = new TestHolder();
             holder.updateSeedBlocking(mockSeed);
             File file = null;
             try {
                 file = File.createTempFile("seed", null, null);
-                holder.writeSeedIfNewerBlocking(file, mockDate);
+                holder.writeSeedIfNewerBlocking(file, mockSeed.date);
                 Assert.assertEquals(0L, file.length());
             } finally {
                 if (file != null) file.delete();
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/util/VariationsTestUtils.java b/android_webview/javatests/src/org/chromium/android_webview/test/util/VariationsTestUtils.java
index 538cdf5..e2df848 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/util/VariationsTestUtils.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/util/VariationsTestUtils.java
@@ -24,11 +24,9 @@
     }
 
     public static boolean seedsEqual(SeedInfo a, SeedInfo b) {
-        return strEqual(a.signature, b.signature) &&
-            strEqual(a.country, b.country) &&
-            strEqual(a.date, b.date) &&
-            (a.isGzipCompressed == b.isGzipCompressed) &&
-            Arrays.equals(a.seedData, b.seedData);
+        return strEqual(a.signature, b.signature) && strEqual(a.country, b.country)
+                && (a.date == b.date) && (a.isGzipCompressed == b.isGzipCompressed)
+                && Arrays.equals(a.seedData, b.seedData);
     }
 
     private static boolean strEqual(String a, String b) {
@@ -40,7 +38,7 @@
         seed.seedData = "bogus seed data".getBytes();
         seed.signature = "bogus seed signature";
         seed.country = "GB";
-        seed.date = "Sun, 23 Jun 1912 00:00:00 GMT";
+        seed.date = 946684800000L; // New Year's 2000 GMT
         return seed;
     }
 
diff --git a/android_webview/proto/aw_variations_seed.proto b/android_webview/proto/aw_variations_seed.proto
index 48e053c..35d246f 100644
--- a/android_webview/proto/aw_variations_seed.proto
+++ b/android_webview/proto/aw_variations_seed.proto
@@ -14,7 +14,7 @@
 // prefs, WebView stores it in a separate file so the WebView service can write
 // new seeds directly to each app's seed file.
 //
-// Next tag: 6
+// Next tag: 7
 message AwVariationsSeed {
   // Whether seed_data is compressed. Comes from HTTP header "X-Seed-Signature".
   optional string signature = 1;
@@ -22,9 +22,13 @@
   optional string country = 2;
   // Date the seed was downloaded. Comes from HTTP header "Date"; see RFC 2616,
   // sections 3.3.1 and 14.18 for the format.
-  optional string date = 3;
+  // This was deprecated in favor of the |date| field in October 2019.
+  optional string date_header = 3 [deprecated = true];
   // Whether seed_data is compressed. Comes from HTTP header "IM".
   optional bool is_gzip_compressed = 4;
   // The download body, itself a serialized VariationsSeed proto.
   optional bytes seed_data = 5;
+  // Date the seed was downloaded according to the Variations server in
+  // milliseconds since UNIX epoch, GMT.
+  optional int64 date = 6;
 }
diff --git a/ash/BUILD.gn b/ash/BUILD.gn
index a765644..1494411 100644
--- a/ash/BUILD.gn
+++ b/ash/BUILD.gn
@@ -1351,7 +1351,7 @@
     "//ui/wm",
   ]
   deps = [
-    "//ash/app_list/presenter",
+    "//ash/app_list:presenter",
     "//ash/app_menu",
     "//ash/assistant/model",
     "//ash/assistant/ui",
@@ -1533,7 +1533,7 @@
   deps = [
     ":ash",
     ":test_support",
-    "//ash/app_list/presenter",
+    "//ash/app_list:presenter",
     "//ash/public/cpp",
     "//base",
     "//base:i18n",
@@ -1653,14 +1653,15 @@
     "app_list/app_list_controller_impl_unittest.cc",
     "app_list/app_list_metrics_unittest.cc",
     "app_list/app_list_presenter_delegate_unittest.cc",
+    "app_list/app_list_presenter_impl_unittest.cc",
     "app_list/app_list_unittest.cc",
     "app_list/model/app_list_item_list_unittest.cc",
     "app_list/model/app_list_model_unittest.cc",
-    "app_list/presenter/app_list_presenter_impl_unittest.cc",
     "app_list/views/assistant/assistant_page_view_unittest.cc",
     "app_menu/notification_menu_controller_unittest.cc",
     "app_menu/notification_menu_view_unittest.cc",
     "app_menu/notification_overflow_view_unittest.cc",
+    "assistant/assistant_alarm_timer_controller_unittest.cc",
     "assistant/assistant_notification_controller_unittest.cc",
     "assistant/assistant_screen_context_controller_unittest.cc",
     "assistant/assistant_state_controller_unittest.cc",
@@ -1971,8 +1972,8 @@
   deps = [
     ":ash",
     ":test_support",
+    "//ash/app_list:presenter",
     "//ash/app_list:test_support",
-    "//ash/app_list/presenter",
     "//ash/app_menu",
     "//ash/assistant/model",
     "//ash/assistant/ui",
@@ -2317,8 +2318,8 @@
   ]
   deps = [
     "//ash",
+    "//ash/app_list:presenter",
     "//ash/app_list:test_support",
-    "//ash/app_list/presenter",
     "//ash/app_menu",
     "//ash/assistant/model:model",
     "//ash/components/fast_ink",
diff --git a/ash/app_list/BUILD.gn b/ash/app_list/BUILD.gn
index 5f10f2d..a51c161 100644
--- a/ash/app_list/BUILD.gn
+++ b/ash/app_list/BUILD.gn
@@ -149,6 +149,33 @@
   ]
 }
 
+component("presenter") {
+  sources = [
+    "app_list_presenter_delegate.h",
+    "app_list_presenter_export.h",
+    "app_list_presenter_impl.cc",
+    "app_list_presenter_impl.h",
+  ]
+
+  defines = [ "APP_LIST_PRESENTER_IMPLEMENTATION" ]
+
+  public_deps = [
+    "//ash/app_list",
+    "//base",
+    "//mojo/public/cpp/bindings",
+    "//ui/aura",
+    "//ui/compositor",
+    "//ui/gfx/geometry",
+    "//ui/views",
+    "//ui/wm",
+    "//ui/wm/public",
+
+    # Temporary dependency to fix compile flake in http://crbug.com/611898.
+    # TODO(tapted): Remove once http://crbug.com/612382 is fixed.
+    "//ui/accessibility:ax_enums_mojo",
+  ]
+}
+
 static_library("test_support") {
   testonly = true
 
diff --git a/ash/app_list/app_list_controller_impl.h b/ash/app_list/app_list_controller_impl.h
index 8fdc8f7..301ec2e1 100644
--- a/ash/app_list/app_list_controller_impl.h
+++ b/ash/app_list/app_list_controller_impl.h
@@ -11,11 +11,11 @@
 #include <vector>
 
 #include "ash/app_list/app_list_metrics.h"
+#include "ash/app_list/app_list_presenter_impl.h"
 #include "ash/app_list/app_list_view_delegate.h"
 #include "ash/app_list/model/app_list_model.h"
 #include "ash/app_list/model/app_list_model_observer.h"
 #include "ash/app_list/model/search/search_model.h"
-#include "ash/app_list/presenter/app_list_presenter_impl.h"
 #include "ash/ash_export.h"
 #include "ash/assistant/assistant_controller_observer.h"
 #include "ash/assistant/model/assistant_ui_model_observer.h"
diff --git a/ash/app_list/presenter/app_list_presenter_delegate.h b/ash/app_list/app_list_presenter_delegate.h
similarity index 88%
rename from ash/app_list/presenter/app_list_presenter_delegate.h
rename to ash/app_list/app_list_presenter_delegate.h
index 18a33f0..27e64c7 100644
--- a/ash/app_list/presenter/app_list_presenter_delegate.h
+++ b/ash/app_list/app_list_presenter_delegate.h
@@ -2,12 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef ASH_APP_LIST_PRESENTER_APP_LIST_PRESENTER_DELEGATE_H_
-#define ASH_APP_LIST_PRESENTER_APP_LIST_PRESENTER_DELEGATE_H_
+#ifndef ASH_APP_LIST_APP_LIST_PRESENTER_DELEGATE_H_
+#define ASH_APP_LIST_APP_LIST_PRESENTER_DELEGATE_H_
 
 #include <stdint.h>
 
-#include "ash/app_list/presenter/app_list_presenter_export.h"
+#include "ash/app_list/app_list_presenter_export.h"
 
 namespace aura {
 class Window;
@@ -65,4 +65,4 @@
 
 }  // namespace ash
 
-#endif  // ASH_APP_LIST_PRESENTER_APP_LIST_PRESENTER_DELEGATE_H_
+#endif  // ASH_APP_LIST_APP_LIST_PRESENTER_DELEGATE_H_
diff --git a/ash/app_list/app_list_presenter_delegate_impl.cc b/ash/app_list/app_list_presenter_delegate_impl.cc
index 863d0c5..f9c312b4 100644
--- a/ash/app_list/app_list_presenter_delegate_impl.cc
+++ b/ash/app_list/app_list_presenter_delegate_impl.cc
@@ -5,8 +5,8 @@
 #include "ash/app_list/app_list_presenter_delegate_impl.h"
 
 #include "ash/app_list/app_list_controller_impl.h"
+#include "ash/app_list/app_list_presenter_impl.h"
 #include "ash/app_list/app_list_util.h"
-#include "ash/app_list/presenter/app_list_presenter_impl.h"
 #include "ash/app_list/views/app_list_main_view.h"
 #include "ash/app_list/views/app_list_view.h"
 #include "ash/app_list/views/contents_view.h"
diff --git a/ash/app_list/app_list_presenter_delegate_impl.h b/ash/app_list/app_list_presenter_delegate_impl.h
index 05079249..8a6e57f 100644
--- a/ash/app_list/app_list_presenter_delegate_impl.h
+++ b/ash/app_list/app_list_presenter_delegate_impl.h
@@ -7,7 +7,7 @@
 
 #include <stdint.h>
 
-#include "ash/app_list/presenter/app_list_presenter_delegate.h"
+#include "ash/app_list/app_list_presenter_delegate.h"
 #include "ash/ash_export.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shelf/shelf_observer.h"
diff --git a/ash/app_list/app_list_presenter_delegate_unittest.cc b/ash/app_list/app_list_presenter_delegate_unittest.cc
index e334965..d7e2cf15 100644
--- a/ash/app_list/app_list_presenter_delegate_unittest.cc
+++ b/ash/app_list/app_list_presenter_delegate_unittest.cc
@@ -6,8 +6,8 @@
 #include <memory>
 
 #include "ash/app_list/app_list_controller_impl.h"
+#include "ash/app_list/app_list_presenter_impl.h"
 #include "ash/app_list/model/app_list_item.h"
-#include "ash/app_list/presenter/app_list_presenter_impl.h"
 #include "ash/app_list/test/app_list_test_helper.h"
 #include "ash/app_list/test/app_list_test_model.h"
 #include "ash/app_list/test/app_list_test_view_delegate.h"
diff --git a/ash/app_list/presenter/app_list_presenter_export.h b/ash/app_list/app_list_presenter_export.h
similarity index 76%
rename from ash/app_list/presenter/app_list_presenter_export.h
rename to ash/app_list/app_list_presenter_export.h
index 151cf9e..5c8e4ad 100644
--- a/ash/app_list/presenter/app_list_presenter_export.h
+++ b/ash/app_list/app_list_presenter_export.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 ASH_APP_LIST_PRESENTER_APP_LIST_PRESENTER_EXPORT_H_
-#define ASH_APP_LIST_PRESENTER_APP_LIST_PRESENTER_EXPORT_H_
+#ifndef ASH_APP_LIST_APP_LIST_PRESENTER_EXPORT_H_
+#define ASH_APP_LIST_APP_LIST_PRESENTER_EXPORT_H_
 
 // Defines APP_LIST_PRESENTER_EXPORT so that functionality implemented by the
 // app_list presenter module can be exported to consumers.
@@ -20,4 +20,4 @@
 #define APP_LIST_PRESENTER_EXPORT
 #endif
 
-#endif  // ASH_APP_LIST_PRESENTER_APP_LIST_PRESENTER_EXPORT_H_
+#endif  // ASH_APP_LIST_APP_LIST_PRESENTER_EXPORT_H_
diff --git a/ash/app_list/presenter/app_list_presenter_impl.cc b/ash/app_list/app_list_presenter_impl.cc
similarity index 99%
rename from ash/app_list/presenter/app_list_presenter_impl.cc
rename to ash/app_list/app_list_presenter_impl.cc
index 77288209..c182a33 100644
--- a/ash/app_list/presenter/app_list_presenter_impl.cc
+++ b/ash/app_list/app_list_presenter_impl.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 "ash/app_list/presenter/app_list_presenter_impl.h"
+#include "ash/app_list/app_list_presenter_impl.h"
 
 #include <utility>
 
diff --git a/ash/app_list/presenter/app_list_presenter_impl.h b/ash/app_list/app_list_presenter_impl.h
similarity index 93%
rename from ash/app_list/presenter/app_list_presenter_impl.h
rename to ash/app_list/app_list_presenter_impl.h
index ed31d348..1c40a00 100644
--- a/ash/app_list/presenter/app_list_presenter_impl.h
+++ b/ash/app_list/app_list_presenter_impl.h
@@ -2,16 +2,16 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef ASH_APP_LIST_PRESENTER_APP_LIST_PRESENTER_IMPL_H_
-#define ASH_APP_LIST_PRESENTER_APP_LIST_PRESENTER_IMPL_H_
+#ifndef ASH_APP_LIST_APP_LIST_PRESENTER_IMPL_H_
+#define ASH_APP_LIST_APP_LIST_PRESENTER_IMPL_H_
 
 #include <stdint.h>
 
 #include <memory>
 
 #include "ash/app_list/app_list_metrics.h"
-#include "ash/app_list/presenter/app_list_presenter_delegate.h"
-#include "ash/app_list/presenter/app_list_presenter_export.h"
+#include "ash/app_list/app_list_presenter_delegate.h"
+#include "ash/app_list/app_list_presenter_export.h"
 #include "ash/app_list/views/app_list_view.h"
 #include "ash/public/cpp/pagination/pagination_model_observer.h"
 #include "ash/public/cpp/shelf_types.h"
@@ -48,10 +48,10 @@
       std::unique_ptr<AppListPresenterDelegate> delegate);
   ~AppListPresenterImpl() override;
 
-  // Returns app list window or NULL if it is not visible.
+  // Returns app list window or nullptr if it is not visible.
   aura::Window* GetWindow() const;
 
-  // Returns app list view if one exists, or NULL otherwise.
+  // Returns app list view if one exists, or nullptr otherwise.
   AppListView* GetView() { return view_; }
   const AppListView* GetView() const { return view_; }
 
@@ -180,4 +180,4 @@
 
 }  // namespace ash
 
-#endif  // ASH_APP_LIST_PRESENTER_APP_LIST_PRESENTER_IMPL_H_
+#endif  // ASH_APP_LIST_APP_LIST_PRESENTER_IMPL_H_
diff --git a/ash/app_list/presenter/app_list_presenter_impl_unittest.cc b/ash/app_list/app_list_presenter_impl_unittest.cc
similarity index 98%
rename from ash/app_list/presenter/app_list_presenter_impl_unittest.cc
rename to ash/app_list/app_list_presenter_impl_unittest.cc
index 4643a82..037700d 100644
--- a/ash/app_list/presenter/app_list_presenter_impl_unittest.cc
+++ b/ash/app_list/app_list_presenter_impl_unittest.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 "ash/app_list/presenter/app_list_presenter_impl.h"
+#include "ash/app_list/app_list_presenter_impl.h"
 
 #include <memory>
 #include <utility>
diff --git a/ash/app_list/app_list_unittest.cc b/ash/app_list/app_list_unittest.cc
index 41dbbeb..c0dbece1 100644
--- a/ash/app_list/app_list_unittest.cc
+++ b/ash/app_list/app_list_unittest.cc
@@ -5,7 +5,7 @@
 #include <memory>
 
 #include "ash/app_list/app_list_controller_impl.h"
-#include "ash/app_list/presenter/app_list_presenter_impl.h"
+#include "ash/app_list/app_list_presenter_impl.h"
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/shelf/home_button.h"
 #include "ash/shelf/shelf.h"
diff --git a/ash/app_list/app_list_view_delegate.h b/ash/app_list/app_list_view_delegate.h
index 04d49ccb4..43c77efa 100644
--- a/ash/app_list/app_list_view_delegate.h
+++ b/ash/app_list/app_list_view_delegate.h
@@ -89,7 +89,7 @@
                                         int event_flags) = 0;
 
   // Returns the context menu model for a ChromeSearchResult with |result_id|,
-  // or NULL if there is currently no menu for the result.
+  // or nullptr if there is currently no menu for the result.
   // Note the returned menu model is owned by that result.
   using GetContextMenuModelCallback =
       base::OnceCallback<void(std::unique_ptr<ui::SimpleMenuModel>)>;
@@ -118,8 +118,8 @@
                             int event_flags,
                             ash::AppListLaunchedFrom launched_from) = 0;
 
-  // Returns the context menu model for a ChromeAppListItem with |id|, or NULL
-  // if there is currently no menu for the item (e.g. during install).
+  // Returns the context menu model for a ChromeAppListItem with |id|, or
+  // nullptr if there is currently no menu for the item (e.g. during install).
   // Note the returned menu model is owned by that item.
   virtual void GetContextMenuModel(const std::string& id,
                                    GetContextMenuModelCallback callback) = 0;
diff --git a/ash/app_list/demo/app_list_demo_views.cc b/ash/app_list/demo/app_list_demo_views.cc
index 5622e87..1fa9f98 100644
--- a/ash/app_list/demo/app_list_demo_views.cc
+++ b/ash/app_list/demo/app_list_demo_views.cc
@@ -28,7 +28,7 @@
 // window is closed, and to close the window if it is simply dismissed.
 class DemoAppListViewDelegate : public test::AppListTestViewDelegate {
  public:
-  DemoAppListViewDelegate() : view_(NULL) {}
+  DemoAppListViewDelegate() : view_(nullptr) {}
   ~DemoAppListViewDelegate() override {}
 
   AppListView* InitView(gfx::NativeWindow window_context);
diff --git a/ash/app_list/model/app_list_item.cc b/ash/app_list/model/app_list_item.cc
index 8418e94..e2617414 100644
--- a/ash/app_list/model/app_list_item.cc
+++ b/ash/app_list/model/app_list_item.cc
@@ -78,7 +78,7 @@
 }
 
 AppListItem* AppListItem::FindChildItem(const std::string& id) {
-  return NULL;
+  return nullptr;
 }
 
 size_t AppListItem::ChildItemCount() const {
diff --git a/ash/app_list/model/app_list_item.h b/ash/app_list/model/app_list_item.h
index b343258..3d57a1c 100644
--- a/ash/app_list/model/app_list_item.h
+++ b/ash/app_list/model/app_list_item.h
@@ -77,7 +77,7 @@
   virtual const char* GetItemType() const;
 
   // Returns the item matching |id| contained in this item (e.g. if the item is
-  // a folder), or NULL if the item was not found or this is not a container.
+  // a folder), or nullptr if the item was not found or this is not a container.
   virtual AppListItem* FindChildItem(const std::string& id);
 
   // Returns the number of child items if it has any (e.g. is a folder) or 0.
diff --git a/ash/app_list/model/app_list_model.cc b/ash/app_list/model/app_list_model.cc
index 5583184..2ae103b0 100644
--- a/ash/app_list/model/app_list_model.cc
+++ b/ash/app_list/model/app_list_model.cc
@@ -63,7 +63,7 @@
     if (child_item)
       return child_item;
   }
-  return NULL;
+  return nullptr;
 }
 
 AppListFolderItem* AppListModel::FindFolderItem(const std::string& id) {
@@ -71,7 +71,7 @@
   if (item && item->GetItemType() == AppListFolderItem::kItemType)
     return static_cast<AppListFolderItem*>(item);
   DCHECK(!item);
-  return NULL;
+  return nullptr;
 }
 
 AppListItem* AppListModel::AddItem(std::unique_ptr<AppListItem> item) {
@@ -96,7 +96,7 @@
   DCHECK_NE(AppListFolderItem::kItemType, item->GetItemType());
   AppListFolderItem* dest_folder = FindOrCreateFolderItem(folder_id);
   if (!dest_folder)
-    return NULL;
+    return nullptr;
   DCHECK(!dest_folder->item_list()->FindItem(item->id()))
       << "Already in folder: " << dest_folder->id();
   return AddItemToFolderItemAndNotify(dest_folder, std::move(item));
@@ -315,7 +315,7 @@
 AppListFolderItem* AppListModel::FindOrCreateFolderItem(
     const std::string& folder_id) {
   if (folder_id.empty())
-    return NULL;
+    return nullptr;
 
   AppListFolderItem* dest_folder = FindFolderItem(folder_id);
   if (dest_folder)
diff --git a/ash/app_list/presenter/BUILD.gn b/ash/app_list/presenter/BUILD.gn
deleted file mode 100644
index 8d1a3b4..0000000
--- a/ash/app_list/presenter/BUILD.gn
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2016 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import("//build/config/ui.gni")
-import("//testing/test.gni")
-
-assert(use_aura)
-
-component("presenter") {
-  sources = [
-    "app_list_presenter_delegate.h",
-    "app_list_presenter_export.h",
-    "app_list_presenter_impl.cc",
-    "app_list_presenter_impl.h",
-  ]
-
-  defines = [ "APP_LIST_PRESENTER_IMPLEMENTATION" ]
-
-  public_deps = [
-    "//ash/app_list",
-    "//base",
-    "//mojo/public/cpp/bindings",
-    "//ui/aura",
-    "//ui/compositor",
-    "//ui/gfx/geometry",
-    "//ui/views",
-    "//ui/wm",
-    "//ui/wm/public",
-
-    # Temporary dependency to fix compile flake in http://crbug.com/611898.
-    # TODO(tapted): Remove once http://crbug.com/612382 is fixed.
-    "//ui/accessibility:ax_enums_mojo",
-  ]
-}
diff --git a/ash/app_list/test/app_list_test_helper.cc b/ash/app_list/test/app_list_test_helper.cc
index fa7fe866..3f317042 100644
--- a/ash/app_list/test/app_list_test_helper.cc
+++ b/ash/app_list/test/app_list_test_helper.cc
@@ -7,7 +7,7 @@
 #include <utility>
 
 #include "ash/app_list/app_list_controller_impl.h"
-#include "ash/app_list/presenter/app_list_presenter_impl.h"
+#include "ash/app_list/app_list_presenter_impl.h"
 #include "ash/app_list/views/app_list_view.h"
 #include "ash/shell.h"
 #include "base/run_loop.h"
diff --git a/ash/app_list/views/app_list_folder_view.cc b/ash/app_list/views/app_list_folder_view.cc
index 4c79b268..ff6297c 100644
--- a/ash/app_list/views/app_list_folder_view.cc
+++ b/ash/app_list/views/app_list_folder_view.cc
@@ -565,7 +565,7 @@
   if (item == folder_item_) {
     items_grid_view_->OnFolderItemRemoved();
     folder_header_view_->OnFolderItemRemoved();
-    folder_item_ = NULL;
+    folder_item_ = nullptr;
 
     // Do not change state if it is hidden.
     if (hide_for_reparent_ || contents_container_->layer()->opacity() == 0.0f)
@@ -574,9 +574,9 @@
     // If the folder item associated with this view is removed from the model,
     // (e.g. the last item in the folder was deleted), reset the view and signal
     // the container view to show the app list instead.
-    // Pass NULL to ShowApps() to avoid triggering animation from the deleted
+    // Pass nullptr to ShowApps() to avoid triggering animation from the deleted
     // folder.
-    container_view_->ShowApps(NULL);
+    container_view_->ShowApps(nullptr);
   }
 }
 
diff --git a/ash/app_list/views/app_list_item_view.cc b/ash/app_list/views/app_list_item_view.cc
index 59ddf62..b1e65fd 100644
--- a/ash/app_list/views/app_list_item_view.cc
+++ b/ash/app_list/views/app_list_item_view.cc
@@ -937,7 +937,7 @@
 void AppListItemView::ItemBeingDestroyed() {
   DCHECK(item_weak_);
   item_weak_->RemoveObserver(this);
-  item_weak_ = NULL;
+  item_weak_ = nullptr;
 }
 
 int AppListItemView::GetPreviewCircleRadius() const {
diff --git a/ash/app_list/views/app_list_item_view.h b/ash/app_list/views/app_list_item_view.h
index 6f070ea..49c865d 100644
--- a/ash/app_list/views/app_list_item_view.h
+++ b/ash/app_list/views/app_list_item_view.h
@@ -228,7 +228,7 @@
   // requests.
   bool waiting_for_context_menu_options_ = false;
 
-  AppListItem* item_weak_;  // Owned by AppListModel. Can be NULL.
+  AppListItem* item_weak_;  // Owned by AppListModel. Can be nullptr.
 
   AppListViewDelegate* delegate_;            // Unowned.
   AppsGridView* apps_grid_view_;             // Parent view, owns this.
diff --git a/ash/app_list/views/app_list_main_view.h b/ash/app_list/views/app_list_main_view.h
index 3c5eec8..2964794 100644
--- a/ash/app_list/views/app_list_main_view.h
+++ b/ash/app_list/views/app_list_main_view.h
@@ -49,7 +49,7 @@
 
   SearchBoxView* search_box_view() const { return search_box_view_; }
 
-  // If |drag_and_drop_host| is not NULL it will be called upon drag and drop
+  // If |drag_and_drop_host| is not nullptr it will be called upon drag and drop
   // operations outside the application list.
   void SetDragAndDropHostOfCurrentAppList(
       ApplicationDragAndDropHost* drag_and_drop_host);
diff --git a/ash/app_list/views/app_list_main_view_unittest.cc b/ash/app_list/views/app_list_main_view_unittest.cc
index e580c4c..269e1ba 100644
--- a/ash/app_list/views/app_list_main_view_unittest.cc
+++ b/ash/app_list/views/app_list_main_view_unittest.cc
@@ -131,7 +131,7 @@
       }
     }
 
-    return NULL;
+    return nullptr;
   }
 
   void SimulateClick(views::View* view) {
@@ -303,7 +303,7 @@
   EXPECT_EQ(first_slot_tile, RootViewModel()->view_at(0)->bounds());
 
   // Single item folder should be auto removed.
-  EXPECT_EQ(NULL,
+  EXPECT_EQ(nullptr,
             delegate_->GetTestModel()->FindFolderItem("single_item_folder"));
 
   // Ensure keyboard selection works on the root grid view after a reparent.
@@ -351,7 +351,7 @@
 
   // The folder should be destroyed.
   EXPECT_EQ(kNumApps + 1, RootViewModel()->view_size());
-  EXPECT_EQ(NULL,
+  EXPECT_EQ(nullptr,
             delegate_->GetTestModel()->FindFolderItem("single_item_folder"));
 }
 
diff --git a/ash/app_list/views/app_list_view.h b/ash/app_list/views/app_list_view.h
index 76d3f995..7daa7c7 100644
--- a/ash/app_list/views/app_list_view.h
+++ b/ash/app_list/views/app_list_view.h
@@ -150,7 +150,7 @@
   // Sets the state of all child views to be re-shown, then shows the view.
   void Show(bool is_side_shelf, bool is_tablet_mode);
 
-  // If |drag_and_drop_host| is not NULL it will be called upon drag and drop
+  // If |drag_and_drop_host| is not nullptr it will be called upon drag and drop
   // operations outside the application list. This has to be called after
   // Initialize was called since the app list object needs to exist so that
   // it can set the host.
diff --git a/ash/app_list/views/apps_container_view.h b/ash/app_list/views/apps_container_view.h
index 619faa24..66c94dc 100644
--- a/ash/app_list/views/apps_container_view.h
+++ b/ash/app_list/views/apps_container_view.h
@@ -41,7 +41,8 @@
   void ShowActiveFolder(AppListFolderItem* folder_item);
 
   // Shows the root level apps list. This is called when UI navigate back from
-  // a folder view with |folder_item|. If |folder_item| is NULL skips animation.
+  // a folder view with |folder_item|. If |folder_item| is nullptr skips
+  // animation.
   void ShowApps(AppListFolderItem* folder_item);
 
   // Resets the app list to a state where it shows the main grid view. This is
diff --git a/ash/app_list/views/apps_grid_view.cc b/ash/app_list/views/apps_grid_view.cc
index 97affbc..b801caf6 100644
--- a/ash/app_list/views/apps_grid_view.cc
+++ b/ash/app_list/views/apps_grid_view.cc
@@ -669,7 +669,7 @@
 }
 
 void AppsGridView::EndDrag(bool cancel) {
-  // EndDrag was called before if |drag_view_| is NULL.
+  // EndDrag was called before if |drag_view_| is nullptr.
   if (!drag_view_)
     return;
 
@@ -880,7 +880,7 @@
                                               const gfx::Point& drag_point) {
   // Note that if a cancel ocurrs while reparenting, the |drag_view_| in both
   // root and folder grid views is cleared, so the check in UpdateDragFromItem()
-  // for |drag_view_| being NULL (in the folder grid) is sufficient.
+  // for |drag_view_| being nullptr (in the folder grid) is sufficient.
   DCHECK(drag_view_);
   DCHECK(IsDraggingForReparentInRootLevelGridView());
 
@@ -1896,7 +1896,7 @@
 void AppsGridView::EndDragFromReparentItemInRootLevel(
     bool events_forwarded_to_drag_drop_host,
     bool cancel_drag) {
-  // EndDrag was called before if |drag_view_| is NULL.
+  // EndDrag was called before if |drag_view_| is nullptr.
   if (!drag_view_)
     return;
 
@@ -1939,7 +1939,7 @@
 
   SetAsFolderDroppingTarget(drop_target_, false);
   if (!cancel_reparent) {
-    // By setting |drag_view_| to NULL here, we prevent ClearDragState() from
+    // By setting |drag_view_| to nullptr here, we prevent ClearDragState() from
     // cleaning up the newly created AppListItemView, effectively claiming
     // ownership of the newly created drag view.
     drag_view_->OnDragEnded();
diff --git a/ash/app_list/views/apps_grid_view.h b/ash/app_list/views/apps_grid_view.h
index ae2ff31..b786841 100644
--- a/ash/app_list/views/apps_grid_view.h
+++ b/ash/app_list/views/apps_grid_view.h
@@ -521,8 +521,8 @@
   gfx::Rect GetExpectedTileBounds(const GridIndex& index) const;
 
   // Gets the item view currently displayed at |slot| on the current page. If
-  // there is no item displayed at |slot|, returns NULL. Note that this finds an
-  // item *displayed* at a slot, which may differ from the item's location in
+  // there is no item displayed at |slot|, returns nullptr. Note that this finds
+  // an item *displayed* at a slot, which may differ from the item's location in
   // the model (as it may have been temporarily moved during a drag operation).
   AppListItemView* GetViewDisplayedAtSlotOnCurrentPage(int slot) const;
 
@@ -688,7 +688,7 @@
   AppListModel* model_ = nullptr;         // Owned by AppListView.
   AppListItemList* item_list_ = nullptr;  // Not owned.
 
-  // This can be NULL. Only grid views inside folders have a folder delegate.
+  // This can be nullptr. Only grid views inside folders have a folder delegate.
   AppsGridViewFolderDelegate* folder_delegate_ = nullptr;
 
   ash::PaginationModel pagination_model_{this};
diff --git a/ash/app_list/views/contents_view.h b/ash/app_list/views/contents_view.h
index a9b9106..ca69c8f6 100644
--- a/ash/app_list/views/contents_view.h
+++ b/ash/app_list/views/contents_view.h
@@ -97,7 +97,7 @@
   // The app list gets closed and drag and drop operations need to be cancelled.
   void CancelDrag();
 
-  // If |drag_and_drop| is not NULL it will be called upon drag and drop
+  // If |drag_and_drop| is not nullptr it will be called upon drag and drop
   // operations outside the application list.
   void SetDragAndDropHostOfCurrentAppList(
       ApplicationDragAndDropHost* drag_and_drop_host);
diff --git a/ash/app_list/views/folder_header_view.cc b/ash/app_list/views/folder_header_view.cc
index f636f9a2..7b16132 100644
--- a/ash/app_list/views/folder_header_view.cc
+++ b/ash/app_list/views/folder_header_view.cc
@@ -155,7 +155,7 @@
 }
 
 void FolderHeaderView::OnFolderItemRemoved() {
-  folder_item_ = NULL;
+  folder_item_ = nullptr;
 }
 
 void FolderHeaderView::SetTextFocus() {
diff --git a/ash/app_list/views/search_result_container_view.h b/ash/app_list/views/search_result_container_view.h
index 3126276..5eba95e 100644
--- a/ash/app_list/views/search_result_container_view.h
+++ b/ash/app_list/views/search_result_container_view.h
@@ -97,8 +97,8 @@
   void ListItemMoved(size_t index, size_t target_index) override;
   void ListItemsChanged(size_t start, size_t count) override;
 
-  // Returns the first result in the container view. Returns NULL if it does not
-  // exist.
+  // Returns the first result in the container view. Returns nullptr if it does
+  // not exist.
   virtual SearchResultBaseView* GetFirstResultView();
 
   // Called from SearchResultPageView OnShown/OnHidden
diff --git a/ash/app_list/views/search_result_list_view.cc b/ash/app_list/views/search_result_list_view.cc
index 722e7a5..976e027 100644
--- a/ash/app_list/views/search_result_list_view.cc
+++ b/ash/app_list/views/search_result_list_view.cc
@@ -241,7 +241,7 @@
       result_view->SetResult(display_results[i]);
       result_view->SetVisible(true);
     } else {
-      result_view->SetResult(NULL);
+      result_view->SetResult(nullptr);
       result_view->SetVisible(false);
     }
   }
diff --git a/ash/app_list/views/search_result_view.cc b/ash/app_list/views/search_result_view.cc
index 9f76418c..1c89db54 100644
--- a/ash/app_list/views/search_result_view.cc
+++ b/ash/app_list/views/search_result_view.cc
@@ -413,7 +413,7 @@
 
 void SearchResultView::OnSearchResultActionActivated(size_t index,
                                                      int event_flags) {
-  // |result()| could be NULL when result list is changing.
+  // |result()| could be nullptr when result list is changing.
   if (!result())
     return;
 
@@ -463,7 +463,7 @@
     views::View* source,
     const gfx::Point& point,
     ui::MenuSourceType source_type) {
-  // |result()| could be NULL when result list is changing.
+  // |result()| could be nullptr when result list is changing.
   if (!result())
     return;
 
diff --git a/ash/ash_strings.grd b/ash/ash_strings.grd
index b1b73f09..9fef715 100644
--- a/ash/ash_strings.grd
+++ b/ash/ash_strings.grd
@@ -1977,8 +1977,8 @@
       <message name="IDS_ASSISTANT_TIMER_NOTIFICATION_TITLE" desc="Title for Assistant timer notification.">
         Time's up
       </message>
-      <message name="IDS_ASSISTANT_TIMER_NOTIFICATION_MESSAGE" desc="Message for Assistant timer notification. Example: -01:23s.">
-        <ph name="SIGN">{0}<ex>-</ex></ph><ph name="MINUTES_REMAINING">{1,number,00}<ex>01</ex></ph>:<ph name="SECONDS_REMAINING">{2,number,00}<ex>02</ex></ph>s
+      <message name="IDS_ASSISTANT_TIMER_NOTIFICATION_MESSAGE_EXPIRED" desc="Message for Assistant timer notification that has expired. Format: -hh:mm:ss.">
+        -<ph name="TIME_SINCE_EXPIRATION">{0}<ex>10:27</ex></ph>
       </message>
       <message name="IDS_ASSISTANT_TIMER_NOTIFICATION_ADD_1_MIN_BUTTON" desc="Label for button to add 1 minute to timer in Assistant timer notification.">
         Add 1 min
diff --git a/ash/assistant/assistant_alarm_timer_controller.cc b/ash/assistant/assistant_alarm_timer_controller.cc
index 54f5b0b..c1bb4390 100644
--- a/ash/assistant/assistant_alarm_timer_controller.cc
+++ b/ash/assistant/assistant_alarm_timer_controller.cc
@@ -19,6 +19,10 @@
 #include "chromeos/services/assistant/public/mojom/assistant.mojom.h"
 #include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "mojo/public/cpp/bindings/receiver.h"
+#include "third_party/icu/source/common/unicode/utypes.h"
+#include "third_party/icu/source/i18n/unicode/measfmt.h"
+#include "third_party/icu/source/i18n/unicode/measunit.h"
+#include "third_party/icu/source/i18n/unicode/measure.h"
 #include "ui/base/l10n/l10n_util.h"
 
 namespace ash {
@@ -43,15 +47,62 @@
   return std::string(kTimerNotificationIdPrefix) + alarm_timer_id;
 }
 
+// Creates a notification message for the given |alarm_timer| which has the
+// specified amount of |time_remaining|. Note that if the alarm/timer is expired
+// the amount of time remaining will be negated.
 std::string CreateTimerNotificationMessage(const AlarmTimer& alarm_timer,
                                            base::TimeDelta time_remaining) {
-  const int minutes_remaining = time_remaining.InMinutes();
-  const int seconds_remaining =
-      (time_remaining - base::TimeDelta::FromMinutes(minutes_remaining))
-          .InSeconds();
-  return base::UTF16ToUTF8(base::i18n::MessageFormatter::FormatWithNumberedArgs(
-      l10n_util::GetStringUTF16(IDS_ASSISTANT_TIMER_NOTIFICATION_MESSAGE),
-      alarm_timer.expired() ? "-" : "", minutes_remaining, seconds_remaining));
+  // Method aliases to prevent line-wrapping below.
+  const auto createHour = icu::MeasureUnit::createHour;
+  const auto createMinute = icu::MeasureUnit::createMinute;
+  const auto createSecond = icu::MeasureUnit::createSecond;
+
+  // Calculate hours/minutes/seconds remaining.
+  const int64_t total_seconds = time_remaining.InSeconds();
+  const int64_t hours = total_seconds / 3600;
+  const int64_t minutes = (total_seconds - hours * 3600) / 60;
+  const int64_t seconds = total_seconds % 60;
+
+  // Success of the ICU APIs is tracked by |status|.
+  UErrorCode status = U_ZERO_ERROR;
+
+  // Create our distinct |measures| to be formatted. We only show |hours| if
+  // necessary, otherwise they are omitted.
+  std::vector<icu::Measure> measures;
+  if (hours)
+    measures.push_back(icu::Measure(hours, createHour(status), status));
+  measures.push_back(icu::Measure(minutes, createMinute(status), status));
+  measures.push_back(icu::Measure(seconds, createSecond(status), status));
+
+  // Format our |measures| into a |unicode_message|.
+  icu::UnicodeString unicode_message;
+  icu::FieldPosition field_position = icu::FieldPosition::DONT_CARE;
+  UMeasureFormatWidth width = UMEASFMT_WIDTH_NUMERIC;
+  icu::MeasureFormat measure_format(icu::Locale::getDefault(), width, status);
+  measure_format.formatMeasures(measures.data(), measures.size(),
+                                unicode_message, field_position, status);
+
+  std::string message;
+  if (U_SUCCESS(status)) {
+    // If formatting was successful, convert our |unicode_message| into UTF-8.
+    unicode_message.toUTF8String(message);
+  } else {
+    // If something went wrong, we'll fall back to using "hh:mm:ss" instead.
+    LOG(ERROR) << "Error formatting timer notification message: " << status;
+    message = base::StringPrintf("%02ld:%02ld:%02ld", hours, minutes, seconds);
+  }
+
+  // If time has elapsed since the |alarm_timer| has expired, we'll need to
+  // negate the amount of time remaining.
+  if (total_seconds && alarm_timer.expired()) {
+    const auto format = l10n_util::GetStringUTF16(
+        IDS_ASSISTANT_TIMER_NOTIFICATION_MESSAGE_EXPIRED);
+    return base::UTF16ToUTF8(
+        base::i18n::MessageFormatter::FormatWithNumberedArgs(format, message));
+  }
+
+  // Otherwise, all necessary formatting has been performed.
+  return message;
 }
 
 // TODO(llin): Migrate to use the AlarmManager API to better support multiple
diff --git a/ash/assistant/assistant_alarm_timer_controller_unittest.cc b/ash/assistant/assistant_alarm_timer_controller_unittest.cc
new file mode 100644
index 0000000..1fc1f593d
--- /dev/null
+++ b/ash/assistant/assistant_alarm_timer_controller_unittest.cc
@@ -0,0 +1,214 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ash/assistant/assistant_alarm_timer_controller.h"
+
+#include <memory>
+#include <vector>
+
+#include "ash/assistant/assistant_controller.h"
+#include "ash/assistant/assistant_notification_controller.h"
+#include "ash/assistant/model/assistant_notification_model.h"
+#include "ash/assistant/model/assistant_notification_model_observer.h"
+#include "ash/public/mojom/assistant_controller.mojom.h"
+#include "ash/shell.h"
+#include "ash/strings/grit/ash_strings.h"
+#include "ash/test/ash_test_base.h"
+#include "base/macros.h"
+#include "base/test/icu_test_util.h"
+#include "base/test/task_environment.h"
+#include "ui/base/l10n/l10n_util.h"
+
+namespace ash {
+
+namespace {
+
+// Helpers ---------------------------------------------------------------------
+
+// Creates a timer event with a given |id| and |state|.
+mojom::AssistantAlarmTimerEventPtr CreateTimerEvent(
+    const std::string& id,
+    mojom::AssistantTimerState state) {
+  auto timer_data = mojom::AssistantTimer::New();
+  timer_data->timer_id = id;
+  timer_data->state = state;
+
+  auto alarm_timer_data = mojom::AlarmTimerData::New();
+  alarm_timer_data->set_timer_data(std::move(timer_data));
+
+  auto timer_event = mojom::AssistantAlarmTimerEvent::New();
+  timer_event->type = mojom::AssistantAlarmTimerEventType::kTimer;
+  timer_event->data = std::move(alarm_timer_data);
+
+  return timer_event;
+}
+
+// ScopedNotificationModelObserver ---------------------------------------------
+
+class ScopedNotificationModelObserver
+    : public AssistantNotificationModelObserver {
+ public:
+  using AssistantNotification =
+      chromeos::assistant::mojom::AssistantNotification;
+  using AssistantNotificationPtr =
+      chromeos::assistant::mojom::AssistantNotificationPtr;
+
+  ScopedNotificationModelObserver() {
+    Shell::Get()
+        ->assistant_controller()
+        ->notification_controller()
+        ->AddModelObserver(this);
+  }
+
+  ~ScopedNotificationModelObserver() override {
+    Shell::Get()
+        ->assistant_controller()
+        ->notification_controller()
+        ->RemoveModelObserver(this);
+  }
+
+  // AssistantNotificationModelObserver:
+  void OnNotificationAdded(const AssistantNotification* notification) override {
+    last_notification_ = notification->Clone();
+  }
+
+  void OnNotificationUpdated(
+      const AssistantNotification* notification) override {
+    last_notification_ = notification->Clone();
+  }
+
+  const AssistantNotification* last_notification() const {
+    return last_notification_.get();
+  }
+
+ private:
+  AssistantNotificationPtr last_notification_;
+
+  DISALLOW_COPY_AND_ASSIGN(ScopedNotificationModelObserver);
+};
+
+}  // namespace
+
+// AssistantAlarmTimerControllerTest -------------------------------------------
+
+class AssistantAlarmTimerControllerTest : public AshTestBase {
+ protected:
+  AssistantAlarmTimerControllerTest()
+      : AshTestBase(base::test::TaskEnvironment::TimeSource::MOCK_TIME) {}
+
+  ~AssistantAlarmTimerControllerTest() override = default;
+
+  // AshTestBase:
+  void SetUp() override {
+    AshTestBase::SetUp();
+
+    controller_ =
+        Shell::Get()->assistant_controller()->alarm_timer_controller();
+    DCHECK(controller_);
+  }
+
+  // Advances the clock by |time_delta|, running any sequenced tasks in the
+  // queue. Note that we don't use |TaskEnvironment::FastForwardBy| because that
+  // API will hang when |time_delta| is sufficiently large, ultimately resulting
+  // in unittest timeout.
+  void AdvanceClock(base::TimeDelta time_delta) {
+    task_environment_->AdvanceClock(time_delta);
+    task_environment_->RunUntilIdle();
+  }
+
+  AssistantAlarmTimerController* controller() { return controller_; }
+
+ private:
+  AssistantAlarmTimerController* controller_ = nullptr;
+
+  DISALLOW_COPY_AND_ASSIGN(AssistantAlarmTimerControllerTest);
+};
+
+// Tests that a notification is added when a timer is fired and that the
+// notification is updated appropriately.
+TEST_F(AssistantAlarmTimerControllerTest, AddsAndUpdatesTimerNotification) {
+  // We're going to run our test over a few locales to ensure i18n compliance.
+  typedef struct {
+    std::string locale;
+    std::string expected_message_at_00_00_00;
+    std::string expected_message_at_00_00_01;
+    std::string expected_message_at_00_01_01;
+    std::string expected_message_at_01_01_01;
+  } I18nTestCase;
+
+  std::vector<I18nTestCase> i18n_test_cases;
+
+  // We'll test in English (United States).
+  i18n_test_cases.push_back({
+      /*locale=*/"en_US",
+      /*expected_message_at_00_00_00=*/"0:00",
+      /*expected_message_at_00_00_01=*/"-0:01",
+      /*expected_message_at_00_01_01=*/"-1:01",
+      /*expected_message_at_01_01_01=*/"-1:01:01",
+  });
+
+  // We'll also test in Slovenian (Slovenia).
+  i18n_test_cases.push_back({
+      /*locale=*/"sl_SI",
+      /*expected_message_at_00_00_00=*/"0.00",
+      /*expected_message_at_00_00_01=*/"-0.01",
+      /*expected_message_at_00_01_01=*/"-1.01",
+      /*expected_message_at_01_01_01=*/"-1.01.01",
+  });
+
+  // Run all of our internationalized test cases.
+  for (auto& i18n_test_case : i18n_test_cases) {
+    base::test::ScopedRestoreICUDefaultLocale locale(i18n_test_case.locale);
+
+    // Observe notifications.
+    ScopedNotificationModelObserver notification_model_observer;
+
+    // Fire a timer.
+    controller()->OnAlarmTimerStateChanged(
+        CreateTimerEvent(/*id=*/"1", mojom::AssistantTimerState::kFired));
+
+    // We expect our title to be internationalized.
+    const std::string expected_title =
+        l10n_util::GetStringUTF8(IDS_ASSISTANT_TIMER_NOTIFICATION_TITLE);
+
+    // Make assertions about the newly added notification.
+    auto* last_notification = notification_model_observer.last_notification();
+    EXPECT_EQ("assistant/timer1", last_notification->client_id);
+    EXPECT_EQ(expected_title, last_notification->title);
+    EXPECT_EQ(i18n_test_case.expected_message_at_00_00_00,
+              last_notification->message);
+
+    // Advance clock by 1 second.
+    AdvanceClock(base::TimeDelta::FromSeconds(1));
+
+    // Make assertions about the updated notification.
+    last_notification = notification_model_observer.last_notification();
+    EXPECT_EQ("assistant/timer1", last_notification->client_id);
+    EXPECT_EQ(expected_title, last_notification->title);
+    EXPECT_EQ(i18n_test_case.expected_message_at_00_00_01,
+              last_notification->message);
+
+    // Advance clock by 1 minute.
+    AdvanceClock(base::TimeDelta::FromMinutes(1));
+
+    // Make assertions about the updated notification.
+    last_notification = notification_model_observer.last_notification();
+    EXPECT_EQ("assistant/timer1", last_notification->client_id);
+    EXPECT_EQ(expected_title, last_notification->title);
+    EXPECT_EQ(i18n_test_case.expected_message_at_00_01_01,
+              last_notification->message);
+
+    // Advance clock by 1 hour.
+    AdvanceClock(base::TimeDelta::FromHours(1));
+
+    // Make assertions about the updated notification.
+    last_notification = notification_model_observer.last_notification();
+    EXPECT_EQ("assistant/timer1", last_notification->client_id);
+    EXPECT_EQ(expected_title, last_notification->title);
+    EXPECT_EQ(i18n_test_case.expected_message_at_01_01_01,
+              last_notification->message);
+  }
+}
+
+}  // namespace ash
diff --git a/ash/public/cpp/ash_features.cc b/ash/public/cpp/ash_features.cc
index f18e63c0..feb4a4da 100644
--- a/ash/public/cpp/ash_features.cc
+++ b/ash/public/cpp/ash_features.cc
@@ -55,6 +55,9 @@
 const base::Feature kNotificationScrollBar{"NotificationScrollBar",
                                            base::FEATURE_DISABLED_BY_DEFAULT};
 
+const base::Feature kOverviewCrossFadeWallpaperBlur{
+    "OverviewCrossFadeWallpaperBlur", base::FEATURE_ENABLED_BY_DEFAULT};
+
 const base::Feature kPipRoundedCorners{"PipRoundedCorners",
                                        base::FEATURE_DISABLED_BY_DEFAULT};
 
diff --git a/ash/public/cpp/ash_features.h b/ash/public/cpp/ash_features.h
index ed5a94c..7f5fe61 100644
--- a/ash/public/cpp/ash_features.h
+++ b/ash/public/cpp/ash_features.h
@@ -72,6 +72,10 @@
 // Enables notification scroll bar in UnifiedSystemTray.
 ASH_PUBLIC_EXPORT extern const base::Feature kNotificationScrollBar;
 
+// Enables using a cross fade animation for the wallpaper blur for overview
+// mode.
+ASH_PUBLIC_EXPORT extern const base::Feature kOverviewCrossFadeWallpaperBlur;
+
 // Enables rounded corners for the Picture-in-picture window.
 ASH_PUBLIC_EXPORT extern const base::Feature kPipRoundedCorners;
 
diff --git a/ash/shell_test_api.cc b/ash/shell_test_api.cc
index f2b6065..e419e856 100644
--- a/ash/shell_test_api.cc
+++ b/ash/shell_test_api.cc
@@ -10,7 +10,7 @@
 #include "ash/accelerators/accelerator_commands.h"
 #include "ash/accelerometer/accelerometer_reader.h"
 #include "ash/app_list/app_list_controller_impl.h"
-#include "ash/app_list/presenter/app_list_presenter_impl.h"
+#include "ash/app_list/app_list_presenter_impl.h"
 #include "ash/app_list/views/app_list_view.h"
 #include "ash/home_screen/home_launcher_gesture_handler.h"
 #include "ash/home_screen/home_launcher_gesture_handler_observer.h"
diff --git a/ash/system/accessibility/accessibility_feature_pod_controller.cc b/ash/system/accessibility/accessibility_feature_pod_controller.cc
index 0179cd4..6dc56c5 100644
--- a/ash/system/accessibility/accessibility_feature_pod_controller.cc
+++ b/ash/system/accessibility/accessibility_feature_pod_controller.cc
@@ -24,7 +24,7 @@
     default;
 
 FeaturePodButton* AccessibilityFeaturePodController::CreateButton() {
-  auto* button = new FeaturePodButton(this);
+  auto* button = new FeaturePodButton(this, /*is_togglable=*/false);
   button->SetID(ash::VIEW_ID_ACCESSIBILITY_TRAY_ITEM);
   button->SetLabel(
       l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ACCESSIBILITY));
diff --git a/ash/system/ime/ime_feature_pod_controller.cc b/ash/system/ime/ime_feature_pod_controller.cc
index f181e2e..dfbb95c 100644
--- a/ash/system/ime/ime_feature_pod_controller.cc
+++ b/ash/system/ime/ime_feature_pod_controller.cc
@@ -64,7 +64,7 @@
 }
 
 FeaturePodButton* IMEFeaturePodController::CreateButton() {
-  button_ = new FeaturePodButton(this);
+  button_ = new FeaturePodButton(this, /*is_togglable=*/false);
   button_->SetVectorIcon(kUnifiedMenuKeyboardIcon);
   button_->SetLabel(l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_IME_SHORT));
   button_->SetIconAndLabelTooltips(GetTooltipString());
diff --git a/ash/system/locale/locale_feature_pod_controller.cc b/ash/system/locale/locale_feature_pod_controller.cc
index 894ea7c1..6d39b5c 100644
--- a/ash/system/locale/locale_feature_pod_controller.cc
+++ b/ash/system/locale/locale_feature_pod_controller.cc
@@ -24,7 +24,7 @@
 LocaleFeaturePodController::~LocaleFeaturePodController() = default;
 
 FeaturePodButton* LocaleFeaturePodController::CreateButton() {
-  auto* button = new FeaturePodButton(this);
+  auto* button = new FeaturePodButton(this, /*is_togglable=*/false);
   const bool visible =
       !Shell::Get()->system_tray_model()->locale()->locale_list().empty();
   button->SetVisible(visible);
diff --git a/ash/system/unified/feature_pod_button.cc b/ash/system/unified/feature_pod_button.cc
index b5fc419..60eb0c80 100644
--- a/ash/system/unified/feature_pod_button.cc
+++ b/ash/system/unified/feature_pod_button.cc
@@ -42,8 +42,9 @@
 
 }  // namespace
 
-FeaturePodIconButton::FeaturePodIconButton(views::ButtonListener* listener)
-    : views::ImageButton(listener) {
+FeaturePodIconButton::FeaturePodIconButton(views::ButtonListener* listener,
+                                           bool is_togglable)
+    : views::ImageButton(listener), is_togglable_(is_togglable) {
   SetPreferredSize(kUnifiedFeaturePodIconSize);
   SetBorder(views::CreateEmptyBorder(kUnifiedFeaturePodIconPadding));
   SetImageHorizontalAlignment(ALIGN_CENTER);
@@ -55,6 +56,9 @@
 FeaturePodIconButton::~FeaturePodIconButton() = default;
 
 void FeaturePodIconButton::SetToggled(bool toggled) {
+  if (!is_togglable_)
+    return;
+
   toggled_ = toggled;
   SchedulePaint();
 }
@@ -114,9 +118,13 @@
 void FeaturePodIconButton::GetAccessibleNodeData(ui::AXNodeData* node_data) {
   ImageButton::GetAccessibleNodeData(node_data);
   node_data->SetName(GetTooltipText(gfx::Point()));
-  node_data->role = ax::mojom::Role::kToggleButton;
-  node_data->SetCheckedState(toggled_ ? ax::mojom::CheckedState::kTrue
-                                      : ax::mojom::CheckedState::kFalse);
+  if (is_togglable_) {
+    node_data->role = ax::mojom::Role::kToggleButton;
+    node_data->SetCheckedState(toggled_ ? ax::mojom::CheckedState::kTrue
+                                        : ax::mojom::CheckedState::kFalse);
+  } else {
+    node_data->role = ax::mojom::Role::kButton;
+  }
 }
 
 const char* FeaturePodIconButton::GetClassName() const {
@@ -270,9 +278,10 @@
       child_width, preferred_size.height());
 }
 
-FeaturePodButton::FeaturePodButton(FeaturePodControllerBase* controller)
+FeaturePodButton::FeaturePodButton(FeaturePodControllerBase* controller,
+                                   bool is_togglable)
     : controller_(controller),
-      icon_button_(new FeaturePodIconButton(this)),
+      icon_button_(new FeaturePodIconButton(this, is_togglable)),
       label_button_(new FeaturePodLabelButton(this)) {
   auto* layout = SetLayoutManager(std::make_unique<views::BoxLayout>(
       views::BoxLayout::Orientation::kVertical, gfx::Insets(),
diff --git a/ash/system/unified/feature_pod_button.h b/ash/system/unified/feature_pod_button.h
index d4b8ce6..7ade643 100644
--- a/ash/system/unified/feature_pod_button.h
+++ b/ash/system/unified/feature_pod_button.h
@@ -23,7 +23,7 @@
 // ImageButon internally used in FeaturePodButton. Should not be used directly.
 class FeaturePodIconButton : public views::ImageButton {
  public:
-  explicit FeaturePodIconButton(views::ButtonListener* listener);
+  FeaturePodIconButton(views::ButtonListener* listener, bool is_togglable);
   ~FeaturePodIconButton() override;
 
   // Change the toggle state. See FeaturePodButton::SetToggled.
@@ -42,7 +42,10 @@
   bool toggled() const { return toggled_; }
 
  private:
-  // Ture if the button is currently toggled.
+  // True if this button is a togglable.
+  const bool is_togglable_;
+
+  // True if the button is currently toggled.
   bool toggled_ = false;
 
   DISALLOW_COPY_AND_ASSIGN(FeaturePodIconButton);
@@ -95,13 +98,15 @@
 
 // A button in FeaturePodsView. These buttons are main entry points of features
 // in UnifiedSystemTray. Each button has its icon, label, and sub-label placed
-// vertically. They are also togglable and the background color indicates the
-// current state.
+// vertically. The button may be togglable and the background color indicates
+// the current state. Otherwise, the button is not a toggle button and just
+// navigates to the appropriate detailed view.
 // See the comment in FeaturePodsView for detail.
 class ASH_EXPORT FeaturePodButton : public views::View,
                                     public views::ButtonListener {
  public:
-  explicit FeaturePodButton(FeaturePodControllerBase* controller);
+  FeaturePodButton(FeaturePodControllerBase* controller,
+                   bool is_togglable = true);
   ~FeaturePodButton() override;
 
   // Set the vector icon shown in a circle.
@@ -130,7 +135,8 @@
   void DisableLabelButtonFocus();
 
   // Change the toggled state. If toggled, the background color of the circle
-  // will change.
+  // will change. If the button is not togglable, then SetToggled() will do
+  // nothing and |IsToggled()| will always return false.
   void SetToggled(bool toggled);
   bool IsToggled() const { return icon_button_->toggled(); }
 
@@ -162,7 +168,6 @@
 
   bool visible_preferred() const { return visible_preferred_; }
 
- protected:
   FeaturePodIconButton* icon_button() const { return icon_button_; }
 
  private:
diff --git a/ash/system/unified/feature_pods_container_view_unittest.cc b/ash/system/unified/feature_pods_container_view_unittest.cc
index 540ebae..d1a36cfe 100644
--- a/ash/system/unified/feature_pods_container_view_unittest.cc
+++ b/ash/system/unified/feature_pods_container_view_unittest.cc
@@ -443,4 +443,18 @@
   }
 }
 
+TEST_F(FeaturePodsContainerViewTest, NonTogglableButton) {
+  // Add one togglable and one non-tobblable button.
+  buttons_.push_back(new FeaturePodButton(this, /*is_togglable=*/false));
+  AddButtons(1);
+
+  // Non-togglable buttons should be labelled as a regular button for
+  // accessibility and vice versa.
+  ui::AXNodeData ax_node_data;
+  buttons_[0]->icon_button()->GetAccessibleNodeData(&ax_node_data);
+  EXPECT_EQ(ax_node_data.role, ax::mojom::Role::kButton);
+  buttons_[1]->icon_button()->GetAccessibleNodeData(&ax_node_data);
+  EXPECT_EQ(ax_node_data.role, ax::mojom::Role::kToggleButton);
+}
+
 }  // namespace ash
diff --git a/ash/wm/overview/overview_controller.cc b/ash/wm/overview/overview_controller.cc
index 76e8f74..9c455cb5 100644
--- a/ash/wm/overview/overview_controller.cc
+++ b/ash/wm/overview/overview_controller.cc
@@ -328,7 +328,7 @@
 }
 
 bool OverviewController::HasBlurAnimationForTest() const {
-  return overview_wallpaper_controller_->has_blur_animation();
+  return overview_wallpaper_controller_->HasBlurAnimationForTesting();
 }
 
 std::vector<aura::Window*>
diff --git a/ash/wm/overview/overview_controller.h b/ash/wm/overview/overview_controller.h
index 772ecbf5d..2358b2da 100644
--- a/ash/wm/overview/overview_controller.h
+++ b/ash/wm/overview/overview_controller.h
@@ -95,6 +95,10 @@
 
   OverviewSession* overview_session() { return overview_session_.get(); }
 
+  OverviewWallpaperController* overview_wallpaper_controller() {
+    return overview_wallpaper_controller_.get();
+  }
+
   void set_occlusion_pause_duration_for_end_for_test(base::TimeDelta duration) {
     occlusion_pause_duration_for_end_ = duration;
   }
diff --git a/ash/wm/overview/overview_controller_unittest.cc b/ash/wm/overview/overview_controller_unittest.cc
index 9765480..94542a1 100644
--- a/ash/wm/overview/overview_controller_unittest.cc
+++ b/ash/wm/overview/overview_controller_unittest.cc
@@ -8,16 +8,19 @@
 #include "ash/keyboard/ui/keyboard_ui_controller.h"
 #include "ash/keyboard/ui/keyboard_util.h"
 #include "ash/keyboard/ui/test/keyboard_test_util.h"
+#include "ash/public/cpp/ash_features.h"
 #include "ash/public/cpp/keyboard/keyboard_switches.h"
 #include "ash/shell.h"
 #include "ash/test/ash_test_base.h"
 #include "ash/wallpaper/wallpaper_widget_controller.h"
 #include "ash/wm/overview/overview_observer.h"
 #include "ash/wm/overview/overview_session.h"
+#include "ash/wm/overview/overview_wallpaper_controller.h"
 #include "ash/wm/tablet_mode/tablet_mode_controller_test_api.h"
 #include "ash/wm/window_resizer.h"
 #include "ash/wm/window_util.h"
 #include "base/command_line.h"
+#include "base/feature_list.h"
 #include "ui/base/hit_test.h"
 #include "ui/compositor/scoped_animation_duration_scale_mode.h"
 #include "ui/events/test/event_generator.h"
@@ -160,6 +163,9 @@
 }
 
 TEST_F(OverviewControllerTest, AnimationCallbacks) {
+  if (base::FeatureList::IsEnabled(features::kOverviewCrossFadeWallpaperBlur))
+    return;
+
   ui::ScopedAnimationDurationScaleMode non_zero(
       ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION);
   TestOverviewObserver observer(/*should_monitor_animation_state = */ true);
@@ -236,6 +242,87 @@
   EXPECT_FALSE(overview_controller->HasBlurAnimationForTest());
 }
 
+TEST_F(OverviewControllerTest, AnimationCallbacksForCrossFadeWallpaper) {
+  if (!base::FeatureList::IsEnabled(features::kOverviewCrossFadeWallpaperBlur))
+    return;
+
+  ui::ScopedAnimationDurationScaleMode non_zero(
+      ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION);
+  TestOverviewObserver observer(/*should_monitor_animation_state = */ true);
+  // Enter without windows.
+  auto* overview_controller = Shell::Get()->overview_controller();
+  overview_controller->StartOverview();
+  EXPECT_TRUE(overview_controller->InOverviewSession());
+  EXPECT_EQ(TestOverviewObserver::COMPLETED,
+            observer.starting_animation_state());
+  EXPECT_TRUE(overview_controller->HasBlurForTest());
+  EXPECT_TRUE(overview_controller->HasBlurAnimationForTest());
+  overview_controller->overview_wallpaper_controller()
+      ->StopBlurAnimationsForTesting();
+
+  // Exiting overview has no animations.
+  overview_controller->EndOverview();
+  EXPECT_FALSE(overview_controller->InOverviewSession());
+  EXPECT_EQ(TestOverviewObserver::UNKNOWN, observer.ending_animation_state());
+  EXPECT_FALSE(overview_controller->HasBlurForTest());
+  EXPECT_FALSE(overview_controller->HasBlurAnimationForTest());
+
+  observer.WaitForEndingAnimationComplete();
+  EXPECT_EQ(TestOverviewObserver::COMPLETED, observer.ending_animation_state());
+  EXPECT_FALSE(overview_controller->HasBlurForTest());
+  EXPECT_FALSE(overview_controller->HasBlurAnimationForTest());
+
+  gfx::Rect bounds(0, 0, 100, 100);
+  std::unique_ptr<aura::Window> window1(
+      CreateTestWindowInShellWithBounds(bounds));
+  std::unique_ptr<aura::Window> window2(
+      CreateTestWindowInShellWithBounds(bounds));
+
+  observer.Reset();
+  ASSERT_EQ(TestOverviewObserver::UNKNOWN, observer.starting_animation_state());
+  ASSERT_EQ(TestOverviewObserver::UNKNOWN, observer.ending_animation_state());
+
+  // Enter with windows.
+  overview_controller->StartOverview();
+  EXPECT_TRUE(overview_controller->InOverviewSession());
+  EXPECT_EQ(TestOverviewObserver::UNKNOWN, observer.starting_animation_state());
+  EXPECT_EQ(TestOverviewObserver::UNKNOWN, observer.ending_animation_state());
+  EXPECT_FALSE(overview_controller->HasBlurForTest());
+  EXPECT_FALSE(overview_controller->HasBlurAnimationForTest());
+
+  // Exit with windows before starting animation ends.
+  overview_controller->EndOverview();
+  EXPECT_FALSE(overview_controller->InOverviewSession());
+  EXPECT_EQ(TestOverviewObserver::CANCELED,
+            observer.starting_animation_state());
+  EXPECT_EQ(TestOverviewObserver::UNKNOWN, observer.ending_animation_state());
+  // Blur animation never started.
+  EXPECT_FALSE(overview_controller->HasBlurForTest());
+  EXPECT_FALSE(overview_controller->HasBlurAnimationForTest());
+
+  observer.Reset();
+
+  // Enter again before exit animation ends.
+  overview_controller->StartOverview();
+  EXPECT_TRUE(overview_controller->InOverviewSession());
+  EXPECT_EQ(TestOverviewObserver::UNKNOWN, observer.starting_animation_state());
+  EXPECT_EQ(TestOverviewObserver::CANCELED, observer.ending_animation_state());
+  // Blur animation will start when animation is completed.
+  EXPECT_FALSE(overview_controller->HasBlurForTest());
+  EXPECT_FALSE(overview_controller->HasBlurAnimationForTest());
+
+  observer.Reset();
+
+  // Activating window while entering animation should cancel the overview.
+  wm::ActivateWindow(window1.get());
+  EXPECT_FALSE(overview_controller->InOverviewSession());
+  EXPECT_EQ(TestOverviewObserver::CANCELED,
+            observer.starting_animation_state());
+  // Blur animation never started.
+  EXPECT_FALSE(overview_controller->HasBlurForTest());
+  EXPECT_FALSE(overview_controller->HasBlurAnimationForTest());
+}
+
 // Tests the slide animation for overview is never used in clamshell.
 TEST_F(OverviewControllerTest, OverviewEnterExitAnimationClamshell) {
   TestOverviewObserver observer(/*should_monitor_animation_state = */ false);
diff --git a/ash/wm/overview/overview_wallpaper_controller.cc b/ash/wm/overview/overview_wallpaper_controller.cc
index 835a2e0..3e63f8d 100644
--- a/ash/wm/overview/overview_wallpaper_controller.cc
+++ b/ash/wm/overview/overview_wallpaper_controller.cc
@@ -4,6 +4,7 @@
 
 #include "ash/wm/overview/overview_wallpaper_controller.h"
 
+#include "ash/public/cpp/ash_features.h"
 #include "ash/root_window_controller.h"
 #include "ash/shell.h"
 #include "ash/wallpaper/wallpaper_controller_impl.h"
@@ -13,6 +14,11 @@
 #include "ash/wm/overview/overview_controller.h"
 #include "ash/wm/overview/overview_grid.h"
 #include "ui/aura/window_tree_host.h"
+#include "ui/compositor/layer.h"
+#include "ui/compositor/layer_tree_owner.h"
+#include "ui/compositor/scoped_layer_animation_settings.h"
+#include "ui/views/widget/widget.h"
+#include "ui/wm/core/window_util.h"
 
 namespace ash {
 
@@ -29,15 +35,31 @@
          Shell::Get()->wallpaper_controller()->IsBlurAllowed();
 }
 
+WallpaperWidgetController* GetWallpaperWidgetController(aura::Window* root) {
+  return RootWindowController::ForWindow(root)->wallpaper_widget_controller();
+}
+
+ui::LayerAnimator* GetAnimator(
+    WallpaperWidgetController* wallpaper_widget_controller) {
+  return wallpaper_widget_controller->GetWidget()
+      ->GetNativeWindow()
+      ->layer()
+      ->GetAnimator();
+}
+
 }  // namespace
 
-OverviewWallpaperController::OverviewWallpaperController() = default;
+OverviewWallpaperController::OverviewWallpaperController()
+    : use_cross_fade_(base::FeatureList::IsEnabled(
+          features::kOverviewCrossFadeWallpaperBlur)) {}
 
 OverviewWallpaperController::~OverviewWallpaperController() {
   if (compositor_)
     compositor_->RemoveAnimationObserver(this);
   for (aura::Window* root : roots_to_animate_)
     root->RemoveObserver(this);
+
+  StopObservingImplicitAnimations();
 }
 
 // static
@@ -58,6 +80,29 @@
                /*animate_only=*/false);
 }
 
+bool OverviewWallpaperController::HasBlurAnimationForTesting() const {
+  if (!use_cross_fade_)
+    return !!compositor_;
+
+  for (aura::Window* root : Shell::Get()->GetAllRootWindows()) {
+    auto* wallpaper_widget_controller = GetWallpaperWidgetController(root);
+    if (GetAnimator(wallpaper_widget_controller)->is_animating())
+      return true;
+  }
+  return false;
+}
+
+void OverviewWallpaperController::StopBlurAnimationsForTesting() {
+  DCHECK(use_cross_fade_);
+  for (auto& layer_tree : animating_copies_)
+    layer_tree->root()->GetAnimator()->StopAnimating();
+  for (aura::Window* root : Shell::Get()->GetAllRootWindows()) {
+    auto* wallpaper_widget_controller = GetWallpaperWidgetController(root);
+    wallpaper_widget_controller->EndPendingAnimation();
+    GetAnimator(wallpaper_widget_controller)->StopAnimating();
+  }
+}
+
 void OverviewWallpaperController::Stop() {
   if (compositor_) {
     compositor_->RemoveAnimationObserver(this);
@@ -81,6 +126,7 @@
 }
 
 void OverviewWallpaperController::OnAnimationStep(base::TimeTicks timestamp) {
+  DCHECK(!use_cross_fade_);
   if (start_time_ == base::TimeTicks()) {
     start_time_ = timestamp;
     return;
@@ -98,11 +144,13 @@
 
 void OverviewWallpaperController::OnCompositingShuttingDown(
     ui::Compositor* compositor) {
+  DCHECK(!use_cross_fade_);
   if (compositor_ == compositor)
     Stop();
 }
 
 void OverviewWallpaperController::OnWindowDestroying(aura::Window* window) {
+  DCHECK(!use_cross_fade_);
   window->RemoveObserver(this);
   auto it =
       std::find(roots_to_animate_.begin(), roots_to_animate_.end(), window);
@@ -110,6 +158,12 @@
     roots_to_animate_.erase(it);
 }
 
+void OverviewWallpaperController::OnImplicitAnimationsCompleted() {
+  DCHECK(use_cross_fade_);
+  animating_copies_.clear();
+  state_ = WallpaperAnimationState::kNormal;
+}
+
 void OverviewWallpaperController::ApplyBlurAndOpacity(aura::Window* root,
                                                       int value) {
   DCHECK_GE(value, 0);
@@ -126,6 +180,11 @@
 
 void OverviewWallpaperController::OnBlurChange(WallpaperAnimationState state,
                                                bool animate_only) {
+  if (use_cross_fade_) {
+    OnBlurChangeCrossFade(state, animate_only);
+    return;
+  }
+
   Stop();
   for (aura::Window* root : roots_to_animate_)
     root->RemoveObserver(this);
@@ -171,4 +230,88 @@
     Start();
 }
 
+void OverviewWallpaperController::OnBlurChangeCrossFade(
+    WallpaperAnimationState state,
+    bool animate_only) {
+  state_ = state;
+  const bool should_blur = state_ == WallpaperAnimationState::kAddingBlur;
+  if (animate_only)
+    DCHECK(should_blur);
+
+  OverviewSession* overview_session =
+      Shell::Get()->overview_controller()->overview_session();
+  for (aura::Window* root : Shell::Get()->GetAllRootWindows()) {
+    // |overview_session| may be null on overview exit because we call this
+    // after the animations are done running. We don't support animation on exit
+    // so just set |should_animate| to false.
+    OverviewGrid* grid = overview_session
+                             ? overview_session->GetGridWithRootWindow(root)
+                             : nullptr;
+    bool should_animate = grid && grid->ShouldAnimateWallpaper();
+    if (should_animate != animate_only)
+      continue;
+
+    auto* wallpaper_widget_controller = GetWallpaperWidgetController(root);
+    wallpaper_widget_controller->EndPendingAnimation();
+    auto* wallpaper_window =
+        wallpaper_widget_controller->GetWidget()->GetNativeWindow();
+
+    // No need to animate the blur on exiting as this should only be called
+    // after overview animations are finished.
+    std::unique_ptr<ui::LayerTreeOwner> copy_layer_tree;
+    if (should_blur && should_animate) {
+      // On animating, create the copy that of the wallpaper. The original
+      // wallpaper layer will then get blurred and faded in. The copy is
+      // deleted after animating.
+      copy_layer_tree = ::wm::RecreateLayers(wallpaper_window);
+      copy_layer_tree->root()->SetOpacity(1.f);
+      copy_layer_tree->root()->parent()->StackAtBottom(copy_layer_tree->root());
+    }
+
+    ui::Layer* original_layer = wallpaper_window->layer();
+    original_layer->GetAnimator()->StopAnimating();
+    original_layer->SetLayerBlur(should_blur ? kWallpaperBlurSigma
+                                             : kWallpaperClearBlurSigma);
+    original_layer->SetOpacity(should_blur ? 0.f : 1.f);
+
+    ui::Layer* copy_layer = copy_layer_tree ? copy_layer_tree->root() : nullptr;
+    if (copy_layer)
+      copy_layer->GetAnimator()->StopAnimating();
+
+    std::unique_ptr<ui::ScopedLayerAnimationSettings> original_settings;
+    std::unique_ptr<ui::ScopedLayerAnimationSettings> copy_settings;
+    if (should_blur && should_animate) {
+      original_settings = std::make_unique<ui::ScopedLayerAnimationSettings>(
+          original_layer->GetAnimator());
+      original_settings->SetTransitionDuration(
+          base::TimeDelta::FromMilliseconds(kBlurSlideDurationMs));
+      original_settings->SetTweenType(gfx::Tween::EASE_OUT);
+
+      DCHECK(copy_layer);
+      copy_settings = std::make_unique<ui::ScopedLayerAnimationSettings>(
+          copy_layer->GetAnimator());
+      copy_settings->SetTransitionDuration(
+          base::TimeDelta::FromMilliseconds(kBlurSlideDurationMs));
+      copy_settings->SetTweenType(gfx::Tween::EASE_OUT);
+      copy_settings->AddObserver(this);
+
+      animating_copies_.emplace_back(std::move(copy_layer_tree));
+    } else {
+      state_ = WallpaperAnimationState::kNormal;
+    }
+
+    // Tablet mode wallpaper is already dimmed, so no need to change the
+    // opacity.
+    float target_opacity =
+        Shell::Get()->tablet_mode_controller()->InTabletMode() ? 1.f
+                                                               : kShieldOpacity;
+    original_layer->SetOpacity(should_blur ? target_opacity : 1.f);
+    if (copy_layer)
+      copy_layer->SetOpacity(0.f);
+  }
+
+  if (animating_copies_.empty())
+    state_ = WallpaperAnimationState::kNormal;
+}
+
 }  // namespace ash
diff --git a/ash/wm/overview/overview_wallpaper_controller.h b/ash/wm/overview/overview_wallpaper_controller.h
index c8bdebb8..48b20dfe 100644
--- a/ash/wm/overview/overview_wallpaper_controller.h
+++ b/ash/wm/overview/overview_wallpaper_controller.h
@@ -5,13 +5,17 @@
 #ifndef ASH_WM_OVERVIEW_OVERVIEW_WALLPAPER_CONTROLLER_H_
 #define ASH_WM_OVERVIEW_OVERVIEW_WALLPAPER_CONTROLLER_H_
 
+#include <vector>
+
 #include "ash/ash_export.h"
 #include "base/macros.h"
 #include "ui/aura/window_observer.h"
 #include "ui/compositor/compositor_animation_observer.h"
+#include "ui/compositor/layer_animation_observer.h"
 
 namespace ui {
 class Compositor;
+class LayerTreeOwner;
 class Window;
 }  // namespace ui
 
@@ -23,7 +27,8 @@
 // animates the blur and dim.
 class ASH_EXPORT OverviewWallpaperController
     : public ui::CompositorAnimationObserver,
-      public aura::WindowObserver {
+      public aura::WindowObserver,
+      public ui::ImplicitAnimationObserver {
  public:
   OverviewWallpaperController();
   ~OverviewWallpaperController() override;
@@ -35,7 +40,9 @@
   void Unblur();
 
   bool has_blur() const { return state_ != WallpaperAnimationState::kNormal; }
-  bool has_blur_animation() const { return !!compositor_; }
+
+  bool HasBlurAnimationForTesting() const;
+  void StopBlurAnimationsForTesting();
 
  private:
   enum class WallpaperAnimationState {
@@ -55,16 +62,23 @@
   // aura::WindowObserver:
   void OnWindowDestroying(aura::Window* window) override;
 
+  // ui::ImplicitAnimationObserver:
+  void OnImplicitAnimationsCompleted() override;
+
   void ApplyBlurAndOpacity(aura::Window* root, int value);
 
   // Called when the wallpaper is to be changed. Checks to see which root
   // windows should have their wallpaper blurs animated and fills
-  // |roots_to_animate_| accordingly. Applies blur or unblur immediately if
-  // the wallpaper does not need blur animation.
-  // When |animate_only| is true, it'll apply blur only to the root windows that
+  // |roots_to_animate_| or |blur_layers_| accordingly. Applies blur or unblur
+  // immediately if the wallpaper does not need blur animation. When
+  // |animate_only| is true, it'll apply blur only to the root windows that
   // requires animation.
   void OnBlurChange(WallpaperAnimationState state, bool animate_only);
+  void OnBlurChangeCrossFade(WallpaperAnimationState state, bool animate_only);
 
+  const bool use_cross_fade_;
+
+  // Used for the compositor animation which drives the normal blur animation.
   ui::Compositor* compositor_ = nullptr;
   base::TimeTicks start_time_;
 
@@ -73,6 +87,10 @@
   // blur animated after Blur or Unblur is called.
   std::vector<aura::Window*> roots_to_animate_;
 
+  // Vector that contains the copied layers, one per root window. This should
+  // be empty when overview enter animation is not running.
+  std::vector<std::unique_ptr<ui::LayerTreeOwner>> animating_copies_;
+
   DISALLOW_COPY_AND_ASSIGN(OverviewWallpaperController);
 };
 
diff --git a/ash/wm/tablet_mode/tablet_mode_controller.cc b/ash/wm/tablet_mode/tablet_mode_controller.cc
index 25ff9b2..993497e6 100644
--- a/ash/wm/tablet_mode/tablet_mode_controller.cc
+++ b/ash/wm/tablet_mode/tablet_mode_controller.cc
@@ -430,15 +430,14 @@
 }
 
 void TabletModeController::OnShellInitialized() {
-  switch (GetUiMode()) {
+  forced_ui_mode_ = GetUiMode();
+  switch (forced_ui_mode_) {
     case UiMode::kTabletMode:
-      tablet_mode_behavior_ = kLockInCurrentMode;
-      AttemptEnterTabletMode();
-      break;
     case UiMode::kClamshell:
       tablet_mode_behavior_ = kLockInCurrentMode;
-      AttemptLeaveTabletMode();
+      UpdateUiTabletState();
       break;
+
     case UiMode::kNone:
       break;
   }
@@ -448,16 +447,10 @@
   if (!tablet_mode_behavior_.observe_display_events)
     return;
 
-  if (!HasActiveInternalDisplay()) {
-    AttemptLeaveTabletMode();
-  } else if (tablet_mode_switch_is_on_ && !InTabletMode()) {
-    // The internal display has returned, as we are exiting docked mode.
-    // The device is still in tablet mode, so trigger tablet mode, as this
-    // switch leads to the ignoring of accelerometer events. When the switch is
-    // not set the next stable accelerometer readings will trigger maximize
-    // mode.
-    AttemptEnterTabletMode();
-  }
+  // Display config changes might be due to entering or exiting docked mode, in
+  // which case the availability of an active internal display changes.
+  // Therefore we update the physical tablet state of the device.
+  SetIsInTabletPhysicalState(CalculateIsInTabletPhysicalState());
 }
 
 void TabletModeController::OnChromeTerminating() {
@@ -525,10 +518,11 @@
     chromeos::PowerManagerClient::LidState state,
     const base::TimeTicks& time) {
   VLOG(1) << "Lid event received: " << static_cast<int>(state);
-  const bool open = state == chromeos::PowerManagerClient::LidState::OPEN;
-  lid_is_closed_ = !open;
-  if (tablet_mode_behavior_.use_sensor && !tablet_mode_switch_is_on_)
-    AttemptLeaveTabletMode();
+  lid_is_closed_ = state != chromeos::PowerManagerClient::LidState::OPEN;
+  if (!tablet_mode_behavior_.use_sensor)
+    return;
+
+  SetIsInTabletPhysicalState(CalculateIsInTabletPhysicalState());
 }
 
 void TabletModeController::TabletModeEventReceived(
@@ -543,26 +537,7 @@
   tablet_mode_switch_is_on_ = on;
   tablet_mode_behavior_ = on ? kOnBySensor : kDefault;
 
-  // Do not change if docked.
-  if (!HasActiveInternalDisplay())
-    return;
-
-  // For updated EC, the tablet mode switch activates at 200 degrees, and
-  // deactivates at 160 degrees.
-  // For old EC, the tablet mode switch activates at 300 degrees, so it's
-  // always reliable when |on|. However we wish to exit tablet mode at a
-  // smaller angle, so when |on| is false we ignore if it is possible to
-  // calculate the lid angle.
-  if (on && !InTabletMode()) {
-    AttemptEnterTabletMode();
-  } else if (!on && InTabletMode() && !can_detect_lid_angle_) {
-    AttemptLeaveTabletMode();
-  } else {
-    // Even if we do not change its ui mode, we should update its input device
-    // blocker as tablet mode events may come in because of the lid angle/or
-    // folio keyboard state changes but ui mode might still stay the same.
-    UpdateInternalInputDevicesEventBlocker();
-  }
+  SetIsInTabletPhysicalState(CalculateIsInTabletPhysicalState());
 }
 
 void TabletModeController::SuspendImminent(
@@ -669,8 +644,6 @@
 ////////////////////////////////////////////////////////////////////////////////
 // TabletModeContrller, private:
 
-// TODO(jcliang): Remove SetTabletModeEnabledInternal
-// (http://crbug.com/620241).
 void TabletModeController::SetTabletModeEnabledInternal(bool should_enable) {
   if (InTabletMode() == should_enable)
     return;
@@ -777,10 +750,10 @@
   if (lid_angle_ < 0.0f)
     lid_angle_ += 360.0f;
 
-  bool is_angle_stable = is_angle_reliable && lid_angle_ >= kMinStableAngle &&
+  lid_angle_is_stable_ = is_angle_reliable && lid_angle_ >= kMinStableAngle &&
                          lid_angle_ <= kMaxStableAngle;
 
-  if (is_angle_stable) {
+  if (lid_angle_is_stable_) {
     // Reset the timestamp of first unstable lid angle because we get a stable
     // reading.
     first_unstable_lid_angle_time_ = base::TimeTicks();
@@ -788,15 +761,9 @@
     first_unstable_lid_angle_time_ = tick_clock_->NowTicks();
   }
 
-  // Toggle tablet mode on or off when corresponding thresholds are passed.
-  if (is_angle_stable && lid_angle_ <= kExitTabletModeAngle) {
-    tablet_mode_behavior_ = kDefault;
-    AttemptLeaveTabletMode();
-  } else if (!lid_is_closed_ && lid_angle_ >= kEnterTabletModeAngle &&
-             (is_angle_stable || CanUseUnstableLidAngle())) {
-    tablet_mode_behavior_ = kOnBySensor;
-    AttemptEnterTabletMode();
-  }
+  const bool new_tablet_physical_state = CalculateIsInTabletPhysicalState();
+  tablet_mode_behavior_ = new_tablet_physical_state ? kOnBySensor : kDefault;
+  SetIsInTabletPhysicalState(new_tablet_physical_state);
 
   // Start reporting the lid angle if we aren't already doing so.
   if (!record_lid_angle_timer_.IsRunning()) {
@@ -832,26 +799,6 @@
   return have_seen_accelerometer_data_ || InTabletMode();
 }
 
-void TabletModeController::AttemptEnterTabletMode() {
-  if (InTabletMode() ||
-      (has_external_pointing_device_ &&
-       tablet_mode_behavior_.observe_external_pointer_device_events)) {
-    UpdateInternalInputDevicesEventBlocker();
-    return;
-  }
-
-  SetTabletModeEnabledInternal(true);
-}
-
-void TabletModeController::AttemptLeaveTabletMode() {
-  if (!InTabletMode()) {
-    UpdateInternalInputDevicesEventBlocker();
-    return;
-  }
-
-  SetTabletModeEnabledInternal(false);
-}
-
 void TabletModeController::RecordTabletModeUsageInterval(
     TabletModeIntervalType type) {
   if (!CanEnterTabletMode())
@@ -922,19 +869,9 @@
   if (!tablet_mode_behavior_.observe_external_pointer_device_events)
     return;
 
-  // Enter clamshell mode whenever an external pointing device is attached.
-  if (has_external_pointing_device) {
-    AttemptLeaveTabletMode();
-  } else if (HasActiveInternalDisplay() &&
-             (LidAngleInTabletModeRange() || tablet_mode_switch_is_on_)) {
-    // If there is no external pointing device, only enter tablet mode if docked
-    // mode is inactive and 1) the lid angle can be detected and is in tablet
-    // mode angle range. or 2) if the lid angle can't be detected (e.g., tablet
-    // device or clamshell device) and |tablet_mode_switch_is_on_| is true (it
-    // can only happen for tablet device as |tablet_mode_switch_is_on_| should
-    // never be true for a clamshell device).
-    AttemptEnterTabletMode();
-  }
+  // External pointing devices affect only the UI state (i.e. may result in
+  // switching to tablet or clamshell UI modes).
+  UpdateUiTabletState();
 }
 
 void TabletModeController::OnBluetoothAdapterOrDeviceChanged(
@@ -954,24 +891,18 @@
 }
 
 void TabletModeController::UpdateInternalInputDevicesEventBlocker() {
-  bool should_block_internal_events = false;
-  if (InTabletMode()) {
-    // If we are currently in tablet mode, the internal input events should
-    // be blocked if its specified by the behavior.
-    should_block_internal_events =
-        tablet_mode_behavior_.block_internal_input_device;
-  } else if (HasActiveInternalDisplay()) {
-    // If we are currently in clamshell mode, the intenral input events should
-    // only be blocked if the current lid angle belongs to tablet mode angle,
-    // or |tablet_mode_switch_on_| is true and with input device blocking is
-    // on. Note if we don't have an active internal display, the device is
-    // currently in docked mode, and the user may still want to use the internal
-    // keyboard and mouse in docked mode, we don't block internal events in this
-    // case.
-    should_block_internal_events =
-        (LidAngleInTabletModeRange() || tablet_mode_switch_is_on_) &&
-        tablet_mode_behavior_.block_internal_input_device;
-  }
+  // Internal input devices should be blocked (as long as the current
+  // tablet_mode_behavior_ allows it) if we're in UI tablet mode, or if the
+  // device is in physical tablet state.
+  // Note that |is_in_tablet_physical_state_| takes into account whether the
+  // device is in docked mode (with no active internal display), in which case
+  // internal input devices should NOT be blocked, since the user may still want
+  // to use the internal keyboard and mouse in docked mode. This can happen if
+  // the user turns off the internal display without closing the lid by means of
+  // setting the brightness to 0.
+  const bool should_block_internal_events =
+      tablet_mode_behavior_.block_internal_input_device &&
+      (InTabletMode() || is_in_tablet_physical_state_);
 
   if (should_block_internal_events == AreInternalInputDeviceEventsBlocked())
     return;
@@ -981,11 +912,6 @@
     observer.OnTabletModeEventsBlockingChanged();
 }
 
-bool TabletModeController::LidAngleInTabletModeRange() {
-  return can_detect_lid_angle_ && !lid_is_closed_ &&
-         lid_angle_ >= kEnterTabletModeAngle;
-}
-
 void TabletModeController::SuspendOcclusionTracker() {
   occlusion_tracker_reset_timer_.Stop();
   occlusion_tracker_pauser_ =
@@ -1089,4 +1015,73 @@
   std::move(on_screenshot_taken).Run();
 }
 
+bool TabletModeController::CalculateIsInTabletPhysicalState() const {
+  if (!HasActiveInternalDisplay())
+    return false;
+
+  // For updated EC, the tablet mode switch activates at 200 degrees, and
+  // deactivates at 160 degrees.
+  // For old EC, the tablet mode switch activates at 300 degrees, so it's
+  // always reliable when |tablet_mode_switch_is_on_|.
+  if (tablet_mode_switch_is_on_)
+    return true;
+
+  if (!can_detect_lid_angle_)
+    return false;
+
+  if (lid_is_closed_)
+    return false;
+
+  // Toggle tablet mode on or off when corresponding thresholds are passed.
+  if (lid_angle_ >= kEnterTabletModeAngle &&
+      (lid_angle_is_stable_ || CanUseUnstableLidAngle())) {
+    return true;
+  }
+
+  if (lid_angle_ <= kExitTabletModeAngle && lid_angle_is_stable_) {
+    // For angles that are in the exit range, we only consider the stable ones,
+    // (i.e. we don't check `CanUseUnstableLidAngle()`) in order to avoid
+    // changing the mode when the lid is almost closed, or recently opened.
+    return false;
+  }
+
+  // The state should remain the same.
+  return is_in_tablet_physical_state_;
+}
+
+bool TabletModeController::ShouldUiBeInTabletMode() const {
+  if (forced_ui_mode_ == UiMode::kTabletMode)
+    return true;
+
+  if (forced_ui_mode_ == UiMode::kClamshell)
+    return false;
+
+  if (has_external_pointing_device_ &&
+      tablet_mode_behavior_.observe_external_pointer_device_events) {
+    return false;
+  }
+
+  return is_in_tablet_physical_state_;
+}
+
+void TabletModeController::SetIsInTabletPhysicalState(bool new_state) {
+  if (new_state == is_in_tablet_physical_state_)
+    return;
+
+  is_in_tablet_physical_state_ = new_state;
+
+  // Even if we do not change the UI mode, we should update the input devices
+  // blocker as tablet mode events may come in because of the lid angle/or
+  // folio keyboard state changes but UI mode might still stay the same.
+  UpdateInternalInputDevicesEventBlocker();
+
+  UpdateUiTabletState();
+}
+
+void TabletModeController::UpdateUiTabletState() {
+  const bool should_be_in_tablet_mode = ShouldUiBeInTabletMode();
+  if (should_be_in_tablet_mode != InTabletMode())
+    SetTabletModeEnabledInternal(should_be_in_tablet_mode);
+}
+
 }  // namespace ash
diff --git a/ash/wm/tablet_mode/tablet_mode_controller.h b/ash/wm/tablet_mode/tablet_mode_controller.h
index f7f125e..19c9952 100644
--- a/ash/wm/tablet_mode/tablet_mode_controller.h
+++ b/ash/wm/tablet_mode/tablet_mode_controller.h
@@ -204,10 +204,6 @@
     kExitingTabletMode,
   };
 
-  // TODO(jonross): Merge this with AttemptEnterTabletMode. Currently these are
-  // separate for several reasons: there is no internal display when running
-  // unittests; the event blocker prevents keyboard input when running ChromeOS
-  // on linux. http://crbug.com/362881
   // Turn the always tablet mode window manager on or off.
   void SetTabletModeEnabledInternal(bool should_enable);
 
@@ -230,14 +226,6 @@
   // tablet mode becomes enabled.
   bool CanEnterTabletMode();
 
-  // Attempts to enter tablet mode and updates the internal keyboard and
-  // touchpad.
-  void AttemptEnterTabletMode();
-
-  // Attempts to exit tablet mode and updates the internal keyboard and
-  // touchpad.
-  void AttemptLeaveTabletMode();
-
   // Record UMA stats tracking TabletMode usage. If |type| is
   // TABLET_MODE_INTERVAL_INACTIVE, then record that TabletMode has been
   // inactive from |tablet_mode_usage_interval_start_time_| until now.
@@ -269,11 +257,6 @@
   // because of an external attached mouse).
   void UpdateInternalInputDevicesEventBlocker();
 
-  // Returns true if the current lid angle can be detected and is in tablet mode
-  // angle range. If EC can handle lid angle calc, lid angle is unavailable to
-  // browser.
-  bool LidAngleInTabletModeRange();
-
   // Suspends |occlusion_tracker_pauser_| for the duration of
   // kOcclusionTrackTimeout.
   void SuspendOcclusionTracker();
@@ -299,6 +282,23 @@
   void OnScreenshotTaken(base::OnceClosure on_screenshot_taken,
                          std::unique_ptr<viz::CopyOutputResult> copy_result);
 
+  // Calculates whether the device is currently in a physical tablet state,
+  // using the most recent seen device events such as lid angle changes.
+  bool CalculateIsInTabletPhysicalState() const;
+
+  // Returns whether the UI should be in tablet mode based on the current
+  // physical tablet state, the availability of external input devices, and
+  // whether the UI is forced in a particular mode via command-line flags.
+  bool ShouldUiBeInTabletMode() const;
+
+  // Sets |is_in_tablet_physical_state_| to |new_state| and potentially updating
+  // the UI tablet mode state if needed.
+  void SetIsInTabletPhysicalState(bool new_state);
+
+  // Updates the UI by either entering or exiting UI tablet mode if necessary
+  // based on the current state.
+  void UpdateUiTabletState();
+
   // The tablet window manager (if enabled).
   std::unique_ptr<TabletModeWindowManager> tablet_mode_window_manager_;
 
@@ -335,12 +335,25 @@
   // Source for the current time in base::TimeTicks.
   const base::TickClock* tick_clock_;
 
+  // The state in which the UI mode is forced in via command-line flags, such as
+  // `--force-tablet-mode=touch_view` or `--force-tablet-mode=clamshell`.
+  UiMode forced_ui_mode_ = UiMode::kNone;
+
+  // True if the device is physically in a tablet state regardless of the UI
+  // tablet mode state. The physical tablet state only changes based on device
+  // events such as lid angle changes, or device getting detached from its base.
+  bool is_in_tablet_physical_state_ = false;
+
   // Set when tablet mode switch is on. This is used to force tablet mode.
   bool tablet_mode_switch_is_on_ = false;
 
   // Tracks when the lid is closed. Used to prevent entering tablet mode.
   bool lid_is_closed_ = false;
 
+  // True if |lid_angle_| is in the stable range of angle values.
+  // (See kMinStableAngle and kMaxStableAngle).
+  bool lid_angle_is_stable_ = false;
+
   // Last computed lid angle.
   double lid_angle_ = 0.0f;
 
diff --git a/ash/wm/window_cycle_controller_unittest.cc b/ash/wm/window_cycle_controller_unittest.cc
index c38f384..81249da 100644
--- a/ash/wm/window_cycle_controller_unittest.cc
+++ b/ash/wm/window_cycle_controller_unittest.cc
@@ -693,7 +693,13 @@
   DISALLOW_COPY_AND_ASSIGN(DesksWindowCyclingTest);
 };
 
-TEST_F(DesksWindowCyclingTest, CycleShowsAllDesksWindows) {
+// https://crbug.com/1013174
+#if defined(OS_CHROMEOS)
+#define MAYBE_CycleShowsAllDesksWindows DISABLED_CycleShowsAllDesksWindows
+#else
+#define MAYBE_CycleShowsAllDesksWindows CycleShowsAllDesksWindows
+#endif
+TEST_F(DesksWindowCyclingTest, MAYBE_CycleShowsAllDesksWindows) {
   // Create two desks with two windows in each.
   auto win0 = CreateAppWindow(gfx::Rect(0, 0, 250, 100));
   auto win1 = CreateAppWindow(gfx::Rect(50, 50, 200, 200));
diff --git a/build/config/fuchsia/config.gni b/build/config/fuchsia/config.gni
index 4b88d70f..a0610819 100644
--- a/build/config/fuchsia/config.gni
+++ b/build/config/fuchsia/config.gni
@@ -19,6 +19,7 @@
 }
 
 # Compute the qemu path.
+aemu_root = "//third_party/aemu-${host_os}-${host_cpu}"
 qemu_root = "//third_party/qemu-${host_os}-${host_cpu}"
 
 # Compute the path to the arch-specific boot image directory.
diff --git a/build/config/fuchsia/generate_runner_scripts.gni b/build/config/fuchsia/generate_runner_scripts.gni
index 2a8bc0a6..bef39a5f 100644
--- a/build/config/fuchsia/generate_runner_scripts.gni
+++ b/build/config/fuchsia/generate_runner_scripts.gni
@@ -97,6 +97,10 @@
       "${boot_image_root}/qemu/zircon-a.zbi",
     ]
 
+    if (host_cpu == "x64" && target_cpu == "x64") {
+      data += [ "${aemu_root}/" ]
+    }
+
     executable_args = []
 
     package_paths = [ rebase_path(_package_path, root_build_dir) ]
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1
index 919d1d9..312f41f0 100644
--- a/build/fuchsia/linux.sdk.sha1
+++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@
-8899962685313080352
\ No newline at end of file
+8899937146435408864
\ No newline at end of file
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1
index cc32eff..b0df935f 100644
--- a/build/fuchsia/mac.sdk.sha1
+++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@
-8899968699888303648
\ No newline at end of file
+8899939392191507248
\ No newline at end of file
diff --git a/chrome/VERSION b/chrome/VERSION
index 7189e15..9cbd42c 100644
--- a/chrome/VERSION
+++ b/chrome/VERSION
@@ -1,4 +1,4 @@
 MAJOR=79
 MINOR=0
-BUILD=3939
+BUILD=3940
 PATCH=0
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/developer/TracingCategoriesPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/developer/TracingCategoriesPreferences.java
index 4320db5..22e1a2cb 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/developer/TracingCategoriesPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/developer/TracingCategoriesPreferences.java
@@ -10,6 +10,7 @@
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceFragmentCompat;
 import android.support.v7.preference.PreferenceScreen;
+import android.text.TextUtils;
 
 import org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference;
 import org.chromium.chrome.browser.tracing.TracingController;
@@ -28,12 +29,16 @@
         extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener {
     public static final String EXTRA_CATEGORY_TYPE = "type";
 
-    private @TracingPreferences.CategoryType int mType;
-    private Set<String> mEnabledCategories;
-
     // Non-translated strings:
     private static final String MSG_CATEGORY_SELECTION_TITLE = "Select categories";
 
+    private static final String SELECT_ALL_KEY = "select-all";
+    private static final String SELECT_ALL_TITLE = "Select all";
+
+    private @TracingPreferences.CategoryType int mType;
+    private Set<String> mEnabledCategories;
+    private List<CheckBoxPreference> mAllPreferences;
+
     @Override
     public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
         getActivity().setTitle(MSG_CATEGORY_SELECTION_TITLE);
@@ -43,14 +48,29 @@
 
         mType = getArguments().getInt(EXTRA_CATEGORY_TYPE);
         mEnabledCategories = new HashSet<>(TracingPreferences.getEnabledCategories(mType));
+        mAllPreferences = new ArrayList<>();
 
         List<String> sortedCategories =
                 new ArrayList<>(TracingController.getInstance().getKnownCategories());
         Collections.sort(sortedCategories);
+
+        // Special preference to select all or deselect the entire list.
+        CheckBoxPreference selectAllPreference =
+                new ChromeBaseCheckBoxPreference(getStyledContext(), null);
+        selectAllPreference.setKey(SELECT_ALL_KEY);
+        selectAllPreference.setTitle(SELECT_ALL_TITLE);
+        selectAllPreference.setPersistent(false);
+        selectAllPreference.setOnPreferenceChangeListener(this);
+        preferenceScreen.addPreference(selectAllPreference);
+
         for (String category : sortedCategories) {
-            if (TracingPreferences.getCategoryType(category) == mType)
-                preferenceScreen.addPreference(createPreference(category));
+            if (TracingPreferences.getCategoryType(category) == mType) {
+                CheckBoxPreference pref = createPreference(category);
+                mAllPreferences.add(pref);
+                preferenceScreen.addPreference(pref);
+            }
         }
+        selectAllPreference.setChecked(mEnabledCategories.size() == mAllPreferences.size());
         setPreferenceScreen(preferenceScreen);
     }
 
@@ -70,6 +90,11 @@
     @Override
     public boolean onPreferenceChange(Preference preference, Object newValue) {
         boolean value = (boolean) newValue;
+        if (TextUtils.equals(SELECT_ALL_KEY, preference.getKey())) {
+            setStateForAllPreferences(value);
+            return true;
+        }
+
         if (value) {
             mEnabledCategories.add(preference.getKey());
         } else {
@@ -82,4 +107,11 @@
     private Context getStyledContext() {
         return getPreferenceManager().getContext();
     }
+
+    private void setStateForAllPreferences(boolean enabled) {
+        for (CheckBoxPreference pref : mAllPreferences) {
+            pref.setChecked(enabled);
+            pref.callChangeListener(pref.isChecked());
+        }
+    }
 }
diff --git a/chrome/browser/android/webapk/webapk_metrics.h b/chrome/browser/android/webapk/webapk_metrics.h
index 3c0fe12..c6888420 100644
--- a/chrome/browser/android/webapk/webapk_metrics.h
+++ b/chrome/browser/android/webapk/webapk_metrics.h
@@ -15,17 +15,14 @@
 // Events for WebAPKs installation flow. The sum of InstallEvent histogram
 // is the total number of times that a WebAPK infobar was triggered.
 enum InstallEvent {
-  // The user did not interact with the infobar.
-  INFOBAR_IGNORED,
-  // The infobar with the "Add-to-Homescreen" button is dismissed before the
-  // installation started. "Dismiss" means the user closes the infobar by
-  // clicking the "X" button.
-  INFOBAR_DISMISSED_BEFORE_INSTALLATION,
-  // The infobar with the "Adding" button is dismissed during installation.
-  INFOBAR_DISMISSED_DURING_INSTALLATION,
-  INSTALL_COMPLETED,
-  INSTALL_FAILED,
-  INSTALL_EVENT_MAX,
+  // Deprecated: INFOBAR_IGNORED = 0,
+  // The add-to-homescreen dialog is dismissed without the user initiating a
+  // WebAPK install.
+  ADD_TO_HOMESCREEN_DIALOG_DISMISSED_BEFORE_INSTALLATION = 1,
+  // Deprecated: INFOBAR_DISMISSED_DURING_INSTALLATION = 2,
+  INSTALL_COMPLETED = 3,
+  INSTALL_FAILED = 4,
+  INSTALL_EVENT_MAX = 5,
 };
 
 void TrackRequestTokenDuration(base::TimeDelta delta);
diff --git a/chrome/browser/apps/app_shim/extension_app_shim_handler_mac.cc b/chrome/browser/apps/app_shim/extension_app_shim_handler_mac.cc
index 113229fc..7780ff51 100644
--- a/chrome/browser/apps/app_shim/extension_app_shim_handler_mac.cc
+++ b/chrome/browser/apps/app_shim/extension_app_shim_handler_mac.cc
@@ -262,8 +262,9 @@
 
 std::unique_ptr<AvatarMenu> ExtensionAppShimHandler::Delegate::CreateAvatarMenu(
     AvatarMenuObserver* observer) {
-  // TODO(https://crbug.com/1008947): Fix use-after-free caused by AvatarMenu.
-  return nullptr;
+  ProfileManager* profile_manager = g_browser_process->profile_manager();
+  return std::make_unique<AvatarMenu>(
+      &profile_manager->GetProfileAttributesStorage(), observer, nullptr);
 }
 
 Profile* ExtensionAppShimHandler::Delegate::ProfileForPath(
diff --git a/chrome/browser/banners/app_banner_metrics.h b/chrome/browser/banners/app_banner_metrics.h
index 3235263..e2980fe 100644
--- a/chrome/browser/banners/app_banner_metrics.h
+++ b/chrome/browser/banners/app_banner_metrics.h
@@ -59,8 +59,8 @@
   USER_RESPONSE_WEB_APP_ACCEPTED = 2,
   USER_RESPONSE_NATIVE_APP_DISMISSED = 3,
   USER_RESPONSE_WEB_APP_DISMISSED = 4,
-  USER_RESPONSE_NATIVE_APP_IGNORED = 5,
-  USER_RESPONSE_WEB_APP_IGNORED = 6,
+  // Deprecated: USER_RESPONSE_NATIVE_APP_IGNORED = 5,
+  // Deprecated: USER_RESPONSE_WEB_APP_IGNORED = 6,
   USER_RESPONSE_MAX = 7,
 };
 
diff --git a/chrome/browser/banners/app_banner_ui_delegate_android.cc b/chrome/browser/banners/app_banner_ui_delegate_android.cc
index 426fccc..6a7aaf5 100644
--- a/chrome/browser/banners/app_banner_ui_delegate_android.cc
+++ b/chrome/browser/banners/app_banner_ui_delegate_android.cc
@@ -53,18 +53,6 @@
 }
 
 AppBannerUiDelegateAndroid::~AppBannerUiDelegateAndroid() {
-  if (!has_user_interaction_) {
-    AppType type = GetType();
-    if (type == AppType::NATIVE) {
-      TrackUserResponse(USER_RESPONSE_NATIVE_APP_IGNORED);
-    } else {
-      TrackUserResponse(USER_RESPONSE_WEB_APP_IGNORED);
-      if (type == AppType::WEBAPK)
-        webapk::TrackInstallEvent(webapk::INFOBAR_IGNORED);
-    }
-  }
-
-  TrackDismissEvent(DISMISS_EVENT_DISMISSED);
   Java_AppBannerUiDelegateAndroid_destroy(base::android::AttachCurrentThread(),
                                           java_delegate_);
   java_delegate_.Reset();
@@ -100,6 +88,8 @@
 void AppBannerUiDelegateAndroid::AddToHomescreen(
     JNIEnv* env,
     const base::android::JavaParamRef<jobject>& obj) {
+  TrackDismissEvent(DISMISS_EVENT_DISMISSED);
+
   if (!weak_manager_.get())
     return;
 
@@ -108,8 +98,6 @@
 
 bool AppBannerUiDelegateAndroid::InstallApp(
     content::WebContents* web_contents) {
-  has_user_interaction_ = true;
-
   if (!web_contents) {
     TrackDismissEvent(DISMISS_EVENT_ERROR);
     return true;
@@ -138,11 +126,12 @@
 }
 
 void AppBannerUiDelegateAndroid::OnUiCancelled() {
+  TrackDismissEvent(DISMISS_EVENT_DISMISSED);
+
   if (!weak_manager_.get())
     return;
 
   weak_manager_->SendBannerDismissed();
-  has_user_interaction_ = true;
   content::WebContents* web_contents = weak_manager_->web_contents();
 
   if (IsForNativeApp()) {
@@ -154,7 +143,8 @@
     DCHECK(GetType() == AppType::WEBAPK || GetType() == AppType::LEGACY_WEBAPP);
 
     if (GetType() == AppType::WEBAPK)
-      webapk::TrackInstallEvent(webapk::INFOBAR_DISMISSED_BEFORE_INSTALLATION);
+      webapk::TrackInstallEvent(
+          webapk::ADD_TO_HOMESCREEN_DIALOG_DISMISSED_BEFORE_INSTALLATION);
     TrackUserResponse(USER_RESPONSE_WEB_APP_DISMISSED);
     AppBannerSettingsHelper::RecordBannerDismissEvent(
         web_contents, shortcut_info_->url.spec(), AppBannerSettingsHelper::WEB);
@@ -223,8 +213,7 @@
       badge_icon_(badge_icon),
       has_primary_maskable_icon_(has_primary_maskable_icon),
       type_(is_webapk ? AppType::WEBAPK : AppType::LEGACY_WEBAPP),
-      install_source_(install_source),
-      has_user_interaction_(false) {
+      install_source_(install_source) {
   if (is_webapk)
     shortcut_info_->UpdateSource(ShortcutInfo::SOURCE_APP_BANNER_WEBAPK);
   else
@@ -244,8 +233,7 @@
       native_app_data_(native_app_data),
       primary_icon_(icon),
       package_name_(native_app_package_name),
-      type_(AppType::NATIVE),
-      has_user_interaction_(false) {
+      type_(AppType::NATIVE) {
   DCHECK(!native_app_data_.is_null());
   DCHECK(!package_name_.empty());
   CreateJavaDelegate();
diff --git a/chrome/browser/banners/app_banner_ui_delegate_android.h b/chrome/browser/banners/app_banner_ui_delegate_android.h
index e2848313..a6c86d5c 100644
--- a/chrome/browser/banners/app_banner_ui_delegate_android.h
+++ b/chrome/browser/banners/app_banner_ui_delegate_android.h
@@ -140,7 +140,6 @@
 
   AppType type_;
   WebappInstallSource install_source_;
-  bool has_user_interaction_;
 
   DISALLOW_COPY_AND_ASSIGN(AppBannerUiDelegateAndroid);
 };
diff --git a/chrome/browser/chromeos/accessibility/accessibility_manager.cc b/chrome/browser/chromeos/accessibility/accessibility_manager.cc
index 314176d..ab5fb357 100644
--- a/chrome/browser/chromeos/accessibility/accessibility_manager.cc
+++ b/chrome/browser/chromeos/accessibility/accessibility_manager.cc
@@ -315,8 +315,9 @@
                           weak_ptr_factory_.GetWeakPtr())));
 
   // Connect to the media session service.
-  content::GetSystemConnector()->BindInterface(
-      media_session::mojom::kServiceName, &audio_focus_manager_ptr_);
+  content::GetSystemConnector()->Connect(
+      media_session::mojom::kServiceName,
+      audio_focus_manager_.BindNewPipeAndPassReceiver());
 
   ash::AcceleratorController::SetVolumeAdjustmentSoundCallback(
       base::BindRepeating(&AccessibilityManager::PlayVolumeAdjustSound,
@@ -1369,7 +1370,7 @@
                        base::Unretained(this))));
   }
 
-  audio_focus_manager_ptr_->SetEnforcementMode(
+  audio_focus_manager_->SetEnforcementMode(
       media_session::mojom::EnforcementMode::kNone);
 
   InitializeFocusRings(extension_id);
@@ -1396,7 +1397,7 @@
   // Stop speech.
   content::TtsController::GetInstance()->Stop();
 
-  audio_focus_manager_ptr_->SetEnforcementMode(
+  audio_focus_manager_->SetEnforcementMode(
       media_session::mojom::EnforcementMode::kDefault);
 }
 
diff --git a/chrome/browser/chromeos/accessibility/accessibility_manager.h b/chrome/browser/chromeos/accessibility/accessibility_manager.h
index 3e916395..243b260 100644
--- a/chrome/browser/chromeos/accessibility/accessibility_manager.h
+++ b/chrome/browser/chromeos/accessibility/accessibility_manager.h
@@ -29,6 +29,7 @@
 #include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_registry_observer.h"
 #include "extensions/browser/extension_system.h"
+#include "mojo/public/cpp/bindings/remote.h"
 #include "services/media_session/public/mojom/audio_focus.mojom.h"
 #include "ui/accessibility/ax_enums.mojom-forward.h"
 #include "ui/base/ime/chromeos/input_method_manager.h"
@@ -492,7 +493,7 @@
       caret_bounds_observer_for_test_;
 
   // Used to set the audio focus enforcement type for ChromeVox.
-  media_session::mojom::AudioFocusManagerPtr audio_focus_manager_ptr_;
+  mojo::Remote<media_session::mojom::AudioFocusManager> audio_focus_manager_;
 
   base::WeakPtrFactory<AccessibilityManager> weak_ptr_factory_{this};
 
diff --git a/chrome/browser/chromeos/arc/accessibility/accessibility_node_info_data_wrapper.cc b/chrome/browser/chromeos/arc/accessibility/accessibility_node_info_data_wrapper.cc
index 7451c4d..6350e60 100644
--- a/chrome/browser/chromeos/arc/accessibility/accessibility_node_info_data_wrapper.cc
+++ b/chrome/browser/chromeos/arc/accessibility/accessibility_node_info_data_wrapper.cc
@@ -274,40 +274,57 @@
   // String properties.
   int labelled_by = -1;
 
-  // Accessible name computation picks the first non-empty string from content
-  // description, text, labelled by text, or pane title.
-  std::string name;
-  bool has_name = GetProperty(AXStringProperty::CONTENT_DESCRIPTION, &name);
-  if (name.empty())
-    has_name |= GetProperty(AXStringProperty::TEXT, &name);
-  if (name.empty() && GetProperty(AXIntProperty::LABELED_BY, &labelled_by)) {
+  // Accessible name computation is a concatenated string comprising of:
+  // content description, text, labelled by text, and pane title.
+  std::string text;
+  std::string content_description;
+  std::string label;
+  std::string pane_title;
+  GetProperty(AXStringProperty::CONTENT_DESCRIPTION, &content_description);
+  GetProperty(AXStringProperty::TEXT, &text);
+
+  if (GetProperty(AXIntProperty::LABELED_BY, &labelled_by)) {
     ArcAccessibilityInfoData* labelled_by_node =
         tree_source_->GetFromId(labelled_by);
     if (labelled_by_node && labelled_by_node->IsNode()) {
       ui::AXNodeData labelled_by_data;
       tree_source_->SerializeNode(labelled_by_node, &labelled_by_data);
-      has_name |= labelled_by_data.GetStringAttribute(
-          ax::mojom::StringAttribute::kName, &name);
+      labelled_by_data.GetStringAttribute(ax::mojom::StringAttribute::kName,
+                                          &label);
     }
   }
-  if (name.empty())
-    has_name |= GetProperty(AXStringProperty::PANE_TITLE, &name);
+
+  GetProperty(AXStringProperty::PANE_TITLE, &pane_title);
 
   // If it exists, set tooltip value as description on node.
   std::string tooltip;
   if (GetProperty(AXStringProperty::TOOLTIP, &tooltip)) {
     out_data->AddStringAttribute(ax::mojom::StringAttribute::kDescription,
                                  tooltip);
-    if (GetProperty(AXStringProperty::TEXT, &name)) {
-      out_data->SetName(name);
-    }
   }
 
-  if (has_name) {
-    if (out_data->role == ax::mojom::Role::kTextField)
-      out_data->AddStringAttribute(ax::mojom::StringAttribute::kValue, name);
-    else
-      out_data->SetName(name);
+  if (!text.empty() || !content_description.empty() || !label.empty() ||
+      !pane_title.empty()) {
+    // Append non empty properties to name attribute.
+    std::vector<std::string> names;
+    if (!content_description.empty())
+      names.push_back(content_description);
+    if (!label.empty())
+      names.push_back(label);
+    if (!pane_title.empty())
+      names.push_back(pane_title);
+    // For a textField, the editable text is contained in the text property, and
+    // this should be set as the value.
+    // This ensures that the edited text will be read out appropriately.
+    if (out_data->role == ax::mojom::Role::kTextField) {
+      out_data->SetValue(text);
+    } else {
+      names.push_back(text);
+    }
+    // TODO (sarakato): Exposing all possible labels for a node, may result in
+    // too much being spoken. For ARC ++, this may result in divergent behaviour
+    // from Talkback.
+    out_data->SetName(base::JoinString(names, " "));
   } else if (GetProperty(AXBooleanProperty::CLICKABLE)) {
     // Compute the name by joining all nodes with names.
     std::vector<std::string> names;
diff --git a/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge.h b/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge.h
index 92d7b97..6c2ece7 100644
--- a/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge.h
+++ b/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge.h
@@ -109,11 +109,11 @@
 
   void set_filter_type_all_for_test() { use_filter_type_all_for_test_ = true; }
 
- protected:
+ private:
+  // virtual for testing.
   virtual aura::Window* GetActiveWindow();
   virtual extensions::EventRouter* GetEventRouter() const;
 
- private:
   std::unique_ptr<PrefChangeRegistrar> pref_change_registrar_;
   void UpdateCaptionSettings() const;
 
diff --git a/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge_unittest.cc b/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge_unittest.cc
index ef885bd..5054380 100644
--- a/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge_unittest.cc
+++ b/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge_unittest.cc
@@ -73,13 +73,12 @@
       return event_router_->GetEventCount(event_name);
     }
 
-   protected:
+   private:
     aura::Window* GetActiveWindow() override { return window_.get(); }
     extensions::EventRouter* GetEventRouter() const override {
       return event_router_;
     }
 
-   private:
     std::unique_ptr<aura::Window> window_;
     extensions::TestEventRouter* const event_router_;
 
diff --git a/chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.cc b/chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.cc
index b979e29..243ee47 100644
--- a/chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.cc
+++ b/chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.cc
@@ -262,7 +262,7 @@
   // descendants.
   std::sort(
       out_children->begin(), out_children->end(),
-      [this, id_to_index](auto left, auto right) {
+      [this, &id_to_index](auto left, auto right) {
         auto left_bounds = ComputeEnclosingBounds(left);
         auto right_bounds = ComputeEnclosingBounds(right);
 
diff --git a/chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.h b/chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.h
index 26ebf11..1bb30fc 100644
--- a/chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.h
+++ b/chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.h
@@ -89,11 +89,11 @@
 
   bool is_input_method_window() { return is_input_method_window_; }
 
- protected:
+ private:
+  // virtual for testing.
   virtual extensions::AutomationEventRouterInterface* GetAutomationEventRouter()
       const;
 
- private:
   friend class arc::AXTreeSourceArcTest;
   class FocusStealer;
 
diff --git a/chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc_unittest.cc b/chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc_unittest.cc
index 371995a..2ce62a5 100644
--- a/chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc_unittest.cc
+++ b/chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc_unittest.cc
@@ -137,12 +137,12 @@
                         MockAutomationEventRouter* router)
         : AXTreeSourceArc(delegate), router_(router) {}
 
+   private:
     extensions::AutomationEventRouterInterface* GetAutomationEventRouter()
         const override {
       return router_;
     }
 
-   private:
     MockAutomationEventRouter* const router_;
   };
 
@@ -338,6 +338,76 @@
   EXPECT_EQ(10, GetDispatchedEventCount(ax::mojom::Event::kFocus));
 }
 
+TEST_F(AXTreeSourceArcTest, AccessibleNameComputationTextField) {
+  auto event = AXEventData::New();
+  event->source_id = 0;
+  event->task_id = 1;
+  event->event_type = AXEventType::VIEW_FOCUSED;
+  event->node_data.push_back(AXNodeInfoData::New());
+  AXNodeInfoData* root = event->node_data.back().get();
+  root->id = 0;
+
+  std::unique_ptr<ui::AXNodeData> data;
+  SetProperty(root, AXStringProperty::CLASS_NAME, "");
+  SetProperty(root, AXIntListProperty::CHILD_NODE_IDS, std::vector<int>({1}));
+
+  // Child.
+  event->node_data.push_back(AXNodeInfoData::New());
+  AXNodeInfoData* child1 = event->node_data.back().get();
+  child1->id = 1;
+  SetProperty(child1, AXIntListProperty::CHILD_NODE_IDS,
+              std::vector<int>({2, 3}));
+
+  // Second child.
+  // This test requires two children.
+  // see SerializeNode function in arc/a11y/ax_tree_source_arc.cc
+  event->node_data.push_back(AXNodeInfoData::New());
+  AXNodeInfoData* child2 = event->node_data.back().get();
+  child2->id = 2;
+
+  // Third child.
+  event->node_data.push_back(AXNodeInfoData::New());
+  AXNodeInfoData* child3 = event->node_data.back().get();
+  child3->id = 3;
+
+  // Populate the tree source with the data.
+  CallNotifyAccessibilityEvent(event.get());
+
+  SetProperty(child2, AXBooleanProperty::EDITABLE, true);
+  SetProperty(child2, AXStringProperty::TEXT, "foo@example.com");
+  SetProperty(child2, AXStringProperty::CONTENT_DESCRIPTION,
+              "Type your email here.");
+
+  CallSerializeNode(child2, &data);
+
+  std::string prop;
+  ASSERT_TRUE(
+      data->GetStringAttribute(ax::mojom::StringAttribute::kName, &prop));
+  EXPECT_EQ("Type your email here.", prop);
+
+  ASSERT_TRUE(
+      data->GetStringAttribute(ax::mojom::StringAttribute::kValue, &prop));
+  EXPECT_EQ("foo@example.com", prop);
+
+  ASSERT_FALSE(data->GetStringAttribute(
+      ax::mojom::StringAttribute::kDescription, &prop));
+
+  // Case for when text property is empty.
+  SetProperty(child3, AXBooleanProperty::EDITABLE, true);
+  SetProperty(child3, AXStringProperty::CONTENT_DESCRIPTION,
+              "Type your email here.");
+
+  CallSerializeNode(child3, &data);
+
+  ASSERT_TRUE(
+      data->GetStringAttribute(ax::mojom::StringAttribute::kName, &prop));
+  EXPECT_EQ("Type your email here.", prop);
+  ASSERT_TRUE(
+      data->GetStringAttribute(ax::mojom::StringAttribute::kValue, &prop));
+  ASSERT_FALSE(data->GetStringAttribute(
+      ax::mojom::StringAttribute::kDescription, &prop));
+}
+
 TEST_F(AXTreeSourceArcTest, AccessibleNameComputation) {
   auto event = AXEventData::New();
   event->source_id = 0;
@@ -374,9 +444,9 @@
   SetProperty(root, AXStringProperty::TEXT, "");
 
   CallSerializeNode(root, &data);
-  ASSERT_TRUE(
+  // With crrev/1786363, empty text on node will not set the name.
+  ASSERT_FALSE(
       data->GetStringAttribute(ax::mojom::StringAttribute::kName, &name));
-  EXPECT_EQ("", name);
 
   // Text (non-empty).
   root->string_properties->clear();
@@ -402,7 +472,7 @@
   CallSerializeNode(root, &data);
   ASSERT_TRUE(
       data->GetStringAttribute(ax::mojom::StringAttribute::kName, &name));
-  EXPECT_EQ("label content description", name);
+  EXPECT_EQ("label content description label text", name);
 
   // Name from contents.
 
diff --git a/chrome/browser/chromeos/crostini/crostini_installer.cc b/chrome/browser/chromeos/crostini/crostini_installer.cc
index dae17f5..5f8e4a27 100644
--- a/chrome/browser/chromeos/crostini/crostini_installer.cc
+++ b/chrome/browser/chromeos/crostini/crostini_installer.cc
@@ -73,7 +73,6 @@
 constexpr char kCrostiniSetupResultHistogram[] = "Crostini.SetupResult";
 constexpr char kCrostiniTimeFromDeviceSetupToInstall[] =
     "Crostini.TimeFromDeviceSetupToInstall";
-constexpr char kCrostiniDiskImageSizeHistogram[] = "Crostini.DiskImageSize";
 constexpr char kCrostiniTimeToInstallSuccess[] =
     "Crostini.TimeToInstallSuccess";
 constexpr char kCrostiniTimeToInstallCancel[] = "Crostini.TimeToInstallCancel";
@@ -316,10 +315,6 @@
   }
   if (status == vm_tools::concierge::DiskImageStatus::DISK_STATUS_EXISTS) {
     require_cleanup_ = false;
-  } else {
-    // Record the max space for the disk image at creation time, measured in GiB
-    base::UmaHistogramCustomCounts(kCrostiniDiskImageSizeHistogram,
-                                   disk_size_available >> 30, 1, 1024, 64);
   }
   UpdateInstallingState(InstallerState::kStartTerminaVm);
 }
diff --git a/chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc b/chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc
index c75ebb8..778095d 100644
--- a/chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc
+++ b/chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc
@@ -967,16 +967,10 @@
 }
 
 // https://crbug.com/517492
-#if defined(OS_WIN)
 // Fails on XP: http://crbug.com/515717
-#define MAYBE_RemoveAllRulesAfterExtensionUninstall \
-  DISABLED_RemoveAllRulesAfterExtensionUninstall
-#else
-#define MAYBE_RemoveAllRulesAfterExtensionUninstall \
-  RemoveAllRulesAfterExtensionUninstall
-#endif
+// Fails on other platfomrs: http://crbug.com/1013457
 IN_PROC_BROWSER_TEST_F(DeclarativeContentApiTest,
-                       MAYBE_RemoveAllRulesAfterExtensionUninstall) {
+                       DISABLED_RemoveAllRulesAfterExtensionUninstall) {
   ext_dir_.WriteManifest(kDeclarativeContentManifest);
   ext_dir_.WriteFile(FILE_PATH_LITERAL("background.js"), kBackgroundHelpers);
 
@@ -1015,7 +1009,6 @@
             ExecuteScriptInBackgroundPage(extension->id(), kRemoveTestRule1));
 }
 
-
 // TODO(wittman): Once ChromeContentRulesRegistry operates on condition and
 // action interfaces, add a test that checks that a navigation always evaluates
 // consistent URL state for all conditions. i.e.: if condition1 evaluates to
diff --git a/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.cc b/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.cc
index b844c93..425a808d 100644
--- a/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.cc
+++ b/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.cc
@@ -389,6 +389,9 @@
       "floatingkeyboarddefault",
       base::FeatureList::IsEnabled(
           chromeos::features::kVirtualKeyboardFloatingDefault)));
+  features->AppendString(GenerateFeatureFlag(
+      "mozcinputlogic",
+      base::FeatureList::IsEnabled(chromeos::features::kImeInputLogicMozc)));
 
   results->Set("features", std::move(features));
 
diff --git a/chrome/browser/extensions/extension_install_ui_browsertest.cc b/chrome/browser/extensions/extension_install_ui_browsertest.cc
index c2b42fc..83f3e05 100644
--- a/chrome/browser/extensions/extension_install_ui_browsertest.cc
+++ b/chrome/browser/extensions/extension_install_ui_browsertest.cc
@@ -149,14 +149,9 @@
   ASSERT_FALSE(GetTheme());
 }
 
-// Flaky on Mac (http://crbug.com/851252).
-#if defined(OS_MACOSX)
-#define MAYBE_TestInstallThemeInFullScreen DISABLED_TestInstallThemeInFullScreen
-#else
-#define MAYBE_TestInstallThemeInFullScreen TestInstallThemeInFullScreen
-#endif
+// Flaky (http://crbug.com/851252).
 IN_PROC_BROWSER_TEST_F(ExtensionInstallUIBrowserTest,
-                       MAYBE_TestInstallThemeInFullScreen) {
+                       DISABLED_TestInstallThemeInFullScreen) {
   EXPECT_TRUE(chrome::ExecuteCommand(browser(), IDC_FULLSCREEN));
   InstallThemeAndVerify("theme", "camo theme");
 }
diff --git a/chrome/browser/net/profile_network_context_service.cc b/chrome/browser/net/profile_network_context_service.cc
index dbecc14e..f3c55a9c 100644
--- a/chrome/browser/net/profile_network_context_service.cc
+++ b/chrome/browser/net/profile_network_context_service.cc
@@ -46,6 +46,7 @@
 #include "content/public/common/content_features.h"
 #include "content/public/common/service_names.mojom.h"
 #include "content/public/common/url_constants.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
 #include "net/base/features.h"
 #include "net/http/http_auth_preferences.h"
 #include "net/http/http_util.h"
@@ -502,8 +503,10 @@
 #if BUILDFLAG(TRIAL_COMPARISON_CERT_VERIFIER_SUPPORTED)
   if (!in_memory && !network_context_params->use_builtin_cert_verifier &&
       TrialComparisonCertVerifierController::MaybeAllowedForProfile(profile_)) {
-    network::mojom::TrialComparisonCertVerifierConfigClientPtr config_client;
-    auto config_client_request = mojo::MakeRequest(&config_client);
+    mojo::PendingRemote<network::mojom::TrialComparisonCertVerifierConfigClient>
+        config_client;
+    auto config_client_receiver =
+        config_client.InitWithNewPipeAndPassReceiver();
 
     network_context_params->trial_comparison_cert_verifier_params =
         network::mojom::TrialComparisonCertVerifierParams::New();
@@ -514,14 +517,13 @@
     }
     trial_comparison_cert_verifier_controller_->AddClient(
         std::move(config_client),
-        mojo::MakeRequest(
-            &network_context_params->trial_comparison_cert_verifier_params
-                 ->report_client));
+        network_context_params->trial_comparison_cert_verifier_params
+            ->report_client.InitWithNewPipeAndPassReceiver());
     network_context_params->trial_comparison_cert_verifier_params
         ->initial_allowed =
         trial_comparison_cert_verifier_controller_->IsAllowed();
     network_context_params->trial_comparison_cert_verifier_params
-        ->config_client_request = std::move(config_client_request);
+        ->config_client_receiver = std::move(config_client_receiver);
   }
 #endif
 
diff --git a/chrome/browser/net/trial_comparison_cert_verifier_controller.cc b/chrome/browser/net/trial_comparison_cert_verifier_controller.cc
index 5d659c5..c547a62 100644
--- a/chrome/browser/net/trial_comparison_cert_verifier_controller.cc
+++ b/chrome/browser/net/trial_comparison_cert_verifier_controller.cc
@@ -76,11 +76,13 @@
 }
 
 void TrialComparisonCertVerifierController::AddClient(
-    network::mojom::TrialComparisonCertVerifierConfigClientPtr config_client,
-    network::mojom::TrialComparisonCertVerifierReportClientRequest
-        report_client_request) {
-  binding_set_.AddBinding(this, std::move(report_client_request));
-  config_client_set_.AddPtr(std::move(config_client));
+    mojo::PendingRemote<network::mojom::TrialComparisonCertVerifierConfigClient>
+        config_client,
+    mojo::PendingReceiver<
+        network::mojom::TrialComparisonCertVerifierReportClient>
+        report_client_receiver) {
+  receiver_set_.Add(this, std::move(report_client_receiver));
+  config_client_set_.Add(std::move(config_client));
 }
 
 bool TrialComparisonCertVerifierController::IsAllowed() const {
@@ -138,9 +140,6 @@
 
 void TrialComparisonCertVerifierController::RefreshState() {
   const bool is_allowed = IsAllowed();
-  config_client_set_.ForAllPtrs(
-      [is_allowed](
-          network::mojom::TrialComparisonCertVerifierConfigClient* client) {
-        client->OnTrialConfigUpdated(is_allowed);
-      });
+  for (auto& client : config_client_set_)
+    client->OnTrialConfigUpdated(is_allowed);
 }
diff --git a/chrome/browser/net/trial_comparison_cert_verifier_controller.h b/chrome/browser/net/trial_comparison_cert_verifier_controller.h
index fd5835f..bbe51a8 100644
--- a/chrome/browser/net/trial_comparison_cert_verifier_controller.h
+++ b/chrome/browser/net/trial_comparison_cert_verifier_controller.h
@@ -15,8 +15,10 @@
 #include "base/memory/weak_ptr.h"
 #include "base/threading/thread_checker.h"
 #include "components/prefs/pref_change_registrar.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
-#include "mojo/public/cpp/bindings/interface_ptr_set.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
+#include "mojo/public/cpp/bindings/receiver_set.h"
+#include "mojo/public/cpp/bindings/remote_set.h"
 #include "net/base/net_export.h"
 #include "net/cert/cert_verifier.h"
 #include "services/network/public/mojom/trial_comparison_cert_verifier.mojom.h"
@@ -36,11 +38,13 @@
   static bool MaybeAllowedForProfile(Profile* profile);
 
   // Adds a client to the controller, sending trial configuration updates to
-  // |config_client|, and receiving trial reports from |report_client_request|.
-  void AddClient(
-      network::mojom::TrialComparisonCertVerifierConfigClientPtr config_client,
-      network::mojom::TrialComparisonCertVerifierReportClientRequest
-          report_client_request);
+  // |config_client|, and receiving trial reports from |report_client_receiver|.
+  void AddClient(mojo::PendingRemote<
+                     network::mojom::TrialComparisonCertVerifierConfigClient>
+                     config_client,
+                 mojo::PendingReceiver<
+                     network::mojom::TrialComparisonCertVerifierReportClient>
+                     report_client_receiver);
 
   // Returns true if the trial is enabled and SBER flag is set for this
   // profile.
@@ -66,10 +70,10 @@
   Profile* profile_;
   PrefChangeRegistrar pref_change_registrar_;
 
-  mojo::BindingSet<network::mojom::TrialComparisonCertVerifierReportClient>
-      binding_set_;
+  mojo::ReceiverSet<network::mojom::TrialComparisonCertVerifierReportClient>
+      receiver_set_;
 
-  mojo::InterfacePtrSet<network::mojom::TrialComparisonCertVerifierConfigClient>
+  mojo::RemoteSet<network::mojom::TrialComparisonCertVerifierConfigClient>
       config_client_set_;
 
   DISALLOW_COPY_AND_ASSIGN(TrialComparisonCertVerifierController);
diff --git a/chrome/browser/net/trial_comparison_cert_verifier_controller_unittest.cc b/chrome/browser/net/trial_comparison_cert_verifier_controller_unittest.cc
index 0a6e6e7..571ca8bb 100644
--- a/chrome/browser/net/trial_comparison_cert_verifier_controller_unittest.cc
+++ b/chrome/browser/net/trial_comparison_cert_verifier_controller_unittest.cc
@@ -27,6 +27,8 @@
 #include "content/public/browser/browser_task_traits.h"
 #include "content/public/test/browser_task_environment.h"
 #include "content/public/test/test_utils.h"
+#include "mojo/public/cpp/bindings/receiver.h"
+#include "mojo/public/cpp/bindings/remote.h"
 #include "net/base/net_errors.h"
 #include "net/cert/cert_verify_result.h"
 #include "net/cert/x509_certificate.h"
@@ -84,15 +86,16 @@
     : public network::mojom::TrialComparisonCertVerifierConfigClient {
  public:
   MockTrialComparisonCertVerifierConfigClient(
-      network::mojom::TrialComparisonCertVerifierConfigClientRequest
-          config_client_request)
-      : binding_(this, std::move(config_client_request)) {}
+      mojo::PendingReceiver<
+          network::mojom::TrialComparisonCertVerifierConfigClient>
+          config_client_receiver)
+      : receiver_(this, std::move(config_client_receiver)) {}
 
   MOCK_METHOD1(OnTrialConfigUpdated, void(bool allowed));
 
  private:
-  mojo::Binding<network::mojom::TrialComparisonCertVerifierConfigClient>
-      binding_;
+  mojo::Receiver<network::mojom::TrialComparisonCertVerifierConfigClient>
+      receiver_;
 };
 
 class TrialComparisonCertVerifierControllerTest : public testing::Test {
@@ -145,17 +148,19 @@
   }
 
   void CreateController(Profile* profile) {
-    network::mojom::TrialComparisonCertVerifierConfigClientPtr config_client;
-    auto config_client_request = mojo::MakeRequest(&config_client);
+    mojo::PendingRemote<network::mojom::TrialComparisonCertVerifierConfigClient>
+        config_client;
+    auto config_client_receiver =
+        config_client.InitWithNewPipeAndPassReceiver();
 
     trial_controller_ =
         std::make_unique<TrialComparisonCertVerifierController>(profile);
     trial_controller_->AddClient(std::move(config_client),
-                                 mojo::MakeRequest(&report_client_));
+                                 report_client_.BindNewPipeAndPassReceiver());
 
     mock_config_client_ = std::make_unique<
         StrictMock<MockTrialComparisonCertVerifierConfigClient>>(
-        std::move(config_client_request));
+        std::move(config_client_receiver));
   }
 
   void CreateController() { CreateController(profile()); }
@@ -183,8 +188,8 @@
   TrialComparisonCertVerifierController& trial_controller() {
     return *trial_controller_;
   }
-  network::mojom::TrialComparisonCertVerifierReportClientPtr& report_client() {
-    return report_client_;
+  network::mojom::TrialComparisonCertVerifierReportClient* report_client() {
+    return report_client_.get();
   }
   MockTrialComparisonCertVerifierConfigClient& mock_config_client() {
     return *mock_config_client_;
@@ -213,7 +218,8 @@
   std::unique_ptr<TestingProfileManager> profile_manager_;
   TestingProfile* profile_;
 
-  network::mojom::TrialComparisonCertVerifierReportClientPtr report_client_;
+  mojo::Remote<network::mojom::TrialComparisonCertVerifierReportClient>
+      report_client_;
   std::unique_ptr<TrialComparisonCertVerifierController> trial_controller_;
   std::unique_ptr<StrictMock<MockTrialComparisonCertVerifierConfigClient>>
       mock_config_client_;
@@ -386,16 +392,19 @@
       features::kCertDualVerificationTrialFeature);
   CreateController();
 
-  network::mojom::TrialComparisonCertVerifierReportClientPtr report_client_2;
+  mojo::Remote<network::mojom::TrialComparisonCertVerifierReportClient>
+      report_client_2;
 
-  network::mojom::TrialComparisonCertVerifierConfigClientPtr config_client_2;
-  auto config_client_2_request = mojo::MakeRequest(&config_client_2);
+  mojo::PendingRemote<network::mojom::TrialComparisonCertVerifierConfigClient>
+      config_client_2;
+  auto config_client_2_receiver =
+      config_client_2.InitWithNewPipeAndPassReceiver();
 
   trial_controller().AddClient(std::move(config_client_2),
-                               mojo::MakeRequest(&report_client_2));
+                               report_client_2.BindNewPipeAndPassReceiver());
 
   StrictMock<MockTrialComparisonCertVerifierConfigClient> mock_config_client_2(
-      std::move(config_client_2_request));
+      std::move(config_client_2_receiver));
 
   EXPECT_FALSE(trial_controller().IsAllowed());
 
diff --git a/chrome/browser/policy/policy_browsertest.cc b/chrome/browser/policy/policy_browsertest.cc
index 7076085..a9c2406c 100644
--- a/chrome/browser/policy/policy_browsertest.cc
+++ b/chrome/browser/policy/policy_browsertest.cc
@@ -4831,7 +4831,11 @@
   DISALLOW_COPY_AND_ASSIGN(NetworkTimePolicyTest);
 };
 
-IN_PROC_BROWSER_TEST_F(NetworkTimePolicyTest, NetworkTimeQueriesDisabled) {
+// TODO(https://crbug.com/1012853): This test is using ScopedFeatureList
+// incorrectly, and fixing it causes conflicts with PolicyTest's use of the
+// deprecated variations API.
+IN_PROC_BROWSER_TEST_F(NetworkTimePolicyTest,
+                       DISABLED_NetworkTimeQueriesDisabled) {
   // Set a policy to disable network time queries.
   PolicyMap policies;
   policies.Set(key::kBrowserNetworkTimeQueriesEnabled, POLICY_LEVEL_MANDATORY,
@@ -5713,13 +5717,21 @@
   ASSERT_TRUE(HadSignedExchangeInAcceptHeader(url));
 }
 
-IN_PROC_BROWSER_TEST_F(PolicyTest, CheckURLsInRealTime) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitWithFeatures(
-      {safe_browsing::kRealTimeUrlLookupEnabled,
-       safe_browsing::kRealTimeUrlLookupFetchAllowlist},
-      {});
+class PolicyTestWithRealTimeUrlLookupFetchAllowList : public PolicyTest {
+ public:
+  PolicyTestWithRealTimeUrlLookupFetchAllowList() {
+    feature_list_.InitWithFeatures(
+        {safe_browsing::kRealTimeUrlLookupEnabled,
+         safe_browsing::kRealTimeUrlLookupFetchAllowlist},
+        {});
+  }
 
+ private:
+  base::test::ScopedFeatureList feature_list_;
+};
+
+IN_PROC_BROWSER_TEST_F(PolicyTestWithRealTimeUrlLookupFetchAllowList,
+                       CheckURLsInRealTime) {
   EXPECT_FALSE(safe_browsing::RealTimePolicyEngine::CanPerformFullURLLookup(
       browser()->profile()));
 
diff --git a/chrome/browser/profiles/avatar_menu.cc b/chrome/browser/profiles/avatar_menu.cc
index 285366f..5d099d9 100644
--- a/chrome/browser/profiles/avatar_menu.cc
+++ b/chrome/browser/profiles/avatar_menu.cc
@@ -42,7 +42,7 @@
                        Browser* browser)
     : profile_list_(ProfileList::Create(profile_storage)),
       menu_actions_(AvatarMenuActions::Create()),
-      profile_storage_(profile_storage),
+      profile_storage_(profile_storage->AsWeakPtr()),
       observer_(observer),
       browser_(browser) {
   DCHECK(profile_storage_);
@@ -64,7 +64,10 @@
 }
 
 AvatarMenu::~AvatarMenu() {
-  profile_storage_->RemoveObserver(this);
+  // Note that |profile_storage_| may be destroyed before |this|.
+  // https://crbug.com/1008947
+  if (profile_storage_)
+    profile_storage_->RemoveObserver(this);
 }
 
 AvatarMenu::Item::Item(size_t menu_index, const base::FilePath& profile_path,
diff --git a/chrome/browser/profiles/avatar_menu.h b/chrome/browser/profiles/avatar_menu.h
index 39aca28..2d470771 100644
--- a/chrome/browser/profiles/avatar_menu.h
+++ b/chrome/browser/profiles/avatar_menu.h
@@ -200,8 +200,8 @@
       supervised_user_observer_{this};
 #endif
 
-  // The storage that provides the profile attributes. Weak.
-  ProfileAttributesStorage* profile_storage_;
+  // The storage that provides the profile attributes.
+  base::WeakPtr<ProfileAttributesStorage> profile_storage_;
 
   // The observer of this model, which is notified of changes. Weak.
   AvatarMenuObserver* observer_;
diff --git a/chrome/browser/profiles/profile_manager_browsertest.cc b/chrome/browser/profiles/profile_manager_browsertest.cc
index 07e6be78..2b98b501 100644
--- a/chrome/browser/profiles/profile_manager_browsertest.cc
+++ b/chrome/browser/profiles/profile_manager_browsertest.cc
@@ -81,10 +81,10 @@
     ProfileManager* profile_manager = g_browser_process->profile_manager();
     profile_manager->GetProfileAttributesStorage().AddObserver(this);
 
-    base::Callback<void(const base::Closure&)> would_complete_callback =
-        base::Bind(&MultipleProfileDeletionObserver::
-                       OnBrowsingDataRemoverWouldComplete,
-                   base::Unretained(this));
+    base::RepeatingCallback<void(base::OnceClosure)> would_complete_callback =
+        base::BindRepeating(&MultipleProfileDeletionObserver::
+                                OnBrowsingDataRemoverWouldComplete,
+                            base::Unretained(this));
     for (Profile* profile : profile_manager->GetLoadedProfiles()) {
       content::BrowserContext::GetBrowsingDataRemover(profile)
           ->SetWouldCompleteCallbackForTesting(would_complete_callback);
@@ -110,8 +110,8 @@
 
   // TODO(https://crbug.com/704601): remove this code when bug is fixed.
   void OnBrowsingDataRemoverWouldComplete(
-      const base::Closure& continue_to_completion) {
-    continue_to_completion.Run();
+      base::OnceClosure continue_to_completion) {
+    std::move(continue_to_completion).Run();
     profiles_data_removed_count_++;
     MaybeQuit();
   }
diff --git a/chrome/browser/resources/tab_strip/tab.js b/chrome/browser/resources/tab_strip/tab.js
index 82dcd8884..2d6576b 100644
--- a/chrome/browser/resources/tab_strip/tab.js
+++ b/chrome/browser/resources/tab_strip/tab.js
@@ -79,7 +79,7 @@
 
     if (tab.favIconUrl) {
       if (!this.tab_ || this.tab_.favIconUrl !== tab.favIconUrl) {
-        this.faviconEl_.style.backgroundImage = getFavicon(tab.favIconUrl);
+        this.faviconEl_.style.backgroundImage = `url(${tab.favIconUrl})`;
       }
     } else {
       if (tab.networkState === TabNetworkState.NONE ||
diff --git a/chrome/browser/resources/tab_strip/tab_list.js b/chrome/browser/resources/tab_strip/tab_list.js
index d7736c8..5f0562c 100644
--- a/chrome/browser/resources/tab_strip/tab_list.js
+++ b/chrome/browser/resources/tab_strip/tab_list.js
@@ -246,11 +246,17 @@
    * @private
    */
   onTabActivated_(tabId) {
-    const previouslyActiveTab = this.getActiveTab_();
-    if (previouslyActiveTab) {
-      previouslyActiveTab.tab = /** @type {!TabData} */ (
-          Object.assign({}, previouslyActiveTab.tab, {active: false}));
-    }
+    // There may be more than 1 TabElement marked as active if other events
+    // have updated a Tab to have an active state. For example, if a
+    // tab is created with an already active state, there may be 2 active
+    // TabElements: the newly created tab and the previously active tab.
+    this.shadowRoot.querySelectorAll('tabstrip-tab[active]')
+        .forEach((previouslyActiveTab) => {
+          if (previouslyActiveTab.tab.id !== tabId) {
+            previouslyActiveTab.tab = /** @type {!TabData} */ (
+                Object.assign({}, previouslyActiveTab.tab, {active: false}));
+          }
+        });
 
     const newlyActiveTab = this.findTabElement_(tabId);
     if (newlyActiveTab) {
diff --git a/chrome/browser/safe_browsing/ad_redirect_trigger_browsertest.cc b/chrome/browser/safe_browsing/ad_redirect_trigger_browsertest.cc
index c0bba06..b0ec1a1 100644
--- a/chrome/browser/safe_browsing/ad_redirect_trigger_browsertest.cc
+++ b/chrome/browser/safe_browsing/ad_redirect_trigger_browsertest.cc
@@ -32,12 +32,12 @@
 class AdRedirectTriggerBrowserTest : public InProcessBrowserTest,
                                      public UrlListManager::Observer {
  public:
-  AdRedirectTriggerBrowserTest() = default;
+  AdRedirectTriggerBrowserTest() {
+    scoped_feature_list_.InitAndEnableFeature(kAdRedirectTriggerFeature);
+  }
 
   // InProcessBrowserTest:
   void SetUpOnMainThread() override {
-    scoped_feature_list_.InitAndEnableFeature(kAdRedirectTriggerFeature);
-
     host_resolver()->AddRule("*", "127.0.0.1");
     ASSERT_TRUE(embedded_test_server()->Start());
     current_browser_ = InProcessBrowserTest::browser();
diff --git a/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc b/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc
index 06c0f08..997a08d75 100644
--- a/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc
+++ b/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc
@@ -1856,17 +1856,34 @@
   EXPECT_FALSE(IsShowingInterstitial(contents));
 }
 
+INSTANTIATE_TEST_SUITE_P(
+    SafeBrowsingBlockingPageBrowserTestWithThreatTypeAndIsolationSetting,
+    SafeBrowsingBlockingPageBrowserTest,
+    testing::Combine(
+        testing::Values(SB_THREAT_TYPE_URL_MALWARE,  // Threat types
+                        SB_THREAT_TYPE_URL_PHISHING,
+                        SB_THREAT_TYPE_URL_UNWANTED),
+        testing::Bool()));  // If isolate all sites for testing.
+
+class SafeBrowsingBlockingPageBrowserTestWithCommittedSBInterstitials
+    : public SafeBrowsingBlockingPageBrowserTest {
+ public:
+  SafeBrowsingBlockingPageBrowserTestWithCommittedSBInterstitials() {
+    feature_list_.InitAndEnableFeature(kCommittedSBInterstitials);
+  }
+
+ private:
+  base::test::ScopedFeatureList feature_list_;
+};
+
 // TODO(crbug.com/916683): Once interstitial bindings are hooked with committed
 // interstitials, all other tests should run with committed interstitials
 // enabled. At that point this test will become redundant and should be removed.
 // Test that an main frame interstitial is displayed with committed
 // interstitials enabled.
-IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest,
-                       CommittedInterstitialShows) {
-  base::test::ScopedFeatureList feature_list;
-  std::vector<base::Feature> enable;
-  enable.push_back(kCommittedSBInterstitials);
-  feature_list.InitWithFeatures(enable, std::vector<base::Feature>());
+IN_PROC_BROWSER_TEST_P(
+    SafeBrowsingBlockingPageBrowserTestWithCommittedSBInterstitials,
+    CommittedInterstitialShows) {
   SetupWarningAndNavigate(browser());
   EXPECT_TRUE(IsShowingInterstitial(
       browser()->tab_strip_model()->GetActiveWebContents()));
@@ -1874,7 +1891,7 @@
 
 INSTANTIATE_TEST_SUITE_P(
     SafeBrowsingBlockingPageBrowserTestWithThreatTypeAndIsolationSetting,
-    SafeBrowsingBlockingPageBrowserTest,
+    SafeBrowsingBlockingPageBrowserTestWithCommittedSBInterstitials,
     testing::Combine(
         testing::Values(SB_THREAT_TYPE_URL_MALWARE,  // Threat types
                         SB_THREAT_TYPE_URL_PHISHING,
diff --git a/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc b/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc
index c42ea66..b69a13d 100644
--- a/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc
+++ b/chrome/browser/ssl/chrome_expect_ct_reporter_browsertest.cc
@@ -29,6 +29,11 @@
 class ExpectCTBrowserTest : public CertVerifierBrowserTest {
  public:
   ExpectCTBrowserTest() : CertVerifierBrowserTest() {
+    feature_list_.InitWithFeatures(
+        {network::features::kExpectCTReporting,
+         net::TransportSecurityState::kDynamicExpectCTFeature},
+        {});
+
     // Expect-CT reporting depends on actually enforcing Certificate
     // Transparency.
     SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting(
@@ -107,6 +112,8 @@
   void set_report_uri(const GURL& report_uri) { report_uri_ = report_uri; }
 
  private:
+  base::test::ScopedFeatureList feature_list_;
+
   std::unique_ptr<base::RunLoop> run_loop_;
   // The report-uri value to use in the Expect-CT header for requests handled by
   // ExpectCTHeaderRequestHandler.
@@ -118,12 +125,6 @@
 // Tests that an Expect-CT reporter is properly set up and used for violations
 // of Expect-CT HTTP headers.
 IN_PROC_BROWSER_TEST_F(ExpectCTBrowserTest, TestDynamicExpectCTReporting) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitWithFeatures(
-      {network::features::kExpectCTReporting,
-       net::TransportSecurityState::kDynamicExpectCTFeature},
-      {});
-
   net::EmbeddedTestServer report_server;
   report_server.RegisterRequestHandler(base::Bind(
       &ExpectCTBrowserTest::ReportRequestHandler, base::Unretained(this)));
@@ -161,12 +162,6 @@
 // Tests that Expect-CT HTTP headers are processed correctly.
 IN_PROC_BROWSER_TEST_F(ExpectCTBrowserTest,
                        TestDynamicExpectCTHeaderProcessing) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitWithFeatures(
-      {network::features::kExpectCTReporting,
-       net::TransportSecurityState::kDynamicExpectCTFeature},
-      {});
-
   net::EmbeddedTestServer test_server(net::EmbeddedTestServer::TYPE_HTTPS);
   test_server.RegisterRequestHandler(
       base::Bind(&ExpectCTBrowserTest::ExpectCTHeaderRequestHandler,
diff --git a/chrome/browser/ssl/connection_help_tab_helper_browsertest.cc b/chrome/browser/ssl/connection_help_tab_helper_browsertest.cc
index 28207608a..e322a593 100644
--- a/chrome/browser/ssl/connection_help_tab_helper_browsertest.cc
+++ b/chrome/browser/ssl/connection_help_tab_helper_browsertest.cc
@@ -21,9 +21,9 @@
 #include "ui/base/l10n/l10n_util.h"
 #include "url/gurl.h"
 
-class ConnectionHelpTabHelperTest : public InProcessBrowserTest {
+class ConnectionHelpTabHelperTestBase : public InProcessBrowserTest {
  public:
-  ConnectionHelpTabHelperTest()
+  ConnectionHelpTabHelperTestBase()
       : https_server_(net::EmbeddedTestServer::TYPE_HTTPS),
         https_expired_server_(net::EmbeddedTestServer::TYPE_HTTPS) {}
 
@@ -52,8 +52,29 @@
  private:
   net::EmbeddedTestServer https_server_;
   net::EmbeddedTestServer https_expired_server_;
-  base::test::ScopedFeatureList scoped_feature_list_;
-  DISALLOW_COPY_AND_ASSIGN(ConnectionHelpTabHelperTest);
+  DISALLOW_COPY_AND_ASSIGN(ConnectionHelpTabHelperTestBase);
+};
+
+class ConnectionHelpTabHelperTest : public ConnectionHelpTabHelperTestBase {
+ public:
+  ConnectionHelpTabHelperTest() {
+    feature_list_.InitAndEnableFeature(features::kBundledConnectionHelpFeature);
+  }
+
+ private:
+  base::test::ScopedFeatureList feature_list_;
+};
+
+class ConnectionHelpTabHelperTestWithFeatureDisabled
+    : public ConnectionHelpTabHelperTestBase {
+ public:
+  ConnectionHelpTabHelperTestWithFeatureDisabled() {
+    feature_list_.InitAndDisableFeature(
+        features::kBundledConnectionHelpFeature);
+  }
+
+ private:
+  base::test::ScopedFeatureList feature_list_;
 };
 
 // Tests that the chrome://connection-help redirect is not triggered (and
@@ -63,8 +84,6 @@
                        InterstitialOnNonSupportURL) {
   const char kHistogramName[] = "SSL.CertificateErrorHelpCenterVisited";
   base::HistogramTester histograms;
-  base::test::ScopedFeatureList feature_list;
-  feature_list.InitAndEnableFeature(features::kBundledConnectionHelpFeature);
 
   GURL expired_non_support_url = https_expired_server()->GetURL("/title2.html");
   GURL good_support_url = https_server()->GetURL("/title2.html");
@@ -84,8 +103,6 @@
                        SupportURLWithNoInterstitial) {
   const char kHistogramName[] = "SSL.CertificateErrorHelpCenterVisited";
   base::HistogramTester histograms;
-  base::test::ScopedFeatureList feature_list;
-  feature_list.InitAndEnableFeature(features::kBundledConnectionHelpFeature);
 
   GURL good_support_url = https_server()->GetURL("/title2.html");
   SetHelpCenterUrl(browser(), good_support_url);
@@ -105,8 +122,6 @@
 IN_PROC_BROWSER_TEST_F(ConnectionHelpTabHelperTest, InterstitialOnSupportURL) {
   const char kHistogramName[] = "SSL.CertificateErrorHelpCenterVisited";
   base::HistogramTester histograms;
-  base::test::ScopedFeatureList feature_list;
-  feature_list.InitAndEnableFeature(features::kBundledConnectionHelpFeature);
 
   GURL expired_url = https_expired_server()->GetURL("/title2.html");
   SetHelpCenterUrl(browser(), expired_url);
@@ -126,12 +141,10 @@
 
 // Tests that histogram logs correctly when an interstitial is triggered on the
 // support URL if the feature is disabled.
-IN_PROC_BROWSER_TEST_F(ConnectionHelpTabHelperTest,
-                       InterstitialOnSupportURLWithFeatureDisabled) {
+IN_PROC_BROWSER_TEST_F(ConnectionHelpTabHelperTestWithFeatureDisabled,
+                       InterstitialOnSupportURL) {
   const char kHistogramName[] = "SSL.CertificateErrorHelpCenterVisited";
   base::HistogramTester histograms;
-  base::test::ScopedFeatureList feature_list;
-  feature_list.InitAndDisableFeature(features::kBundledConnectionHelpFeature);
 
   GURL expired_url = https_expired_server()->GetURL("/title2.html");
   SetHelpCenterUrl(browser(), expired_url);
@@ -166,9 +179,6 @@
 // expanded.
 IN_PROC_BROWSER_TEST_F(ConnectionHelpTabHelperTest,
                        CorrectlyExpandsCertErrorSection) {
-  base::test::ScopedFeatureList feature_list;
-  feature_list.InitAndEnableFeature(features::kBundledConnectionHelpFeature);
-
   GURL expired_url = https_expired_server()->GetURL("/title2.html#-200");
   GURL::Replacements replacements;
   replacements.ClearRef();
@@ -198,9 +208,6 @@
 // to an expired certificate, the clock section is automatically expanded.
 IN_PROC_BROWSER_TEST_F(ConnectionHelpTabHelperTest,
                        CorrectlyExpandsClockSection) {
-  base::test::ScopedFeatureList feature_list;
-  feature_list.InitAndEnableFeature(features::kBundledConnectionHelpFeature);
-
   GURL expired_url = https_expired_server()->GetURL("/title2.html#-201");
   GURL::Replacements replacements;
   replacements.ClearRef();
diff --git a/chrome/browser/ssl/security_state_tab_helper.cc b/chrome/browser/ssl/security_state_tab_helper.cc
index 87c95a58..e82a44fa 100644
--- a/chrome/browser/ssl/security_state_tab_helper.cc
+++ b/chrome/browser/ssl/security_state_tab_helper.cc
@@ -140,15 +140,16 @@
       // entry.
       int navigation_id =
           web_contents()->GetController().GetVisibleEntry()->GetUniqueID();
-      if (cached_is_legacy_tls_control_site_ &&
-          cached_is_legacy_tls_control_site_.value().first == navigation_id) {
-        state->is_legacy_tls_control_site =
-            cached_is_legacy_tls_control_site_.value().second;
+      if (cached_should_suppress_legacy_tls_warning_ &&
+          cached_should_suppress_legacy_tls_warning_.value().first ==
+              navigation_id) {
+        state->should_suppress_legacy_tls_warning =
+            cached_should_suppress_legacy_tls_warning_.value().second;
       } else {
-        state->is_legacy_tls_control_site =
-            IsTLSDeprecationConfigControlSite(state->url);
-        cached_is_legacy_tls_control_site_ = std::pair<int, bool>(
-            navigation_id, state->is_legacy_tls_control_site);
+        state->should_suppress_legacy_tls_warning =
+            ShouldSuppressLegacyTLSWarning(state->url);
+        cached_should_suppress_legacy_tls_warning_ = std::pair<int, bool>(
+            navigation_id, state->should_suppress_legacy_tls_warning);
       }
     }
   }
diff --git a/chrome/browser/ssl/security_state_tab_helper.h b/chrome/browser/ssl/security_state_tab_helper.h
index fedf520..33d84e5 100644
--- a/chrome/browser/ssl/security_state_tab_helper.h
+++ b/chrome/browser/ssl/security_state_tab_helper.h
@@ -45,15 +45,14 @@
   bool UsedPolicyInstalledCertificate() const;
   security_state::MaliciousContentStatus GetMaliciousContentStatus() const;
 
-  // Caches the legacy TLS control site status for the duration of a page load
-  // (bound to a specific navigation ID) to ensure that we show consistent
+  // Caches the legacy TLS warning suppression status for the duration of a page
+  // load (bound to a specific navigation ID) to ensure that we show consistent
   // security UI (e.g., security indicator and page info). This is because the
-  // control site status depends on external state (a component loading from
-  // disk), which can cause inconsistent state across a page load if it isn't
-  // cached.
+  // status depends on external state (a component loading from disk), which can
+  // cause inconsistent state across a page load if it isn't cached.
   base::Optional<std::pair<int /* navigation entry ID */,
-                           bool /* is_legacy_tls_control_site */>>
-      cached_is_legacy_tls_control_site_;
+                           bool /* should_suppress_legacy_tls_warning */>>
+      cached_should_suppress_legacy_tls_warning_;
 
   WEB_CONTENTS_USER_DATA_KEY_DECL();
 
diff --git a/chrome/browser/ssl/security_state_tab_helper_browsertest.cc b/chrome/browser/ssl/security_state_tab_helper_browsertest.cc
index d1b82e7..b03e24b 100644
--- a/chrome/browser/ssl/security_state_tab_helper_browsertest.cc
+++ b/chrome/browser/ssl/security_state_tab_helper_browsertest.cc
@@ -534,7 +534,6 @@
   net::EmbeddedTestServer https_server_;
 
  private:
-  base::test::ScopedFeatureList scoped_feature_list_;
   DISALLOW_COPY_AND_ASSIGN(SecurityStateTabHelperTest);
 };
 
@@ -578,7 +577,6 @@
   net::EmbeddedTestServer https_server_;
 
  private:
-  base::test::ScopedFeatureList scoped_feature_list_;
   DISALLOW_COPY_AND_ASSIGN(DidChangeVisibleSecurityStateTest);
 };
 
@@ -741,8 +739,7 @@
 class SecurityStateTabHelperTestWithAutoupgradesDisabled
     : public SecurityStateTabHelperTest {
  public:
-  void SetUpCommandLine(base::CommandLine* command_line) override {
-    SecurityStateTabHelperTest::SetUpCommandLine(command_line);
+  SecurityStateTabHelperTestWithAutoupgradesDisabled() {
     feature_list.InitAndDisableFeature(
         blink::features::kMixedContentAutoupgrade);
   }
@@ -1341,17 +1338,25 @@
                           true /* use_secure_inner_origin */);
 }
 
+class SecurityStateTabHelperTestWithFormsDangerous
+    : public SecurityStateTabHelperTest {
+ public:
+  SecurityStateTabHelperTestWithFormsDangerous() {
+    feature_list_.InitAndEnableFeatureWithParameters(
+        security_state::features::kMarkHttpAsFeature,
+        {{security_state::features::kMarkHttpAsFeatureParameterName,
+          security_state::features::
+              kMarkHttpAsParameterWarningAndDangerousOnFormEdits}});
+  }
+
+ private:
+  base::test::ScopedFeatureList feature_list_;
+};
+
 // Tests that the security level of a HTTP page is not downgraded when a form
 // field is modified by JavaScript.
-IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest,
+IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTestWithFormsDangerous,
                        SecurityLevelNotDowngradedAfterScriptModification) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndEnableFeatureWithParameters(
-      security_state::features::kMarkHttpAsFeature,
-      {{security_state::features::kMarkHttpAsFeatureParameterName,
-        security_state::features::
-            kMarkHttpAsParameterWarningAndDangerousOnFormEdits}});
-
   content::WebContents* contents =
       browser()->tab_strip_model()->GetActiveWebContents();
 
@@ -1382,15 +1387,23 @@
   ASSERT_EQ(security_state::WARNING, helper->GetSecurityLevel());
 }
 
+class SecurityStateTabHelperTestWithHttpWarningsDisabled
+    : public SecurityStateTabHelperTest {
+ public:
+  SecurityStateTabHelperTestWithHttpWarningsDisabled() {
+    feature_list_.InitAndDisableFeature(
+        security_state::features::kMarkHttpAsFeature);
+  }
+
+ private:
+  base::test::ScopedFeatureList feature_list_;
+};
+
 // Tests that the security level of a HTTP page is downgraded from
 // WARNING to DANGEROUS after editing a form field in the relevant
 // configurations.
-IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest,
+IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTestWithHttpWarningsDisabled,
                        SecurityLevelDowngradedAfterFileSelection) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndDisableFeature(
-      security_state::features::kMarkHttpAsFeature);
-
   content::WebContents* contents =
       browser()->tab_strip_model()->GetActiveWebContents();
 
@@ -1648,16 +1661,24 @@
   EXPECT_TRUE(observer.latest_explanations().summary.empty());
 }
 
+class SecurityStateTabHelperTestWithHttpDangerous
+    : public SecurityStateTabHelperTest {
+ public:
+  SecurityStateTabHelperTestWithHttpDangerous() {
+    feature_list_.InitAndEnableFeatureWithParameters(
+        security_state::features::kMarkHttpAsFeature,
+        {{security_state::features::kMarkHttpAsFeatureParameterName,
+          security_state::features::kMarkHttpAsParameterDangerous}});
+  }
+
+ private:
+  base::test::ScopedFeatureList feature_list_;
+};
+
 // Tests that the security level of a HTTP page is downgraded to DANGEROUS when
 // MarkHttpAsDangerous is enabled.
-IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest,
-                       SecurityLevelDangerousWhenMarkHttpAsDangerous) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndEnableFeatureWithParameters(
-      security_state::features::kMarkHttpAsFeature,
-      {{security_state::features::kMarkHttpAsFeatureParameterName,
-        security_state::features::kMarkHttpAsParameterDangerous}});
-
+IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTestWithHttpDangerous,
+                       SecurityLevelDangerous) {
   content::WebContents* contents =
       browser()->tab_strip_model()->GetActiveWebContents();
   ASSERT_TRUE(contents);
@@ -1871,13 +1892,43 @@
   EXPECT_NE(std::string::npos, explanation.recommendations[1].find("GCM"));
 }
 
+class BrowserTestNonsecureURLRequestWithLegacyTLSWarnings
+    : public BrowserTestNonsecureURLRequest {
+ public:
+  BrowserTestNonsecureURLRequestWithLegacyTLSWarnings() {
+    feature_list_.InitAndEnableFeature(
+        security_state::features::kLegacyTLSWarnings);
+  }
+
+ private:
+  base::test::ScopedFeatureList feature_list_;
+};
+
+// Tests that a connection with legacy TLS version (TLS 1.0/1.1) is not
+// downgraded to SecurityLevel WARNING if no config proto is set (i.e., so we
+// don't accidentally show the warning on control sites, see crbug.com/1011089).
+IN_PROC_BROWSER_TEST_F(BrowserTestNonsecureURLRequestWithLegacyTLSWarnings,
+                       LegacyTLSNoProto) {
+  auto* tab = browser()->tab_strip_model()->GetActiveWebContents();
+  auto* helper = SecurityStateTabHelper::FromWebContents(tab);
+
+  ui_test_utils::NavigateToURL(
+      browser(), GURL(std::string("https://") + kMockNonsecureHostname));
+
+  EXPECT_TRUE(helper->GetVisibleSecurityState()->connection_used_legacy_tls);
+  EXPECT_TRUE(
+      helper->GetVisibleSecurityState()->should_suppress_legacy_tls_warning);
+  EXPECT_EQ(security_state::SECURE, helper->GetSecurityLevel());
+}
+
 // Tests that a connection with legacy TLS versions (TLS 1.0/1.1) gets
 // downgraded to SecurityLevel WARNING and |connection_used_legacy_tls| is set.
-IN_PROC_BROWSER_TEST_F(BrowserTestNonsecureURLRequest,
+IN_PROC_BROWSER_TEST_F(BrowserTestNonsecureURLRequestWithLegacyTLSWarnings,
                        LegacyTLSDowngradesSecurityLevel) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndEnableFeature(
-      security_state::features::kLegacyTLSWarnings);
+  // Set an empty config (otherwise all sites are treated as control).
+  auto config =
+      std::make_unique<chrome_browser_ssl::LegacyTLSExperimentConfig>();
+  SetRemoteTLSDeprecationConfigProto(std::move(config));
 
   auto* tab = browser()->tab_strip_model()->GetActiveWebContents();
   auto* helper = SecurityStateTabHelper::FromWebContents(tab);
@@ -1886,18 +1937,15 @@
       browser(), GURL(std::string("https://") + kMockNonsecureHostname));
 
   EXPECT_TRUE(helper->GetVisibleSecurityState()->connection_used_legacy_tls);
-  EXPECT_FALSE(helper->GetVisibleSecurityState()->is_legacy_tls_control_site);
+  EXPECT_FALSE(
+      helper->GetVisibleSecurityState()->should_suppress_legacy_tls_warning);
   EXPECT_EQ(security_state::WARNING, helper->GetSecurityLevel());
 }
 
 // Tests that a site in the set of control sites does not get downgraded to
 // SecurityLevel::WARNING even if it was loaded over TLS 1.0/1.1.
-IN_PROC_BROWSER_TEST_F(BrowserTestNonsecureURLRequest,
+IN_PROC_BROWSER_TEST_F(BrowserTestNonsecureURLRequestWithLegacyTLSWarnings,
                        LegacyTLSControlSiteNotDowngraded) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndEnableFeature(
-      security_state::features::kLegacyTLSWarnings);
-
   // Set up new experiment config proto.
   auto config =
       std::make_unique<chrome_browser_ssl::LegacyTLSExperimentConfig>();
@@ -1911,24 +1959,21 @@
   ui_test_utils::NavigateToURL(browser(), control_site);
 
   EXPECT_TRUE(helper->GetVisibleSecurityState()->connection_used_legacy_tls);
-  EXPECT_TRUE(helper->GetVisibleSecurityState()->is_legacy_tls_control_site);
+  EXPECT_TRUE(
+      helper->GetVisibleSecurityState()->should_suppress_legacy_tls_warning);
   EXPECT_EQ(helper->GetSecurityLevel(), security_state::SECURE);
 
   // Reset the config to be empty.
   auto empty_config =
       std::make_unique<chrome_browser_ssl::LegacyTLSExperimentConfig>();
   SetRemoteTLSDeprecationConfigProto(std::move(empty_config));
-  ASSERT_FALSE(IsTLSDeprecationConfigControlSite(control_site));
+  ASSERT_FALSE(ShouldSuppressLegacyTLSWarning(control_site));
 }
 
 // Tests that the SSLVersionMin policy can disable the Legacy TLS security
 // warning.
-IN_PROC_BROWSER_TEST_F(BrowserTestNonsecureURLRequest,
+IN_PROC_BROWSER_TEST_F(BrowserTestNonsecureURLRequestWithLegacyTLSWarnings,
                        LegacyTLSPolicyDisabledWarning) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndEnableFeature(
-      security_state::features::kLegacyTLSWarnings);
-
   // Set up the local state prefs::kSSLVersionMin to "tls1.0".
   std::string original_pref =
       g_browser_process->local_state()->GetString(prefs::kSSLVersionMin);
@@ -1942,7 +1987,8 @@
       browser(), GURL(std::string("https://") + kMockNonsecureHostname));
 
   EXPECT_FALSE(helper->GetVisibleSecurityState()->connection_used_legacy_tls);
-  EXPECT_FALSE(helper->GetVisibleSecurityState()->is_legacy_tls_control_site);
+  EXPECT_FALSE(
+      helper->GetVisibleSecurityState()->should_suppress_legacy_tls_warning);
   EXPECT_EQ(helper->GetSecurityLevel(), security_state::SECURE);
 
   g_browser_process->local_state()->SetString(prefs::kSSLVersionMin,
@@ -1951,12 +1997,8 @@
 
 // Tests that a page has consistent security state despite the config proto
 // getting loaded during the page visit lifetime (see crbug.com/1011089).
-IN_PROC_BROWSER_TEST_F(BrowserTestNonsecureURLRequest,
+IN_PROC_BROWSER_TEST_F(BrowserTestNonsecureURLRequestWithLegacyTLSWarnings,
                        LegacyTLSDelayedConfigLoad) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndEnableFeature(
-      security_state::features::kLegacyTLSWarnings);
-
   // Navigate to an affected page before the config proto has been set.
   auto* web_contents = browser()->tab_strip_model()->GetActiveWebContents();
   auto* helper = SecurityStateTabHelper::FromWebContents(web_contents);
@@ -1965,26 +2007,28 @@
   ui_test_utils::NavigateToURL(browser(), control_site);
 
   EXPECT_TRUE(helper->GetVisibleSecurityState()->connection_used_legacy_tls);
-  EXPECT_FALSE(helper->GetVisibleSecurityState()->is_legacy_tls_control_site);
-  EXPECT_EQ(helper->GetSecurityLevel(), security_state::WARNING);
+  EXPECT_TRUE(
+      helper->GetVisibleSecurityState()->should_suppress_legacy_tls_warning);
+  EXPECT_EQ(helper->GetSecurityLevel(), security_state::SECURE);
 
   // Set the config proto.
   auto config =
       std::make_unique<chrome_browser_ssl::LegacyTLSExperimentConfig>();
-  config->add_control_site_hashes(kMockControlSiteHash);
   SetRemoteTLSDeprecationConfigProto(std::move(config));
 
   // Security state for the current page should not change.
   EXPECT_TRUE(helper->GetVisibleSecurityState()->connection_used_legacy_tls);
-  EXPECT_FALSE(helper->GetVisibleSecurityState()->is_legacy_tls_control_site);
-  EXPECT_EQ(helper->GetSecurityLevel(), security_state::WARNING);
+  EXPECT_TRUE(
+      helper->GetVisibleSecurityState()->should_suppress_legacy_tls_warning);
+  EXPECT_EQ(helper->GetSecurityLevel(), security_state::SECURE);
 
-  // Refreshing the page should update the page's security state to now be
-  // treated as control group.
+  // Refreshing the page should update the page's security state to now show a
+  // warning.
   ui_test_utils::NavigateToURL(browser(), control_site);
   EXPECT_TRUE(helper->GetVisibleSecurityState()->connection_used_legacy_tls);
-  EXPECT_TRUE(helper->GetVisibleSecurityState()->is_legacy_tls_control_site);
-  EXPECT_EQ(helper->GetSecurityLevel(), security_state::SECURE);
+  EXPECT_FALSE(
+      helper->GetVisibleSecurityState()->should_suppress_legacy_tls_warning);
+  EXPECT_EQ(helper->GetSecurityLevel(), security_state::WARNING);
 }
 
 // Tests that the Not Secure chip does not show for error pages on http:// URLs.
@@ -2012,8 +2056,10 @@
   EXPECT_EQ(security_state::NONE, helper->GetSecurityLevel());
 }
 
+// TODO(https://crbug.com/1012507): Fix and re-enable this test. Modifying
+// FeatureList mid-browsertest is unsafe.
 IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest,
-                       MarkHttpAsWarningAndDangerousOnFormEdits) {
+                       DISABLED_MarkHttpAsWarningAndDangerousOnFormEdits) {
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitAndEnableFeatureWithParameters(
       security_state::features::kMarkHttpAsFeature,
@@ -2077,15 +2123,8 @@
   EXPECT_EQ(security_state::WARNING, helper->GetSecurityLevel());
 }
 
-IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest,
+IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTestWithFormsDangerous,
                        MarkHttpAsWarningAndDangerousOnFileInputEdits) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndEnableFeatureWithParameters(
-      security_state::features::kMarkHttpAsFeature,
-      {{security_state::features::kMarkHttpAsFeatureParameterName,
-        security_state::features::
-            kMarkHttpAsParameterWarningAndDangerousOnFormEdits}});
-
   content::WebContents* contents =
       browser()->tab_strip_model()->GetActiveWebContents();
   SecurityStateTabHelper* helper =
@@ -2120,14 +2159,23 @@
   EXPECT_EQ(security_state::DANGEROUS, helper->GetSecurityLevel());
 }
 
+class SecurityStateTabHelperTestWithAutoupgradesAndHttpWarningsDisabled
+    : public SecurityStateTabHelperTestWithAutoupgradesDisabled {
+ public:
+  SecurityStateTabHelperTestWithAutoupgradesAndHttpWarningsDisabled() {
+    feature_list_.InitAndDisableFeature(
+        security_state::features::kMarkHttpAsFeature);
+  }
+
+ private:
+  base::test::ScopedFeatureList feature_list_;
+};
+
 // Tests that the histogram for security level is recorded correctly for HTTP
 // pages.
-IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTestWithAutoupgradesDisabled,
-                       HTTPSecurityLevelHistogram) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndDisableFeature(
-      security_state::features::kMarkHttpAsFeature);
-
+IN_PROC_BROWSER_TEST_F(
+    SecurityStateTabHelperTestWithAutoupgradesAndHttpWarningsDisabled,
+    HTTPSecurityLevelHistogram) {
   const char kHistogramName[] = "Security.SecurityLevel.NoncryptographicScheme";
 
   {
diff --git a/chrome/browser/ssl/ssl_browsertest.cc b/chrome/browser/ssl/ssl_browsertest.cc
index 6f68a82..7450d63 100644
--- a/chrome/browser/ssl/ssl_browsertest.cc
+++ b/chrome/browser/ssl/ssl_browsertest.cc
@@ -890,10 +890,7 @@
 
 class SSLUITest : public SSLUITestBase {
  public:
-  SSLUITest() : SSLUITestBase() {}
-
-  void SetUpCommandLine(base::CommandLine* command_line) override {
-    SSLUITestBase::SetUpCommandLine(command_line);
+  SSLUITest() : SSLUITestBase() {
     scoped_feature_list_.InitAndDisableFeature(
         blink::features::kMixedContentAutoupgrade);
   }
@@ -2008,15 +2005,22 @@
   EXPECT_TRUE(base::LowerCaseEqualsASCII(result, "pass"));
 }
 
+class SSLUITestWithHttpDangerous : public SSLUITest {
+ public:
+  SSLUITestWithHttpDangerous() {
+    feature_list_.InitAndEnableFeatureWithParameters(
+        security_state::features::kMarkHttpAsFeature,
+        {{security_state::features::kMarkHttpAsFeatureParameterName,
+          security_state::features::kMarkHttpAsParameterDangerous}});
+  }
+
+ private:
+  base::test::ScopedFeatureList feature_list_;
+};
+
 // Ensure that non-standard origins are marked as neutral when the
 // MarkNonSecureAs Dangerous flag is enabled.
-IN_PROC_BROWSER_TEST_F(SSLUITest, MarkFileAsNonSecure) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndEnableFeatureWithParameters(
-      security_state::features::kMarkHttpAsFeature,
-      {{security_state::features::kMarkHttpAsFeatureParameterName,
-        security_state::features::kMarkHttpAsParameterDangerous}});
-
+IN_PROC_BROWSER_TEST_F(SSLUITestWithHttpDangerous, MarkFileAsNonSecure) {
   WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents();
   ASSERT_TRUE(contents);
 
@@ -2030,13 +2034,7 @@
 
 // Ensure that about-protocol origins are marked as neutral when the
 // MarkNonSecureAs Dangerous flag is enabled.
-IN_PROC_BROWSER_TEST_F(SSLUITest, MarkAboutAsNonSecure) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndEnableFeatureWithParameters(
-      security_state::features::kMarkHttpAsFeature,
-      {{security_state::features::kMarkHttpAsFeatureParameterName,
-        security_state::features::kMarkHttpAsParameterDangerous}});
-
+IN_PROC_BROWSER_TEST_F(SSLUITestWithHttpDangerous, MarkAboutAsNonSecure) {
   WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents();
   ASSERT_TRUE(contents);
 
@@ -2063,13 +2061,7 @@
 
 // Ensure that HTTP-protocol origins are marked as Dangerous when the
 // MarkNonSecureAs Dangerous flag is enabled.
-IN_PROC_BROWSER_TEST_F(SSLUITest, MarkHTTPAsDangerous) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndEnableFeatureWithParameters(
-      security_state::features::kMarkHttpAsFeature,
-      {{security_state::features::kMarkHttpAsFeatureParameterName,
-        security_state::features::kMarkHttpAsParameterDangerous}});
-
+IN_PROC_BROWSER_TEST_F(SSLUITestWithHttpDangerous, MarkHTTPAsDangerous) {
   ASSERT_TRUE(embedded_test_server()->Start());
 
   // Navigate to a non-local HTTP page.
@@ -2087,13 +2079,7 @@
 
 // Ensure that blob-protocol origins are marked as neutral when the
 // MarkNonSecureAs Dangerous flag is enabled.
-IN_PROC_BROWSER_TEST_F(SSLUITest, MarkBlobAsNonSecure) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndEnableFeatureWithParameters(
-      security_state::features::kMarkHttpAsFeature,
-      {{security_state::features::kMarkHttpAsFeatureParameterName,
-        security_state::features::kMarkHttpAsParameterDangerous}});
-
+IN_PROC_BROWSER_TEST_F(SSLUITestWithHttpDangerous, MarkBlobAsNonSecure) {
   WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents();
   ASSERT_TRUE(contents);
 
@@ -4560,26 +4546,16 @@
 // request to be issued during the test.
 class SSLNetworkTimeBrowserTest : public SSLUITest {
  public:
-  SSLNetworkTimeBrowserTest() : SSLUITest() {}
-  ~SSLNetworkTimeBrowserTest() override {}
-
-  void SetUpCommandLine(base::CommandLine* command_line) override {
-    SSLUITest::SetUpCommandLine(command_line);
-    command_line->AppendSwitchASCII(
-        switches::kForceFieldTrials,
-        "SSLNetworkTimeBrowserTestFieldTrial/Enabled/");
-    command_line->AppendSwitchASCII(
-        variations::switches::kForceFieldTrialParams,
-        "SSLNetworkTimeBrowserTestFieldTrial.Enabled:FetchBehavior/"
-        "on-demand-only");
+  SSLNetworkTimeBrowserTest() : SSLUITest() {
+    scoped_feature_list_.InitAndEnableFeatureWithParameters(
+        network_time::kNetworkTimeServiceQuerying,
+        {{"FetchBehavior", "on-demand-only"}});
   }
 
+  ~SSLNetworkTimeBrowserTest() override = default;
+
   void SetUpOnMainThread() override {
     SSLUITest::SetUpOnMainThread();
-    std::map<std::string, std::string> parameters;
-    parameters["FetchBehavior"] = "on-demand-only";
-    scoped_feature_list_.InitAndEnableFeatureWithParameters(
-        network_time::kNetworkTimeServiceQuerying, parameters);
     controllable_response_ =
         std::make_unique<net::test_server::ControllableHttpResponse>(
             embedded_test_server(), "/", true);
@@ -4891,9 +4867,6 @@
   void TearDownOnMainThread() override {
     CertVerifierBrowserTest::TearDownOnMainThread();
   }
-
- private:
-  base::test::ScopedFeatureList scoped_feature_list_;
 };
 
 // Visit the URL www.mail.example.com on a server that presents a valid
@@ -6024,9 +5997,27 @@
   ASSERT_TRUE(content::ExecuteScript(tab, "window.open()"));
 }
 
-// Put captive portal related tests under a different namespace for nicer
-// pattern matching.
-using SSLUICaptivePortalListTest = SSLUITest;
+class SSLUICaptivePortalListEnabledTest : public SSLUITest {
+ public:
+  SSLUICaptivePortalListEnabledTest() {
+    feature_list_.InitWithFeatures(
+        {kCaptivePortalCertificateList} /* enabled */, {} /* disabled */);
+  }
+
+ private:
+  base::test::ScopedFeatureList feature_list_;
+};
+
+class SSLUICaptivePortalListDisabledTest : public SSLUITest {
+ public:
+  SSLUICaptivePortalListDisabledTest() {
+    feature_list_.InitWithFeatures(
+        {} /* enabled */, {kCaptivePortalCertificateList} /* disabled */);
+  }
+
+ private:
+  base::test::ScopedFeatureList feature_list_;
+};
 
 std::unique_ptr<chrome_browser_ssl::SSLErrorAssistantConfig>
 MakeCaptivePortalConfig(int version_id,
@@ -6042,11 +6033,7 @@
 
 // Tests that the captive portal certificate list is not used when the feature
 // is disabled via Finch. The list is passed to SSLErrorHandler via a proto.
-IN_PROC_BROWSER_TEST_F(SSLUICaptivePortalListTest, Disabled) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitWithFeatures(
-      {} /* enabled */, {kCaptivePortalCertificateList} /* disabled */);
-
+IN_PROC_BROWSER_TEST_F(SSLUICaptivePortalListDisabledTest, Disabled) {
   ASSERT_TRUE(https_server_mismatched_.Start());
   base::HistogramTester histograms;
 
@@ -6081,11 +6068,7 @@
 
 // Tests that the captive portal certificate list is used when the feature
 // is enabled via Finch. The list is passed to SSLErrorHandler via a proto.
-IN_PROC_BROWSER_TEST_F(SSLUICaptivePortalListTest, Enabled_FromProto) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitWithFeatures(
-      {kCaptivePortalCertificateList} /* enabled */, {} /* disabled */);
-
+IN_PROC_BROWSER_TEST_F(SSLUICaptivePortalListEnabledTest, Enabled_FromProto) {
   ASSERT_TRUE(https_server_mismatched_.Start());
   base::HistogramTester histograms;
 
@@ -6161,14 +6144,22 @@
   EXPECT_TRUE(netwok_connectivity_reported);
 }
 
+class SSLUITestWithCaptivePortalInterstitialDisabled : public SSLUITest {
+ public:
+  SSLUITestWithCaptivePortalInterstitialDisabled() {
+    feature_list_.InitWithFeatures({} /* enabled */,
+                                   {kCaptivePortalInterstitial} /* disabled */);
+  }
+
+ private:
+  base::test::ScopedFeatureList feature_list_;
+};
+
 // Tests the scenario where the OS reports a captive portal but captive portal
 // interstitial feature is disabled. A captive portal interstitial should not be
 // displayed.
-IN_PROC_BROWSER_TEST_F(SSLUITest, OSReportsCaptivePortal_FeatureDisabled) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitWithFeatures(
-      {} /* enabled */, {kCaptivePortalInterstitial} /* disabled */);
-
+IN_PROC_BROWSER_TEST_F(SSLUITestWithCaptivePortalInterstitialDisabled,
+                       OSReportsCaptivePortal_FeatureDisabled) {
   ASSERT_TRUE(https_server_mismatched_.Start());
   base::HistogramTester histograms;
 
@@ -6231,6 +6222,8 @@
   SSLUICaptivePortalListResourceBundleTest()
       : CertVerifierBrowserTest(),
         https_server_(net::EmbeddedTestServer::TYPE_HTTPS) {
+    feature_list_.InitWithFeatures(
+        {kCaptivePortalCertificateList} /* enabled */, {} /* disabled */);
     https_server_.ServeFilesFromSourceDirectory(GetChromeTestDataDir());
   }
 
@@ -6293,7 +6286,7 @@
   net::EmbeddedTestServer* https_server() { return &https_server_; }
 
  private:
-  base::test::ScopedFeatureList scoped_feature_list_;
+  base::test::ScopedFeatureList feature_list_;
   net::EmbeddedTestServer https_server_;
 };
 
@@ -6302,9 +6295,6 @@
 // Same as CaptivePortalCertificateList_Enabled_FromProto, but this time the
 // cert's SPKI hash is listed in ssl_error_assistant.asciipb.
 IN_PROC_BROWSER_TEST_F(SSLUICaptivePortalListResourceBundleTest, Enabled) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitWithFeatures(
-      {kCaptivePortalCertificateList} /* enabled */, {} /* disabled */);
   ASSERT_TRUE(https_server()->Start());
   base::HistogramTester histograms;
 
@@ -6338,9 +6328,6 @@
 // update should always override the proto loaded from the resource bundle.
 IN_PROC_BROWSER_TEST_F(SSLUICaptivePortalListResourceBundleTest,
                        Enabled_DynamicUpdate) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitWithFeatures(
-      {kCaptivePortalCertificateList} /* enabled */, {} /* disabled */);
   ASSERT_TRUE(https_server()->Start());
 
   // Mark the server's cert as a captive portal cert.
@@ -6447,10 +6434,6 @@
 // authority-invalid. Captive portal interstitial should not be shown.
 IN_PROC_BROWSER_TEST_F(SSLUICaptivePortalListResourceBundleTest,
                        Enabled_AuthorityInvalid) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitWithFeatures(
-      {kCaptivePortalCertificateList} /* enabled */, {} /* disabled */);
-
   TestNoCaptivePortalInterstitial(net::CERT_STATUS_AUTHORITY_INVALID,
                                   net::ERR_CERT_AUTHORITY_INVALID);
 }
@@ -6460,10 +6443,6 @@
 // interstitial should not be shown when name mismatch isn't the only error.
 IN_PROC_BROWSER_TEST_F(SSLUICaptivePortalListResourceBundleTest,
                        Enabled_NameMismatchAndWeakKey) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitWithFeatures(
-      {kCaptivePortalCertificateList} /* enabled */, {} /* disabled */);
-
   const net::CertStatus cert_status =
       net::CERT_STATUS_COMMON_NAME_INVALID | net::CERT_STATUS_WEAK_KEY;
   // Sanity check that COMMON_NAME_INVALID is seen as the net error, since the
@@ -6601,7 +6580,6 @@
 
  private:
   net::EmbeddedTestServer https_server_;
-  base::test::ScopedFeatureList scoped_feature_list_;
   DISALLOW_COPY_AND_ASSIGN(SSLUIMITMSoftwareTest);
 };
 
@@ -6614,13 +6592,15 @@
 
 class SSLUIMITMSoftwareEnabledTest : public SSLUIMITMSoftwareTest {
  public:
-  SSLUIMITMSoftwareEnabledTest() {}
+  SSLUIMITMSoftwareEnabledTest() {
+    scoped_feature_list_.InitWithFeatures(
+        {kMITMSoftwareInterstitial} /* enabled */, {} /* disabled */);
+  }
+
   ~SSLUIMITMSoftwareEnabledTest() override {}
 
   void SetUpOnMainThread() override {
     SSLUIMITMSoftwareTest::SetUpOnMainThread();
-    scoped_feature_list_.InitWithFeatures(
-        {kMITMSoftwareInterstitial} /* enabled */, {} /* disabled */);
   }
 
  private:
@@ -6631,13 +6611,15 @@
 
 class SSLUIMITMSoftwareDisabledTest : public SSLUIMITMSoftwareTest {
  public:
-  SSLUIMITMSoftwareDisabledTest() {}
+  SSLUIMITMSoftwareDisabledTest() {
+    scoped_feature_list_.InitWithFeatures(
+        {} /* enabled */, {kMITMSoftwareInterstitial} /* disabled */);
+  }
+
   ~SSLUIMITMSoftwareDisabledTest() override {}
 
   void SetUpOnMainThread() override {
     SSLUIMITMSoftwareTest::SetUpOnMainThread();
-    scoped_feature_list_.InitWithFeatures(
-        {} /* enabled */, {kMITMSoftwareInterstitial} /* disabled */);
   }
 
  private:
@@ -7683,9 +7665,6 @@
     CertVerifierBrowserTest::SetUpOnMainThread();
     host_resolver()->AddRule("*", "127.0.0.1");
   }
-
- private:
-  base::test::ScopedFeatureList scoped_feature_list_;
 };
 
 // Tests that a message is added to the interstitial when an error code recurs
diff --git a/chrome/browser/ssl/tls_deprecation_config.cc b/chrome/browser/ssl/tls_deprecation_config.cc
index 1f92904..36489c1d 100644
--- a/chrome/browser/ssl/tls_deprecation_config.cc
+++ b/chrome/browser/ssl/tls_deprecation_config.cc
@@ -45,13 +45,15 @@
   TLSDeprecationConfigSingleton::GetInstance().SetProto(std::move(proto));
 }
 
-bool IsTLSDeprecationConfigControlSite(const GURL& url) {
+bool ShouldSuppressLegacyTLSWarning(const GURL& url) {
   if (!url.has_host() || !url.SchemeIsCryptographic())
     return false;
 
   auto* proto = TLSDeprecationConfigSingleton::GetInstance().GetProto();
+  // If the config is not yet loaded, we err on the side of not showing warnings
+  // for any sites.
   if (!proto)
-    return false;
+    return true;
 
   // Convert bytes from crypto::SHA256 so we can compare to the proto contents.
   std::string host_hash_bytes = crypto::SHA256HashString(url.host_piece());
diff --git a/chrome/browser/ssl/tls_deprecation_config.h b/chrome/browser/ssl/tls_deprecation_config.h
index 33e6311..0f72bfa3 100644
--- a/chrome/browser/ssl/tls_deprecation_config.h
+++ b/chrome/browser/ssl/tls_deprecation_config.h
@@ -16,6 +16,6 @@
 void SetRemoteTLSDeprecationConfigProto(
     std::unique_ptr<chrome_browser_ssl::LegacyTLSExperimentConfig> proto);
 
-bool IsTLSDeprecationConfigControlSite(const GURL& url);
+bool ShouldSuppressLegacyTLSWarning(const GURL& url);
 
 #endif  // CHROME_BROWSER_SSL_TLS_DEPRECATION_CONFIG_H_
diff --git a/chrome/browser/ssl/tls_deprecation_config_unittest.cc b/chrome/browser/ssl/tls_deprecation_config_unittest.cc
index 0a44e0c..f437334 100644
--- a/chrome/browser/ssl/tls_deprecation_config_unittest.cc
+++ b/chrome/browser/ssl/tls_deprecation_config_unittest.cc
@@ -15,7 +15,7 @@
 
 // Tests the case where no proto has been set by the component installer.
 TEST(TLSDeprecationConfigTest, NoProto) {
-  EXPECT_FALSE(IsTLSDeprecationConfigControlSite(GURL("https://example.test")));
+  EXPECT_TRUE(ShouldSuppressLegacyTLSWarning(GURL("https://example.test")));
 }
 
 // This tests that when no sites are in the control set,
@@ -30,7 +30,7 @@
   auto config = std::make_unique<LegacyTLSExperimentConfig>();
   SetRemoteTLSDeprecationConfigProto(std::move(config));
 
-  EXPECT_FALSE(IsTLSDeprecationConfigControlSite(control_site));
+  EXPECT_FALSE(ShouldSuppressLegacyTLSWarning(control_site));
 }
 
 // This tests that when only a single control site is in the control set,
@@ -53,11 +53,11 @@
 
   SetRemoteTLSDeprecationConfigProto(std::move(config));
 
-  EXPECT_TRUE(IsTLSDeprecationConfigControlSite(control_site));
-  EXPECT_FALSE(IsTLSDeprecationConfigControlSite(non_control_site));
+  EXPECT_TRUE(ShouldSuppressLegacyTLSWarning(control_site));
+  EXPECT_FALSE(ShouldSuppressLegacyTLSWarning(non_control_site));
 
   // And HTTP sites should not count either.
-  EXPECT_FALSE(IsTLSDeprecationConfigControlSite(http_site));
+  EXPECT_FALSE(ShouldSuppressLegacyTLSWarning(http_site));
 }
 
 // This tests that the binary search in IsTLSDeprecationControlSite() works for
@@ -98,8 +98,8 @@
   SetRemoteTLSDeprecationConfigProto(std::move(config));
 
   for (auto& site : kControlSites) {
-    EXPECT_TRUE(IsTLSDeprecationConfigControlSite(site.url));
+    EXPECT_TRUE(ShouldSuppressLegacyTLSWarning(site.url));
   }
 
-  EXPECT_FALSE(IsTLSDeprecationConfigControlSite(non_control_site));
+  EXPECT_FALSE(ShouldSuppressLegacyTLSWarning(non_control_site));
 }
diff --git a/chrome/browser/sync/test/integration/single_client_bookmarks_sync_test.cc b/chrome/browser/sync/test/integration/single_client_bookmarks_sync_test.cc
index efd3bf7..c265e10 100644
--- a/chrome/browser/sync/test/integration/single_client_bookmarks_sync_test.cc
+++ b/chrome/browser/sync/test/integration/single_client_bookmarks_sync_test.cc
@@ -789,14 +789,8 @@
 
 // TODO(crbug.com/1012222): re-enable this test on all builders once flakiness
 // is addressed.
-#if defined(THREAD_SANITIZER)
-#define MAYBE_ApplyRemoteCreationWithValidGUID \
-  DISABLED_ApplyRemoteCreationWithValidGUID
-#else
-#define MAYBE_ApplyRemoteCreationWithValidGUID ApplyRemoteCreationWithValidGUID
-#endif
 IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest,
-                       MAYBE_ApplyRemoteCreationWithValidGUID) {
+                       DISABLED_ApplyRemoteCreationWithValidGUID) {
   // This test is only relevant for USS code path.
   if (!base::FeatureList::IsEnabled(switches::kSyncUSSBookmarks))
     return;
diff --git a/chrome/browser/ui/page_info/page_info.cc b/chrome/browser/ui/page_info/page_info.cc
index 79e23a2..8d8fdf60 100644
--- a/chrome/browser/ui/page_info/page_info.cc
+++ b/chrome/browser/ui/page_info/page_info.cc
@@ -830,7 +830,7 @@
     if (base::FeatureList::IsEnabled(
             security_state::features::kLegacyTLSWarnings) &&
         visible_security_state.connection_used_legacy_tls &&
-        !visible_security_state.is_legacy_tls_control_site) {
+        !visible_security_state.should_suppress_legacy_tls_warning) {
       site_connection_status_ = SITE_CONNECTION_STATUS_LEGACY_TLS;
     }
 
diff --git a/chrome/browser/ui/page_info/page_info_unittest.cc b/chrome/browser/ui/page_info/page_info_unittest.cc
index 2e8f6c5..0581278 100644
--- a/chrome/browser/ui/page_info/page_info_unittest.cc
+++ b/chrome/browser/ui/page_info/page_info_unittest.cc
@@ -872,7 +872,7 @@
   visible_security_state_.connection_status = status;
   visible_security_state_.connection_info_initialized = true;
   visible_security_state_.connection_used_legacy_tls = true;
-  visible_security_state_.is_legacy_tls_control_site = false;
+  visible_security_state_.should_suppress_legacy_tls_warning = false;
 
   SetDefaultUIExpectations(mock_ui());
 
@@ -900,7 +900,7 @@
   visible_security_state_.connection_status = status;
   visible_security_state_.connection_info_initialized = true;
   visible_security_state_.connection_used_legacy_tls = true;
-  visible_security_state_.is_legacy_tls_control_site = true;
+  visible_security_state_.should_suppress_legacy_tls_warning = true;
 
   SetDefaultUIExpectations(mock_ui());
 
diff --git a/chrome/browser/ui/views/frame/browser_view_unittest.cc b/chrome/browser/ui/views/frame/browser_view_unittest.cc
index d9362b9c..2d6dcec 100644
--- a/chrome/browser/ui/views/frame/browser_view_unittest.cc
+++ b/chrome/browser/ui/views/frame/browser_view_unittest.cc
@@ -212,7 +212,14 @@
 #endif  // !defined(OS_MACOSX)
 
 // Test that bookmark bar view becomes invisible when closing the browser.
-TEST_F(BrowserViewTest, BookmarkBarInvisibleOnShutdown) {
+// TODO(https://crbug.com/1000251): Flaky on Linux.
+#if defined(OS_LINUX)
+#define MAYBE_BookmarkBarInvisibleOnShutdown \
+  DISABLED_BookmarkBarInvisibleOnShutdown
+#else
+#define MAYBE_BookmarkBarInvisibleOnShutdown BookmarkBarInvisibleOnShutdown
+#endif
+TEST_F(BrowserViewTest, MAYBE_BookmarkBarInvisibleOnShutdown) {
   BookmarkBarView::DisableAnimationsForTesting(true);
 
   Browser* browser = browser_view()->browser();
diff --git a/chrome/browser/ui/views/global_media_controls/media_dialog_view_interactive_browsertest.cc b/chrome/browser/ui/views/global_media_controls/media_dialog_view_interactive_browsertest.cc
index a4add37..b2ee861 100644
--- a/chrome/browser/ui/views/global_media_controls/media_dialog_view_interactive_browsertest.cc
+++ b/chrome/browser/ui/views/global_media_controls/media_dialog_view_interactive_browsertest.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/ui/views/global_media_controls/media_dialog_view.h"
 
 #include "base/run_loop.h"
+#include "base/test/scoped_feature_list.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/global_media_controls/media_toolbar_button_observer.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
@@ -162,6 +163,11 @@
         switches::autoplay::kNoUserGestureRequiredPolicy);
   }
 
+  void SetUp() override {
+    feature_list_.InitAndEnableFeature(media::kGlobalMediaControls);
+    InProcessBrowserTest::SetUp();
+  }
+
   MediaToolbarButtonView* GetToolbarIcon() {
     return BrowserView::GetBrowserViewForBrowser(browser())
         ->toolbar()
@@ -274,6 +280,8 @@
     return browser()->tab_strip_model()->GetActiveWebContents();
   }
 
+  base::test::ScopedFeatureList feature_list_;
+
   DISALLOW_COPY_AND_ASSIGN(MediaDialogViewBrowserTest);
 };
 
diff --git a/chrome/browser/ui/views/tabs/tab_spinner_interactive_uitest.cc b/chrome/browser/ui/views/tabs/tab_spinner_interactive_uitest.cc
index 4aaab49b..261061f4 100644
--- a/chrome/browser/ui/views/tabs/tab_spinner_interactive_uitest.cc
+++ b/chrome/browser/ui/views/tabs/tab_spinner_interactive_uitest.cc
@@ -55,15 +55,8 @@
   DISALLOW_COPY_AND_ASSIGN(TabSpinnerTest);
 };
 
-// TODO(crbug.com/974349) This test is timing out on ChromeOS, Mac, and Linux
-// debug builds.
-#if (defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_LINUX)) && \
-    !defined(NDEBUG)
-#define MAYBE_LoadTabsOneByOne DISABLED_LoadTabsOneByOne
-#else
-#define MAYBE_LoadTabsOneByOne LoadTabsOneByOne
-#endif
-IN_PROC_BROWSER_TEST_F(TabSpinnerTest, MAYBE_LoadTabsOneByOne) {
+// TODO(crbug.com/974349) This test is timing out on all platforms
+IN_PROC_BROWSER_TEST_F(TabSpinnerTest, DISABLED_LoadTabsOneByOne) {
   IgnorePriorHistogramSamples();
 
   // Navigate to a custom page that takes 10 seconds to load. Wait for the
diff --git a/chrome/browser/ui/web_applications/web_app_badging_browsertest.cc b/chrome/browser/ui/web_applications/web_app_badging_browsertest.cc
index 4954acc..38b57df 100644
--- a/chrome/browser/ui/web_applications/web_app_badging_browsertest.cc
+++ b/chrome/browser/ui/web_applications/web_app_badging_browsertest.cc
@@ -145,14 +145,14 @@
 IN_PROC_BROWSER_TEST_P(WebAppBadgingBrowserTest,
                        CrossSiteFrameCannotChangeMainFrameBadge) {
   // Clearing from cross site frame should affect only the cross site app.
-  ExecuteScriptAndWaitForBadgeChange("ExperimentalBadge.clear()",
+  ExecuteScriptAndWaitForBadgeChange("navigator.clearExperimentalAppBadge()",
                                      cross_site_frame_);
   ASSERT_TRUE(was_cleared_);
   ASSERT_FALSE(was_flagged_);
   ASSERT_EQ(cross_site_app_id(), changed_app_id_);
 
   // Setting from cross site frame should affect only the cross site app.
-  ExecuteScriptAndWaitForBadgeChange("ExperimentalBadge.set(77)",
+  ExecuteScriptAndWaitForBadgeChange("navigator.setExperimentalAppBadge(77)",
                                      cross_site_frame_);
   ASSERT_FALSE(was_cleared_);
   ASSERT_FALSE(was_flagged_);
@@ -163,7 +163,8 @@
 // Tests that setting the badge to an integer will be propagated across
 // processes.
 IN_PROC_BROWSER_TEST_P(WebAppBadgingBrowserTest, BadgeCanBeSetToAnInteger) {
-  ExecuteScriptAndWaitForBadgeChange("ExperimentalBadge.set(99)", main_frame_);
+  ExecuteScriptAndWaitForBadgeChange("navigator.setExperimentalAppBadge(99)",
+                                     main_frame_);
   ASSERT_FALSE(was_cleared_);
   ASSERT_FALSE(was_flagged_);
   ASSERT_EQ(main_app_id(), changed_app_id_);
@@ -173,13 +174,15 @@
 // Tests that calls to |Badge.clear| are propagated across processes.
 IN_PROC_BROWSER_TEST_P(WebAppBadgingBrowserTest,
                        BadgeCanBeClearedWithClearMethod) {
-  ExecuteScriptAndWaitForBadgeChange("ExperimentalBadge.set(55)", main_frame_);
+  ExecuteScriptAndWaitForBadgeChange("navigator.setExperimentalAppBadge(55)",
+                                     main_frame_);
   ASSERT_FALSE(was_cleared_);
   ASSERT_FALSE(was_flagged_);
   ASSERT_EQ(main_app_id(), changed_app_id_);
   ASSERT_EQ(base::Optional<uint64_t>(55u), last_badge_content_);
 
-  ExecuteScriptAndWaitForBadgeChange("ExperimentalBadge.clear()", main_frame_);
+  ExecuteScriptAndWaitForBadgeChange("navigator.clearExperimentalAppBadge()",
+                                     main_frame_);
   ASSERT_TRUE(was_cleared_);
   ASSERT_FALSE(was_flagged_);
   ASSERT_EQ(main_app_id(), changed_app_id_);
@@ -189,7 +192,8 @@
 // Tests that calling Badge.set(0) is equivalent to calling |Badge.clear| and
 // that it propagates across processes.
 IN_PROC_BROWSER_TEST_P(WebAppBadgingBrowserTest, BadgeCanBeClearedWithZero) {
-  ExecuteScriptAndWaitForBadgeChange("ExperimentalBadge.set(0)", main_frame_);
+  ExecuteScriptAndWaitForBadgeChange("navigator.setExperimentalAppBadge(0)",
+                                     main_frame_);
   ASSERT_TRUE(was_cleared_);
   ASSERT_FALSE(was_flagged_);
   ASSERT_EQ(main_app_id(), changed_app_id_);
@@ -198,7 +202,8 @@
 
 // Tests that setting the badge without content is propagated across processes.
 IN_PROC_BROWSER_TEST_P(WebAppBadgingBrowserTest, BadgeCanBeSetWithoutAValue) {
-  ExecuteScriptAndWaitForBadgeChange("ExperimentalBadge.set()", main_frame_);
+  ExecuteScriptAndWaitForBadgeChange("navigator.setExperimentalAppBadge()",
+                                     main_frame_);
   ASSERT_FALSE(was_cleared_);
   ASSERT_TRUE(was_flagged_);
   ASSERT_EQ(main_app_id(), changed_app_id_);
@@ -208,14 +213,14 @@
 // Tests that the badge can be set and cleared from an in scope frame.
 IN_PROC_BROWSER_TEST_P(WebAppBadgingBrowserTest,
                        BadgeCanBeSetAndClearedFromInScopeFrame) {
-  ExecuteScriptAndWaitForBadgeChange("ExperimentalBadge.set()",
+  ExecuteScriptAndWaitForBadgeChange("navigator.setExperimentalAppBadge()",
                                      in_scope_frame_);
   ASSERT_FALSE(was_cleared_);
   ASSERT_TRUE(was_flagged_);
   ASSERT_EQ(main_app_id(), changed_app_id_);
   ASSERT_EQ(base::nullopt, last_badge_content_);
 
-  ExecuteScriptAndWaitForBadgeChange("ExperimentalBadge.clear()",
+  ExecuteScriptAndWaitForBadgeChange("navigator.clearExperimentalAppBadge()",
                                      in_scope_frame_);
   ASSERT_TRUE(was_cleared_);
   ASSERT_FALSE(was_flagged_);
@@ -232,10 +237,10 @@
                                          ->GetActiveWebContents()
                                          ->GetMainFrame();
 
-  ASSERT_TRUE(
-      content::ExecuteScript(incognito_frame, "ExperimentalBadge.set()"));
-  ASSERT_TRUE(
-      content::ExecuteScript(incognito_frame, "ExperimentalBadge.clear()"));
+  ASSERT_TRUE(content::ExecuteScript(incognito_frame,
+                                     "navigator.setExperimentalAppBadge()"));
+  ASSERT_TRUE(content::ExecuteScript(incognito_frame,
+                                     "navigator.clearExperimentalAppBadge()"));
 }
 
 INSTANTIATE_TEST_SUITE_P(
diff --git a/chrome/browser/ui/webui/print_preview/print_preview_utils.cc b/chrome/browser/ui/webui/print_preview/print_preview_utils.cc
index e9d21dc1..e8af4416 100644
--- a/chrome/browser/ui/webui/print_preview/print_preview_utils.cc
+++ b/chrome/browser/ui/webui/print_preview/print_preview_utils.cc
@@ -212,15 +212,12 @@
                    std::string* out_capabilities,
                    gfx::Size* out_page_size,
                    base::Value* out_ticket) {
-  const std::string* destination_id_opt =
-      settings.FindStringKey(kSettingDeviceName);
   const std::string* ticket_opt = settings.FindStringKey(kSettingTicket);
   const std::string* capabilities_opt =
       settings.FindStringKey(kSettingCapabilities);
   out_page_size->SetSize(settings.FindIntKey(kSettingPageWidth).value_or(0),
                          settings.FindIntKey(kSettingPageHeight).value_or(0));
-  if (!destination_id_opt || !ticket_opt || !capabilities_opt ||
-      out_page_size->IsEmpty()) {
+  if (!ticket_opt || !capabilities_opt || out_page_size->IsEmpty()) {
     NOTREACHED();
     return false;
   }
@@ -229,7 +226,7 @@
   if (!ticket_value)
     return false;
 
-  *out_destination_id = *destination_id_opt;
+  *out_destination_id = *settings.FindStringKey(kSettingDeviceName);
   *out_capabilities = *capabilities_opt;
   *out_ticket = std::move(*ticket_value);
   return true;
diff --git a/chrome/browser/ui/webui/settings/settings_cookies_view_handler.cc b/chrome/browser/ui/webui/settings/settings_cookies_view_handler.cc
index 25dbe1f..602c098 100644
--- a/chrome/browser/ui/webui/settings/settings_cookies_view_handler.cc
+++ b/chrome/browser/ui/webui/settings/settings_cookies_view_handler.cc
@@ -132,6 +132,7 @@
 
 void CookiesViewHandler::OnJavascriptDisallowed() {
   callback_weak_ptr_factory_.InvalidateWeakPtrs();
+  request_.Clear();
 }
 
 void CookiesViewHandler::RegisterMessages() {
@@ -231,14 +232,13 @@
 void CookiesViewHandler::TreeModelEndBatch(CookiesTreeModel* model) {
   DCHECK(batch_update_);
   batch_update_ = false;
-  if (IsJavascriptAllowed()) {
-    if (request_.should_send_list) {
-      SendLocalDataList(model->GetRoot());
-    } else if (!request_.callback_id_.empty()) {
-      ResolveJavascriptCallback(base::Value(request_.callback_id_),
-                                (base::Value()));
-      request_.Clear();
-    }
+
+  if (request_.should_send_list) {
+    SendLocalDataList(model->GetRoot());
+  } else if (!request_.callback_id_.empty()) {
+    ResolveJavascriptCallback(base::Value(request_.callback_id_),
+                              (base::Value()));
+    request_.Clear();
   }
 }
 
@@ -255,14 +255,18 @@
   filter_.clear();
   sorted_sites_.clear();
   EnsureCookiesTreeModelCreated();
+
+  CHECK(!request_.callback_id_.empty());
+  ResolveJavascriptCallback(base::Value(request_.callback_id_),
+                            (base::Value()));
+  request_.Clear();
 }
 
 void CookiesViewHandler::HandleGetCookieDetails(const base::ListValue* args) {
   CHECK(request_.callback_id_.empty());
-  CHECK_EQ(2U, args->GetSize());
-  CHECK(args->GetString(0, &request_.callback_id_));
-  std::string site;
-  CHECK(args->GetString(1, &site));
+  CHECK_EQ(2U, args->GetList().size());
+  request_.callback_id_ = args->GetList()[0].GetString();
+  std::string site = args->GetList()[1].GetString();
 
   AllowJavascript();
   const CookieTreeNode* node = model_util_->GetTreeNodeFromTitle(
@@ -279,11 +283,10 @@
 
 void CookiesViewHandler::HandleGetNumCookiesString(
     const base::ListValue* args) {
-  CHECK_EQ(2U, args->GetSize());
+  CHECK_EQ(2U, args->GetList().size());
   std::string callback_id;
-  CHECK(args->GetString(0, &callback_id));
-  int num_cookies;
-  CHECK(args->GetInteger(1, &num_cookies));
+  callback_id = args->GetList()[0].GetString();
+  int num_cookies = args->GetList()[1].GetInt();
 
   AllowJavascript();
   const base::string16 string =
@@ -296,10 +299,9 @@
 
 void CookiesViewHandler::HandleGetDisplayList(const base::ListValue* args) {
   CHECK(request_.callback_id_.empty());
-  CHECK_EQ(2U, args->GetSize());
-  CHECK(args->GetString(0, &request_.callback_id_));
-  base::string16 filter;
-  CHECK(args->GetString(1, &filter));
+  CHECK_EQ(2U, args->GetList().size());
+  request_.callback_id_ = args->GetList()[0].GetString();
+  base::string16 filter = base::UTF8ToUTF16(args->GetList()[1].GetString());
 
   AllowJavascript();
   request_.should_send_list = true;
@@ -315,8 +317,8 @@
 
 void CookiesViewHandler::HandleReloadCookies(const base::ListValue* args) {
   CHECK(request_.callback_id_.empty());
-  CHECK_EQ(1U, args->GetSize());
-  CHECK(args->GetString(0, &request_.callback_id_));
+  CHECK_EQ(1U, args->GetList().size());
+  request_.callback_id_ = args->GetList()[0].GetString();
 
   AllowJavascript();
   RecreateCookiesTreeModel();
@@ -324,8 +326,8 @@
 
 void CookiesViewHandler::HandleRemoveAll(const base::ListValue* args) {
   CHECK(request_.callback_id_.empty());
-  CHECK_EQ(1U, args->GetSize());
-  CHECK(args->GetString(0, &request_.callback_id_));
+  CHECK_EQ(1U, args->GetList().size());
+  request_.callback_id_ = args->GetList()[0].GetString();
 
   AllowJavascript();
   cookies_tree_model_->DeleteAllStoredObjects();
@@ -333,8 +335,7 @@
 }
 
 void CookiesViewHandler::HandleRemove(const base::ListValue* args) {
-  std::string node_path;
-  CHECK(args->GetString(0, &node_path));
+  std::string node_path = args->GetList()[0].GetString();
 
   AllowJavascript();
   const CookieTreeNode* node = model_util_->GetTreeNodeFromPath(
@@ -347,8 +348,8 @@
 
 void CookiesViewHandler::HandleRemoveThirdParty(const base::ListValue* args) {
   CHECK(request_.callback_id_.empty());
-  CHECK_EQ(1U, args->GetSize());
-  CHECK(args->GetString(0, &request_.callback_id_));
+  CHECK_EQ(1U, args->GetList().size());
+  request_.callback_id_ = args->GetList()[0].GetString();
 
   AllowJavascript();
   Profile* profile = Profile::FromWebUI(web_ui());
@@ -360,7 +361,7 @@
 }
 
 void CookiesViewHandler::HandleRemoveShownItems(const base::ListValue* args) {
-  CHECK_EQ(0U, args->GetSize());
+  CHECK_EQ(0U, args->GetList().size());
 
   AllowJavascript();
   CookieTreeNode* parent = cookies_tree_model_->GetRoot();
@@ -369,10 +370,9 @@
 }
 
 void CookiesViewHandler::HandleRemoveItem(const base::ListValue* args) {
-  CHECK_EQ(1U, args->GetSize());
+  CHECK_EQ(1U, args->GetList().size());
   CHECK(request_.callback_id_.empty());
-  base::string16 site;
-  CHECK(args->GetString(0, &site));
+  base::string16 site = base::UTF8ToUTF16(args->GetList()[0].GetString());
 
   AllowJavascript();
   CookieTreeNode* parent = cookies_tree_model_->GetRoot();
diff --git a/chrome/browser/ui/webui/settings/settings_cookies_view_handler.h b/chrome/browser/ui/webui/settings/settings_cookies_view_handler.h
index d5a031bf..27b91d2 100644
--- a/chrome/browser/ui/webui/settings/settings_cookies_view_handler.h
+++ b/chrome/browser/ui/webui/settings/settings_cookies_view_handler.h
@@ -46,6 +46,10 @@
   void TreeModelEndBatch(CookiesTreeModel* model) override;
 
  private:
+  friend class CookiesViewHandlerTest;
+  FRIEND_TEST_ALL_PREFIXES(CookiesViewHandlerTest,
+                           HandleReloadCookiesAndGetDisplayList);
+
   // Creates the CookiesTreeModel if necessary.
   void EnsureCookiesTreeModelCreated();
 
diff --git a/chrome/browser/ui/webui/settings/settings_cookies_view_handler_unittest.cc b/chrome/browser/ui/webui/settings/settings_cookies_view_handler_unittest.cc
new file mode 100644
index 0000000..05d9e3d
--- /dev/null
+++ b/chrome/browser/ui/webui/settings/settings_cookies_view_handler_unittest.cc
@@ -0,0 +1,65 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// 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/settings/settings_cookies_view_handler.h"
+
+#include <memory>
+#include <string>
+
+#include "base/values.h"
+#include "chrome/test/base/chrome_render_view_host_test_harness.h"
+#include "content/public/test/test_web_ui.h"
+
+namespace settings {
+
+class CookiesViewHandlerTest : public ChromeRenderViewHostTestHarness {
+ public:
+  void SetUp() override {
+    ChromeRenderViewHostTestHarness::SetUp();
+
+    web_ui_ = std::make_unique<content::TestWebUI>();
+    web_ui_->set_web_contents(web_contents());
+    handler_ = std::make_unique<CookiesViewHandler>();
+    handler_->set_web_ui(web_ui());
+    handler_->AllowJavascript();
+    web_ui_->ClearTrackedCalls();
+  }
+
+  void TearDown() override {
+    handler_->set_web_ui(nullptr);
+    handler_.reset();
+    web_ui_.reset();
+
+    ChromeRenderViewHostTestHarness::TearDown();
+  }
+
+  content::TestWebUI* web_ui() { return web_ui_.get(); }
+  CookiesViewHandler* handler() { return handler_.get(); }
+
+ private:
+  std::unique_ptr<content::TestWebUI> web_ui_;
+  std::unique_ptr<CookiesViewHandler> handler_;
+};
+
+// This unit test checks that the javascript callbacks are called correctly for
+// the reloadCookies and the getDisplayList handler cases. It also makes sure
+// that CHECKs for request_.callback_id_.empty() do not fire when multiple
+// handlers are called in sequence.
+TEST_F(CookiesViewHandlerTest, HandleReloadCookiesAndGetDisplayList) {
+  const std::string reload_callback_id("localData.reload_0");
+  const std::string get_display_list_callback_id("localData.getDisplayList_1");
+
+  base::ListValue reload_args;
+  reload_args.AppendString(reload_callback_id);
+  handler()->HandleReloadCookies(&reload_args);
+  EXPECT_EQ(1U, web_ui()->call_data().size());
+
+  base::ListValue get_display_list_args;
+  get_display_list_args.AppendString(reload_callback_id);
+  get_display_list_args.AppendString(std::string());
+  handler()->HandleGetDisplayList(&get_display_list_args);
+  EXPECT_EQ(2U, web_ui()->call_data().size());
+}
+
+}  // namespace settings
diff --git a/chrome/browser/ui/webui/tab_strip/tab_strip_ui.cc b/chrome/browser/ui/webui/tab_strip/tab_strip_ui.cc
index 42d0183..b4dbace 100644
--- a/chrome/browser/ui/webui/tab_strip/tab_strip_ui.cc
+++ b/chrome/browser/ui/webui/tab_strip/tab_strip_ui.cc
@@ -68,6 +68,28 @@
   std::vector<unsigned char> result_;
 };
 
+std::string EncodeImage(gfx::ImageSkia image,
+                        SkEncodedImageFormat format,
+                        float scale_factor) {
+  const SkBitmap& bitmap = image.GetRepresentation(scale_factor).GetBitmap();
+  BufferWStream stream;
+  const bool encoding_succeeded = SkEncodeImage(&stream, bitmap, format, 100);
+  DCHECK(encoding_succeeded);
+  const std::vector<unsigned char> image_data = stream.GetBuffer();
+
+  std::string mime_subtype;
+  if (format == SkEncodedImageFormat::kJPEG) {
+    mime_subtype = "jpeg";
+  } else if (format == SkEncodedImageFormat::kPNG) {
+    mime_subtype = "png";
+  } else {
+    NOTREACHED();
+  }
+
+  return "data:image/" + mime_subtype + ";base64," +
+         base::Base64Encode(base::as_bytes(base::make_span(image_data)));
+}
+
 class WebUITabContextMenu : public ui::SimpleMenuModel::Delegate,
                             public TabMenuModel {
  public:
@@ -195,18 +217,19 @@
     tab_data.SetInteger("id", extensions::ExtensionTabUtil::GetTabId(contents));
     tab_data.SetInteger("index", index);
 
-    // TODO(johntlee): Replace with favicon from TabRendererData
-    content::NavigationEntry* visible_entry =
-        contents->GetController().GetVisibleEntry();
-    if (visible_entry && visible_entry->GetFavicon().valid) {
-      tab_data.SetString("favIconUrl", visible_entry->GetFavicon().url.spec());
-    }
-
     TabRendererData tab_renderer_data =
         TabRendererData::FromTabInModel(browser_->tab_strip_model(), index);
     tab_data.SetBoolean("pinned", tab_renderer_data.pinned);
     tab_data.SetString("title", tab_renderer_data.title);
     tab_data.SetString("url", tab_renderer_data.visible_url.GetContent());
+
+    if (!tab_renderer_data.favicon.isNull()) {
+      tab_data.SetString(
+          "favIconUrl",
+          EncodeImage(tab_renderer_data.favicon, SkEncodedImageFormat::kPNG,
+                      web_ui()->GetDeviceScaleFactor()));
+    }
+
     tab_data.SetInteger("networkState",
                         static_cast<int>(tab_renderer_data.network_state));
     tab_data.SetBoolean("shouldHideThrobber",
@@ -327,14 +350,6 @@
   // Callback passed to |thumbnail_tracker_|. Called when a tab's thumbnail
   // changes, or when we start watching the tab.
   void HandleThumbnailUpdate(content::WebContents* tab, gfx::ImageSkia image) {
-    const SkBitmap& bitmap =
-        image.GetRepresentation(web_ui()->GetDeviceScaleFactor()).GetBitmap();
-    BufferWStream stream;
-    const bool encoding_succeeded =
-        SkEncodeImage(&stream, bitmap, SkEncodedImageFormat::kJPEG, 100);
-    DCHECK(encoding_succeeded);
-    const std::vector<unsigned char> image_data = stream.GetBuffer();
-
     // Send base-64 encoded image to JS side.
     //
     // TODO(crbug.com/991393): streamline the process from tab capture to
@@ -346,9 +361,8 @@
     // copies of essentially the same image, and it is de-encoded and re-encoded
     // to the same format. We can reduce the number of copies and avoid the
     // redundant encoding.
-    std::string encoded_image =
-        base::Base64Encode(base::as_bytes(base::make_span(image_data)));
-    encoded_image = "data:image/jpeg;base64," + encoded_image;
+    std::string encoded_image = EncodeImage(image, SkEncodedImageFormat::kJPEG,
+                                            web_ui()->GetDeviceScaleFactor());
 
     const int tab_id = extensions::ExtensionTabUtil::GetTabId(tab);
     FireWebUIListener("tab-thumbnail-updated", base::Value(tab_id),
diff --git a/chrome/browser/web_applications/web_app_database.cc b/chrome/browser/web_applications/web_app_database.cc
index 000f657..63e4c678 100644
--- a/chrome/browser/web_applications/web_app_database.cc
+++ b/chrome/browser/web_applications/web_app_database.cc
@@ -43,49 +43,37 @@
                           weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
 }
 
-void WebAppDatabase::BeginTransaction() {
-  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  DCHECK(opened_);
-
-  DCHECK(!write_batch_);
-  write_batch_ = store_->CreateWriteBatch();
-}
-
-void WebAppDatabase::CommitTransaction(
+void WebAppDatabase::Write(
     const RegistryUpdateData& update_data,
     std::unique_ptr<syncer::MetadataChangeList> metadata_change_list,
     CompletionCallback callback) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   DCHECK(opened_);
 
-  DCHECK(write_batch_);
   DCHECK(!update_data.IsEmpty());
 
-  write_batch_->TakeMetadataChangesFrom(std::move(metadata_change_list));
+  std::unique_ptr<syncer::ModelTypeStore::WriteBatch> write_batch =
+      store_->CreateWriteBatch();
+
+  write_batch->TakeMetadataChangesFrom(std::move(metadata_change_list));
 
   for (const std::unique_ptr<WebApp>& web_app : update_data.apps_to_create) {
     auto proto = CreateWebAppProto(*web_app);
-    write_batch_->WriteData(web_app->app_id(), proto->SerializeAsString());
+    write_batch->WriteData(web_app->app_id(), proto->SerializeAsString());
   }
 
   for (const AppId& app_id : update_data.apps_to_delete)
-    write_batch_->DeleteData(app_id);
+    write_batch->DeleteData(app_id);
 
   for (const WebApp* web_app : update_data.apps_to_update) {
     auto proto = CreateWebAppProto(*web_app);
-    write_batch_->WriteData(web_app->app_id(), proto->SerializeAsString());
+    write_batch->WriteData(web_app->app_id(), proto->SerializeAsString());
   }
 
   store_->CommitWriteBatch(
-      std::move(write_batch_),
+      std::move(write_batch),
       base::BindOnce(&WebAppDatabase::OnDataWritten,
                      weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
-  write_batch_.reset();
-}
-
-void WebAppDatabase::CancelTransaction() {
-  DCHECK(write_batch_);
-  write_batch_.reset();
 }
 
 // static
diff --git a/chrome/browser/web_applications/web_app_database.h b/chrome/browser/web_applications/web_app_database.h
index 07e7de7..ce62631 100644
--- a/chrome/browser/web_applications/web_app_database.h
+++ b/chrome/browser/web_applications/web_app_database.h
@@ -48,13 +48,9 @@
   void OpenDatabase(RegistryOpenedCallback callback);
 
   using CompletionCallback = base::OnceCallback<void(bool success)>;
-  // There can be only 1 transaction at a time.
-  void BeginTransaction();
-  void CommitTransaction(
-      const RegistryUpdateData& update_data,
-      std::unique_ptr<syncer::MetadataChangeList> metadata_change_list,
-      CompletionCallback callback);
-  void CancelTransaction();
+  void Write(const RegistryUpdateData& update_data,
+             std::unique_ptr<syncer::MetadataChangeList> metadata_change_list,
+             CompletionCallback callback);
 
   // Exposed for testing.
   static std::unique_ptr<WebAppProto> CreateWebAppProto(const WebApp& web_app);
@@ -83,7 +79,6 @@
                      const base::Optional<syncer::ModelError>& error);
 
   std::unique_ptr<syncer::ModelTypeStore> store_;
-  std::unique_ptr<syncer::ModelTypeStore::WriteBatch> write_batch_;
   AbstractWebAppDatabaseFactory* const database_factory_;
   ReportErrorCallback error_callback_;
 
diff --git a/chrome/browser/web_applications/web_app_sync_bridge.cc b/chrome/browser/web_applications/web_app_sync_bridge.cc
index 4a4a7eb..ded9d9a 100644
--- a/chrome/browser/web_applications/web_app_sync_bridge.cc
+++ b/chrome/browser/web_applications/web_app_sync_bridge.cc
@@ -133,9 +133,6 @@
 std::unique_ptr<WebAppRegistryUpdate> WebAppSyncBridge::BeginUpdate() {
   DCHECK(!is_in_update_);
   is_in_update_ = true;
-
-  database_->BeginTransaction();
-
   return std::make_unique<WebAppRegistryUpdate>(registrar_);
 }
 
@@ -146,7 +143,6 @@
   is_in_update_ = false;
 
   if (update == nullptr || update->update_data().IsEmpty()) {
-    database_->CancelTransaction();
     std::move(callback).Run(/*success*/ true);
     return;
   }
@@ -159,7 +155,7 @@
 
   UpdateSync(*update_data, metadata_change_list.get());
 
-  database_->CommitTransaction(
+  database_->Write(
       *update_data, std::move(metadata_change_list),
       base::BindOnce(&WebAppSyncBridge::OnDataWritten,
                      weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
@@ -409,8 +405,6 @@
 
   auto update_local_data = std::make_unique<RegistryUpdateData>();
 
-  database_->BeginTransaction();
-
   for (const auto& change : entity_data) {
     DCHECK_NE(change->type(), syncer::EntityChange::ACTION_DELETE);
     ApplySyncDataChange(*change, update_local_data.get());
@@ -418,8 +412,8 @@
 
   MergeLocalAppsToSync(entity_data, metadata_change_list.get());
 
-  database_->CommitTransaction(
-      *update_local_data, std::move(metadata_change_list), base::DoNothing());
+  database_->Write(*update_local_data, std::move(metadata_change_list),
+                   base::DoNothing());
 
   ApplySyncChangesToRegistrar(std::move(update_local_data));
   return base::nullopt;
@@ -432,13 +426,11 @@
 
   auto update_local_data = std::make_unique<RegistryUpdateData>();
 
-  database_->BeginTransaction();
-
   for (const auto& change : entity_changes)
     ApplySyncDataChange(*change, update_local_data.get());
 
-  database_->CommitTransaction(
-      *update_local_data, std::move(metadata_change_list), base::DoNothing());
+  database_->Write(*update_local_data, std::move(metadata_change_list),
+                   base::DoNothing());
 
   ApplySyncChangesToRegistrar(std::move(update_local_data));
   return base::nullopt;
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 3fcd37a4..50272d3ec 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -3887,6 +3887,7 @@
       "../browser/ui/webui/settings/people_handler_unittest.cc",
       "../browser/ui/webui/settings/profile_info_handler_unittest.cc",
       "../browser/ui/webui/settings/reset_settings_handler_unittest.cc",
+      "../browser/ui/webui/settings/settings_cookies_view_handler_unittest.cc",
       "../browser/ui/webui/settings/settings_manage_profile_handler_unittest.cc",
       "../browser/ui/webui/settings/site_settings_handler_unittest.cc",
       "../browser/ui/webui/settings_utils_unittest.cc",
diff --git a/chrome/test/data/webui/cr_elements/cr_searchable_drop_down_tests.js b/chrome/test/data/webui/cr_elements/cr_searchable_drop_down_tests.js
index abf55f3..d3e31262 100644
--- a/chrome/test/data/webui/cr_elements/cr_searchable_drop_down_tests.js
+++ b/chrome/test/data/webui/cr_elements/cr_searchable_drop_down_tests.js
@@ -52,6 +52,15 @@
     MockInteractions.keyDownOn(searchInput, 'Tab', [], 'Tab');
   }
 
+  function pointerDown(element) {
+    element.dispatchEvent(new PointerEvent('pointerdown', {
+      bubbles: true,
+      cancelable: true,
+      composed: true,
+      buttons: 1,
+    }));
+  }
+
   function getSelectedElement() {
     return dropDown.shadowRoot.querySelector('[selected_]');
   }
@@ -152,7 +161,7 @@
     assertTrue(dropDown.$$('iron-dropdown').opened);
     assertNotEquals('dog', dropDown.value);
 
-    MockInteractions.downAndUp(outsideElement, null, null);
+    pointerDown(outsideElement);
     assertNotEquals('dog', dropDown.value);
     assertFalse(dropDown.$$('iron-dropdown').opened);
   });
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 2e92a513e..87f0ca2 100644
--- a/chrome/test/data/webui/settings/chromeos/os_settings_browsertest.js
+++ b/chrome/test/data/webui/settings/chromeos/os_settings_browsertest.js
@@ -13,7 +13,7 @@
 // Only run in release builds because we frequently see test timeouts in debug.
 // We suspect this is because the settings page loads slowly in debug.
 // https://crbug.com/1003483
-// GEN('#if defined(NDEBUG)');
+GEN('#if defined(NDEBUG)');
 
 GEN('#include "ash/public/cpp/ash_features.h"');
 GEN('#include "build/branding_buildflags.h"');
@@ -112,8 +112,7 @@
   }
 };
 
-// Failing on linux-chromeos-dbg bot, see https://crbug.com/1013094
-TEST_F('OSSettingsPageTest', 'DISABLED_AllJsTests', () => {
+TEST_F('OSSettingsPageTest', 'AllJsTests', () => {
   // Run all registered tests.
   mocha.run();
 });
@@ -189,8 +188,7 @@
   }
 };
 
-// Failing on linux-chromeos-dbg bot, see https://crbug.com/1013094
-TEST_F('OSSettingsAppManagementDomSwitchTest', 'DISABLED_All', function() {
+TEST_F('OSSettingsAppManagementDomSwitchTest', 'All', function() {
   mocha.run();
 });
 
@@ -211,8 +209,7 @@
   }
 };
 
-// Failing on linux-chromeos-dbg bot, see https://crbug.com/1013094
-TEST_F('OSSettingsAppManagementPageTest', 'DISABLED_AllJsTests', () => {
+TEST_F('OSSettingsAppManagementPageTest', 'AllJsTests', () => {
   mocha.run();
 });
 
@@ -233,12 +230,9 @@
   }
 };
 
-// Failing on linux-chromeos-dbg bot, see https://crbug.com/1013094
-TEST_F(
-    'OSSettingsAppManagementPwaPermissionViewTest', 'DISABLED_AllJsTests',
-    () => {
-      mocha.run();
-    });
+TEST_F('OSSettingsAppManagementPwaPermissionViewTest', 'AllJsTests', () => {
+  mocha.run();
+});
 
 // Test fixture for the app management arc permission view element.
 // eslint-disable-next-line no-var
@@ -257,12 +251,9 @@
   }
 };
 
-// Failing on linux-chromeos-dbg bot, see https://crbug.com/1013094
-TEST_F(
-    'OSSettingsAppManagementArcPermissionViewTest', 'DISABLED_AllJsTests',
-    () => {
-      mocha.run();
-    });
+TEST_F('OSSettingsAppManagementArcPermissionViewTest', 'AllJsTests', () => {
+  mocha.run();
+});
 
 // Test fixture for the app management managed app view.
 // eslint-disable-next-line no-var
@@ -281,8 +272,7 @@
   }
 };
 
-// Failing on linux-chromeos-dbg bot, see https://crbug.com/1013094
-TEST_F('OSSettingsAppManagementManagedAppTest', 'DISABLED_AllJsTests', () => {
+TEST_F('OSSettingsAppManagementManagedAppTest', 'AllJsTests', () => {
   mocha.run();
 });
 
@@ -299,8 +289,7 @@
   }
 };
 
-// Failing on linux-chromeos-dbg bot, see https://crbug.com/1013094
-TEST_F('OSSettingsAppManagementReducersTest', 'DISABLED_AllJsTests', () => {
+TEST_F('OSSettingsAppManagementReducersTest', 'AllJsTests', () => {
   mocha.run();
 });
 
@@ -574,8 +563,7 @@
   }
 };
 
-// Failing on linux-chromeos-dbg bot, see https://crbug.com/1013094
-TEST_F('OSSettingsMainTest', 'DISABLED_AllJsTests', () => {
+TEST_F('OSSettingsMainTest', 'AllJsTests', () => {
   mocha.run();
 });
 
@@ -591,8 +579,7 @@
   }
 };
 
-// Failing on linux-chromeos-dbg bot, see https://crbug.com/1013094
-TEST_F('OSSettingsMenuTest', 'DISABLED_AllJsTests', () => {
+TEST_F('OSSettingsMenuTest', 'AllJsTests', () => {
   mocha.run();
 });
 
@@ -860,8 +847,7 @@
   }
 };
 
-// Failing on linux-chromeos-dbg bot, see https://crbug.com/1013094
-TEST_F('OSSettingsPeoplePageTest', 'DISABLED_AllJsTests', () => {
+TEST_F('OSSettingsPeoplePageTest', 'AllJsTests', () => {
   mocha.run();
 });
 
@@ -879,8 +865,7 @@
   }
 };
 
-// Failing on linux-chromeos-dbg bot, see https://crbug.com/1013094
-TEST_F('OSSettingsPersonalizationPageTest', 'DISABLED_AllJsTests', () => {
+TEST_F('OSSettingsPersonalizationPageTest', 'AllJsTests', () => {
   mocha.run();
 });
 
@@ -1084,4 +1069,4 @@
   mocha.run();
 });
 
-// GEN('#endif  // defined(NDEBUG)');
+GEN('#endif  // defined(NDEBUG)');
diff --git a/chrome/test/data/webui/tab_strip/tab_test.js b/chrome/test/data/webui/tab_strip/tab_test.js
index 47dfbe9..c2a7413f 100644
--- a/chrome/test/data/webui/tab_strip/tab_test.js
+++ b/chrome/test/data/webui/tab_strip/tab_test.js
@@ -108,11 +108,11 @@
   });
 
   test('sets the favicon to the favicon URL', () => {
-    const expectedFaviconUrl = 'http://google.com/favicon.ico';
+    const expectedFaviconUrl = 'data:mock-favicon';
     tabElement.tab = Object.assign({}, tab, {favIconUrl: expectedFaviconUrl});
     const faviconElement = tabElement.shadowRoot.querySelector('#favicon');
     assertEquals(
-        faviconElement.style.backgroundImage, getFavicon(expectedFaviconUrl));
+        faviconElement.style.backgroundImage, `url("${expectedFaviconUrl}")`);
   });
 
   test('sets the favicon to the page URL if favicon URL does not exist', () => {
diff --git a/chromeos/CHROMEOS_LKGM b/chromeos/CHROMEOS_LKGM
index f36d4d1..355d4c9 100644
--- a/chromeos/CHROMEOS_LKGM
+++ b/chromeos/CHROMEOS_LKGM
@@ -1 +1 @@
-12583.0.0
\ No newline at end of file
+12584.0.0
\ No newline at end of file
diff --git a/chromeos/constants/chromeos_features.cc b/chromeos/constants/chromeos_features.cc
index 08e4f4f..89dc1b4 100644
--- a/chromeos/constants/chromeos_features.cc
+++ b/chromeos/constants/chromeos_features.cc
@@ -147,6 +147,11 @@
 const base::Feature kImeInputLogicFstNonEnglish{
     "ImeInputLogicFstNonEnglish", base::FEATURE_DISABLED_BY_DEFAULT};
 
+// Enable or disable Unified Input Logic for Mozc decoder in the IME extension
+// on Chrome OS.
+const base::Feature kImeInputLogicMozc{"ImeInputLogicMozc",
+                                       base::FEATURE_DISABLED_BY_DEFAULT};
+
 // Enable or disable IME service decoder engine and 'ime' sandbox on Chrome OS.
 const base::Feature kImeDecoderWithSandbox{"ImeDecoderWithSandbox",
                                            base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/chromeos/constants/chromeos_features.h b/chromeos/constants/chromeos_features.h
index d39bb67..85085ff8 100644
--- a/chromeos/constants/chromeos_features.h
+++ b/chromeos/constants/chromeos_features.h
@@ -72,6 +72,8 @@
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
 extern const base::Feature kImeInputLogicFstNonEnglish;
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
+extern const base::Feature kImeInputLogicMozc;
+COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
 extern const base::Feature kImeDecoderWithSandbox;
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
 extern const base::Feature kVirtualKeyboardFloatingDefault;
diff --git a/chromeos/services/machine_learning/public/cpp/service_connection.cc b/chromeos/services/machine_learning/public/cpp/service_connection.cc
index e74c54a1..6c05db3 100644
--- a/chromeos/services/machine_learning/public/cpp/service_connection.cc
+++ b/chromeos/services/machine_learning/public/cpp/service_connection.cc
@@ -11,6 +11,7 @@
 #include "chromeos/dbus/machine_learning/machine_learning_client.h"
 #include "chromeos/services/machine_learning/public/mojom/machine_learning_service.mojom.h"
 #include "chromeos/services/machine_learning/public/mojom/model.mojom.h"
+#include "mojo/public/cpp/bindings/remote.h"
 #include "mojo/public/cpp/platform/platform_channel.h"
 #include "mojo/public/cpp/system/invitation.h"
 #include "third_party/cros_system_api/dbus/service_constants.h"
@@ -43,14 +44,14 @@
   // binding is accomplished via D-Bus bootstrap.
   void BindMachineLearningServiceIfNeeded();
 
-  // Mojo connection error handler. Resets |machine_learning_service_|, which
+  // Mojo disconnect handler. Resets |machine_learning_service_|, which
   // will be reconnected upon next use.
-  void OnConnectionError();
+  void OnMojoDisconnect();
 
   // Response callback for MlClient::BootstrapMojoConnection.
   void OnBootstrapMojoConnectionResponse(bool success);
 
-  mojom::MachineLearningServicePtr machine_learning_service_;
+  mojo::Remote<mojom::MachineLearningService> machine_learning_service_;
 
   SEQUENCE_CHECKER(sequence_checker_);
 
@@ -95,13 +96,13 @@
                                  base::kNullProcessHandle,
                                  platform_channel.TakeLocalEndpoint());
 
-  // Bind our end of |pipe| to our MachineLearningServicePtr. The daemon should
-  // bind its end to a MachineLearningService implementation.
+  // Bind our end of |pipe| to our mojo::Remote<MachineLearningService>. The
+  // daemon should bind its end to a MachineLearningService implementation.
   machine_learning_service_.Bind(
-      machine_learning::mojom::MachineLearningServicePtrInfo(std::move(pipe),
-                                                             0u /* version */));
-  machine_learning_service_.set_connection_error_handler(base::BindOnce(
-      &ServiceConnectionImpl::OnConnectionError, base::Unretained(this)));
+      mojo::PendingRemote<machine_learning::mojom::MachineLearningService>(
+          std::move(pipe), 0u /* version */));
+  machine_learning_service_.set_disconnect_handler(base::BindOnce(
+      &ServiceConnectionImpl::OnMojoDisconnect, base::Unretained(this)));
 
   // Send the file descriptor for the other end of |platform_channel| to the
   // ML service daemon over D-Bus.
@@ -115,7 +116,7 @@
   DETACH_FROM_SEQUENCE(sequence_checker_);
 }
 
-void ServiceConnectionImpl::OnConnectionError() {
+void ServiceConnectionImpl::OnMojoDisconnect() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   // Connection errors are not expected so log a warning.
   LOG(WARNING) << "ML Service Mojo connection closed";
diff --git a/components/arc/media_session/arc_media_session_bridge.cc b/components/arc/media_session/arc_media_session_bridge.cc
index a532ce0..694f4322 100644
--- a/components/arc/media_session/arc_media_session_bridge.cc
+++ b/components/arc/media_session/arc_media_session_bridge.cc
@@ -13,6 +13,7 @@
 #include "components/arc/arc_features.h"
 #include "components/arc/session/arc_bridge_service.h"
 #include "content/public/browser/system_connector.h"
+#include "mojo/public/cpp/bindings/remote.h"
 #include "services/media_session/public/cpp/features.h"
 #include "services/media_session/public/mojom/audio_focus.mojom.h"
 #include "services/media_session/public/mojom/constants.mojom.h"
@@ -87,15 +88,16 @@
     return;
   }
 
-  media_session::mojom::AudioFocusManagerPtr audio_focus_ptr;
-  content::GetSystemConnector()->BindInterface(
-      media_session::mojom::kServiceName, &audio_focus_ptr);
+  mojo::Remote<media_session::mojom::AudioFocusManager> audio_focus;
+  content::GetSystemConnector()->Connect(
+      media_session::mojom::kServiceName,
+      audio_focus.BindNewPipeAndPassReceiver());
 
-  audio_focus_ptr->SetSource(base::UnguessableToken::Create(),
-                             kAudioFocusSourceName);
+  audio_focus->SetSource(base::UnguessableToken::Create(),
+                         kAudioFocusSourceName);
 
   DVLOG(2) << "ArcMediaSessionBridge will enable audio focus";
-  ms_instance->EnableAudioFocus(std::move(audio_focus_ptr));
+  ms_instance->EnableAudioFocus(audio_focus.Unbind());
 }
 
 }  // namespace arc
diff --git a/components/arc/mojom/media_session.mojom b/components/arc/mojom/media_session.mojom
index f8e2c93..e12dd0181 100644
--- a/components/arc/mojom/media_session.mojom
+++ b/components/arc/mojom/media_session.mojom
@@ -13,7 +13,8 @@
   // Enable audio focus integration on the Android side and register the
   // unified AudioPolicy. The audio policy will send audio focus requests
   // to |service|.
-  EnableAudioFocus@1(media_session.mojom.AudioFocusManager service);
+  EnableAudioFocus@1(
+      pending_remote<media_session.mojom.AudioFocusManager> service);
 
   // Disable audio focus integration if it is enabled.
   DisableAudioFocus@2();
diff --git a/components/exo/BUILD.gn b/components/exo/BUILD.gn
index 1d6efaea..0c46687 100644
--- a/components/exo/BUILD.gn
+++ b/components/exo/BUILD.gn
@@ -102,6 +102,8 @@
       "//chromeos/constants",
     ]
     sources += [
+      "client_controlled_accelerators.cc",
+      "client_controlled_accelerators.h",
       "client_controlled_shell_surface.cc",
       "client_controlled_shell_surface.h",
       "gaming_seat.cc",
diff --git a/components/exo/client_controlled_accelerators.cc b/components/exo/client_controlled_accelerators.cc
new file mode 100644
index 0000000..e40ab04
--- /dev/null
+++ b/components/exo/client_controlled_accelerators.cc
@@ -0,0 +1,52 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/exo/client_controlled_accelerators.h"
+
+namespace exo {
+
+ClientControlledAcceleratorTarget::ClientControlledAcceleratorTarget(
+    ClientControlledShellSurface* surface)
+    : surface_(surface) {}
+
+ClientControlledAcceleratorTarget::~ClientControlledAcceleratorTarget() =
+    default;
+
+void ClientControlledAcceleratorTarget::RegisterAccelerator(
+    const ui::Accelerator& accelerator,
+    ClientControlledAcceleratorAction action) {
+  accelerators_.insert(std::make_pair(ui::Accelerator{accelerator}, action));
+}
+
+void ClientControlledAcceleratorTarget::RegisterAccelerator(
+    ui::Accelerator&& accelerator,
+    ClientControlledAcceleratorAction action) {
+  accelerators_.insert(std::make_pair(std::move(accelerator), action));
+}
+
+bool ClientControlledAcceleratorTarget::AcceleratorPressed(
+    const ui::Accelerator& accelerator) {
+  auto it = accelerators_.find(accelerator);
+  DCHECK(it != accelerators_.end());
+  ClientControlledAcceleratorAction action = it->second;
+
+  switch (action) {
+    case ClientControlledAcceleratorAction::ZOOM_IN:
+      surface_->ChangeZoomLevel(ZoomChange::IN);
+      break;
+    case ClientControlledAcceleratorAction::ZOOM_OUT:
+      surface_->ChangeZoomLevel(ZoomChange::OUT);
+      break;
+    case ClientControlledAcceleratorAction::ZOOM_RESET:
+      surface_->ChangeZoomLevel(ZoomChange::RESET);
+      break;
+  }
+  return true;
+}
+
+bool ClientControlledAcceleratorTarget::CanHandleAccelerators() const {
+  return true;
+}
+
+}  // namespace exo
diff --git a/components/exo/client_controlled_accelerators.h b/components/exo/client_controlled_accelerators.h
new file mode 100644
index 0000000..3e23229
--- /dev/null
+++ b/components/exo/client_controlled_accelerators.h
@@ -0,0 +1,47 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_EXO_CLIENT_CONTROLLED_ACCELERATORS_H_
+#define COMPONENTS_EXO_CLIENT_CONTROLLED_ACCELERATORS_H_
+
+#include "components/exo/client_controlled_shell_surface.h"
+#include "ui/aura/window.h"
+#include "ui/base/accelerators/accelerator.h"
+#include "ui/views/focus/focus_manager.h"
+
+namespace exo {
+
+enum class ClientControlledAcceleratorAction {
+  ZOOM_IN,
+  ZOOM_OUT,
+  ZOOM_RESET,
+};
+
+class ClientControlledShellSurface;
+
+class ClientControlledAcceleratorTarget : public ui::AcceleratorTarget {
+ public:
+  explicit ClientControlledAcceleratorTarget(
+      ClientControlledShellSurface* surface);
+  ~ClientControlledAcceleratorTarget() override;
+
+  void RegisterAccelerator(const ui::Accelerator& accelerator,
+                           ClientControlledAcceleratorAction action);
+  void RegisterAccelerator(ui::Accelerator&& accelerator,
+                           ClientControlledAcceleratorAction action);
+
+  // ui::AcceleratorTarget interface implementation.
+  bool AcceleratorPressed(const ui::Accelerator& accelerator) override;
+  bool CanHandleAccelerators() const override;
+
+ private:
+  ClientControlledShellSurface* surface_;
+  std::map<ui::Accelerator, ClientControlledAcceleratorAction> accelerators_;
+
+  DISALLOW_COPY_AND_ASSIGN(ClientControlledAcceleratorTarget);
+};
+
+}  // namespace exo
+
+#endif  // COMPONENTS_EXO_CLIENT_CONTROLLED_ACCELERATORS_H_
diff --git a/components/exo/client_controlled_shell_surface.cc b/components/exo/client_controlled_shell_surface.cc
index b230ee7..2d3fe18d 100644
--- a/components/exo/client_controlled_shell_surface.cc
+++ b/components/exo/client_controlled_shell_surface.cc
@@ -55,6 +55,20 @@
 
 namespace {
 
+// Client controlled specific accelerators.
+const struct {
+  ui::KeyboardCode keycode;
+  int modifiers;
+  ClientControlledAcceleratorAction action;
+} kAccelerators[] = {
+    {ui::VKEY_OEM_MINUS, ui::EF_CONTROL_DOWN,
+     ClientControlledAcceleratorAction::ZOOM_OUT},
+    {ui::VKEY_OEM_PLUS, ui::EF_CONTROL_DOWN,
+     ClientControlledAcceleratorAction::ZOOM_IN},
+    {ui::VKEY_0, ui::EF_CONTROL_DOWN,
+     ClientControlledAcceleratorAction::ZOOM_RESET},
+};
+
 ClientControlledShellSurface::DelegateFactoryCallback& GetFactoryForTesting() {
   using CallbackType = ClientControlledShellSurface::DelegateFactoryCallback;
   static base::NoDestructor<CallbackType> factory;
@@ -611,6 +625,11 @@
   }
 }
 
+void ClientControlledShellSurface::ChangeZoomLevel(ZoomChange change) {
+  if (change_zoom_level_callback_)
+    change_zoom_level_callback_.Run(change);
+}
+
 void ClientControlledShellSurface::OnDragStarted(int component) {
   in_drag_ = true;
   if (drag_started_callback_)
@@ -904,6 +923,19 @@
   UpdateFrameWidth();
   if (initial_orientation_lock_ != ash::OrientationLockType::kAny)
     SetOrientationLock(initial_orientation_lock_);
+
+  // Register Client controlled accelerators.
+  views::FocusManager* focus_manager = widget_->GetFocusManager();
+  accelerator_target_ =
+      std::make_unique<ClientControlledAcceleratorTarget>(this);
+
+  for (const auto& entry : kAccelerators) {
+    focus_manager->RegisterAccelerator(
+        ui::Accelerator(entry.keycode, entry.modifiers),
+        ui::AcceleratorManager::kNormalPriority, accelerator_target_.get());
+    accelerator_target_->RegisterAccelerator(
+        ui::Accelerator(entry.keycode, entry.modifiers), entry.action);
+  }
 }
 
 float ClientControlledShellSurface::GetScale() const {
diff --git a/components/exo/client_controlled_shell_surface.h b/components/exo/client_controlled_shell_surface.h
index 749d654..a7b8ae8 100644
--- a/components/exo/client_controlled_shell_surface.h
+++ b/components/exo/client_controlled_shell_surface.h
@@ -12,6 +12,7 @@
 #include "ash/wm/client_controlled_state.h"
 #include "base/callback.h"
 #include "base/macros.h"
+#include "components/exo/client_controlled_accelerators.h"
 #include "components/exo/shell_surface_base.h"
 #include "ui/base/hit_test.h"
 #include "ui/compositor/compositor_lock.h"
@@ -30,8 +31,10 @@
 
 namespace exo {
 class Surface;
+class ClientControlledAcceleratorTarget;
 
 enum class Orientation { PORTRAIT, LANDSCAPE };
+enum class ZoomChange { IN, OUT, RESET };
 
 // This class implements a ShellSurface whose window state and bounds are
 // controlled by a remote shell client rather than the window manager. The
@@ -119,6 +122,12 @@
     drag_finished_callback_ = callback;
   }
 
+  // Set callback to run when user requests to change a zoom level.
+  using ChangeZoomLevelCallback = base::RepeatingCallback<void(ZoomChange)>;
+  void set_change_zoom_level_callback(const ChangeZoomLevelCallback& callback) {
+    change_zoom_level_callback_ = callback;
+  }
+
   // Returns true if this shell surface is currently being dragged.
   bool IsDragging();
 
@@ -154,6 +163,9 @@
   // Set resize outset for surface.
   void SetResizeOutset(int outset);
 
+  // Sends the request to change the zoom level to the client.
+  void ChangeZoomLevel(ZoomChange change);
+
   // Sends the window state change event to client.
   void OnWindowStateChangeEvent(ash::WindowStateType old_state,
                                 ash::WindowStateType next_state);
@@ -292,6 +304,7 @@
   BoundsChangedCallback bounds_changed_callback_;
   DragStartedCallback drag_started_callback_;
   DragFinishedCallback drag_finished_callback_;
+  ChangeZoomLevelCallback change_zoom_level_callback_;
 
   // TODO(reveman): Use configure callbacks for orientation. crbug.com/765954
   Orientation pending_orientation_ = Orientation::LANDSCAPE;
@@ -340,6 +353,9 @@
   // True if the window state has changed during the commit.
   bool state_changed_ = false;
 
+  // Client controlled specific accelerator target.
+  std::unique_ptr<ClientControlledAcceleratorTarget> accelerator_target_;
+
   DISALLOW_COPY_AND_ASSIGN(ClientControlledShellSurface);
 };
 
diff --git a/components/exo/wayland/zcr_remote_shell.cc b/components/exo/wayland/zcr_remote_shell.cc
index dfaba70..1cdcd00e 100644
--- a/components/exo/wayland/zcr_remote_shell.cc
+++ b/components/exo/wayland/zcr_remote_shell.cc
@@ -689,6 +689,13 @@
         weak_ptr_factory_.GetWeakPtr(), base::Unretained(resource));
   }
 
+  ClientControlledShellSurface::ChangeZoomLevelCallback
+  CreateChangeZoomLevelCallback(wl_resource* resource) {
+    return base::BindRepeating(
+        &WaylandRemoteShell::HandleRemoteSurfaceChangeZoomLevelCallback,
+        weak_ptr_factory_.GetWeakPtr(), base::Unretained(resource));
+  }
+
   ClientControlledShellSurface::StateChangedCallback CreateStateChangedCallback(
       wl_resource* resource) {
     return base::BindRepeating(
@@ -1019,6 +1026,23 @@
     wl_client_flush(wl_resource_get_client(resource));
   }
 
+  void HandleRemoteSurfaceChangeZoomLevelCallback(wl_resource* resource,
+                                                  ZoomChange change) {
+    int32_t value = 0;
+    switch (change) {
+      case ZoomChange::IN:
+        value = ZCR_REMOTE_SURFACE_V1_ZOOM_CHANGE_IN;
+        break;
+      case ZoomChange::OUT:
+        value = ZCR_REMOTE_SURFACE_V1_ZOOM_CHANGE_OUT;
+        break;
+      case ZoomChange::RESET:
+        value = ZCR_REMOTE_SURFACE_V1_ZOOM_CHANGE_RESET;
+        break;
+    }
+    zcr_remote_surface_v1_send_change_zoom_level(resource, value);
+  }
+
   void HandleRemoteSurfaceGeometryChangedCallback(wl_resource* resource,
                                                   const gfx::Rect& geometry) {
     LOG_IF(ERROR, pending_bounds_changes_.count(resource) > 0)
@@ -1139,6 +1163,10 @@
       base::BindRepeating(&HandleRemoteSurfaceDragFinishedCallback,
                           base::Unretained(remote_surface_resource)));
 
+  DCHECK(wl_resource_get_version(remote_surface_resource) >= 23);
+  shell_surface->set_change_zoom_level_callback(
+      shell->CreateChangeZoomLevelCallback(remote_surface_resource));
+
   SetImplementation(remote_surface_resource, &remote_surface_implementation,
                     std::move(shell_surface));
 }
diff --git a/components/exo/wayland/zcr_remote_shell.h b/components/exo/wayland/zcr_remote_shell.h
index 4b9112d..8441b1d 100644
--- a/components/exo/wayland/zcr_remote_shell.h
+++ b/components/exo/wayland/zcr_remote_shell.h
@@ -22,7 +22,7 @@
 namespace exo {
 namespace wayland {
 
-constexpr uint32_t kZcrRemoteShellVersion = 22;
+constexpr uint32_t kZcrRemoteShellVersion = 23;
 
 void bind_remote_shell(wl_client* client,
                        void* data,
diff --git a/components/omnibox/browser/zero_suggest_provider.cc b/components/omnibox/browser/zero_suggest_provider.cc
index 906ac84..c343828 100644
--- a/components/omnibox/browser/zero_suggest_provider.cc
+++ b/components/omnibox/browser/zero_suggest_provider.cc
@@ -157,29 +157,29 @@
 constexpr char kOmniboxZeroSuggestEligibleHistogramName[] =
     "Omnibox.ZeroSuggest.Eligible.OnFocusV2";
 
-#if defined(OS_ANDROID) || defined(OS_IOS)
-// If the user is not signed-in or the user does not have Google set up as their
-// default search engine, the remote suggestions service is replaced with the
-// most visited service.
-bool RemoteSuggestionsShouldFallBackToMostVisited(
+// Remote suggestions are allowed only if the user is signed-in and has Google
+// set up as their default search engine. This only applies to
+// kRemoteNoUrlVariant since most of these checks are done in
+// BaseSearchProvider::CanSendURL (with the exception of the authentication
+// state) which applies to kRemoteSendUrlVariant.
+bool RemoteNoUrlSuggestionsAreAllowed(
     AutocompleteProviderClient* client,
     const TemplateURLService* template_url_service) {
   if (!client->SearchSuggestEnabled())
-    return true;
+    return false;
 
   if (!client->IsAuthenticated())
-    return true;
+    return false;
 
   if (template_url_service == nullptr)
     return false;
 
   const TemplateURL* default_provider =
       template_url_service->GetDefaultSearchProvider();
-  return default_provider == nullptr ||
+  return default_provider &&
          default_provider->GetEngineType(
-             template_url_service->search_terms_data()) != SEARCH_ENGINE_GOOGLE;
+             template_url_service->search_terms_data()) == SEARCH_ENGINE_GOOGLE;
 }
-#endif
 
 }  // namespace
 
@@ -702,16 +702,17 @@
     return REMOTE_NO_URL;
 
   if (base::Contains(field_trial_variants, kRemoteNoUrlVariant)) {
+    if (RemoteNoUrlSuggestionsAreAllowed(client(), template_url_service))
+      return REMOTE_NO_URL;
+
 #if defined(OS_ANDROID) || defined(OS_IOS)
-    // TODO(tommycli): It's odd that this doesn't apply to kRemoteSendUrlVariant
-    // as well. Most likely this fallback concept should be replaced by
+    // Remote suggestions are replaced with the most visited ones.
+    // TODO(tommycli): Most likely this fallback concept should be replaced by
     // a more general configuration setup.
-    if (RemoteSuggestionsShouldFallBackToMostVisited(client(),
-                                                     template_url_service)) {
-      return MOST_VISITED;
-    }
-#endif
-    return REMOTE_NO_URL;
+    return MOST_VISITED;
+#else
+    return NONE;
+#endif  //  defined(OS_ANDROID) || defined(OS_IOS)
   }
 
   if (base::Contains(field_trial_variants, kRemoteSendUrlVariant) &&
diff --git a/components/omnibox/browser/zero_suggest_provider_unittest.cc b/components/omnibox/browser/zero_suggest_provider_unittest.cc
index 16203759..c4cacd4 100644
--- a/components/omnibox/browser/zero_suggest_provider_unittest.cc
+++ b/components/omnibox/browser/zero_suggest_provider_unittest.cc
@@ -157,12 +157,21 @@
 
   std::unique_ptr<FakeAutocompleteProviderClient> client_;
   scoped_refptr<ZeroSuggestProvider> provider_;
-  TemplateURL* default_t_url_;
 
   network::TestURLLoaderFactory* test_loader_factory() {
     return client_->test_url_loader_factory();
   }
 
+  GURL GetSuggestURL(
+      metrics::OmniboxEventProto::PageClassification page_classification) {
+    TemplateURLRef::SearchTermsArgs search_terms_args;
+    search_terms_args.page_classification = page_classification;
+    search_terms_args.omnibox_focus_type =
+        TemplateURLRef::SearchTermsArgs::OmniboxFocusType::ON_FOCUS;
+    return RemoteSuggestionsService::EndpointUrl(
+        search_terms_args, client_->GetTemplateURLService());
+  }
+
  private:
   DISALLOW_COPY_AND_ASSIGN(ZeroSuggestProviderTest);
 };
@@ -173,12 +182,10 @@
   TemplateURLService* turl_model = client_->GetTemplateURLService();
   turl_model->Load();
 
-  TemplateURLData data;
-  data.SetShortName(base::ASCIIToUTF16("t"));
-  data.SetURL("https://www.google.com/?q={searchTerms}");
-  data.suggestions_url = "https://www.google.com/complete/?q={searchTerms}";
-  default_t_url_ = turl_model->Add(std::make_unique<TemplateURL>(data));
-  turl_model->SetUserSelectedDefaultSearchProvider(default_t_url_);
+  // Verify that Google is the default search provider.
+  ASSERT_EQ(SEARCH_ENGINE_GOOGLE,
+            turl_model->GetDefaultSearchProvider()->GetEngineType(
+                turl_model->search_terms_data()));
 
   provider_ = ZeroSuggestProvider::Create(client_.get(), nullptr, this);
 }
@@ -206,7 +213,7 @@
 TEST_F(ZeroSuggestProviderTest, TypeOfResultToRun) {
   provider_->SetPageClassificationForTesting(metrics::OmniboxEventProto::OTHER);
   GURL current_url = GURL("https://example.com/");
-  GURL suggest_url = GURL("https://www.google.com/complete/?q={searchTerms}");
+  GURL suggest_url = GetSuggestURL(metrics::OmniboxEventProto::OTHER);
 
   EXPECT_CALL(*client_, IsAuthenticated())
       .WillRepeatedly(testing::Return(true));
@@ -222,6 +229,49 @@
             provider_->TypeOfResultToRun(current_url, suggest_url));
 #endif
 
+  // Verify remote suggestions are only allowed when the user is signed in.
+  // Otherwise, falls back to platorm-specific defaults.
+  EXPECT_CALL(*client_, IsAuthenticated())
+      .WillRepeatedly(testing::Return(false));
+
+  CreateRemoteNoUrlFieldTrial();
+#if defined(OS_IOS) || defined(OS_ANDROID)
+  EXPECT_EQ(ZeroSuggestProvider::ResultType::MOST_VISITED,
+            provider_->TypeOfResultToRun(current_url, suggest_url));
+#else
+  EXPECT_EQ(ZeroSuggestProvider::ResultType::NONE,
+            provider_->TypeOfResultToRun(current_url, suggest_url));
+#endif
+
+  // Restore authentication state.
+  EXPECT_CALL(*client_, IsAuthenticated())
+      .WillRepeatedly(testing::Return(true));
+
+  // Verify remote suggestions are only allowed when user has set up Google as
+  // default search engine. Otherwise, falls back to platorm-specific defaults.
+  TemplateURLService* turl_model = client_->GetTemplateURLService();
+  auto* google_search_provider = turl_model->GetDefaultSearchProvider();
+
+  TemplateURLData data;
+  data.SetURL("https://www.example.com/?q={searchTerms}");
+  data.suggestions_url = "https://www.example.com/suggest/?q={searchTerms}";
+  auto* other_search_provider =
+      turl_model->Add(std::make_unique<TemplateURL>(data));
+  turl_model->SetUserSelectedDefaultSearchProvider(other_search_provider);
+
+  CreateRemoteNoUrlFieldTrial();
+#if defined(OS_IOS) || defined(OS_ANDROID)
+  EXPECT_EQ(ZeroSuggestProvider::ResultType::MOST_VISITED,
+            provider_->TypeOfResultToRun(current_url, suggest_url));
+#else
+  EXPECT_EQ(ZeroSuggestProvider::ResultType::NONE,
+            provider_->TypeOfResultToRun(current_url, suggest_url));
+#endif
+
+  // Restore Google as the default search provider.
+  turl_model->SetUserSelectedDefaultSearchProvider(
+      const_cast<TemplateURL*>(google_search_provider));
+
   // Verify a few globally configured states work.
   SetZeroSuggestVariantForAllContexts(
       ZeroSuggestProvider::kRemoteSendUrlVariant);
@@ -283,6 +333,9 @@
 }
 
 TEST_F(ZeroSuggestProviderTest, TestStartWillStopForSomeInput) {
+  EXPECT_CALL(*client_, IsAuthenticated())
+      .WillRepeatedly(testing::Return(true));
+
   CreateRemoteNoUrlFieldTrial();
 
   std::string input_url("http://www.cnn.com/");
@@ -412,13 +465,13 @@
   EXPECT_TRUE(prefs->GetString(omnibox::kZeroSuggestCachedResults).empty());
   EXPECT_TRUE(provider_->matches().empty());
 
-  const char kUrl[] = "https://www.google.com/complete/?q=";
-  EXPECT_TRUE(test_loader_factory()->IsPending(kUrl));
+  GURL suggest_url = GetSuggestURL(metrics::OmniboxEventProto::OTHER);
+  EXPECT_TRUE(test_loader_factory()->IsPending(suggest_url.spec()));
 
   std::string json_response("[\"\",[\"search1\", \"search2\", \"search3\"],"
       "[],[],{\"google:suggestrelevance\":[602, 601, 600],"
       "\"google:verbatimrelevance\":1300}]");
-  test_loader_factory()->AddResponse(kUrl, json_response);
+  test_loader_factory()->AddResponse(suggest_url.spec(), json_response);
 
   base::RunLoop().RunUntilIdle();
 
@@ -454,12 +507,12 @@
   EXPECT_EQ(base::ASCIIToUTF16("search2"), provider_->matches()[2].contents);
   EXPECT_EQ(base::ASCIIToUTF16("search3"), provider_->matches()[3].contents);
 
-  const char kUrl[] = "https://www.google.com/complete/?q=";
-  EXPECT_TRUE(test_loader_factory()->IsPending(kUrl));
+  GURL suggest_url = GetSuggestURL(metrics::OmniboxEventProto::OTHER);
+  EXPECT_TRUE(test_loader_factory()->IsPending(suggest_url.spec()));
   std::string json_response2("[\"\",[\"search4\", \"search5\", \"search6\"],"
       "[],[],{\"google:suggestrelevance\":[602, 601, 600],"
       "\"google:verbatimrelevance\":1300}]");
-  test_loader_factory()->AddResponse(kUrl, json_response2);
+  test_loader_factory()->AddResponse(suggest_url.spec(), json_response2);
 
   base::RunLoop().RunUntilIdle();
 
@@ -501,10 +554,10 @@
   EXPECT_EQ(base::ASCIIToUTF16("search2"), provider_->matches()[2].contents);
   EXPECT_EQ(base::ASCIIToUTF16("search3"), provider_->matches()[3].contents);
 
-  const char kUrl[] = "https://www.google.com/complete/?q=";
-  EXPECT_TRUE(test_loader_factory()->IsPending(kUrl));
+  GURL suggest_url = GetSuggestURL(metrics::OmniboxEventProto::OTHER);
+  EXPECT_TRUE(test_loader_factory()->IsPending(suggest_url.spec()));
   std::string empty_response("[\"\",[],[],[],{}]");
-  test_loader_factory()->AddResponse(kUrl, empty_response);
+  test_loader_factory()->AddResponse(suggest_url.spec(), empty_response);
 
   base::RunLoop().RunUntilIdle();
 
diff --git a/components/security_state/core/security_state.cc b/components/security_state/core/security_state.cc
index 8b38fe1..88f048f5 100644
--- a/components/security_state/core/security_state.cc
+++ b/components/security_state/core/security_state.cc
@@ -159,7 +159,7 @@
   if (base::FeatureList::IsEnabled(
           security_state::features::kLegacyTLSWarnings) &&
       visible_security_state.connection_used_legacy_tls &&
-      !visible_security_state.is_legacy_tls_control_site) {
+      !visible_security_state.should_suppress_legacy_tls_warning) {
     return WARNING;
   }
 
@@ -231,7 +231,7 @@
       is_view_source(false),
       is_devtools(false),
       connection_used_legacy_tls(false),
-      is_legacy_tls_control_site(false) {}
+      should_suppress_legacy_tls_warning(false) {}
 
 VisibleSecurityState::~VisibleSecurityState() {}
 
diff --git a/components/security_state/core/security_state.h b/components/security_state/core/security_state.h
index 677be97..93cf881 100644
--- a/components/security_state/core/security_state.h
+++ b/components/security_state/core/security_state.h
@@ -181,7 +181,7 @@
   bool connection_used_legacy_tls;
   // True if the page should be excluded from a UI treatment for legacy TLS
   // (used for control group in an experimental UI rollout).
-  bool is_legacy_tls_control_site;
+  bool should_suppress_legacy_tls_warning;
   // Contains information about input events that may impact the security
   // level of the page.
   InsecureInputEventData insecure_input_events;
diff --git a/components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedBridge.java b/components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedBridge.java
index 93500c6..0cc411f 100644
--- a/components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedBridge.java
+++ b/components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedBridge.java
@@ -8,6 +8,9 @@
 
 import org.chromium.base.ContextUtils;
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.components.variations.firstrun.VariationsSeedFetcher.SeedInfo;
+
+import java.text.ParseException;
 
 /**
  * VariationsSeedBridge is a class which is used to pass variations first run seed that was fetched
@@ -19,7 +22,8 @@
     protected static final String VARIATIONS_FIRST_RUN_SEED_BASE64 = "variations_seed_base64";
     protected static final String VARIATIONS_FIRST_RUN_SEED_SIGNATURE = "variations_seed_signature";
     protected static final String VARIATIONS_FIRST_RUN_SEED_COUNTRY = "variations_seed_country";
-    protected static final String VARIATIONS_FIRST_RUN_SEED_DATE = "variations_seed_date";
+    protected static final String VARIATIONS_FIRST_RUN_SEED_DATE_HEADER = "variations_seed_date";
+    protected static final String VARIATIONS_FIRST_RUN_SEED_DATE = "variations_seed_date_ms";
     protected static final String VARIATIONS_FIRST_RUN_SEED_IS_GZIP_COMPRESSED =
             "variations_seed_is_gzip_compressed";
 
@@ -37,15 +41,15 @@
      * CalledByNative attribute is used by unit tests code to set test data.
      */
     @CalledByNative
-    public static void setVariationsFirstRunSeed(byte[] rawSeed, String signature, String country,
-            String date, boolean isGzipCompressed) {
+    public static void setVariationsFirstRunSeed(
+            byte[] rawSeed, String signature, String country, long date, boolean isGzipCompressed) {
         ContextUtils.getAppSharedPreferences()
                 .edit()
                 .putString(VARIATIONS_FIRST_RUN_SEED_BASE64,
                         Base64.encodeToString(rawSeed, Base64.NO_WRAP))
                 .putString(VARIATIONS_FIRST_RUN_SEED_SIGNATURE, signature)
                 .putString(VARIATIONS_FIRST_RUN_SEED_COUNTRY, country)
-                .putString(VARIATIONS_FIRST_RUN_SEED_DATE, date)
+                .putLong(VARIATIONS_FIRST_RUN_SEED_DATE, date)
                 .putBoolean(VARIATIONS_FIRST_RUN_SEED_IS_GZIP_COMPRESSED, isGzipCompressed)
                 .apply();
     }
@@ -58,6 +62,7 @@
                 .remove(VARIATIONS_FIRST_RUN_SEED_SIGNATURE)
                 .remove(VARIATIONS_FIRST_RUN_SEED_COUNTRY)
                 .remove(VARIATIONS_FIRST_RUN_SEED_DATE)
+                .remove(VARIATIONS_FIRST_RUN_SEED_DATE_HEADER)
                 .remove(VARIATIONS_FIRST_RUN_SEED_IS_GZIP_COMPRESSED)
                 .apply();
     }
@@ -104,8 +109,22 @@
     }
 
     @CalledByNative
-    private static String getVariationsFirstRunSeedDate() {
-        return getVariationsFirstRunSeedPref(VARIATIONS_FIRST_RUN_SEED_DATE);
+    private static long getVariationsFirstRunSeedDate() {
+        long date =
+                ContextUtils.getAppSharedPreferences().getLong(VARIATIONS_FIRST_RUN_SEED_DATE, 0);
+        if (date > 0) return date;
+        // VARIATIONS_FIRST_RUN_SEED_DATE_HEADER is deprecated in favor of
+        // VARIATIONS_FIRST_RUN_SEED_DATE, but fall back on the old value in case the prefs were
+        // written by an old version.
+        // TODO(crbug.com/1013390): Remove this fallback logic.
+        String header = getVariationsFirstRunSeedPref(VARIATIONS_FIRST_RUN_SEED_DATE_HEADER);
+        if (header.isEmpty()) return 0;
+        try {
+            return SeedInfo.parseDateHeader(header);
+        } catch (ParseException e) {
+            // Shouldn't happen as the date will have been verified in VariationsSeedFetcher.
+            throw new RuntimeException("Invalid date in first run seed pref", e);
+        }
     }
 
     @CalledByNative
diff --git a/components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedFetcher.java b/components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedFetcher.java
index 10265d2..6a2b5ee 100644
--- a/components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedFetcher.java
+++ b/components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedFetcher.java
@@ -9,6 +9,7 @@
 
 import androidx.annotation.IntDef;
 
+import org.chromium.base.BuildConfig;
 import org.chromium.base.ContextUtils;
 import org.chromium.base.FileUtils;
 import org.chromium.base.Log;
@@ -29,7 +30,6 @@
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Arrays;
-import java.util.Date;
 import java.util.Locale;
 
 /**
@@ -54,6 +54,7 @@
     // Values for the "Variations.FirstRun.SeedFetchResult" sparse histogram, which also logs
     // HTTP result codes. These are negative so that they don't conflict with the HTTP codes.
     // These values should not be renumbered or re-used since they are logged to UMA.
+    private static final int SEED_FETCH_RESULT_INVALID_DATE_HEADER = -4;
     private static final int SEED_FETCH_RESULT_UNKNOWN_HOST_EXCEPTION = -3;
     private static final int SEED_FETCH_RESULT_TIMEOUT = -2;
     private static final int SEED_FETCH_RESULT_IOEXCEPTION = -1;
@@ -133,22 +134,28 @@
         // If you add fields, see VariationsTestUtils.
         public String signature;
         public String country;
-        public String date;
+        // Date according to the Variations server in milliseconds since UNIX epoch GMT.
+        public long date;
         public boolean isGzipCompressed;
         public byte[] seedData;
 
-        public Date parseDate() throws ParseException {
-            // The date field comes from the HTTP "Date" header, which has this format. (See RFC
-            // 2616, sections 3.3.1 and 14.18.) SimpleDateFormat is weirdly not thread-safe, so
-            // instantiate a new one for each call.
-            return new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US).parse(date);
+        public static long parseDateHeader(String header) throws ParseException {
+            // The date field comes from the HTTP "Date" header, which has this format.
+            // (See RFC 2616, sections 3.3.1 and 14.18.) SimpleDateFormat is weirdly not
+            // thread-safe, so instantiate a new one for each call.
+            return new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US)
+                    .parse(header)
+                    .getTime();
         }
 
         @Override
         public String toString() {
-            return "SeedInfo{signature=\"" + signature + "\" country=\"" + country
-                    + "\" date=\"" + date + " isGzipCompressed=" + isGzipCompressed
-                    + " seedData=" + Arrays.toString(seedData);
+            if (BuildConfig.DCHECK_IS_ON) {
+                return "SeedInfo{signature=\"" + signature + "\" country=\"" + country
+                        + "\" date=\"" + date + " isGzipCompressed=" + isGzipCompressed
+                        + " seedData=" + Arrays.toString(seedData);
+            }
+            return super.toString();
         }
     }
 
@@ -179,8 +186,8 @@
                         VariationsPlatform.ANDROID, restrictMode, milestone, channel);
                 VariationsSeedBridge.setVariationsFirstRunSeed(info.seedData, info.signature,
                         info.country, info.date, info.isGzipCompressed);
-            } catch (IOException e) {
-                Log.e(TAG, "IOException when fetching variations seed.", e);
+            } catch (IOException | ParseException e) {
+                Log.e(TAG, "Exception when fetching variations seed.", e);
                 // Exceptions are handled and logged in the downloadContent method, so we don't
                 // need any exception handling here. The only reason we need a catch-statement here
                 // is because those exceptions are re-thrown from downloadContent to skip the
@@ -218,6 +225,7 @@
      * @param milestone the milestone parameter to pass to the server via a URL param.
      * @param channel the channel parameter to pass to the server via a URL param.
      * @return the object holds the seed data and its related header fields.
+     * @throws ParseException when the seed response has an invalid Date header.
      * @throws SocketTimeoutException when fetching seed connection times out.
      * @throws UnknownHostException when fetching seed connection has an unknown host.
      * @throws IOException when response code is not HTTP_OK or transmission fails on the open
@@ -225,7 +233,7 @@
      */
     public SeedInfo downloadContent(
             @VariationsPlatform int platform, String restrictMode, String milestone, String channel)
-            throws SocketTimeoutException, UnknownHostException, IOException {
+            throws ParseException, SocketTimeoutException, UnknownHostException, IOException {
         HttpURLConnection connection = null;
         try {
             long startTimeMillis = SystemClock.elapsedRealtime();
@@ -249,10 +257,14 @@
             info.seedData = getRawSeed(connection);
             info.signature = getHeaderFieldOrEmpty(connection, "X-Seed-Signature");
             info.country = getHeaderFieldOrEmpty(connection, "X-Country");
-            info.date = getHeaderFieldOrEmpty(connection, "Date");
+            info.date = SeedInfo.parseDateHeader(getHeaderFieldOrEmpty(connection, "Date"));
             info.isGzipCompressed = getHeaderFieldOrEmpty(connection, "IM").equals("gzip");
             recordSeedFetchTime(SystemClock.elapsedRealtime() - startTimeMillis);
             return info;
+        } catch (ParseException e) {
+            recordFetchResultOrCode(SEED_FETCH_RESULT_INVALID_DATE_HEADER);
+            Log.e(TAG, "ParseException parsing Date header when fetching variations seed.", e);
+            throw e;
         } catch (SocketTimeoutException e) {
             recordFetchResultOrCode(SEED_FETCH_RESULT_TIMEOUT);
             Log.w(TAG, "SocketTimeoutException timeout when fetching variations seed.", e);
diff --git a/components/variations/android/junit/src/org/chromium/components/variations/firstrun/VariationsSeedFetcherTest.java b/components/variations/android/junit/src/org/chromium/components/variations/firstrun/VariationsSeedFetcherTest.java
index 54c0db4..87cc5eb 100644
--- a/components/variations/android/junit/src/org/chromium/components/variations/firstrun/VariationsSeedFetcherTest.java
+++ b/components/variations/android/junit/src/org/chromium/components/variations/firstrun/VariationsSeedFetcherTest.java
@@ -30,10 +30,12 @@
 import org.chromium.base.ContextUtils;
 import org.chromium.base.ThreadUtils;
 import org.chromium.base.test.BaseRobolectricTestRunner;
+import org.chromium.components.variations.firstrun.VariationsSeedFetcher.SeedInfo;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.net.HttpURLConnection;
+import java.text.ParseException;
 
 /**
  * Tests for VariationsSeedFetcher
@@ -41,6 +43,8 @@
 @RunWith(BaseRobolectricTestRunner.class)
 @Config(manifest = Config.NONE)
 public class VariationsSeedFetcherTest {
+    private static final String RFC_822_DATE = "Sat, 01 Jan 2000 00:00:00 GMT";
+
     private HttpURLConnection mConnection;
     private VariationsSeedFetcher mFetcher;
     private SharedPreferences mPrefs;
@@ -74,14 +78,14 @@
      * @throws IOException
      */
     @Test
-    public void testFetchSeed() throws IOException {
+    public void testFetchSeed() throws IOException, ParseException {
         // Pretend we are on a background thread; set the UI thread looper to something other than
         // the current thread.
 
         when(mConnection.getResponseCode()).thenReturn(HttpURLConnection.HTTP_OK);
         when(mConnection.getHeaderField("X-Seed-Signature")).thenReturn("signature");
         when(mConnection.getHeaderField("X-Country")).thenReturn("Nowhere Land");
-        when(mConnection.getHeaderField("Date")).thenReturn("A date");
+        when(mConnection.getHeaderField("Date")).thenReturn(RFC_822_DATE);
         when(mConnection.getHeaderField("IM")).thenReturn("gzip");
         when(mConnection.getInputStream())
                 .thenReturn(new ByteArrayInputStream(ApiCompatibilityUtils.getBytesUtf8("1234")));
@@ -92,8 +96,8 @@
                 equalTo("signature"));
         assertThat(mPrefs.getString(VariationsSeedBridge.VARIATIONS_FIRST_RUN_SEED_COUNTRY, ""),
                 equalTo("Nowhere Land"));
-        assertThat(mPrefs.getString(VariationsSeedBridge.VARIATIONS_FIRST_RUN_SEED_DATE, ""),
-                equalTo("A date"));
+        assertThat(mPrefs.getLong(VariationsSeedBridge.VARIATIONS_FIRST_RUN_SEED_DATE, 0),
+                equalTo(SeedInfo.parseDateHeader(RFC_822_DATE)));
         assertTrue(mPrefs.getBoolean(
                 VariationsSeedBridge.VARIATIONS_FIRST_RUN_SEED_IS_GZIP_COMPRESSED, false));
         assertThat(mPrefs.getString(VariationsSeedBridge.VARIATIONS_FIRST_RUN_SEED_BASE64, ""),
diff --git a/components/variations/android/variations_seed_bridge.cc b/components/variations/android/variations_seed_bridge.cc
index c3c4a71f..380f255 100644
--- a/components/variations/android/variations_seed_bridge.cc
+++ b/components/variations/android/variations_seed_bridge.cc
@@ -30,7 +30,7 @@
       Java_VariationsSeedBridge_getVariationsFirstRunSeedSignature(env);
   ScopedJavaLocalRef<jstring> j_seed_country =
       Java_VariationsSeedBridge_getVariationsFirstRunSeedCountry(env);
-  ScopedJavaLocalRef<jstring> j_response_date =
+  jlong j_response_date =
       Java_VariationsSeedBridge_getVariationsFirstRunSeedDate(env);
   jboolean j_is_gzip_compressed =
       Java_VariationsSeedBridge_getVariationsFirstRunSeedIsGzipCompressed(env);
@@ -41,7 +41,7 @@
   }
   seed->signature = ConvertJavaStringToUTF8(j_seed_signature);
   seed->country = ConvertJavaStringToUTF8(j_seed_country);
-  seed->date = ConvertJavaStringToUTF8(j_response_date);
+  seed->date = static_cast<long>(j_response_date);
   seed->is_gzip_compressed = static_cast<bool>(j_is_gzip_compressed);
   return seed;
 }
@@ -59,14 +59,14 @@
 void SetJavaFirstRunPrefsForTesting(const std::string& seed_data,
                                     const std::string& seed_signature,
                                     const std::string& seed_country,
-                                    const std::string& response_date,
+                                    long response_date,
                                     bool is_gzip_compressed) {
   JNIEnv* env = AttachCurrentThread();
   Java_VariationsSeedBridge_setVariationsFirstRunSeed(
       env, base::android::ToJavaByteArray(env, seed_data),
       ConvertUTF8ToJavaString(env, seed_signature),
       ConvertUTF8ToJavaString(env, seed_country),
-      ConvertUTF8ToJavaString(env, response_date),
+      static_cast<jlong>(response_date),
       static_cast<jboolean>(is_gzip_compressed));
 }
 
diff --git a/components/variations/android/variations_seed_bridge.h b/components/variations/android/variations_seed_bridge.h
index 633fe35..0840af0 100644
--- a/components/variations/android/variations_seed_bridge.h
+++ b/components/variations/android/variations_seed_bridge.h
@@ -30,7 +30,7 @@
 void SetJavaFirstRunPrefsForTesting(const std::string& seed_data,
                                     const std::string& seed_signature,
                                     const std::string& seed_country,
-                                    const std::string& response_date,
+                                    long response_date,
                                     bool is_gzip_compressed);
 
 }  // namespace android
diff --git a/components/variations/seed_response.h b/components/variations/seed_response.h
index 0de272b..3901fc9 100644
--- a/components/variations/seed_response.h
+++ b/components/variations/seed_response.h
@@ -11,6 +11,7 @@
 
 // Represents data received when downloading the seed: "data" is the response
 // body while the other fields come from headers.
+// This is only used on Android.
 struct SeedResponse {
   SeedResponse();
   ~SeedResponse();
@@ -18,7 +19,7 @@
   std::string data;  // "data" is binary, for which protobuf uses strings.
   std::string signature;
   std::string country;
-  std::string date;
+  long date;
   bool is_gzip_compressed = false;
 };
 
diff --git a/components/variations/service/variations_field_trial_creator_unittest.cc b/components/variations/service/variations_field_trial_creator_unittest.cc
index 080207763..19f3d2d 100644
--- a/components/variations/service/variations_field_trial_creator_unittest.cc
+++ b/components/variations/service/variations_field_trial_creator_unittest.cc
@@ -108,15 +108,6 @@
   seed.SerializeToString(&serialized_seed);
   return serialized_seed;
 }
-
-// Returns the |time| formatted as a UTC string.
-std::string ToUTCString(base::Time time) {
-  base::Time::Exploded exploded;
-  time.UTCExplode(&exploded);
-  return base::StringPrintf("%d-%d-%d %d:%d:%d UTC", exploded.year,
-                            exploded.month, exploded.day_of_month,
-                            exploded.hour, exploded.minute, exploded.second);
-}
 #endif  // OS_ANDROID
 
 class TestPlatformFieldTrials : public PlatformFieldTrials {
@@ -487,7 +478,7 @@
   initial_seed->data = SerializeSeed(CreateTestSeedWithCountryFilter());
   initial_seed->signature = kTestSeedSignature;
   initial_seed->country = kTestSeedCountry;
-  initial_seed->date = ToUTCString(one_day_ago);
+  initial_seed->date = one_day_ago.ToJavaTime();
   initial_seed->is_gzip_compressed = false;
 
   TestVariationsServiceClient variations_service_client;
diff --git a/components/variations/variations_seed_store.cc b/components/variations/variations_seed_store.cc
index f9ae86c..9ef4ffa8 100644
--- a/components/variations/variations_seed_store.cc
+++ b/components/variations/variations_seed_store.cc
@@ -419,13 +419,13 @@
     return;
   }
 
-  base::Time date;
-  if (!base::Time::FromUTCString(initial_seed->date.c_str(), &date)) {
+  if (initial_seed->date == 0) {
     RecordFirstRunSeedImportResult(
         FirstRunSeedImportResult::FAIL_INVALID_RESPONSE_DATE);
-    LOG(WARNING) << "Invalid response date: " << date;
+    LOG(WARNING) << "Missing response date";
     return;
   }
+  base::Time date = base::Time::FromJavaTime(initial_seed->date);
 
   if (!StoreSeedData(initial_seed->data, initial_seed->signature,
                      initial_seed->country, date, false,
diff --git a/components/variations/variations_seed_store_unittest.cc b/components/variations/variations_seed_store_unittest.cc
index df0bbe5d..0bb8e72 100644
--- a/components/variations/variations_seed_store_unittest.cc
+++ b/components/variations/variations_seed_store_unittest.cc
@@ -1188,7 +1188,7 @@
   const std::string test_seed_data = "raw_seed_data_test";
   const std::string test_seed_signature = "seed_signature_test";
   const std::string test_seed_country = "seed_country_code_test";
-  const std::string test_response_date = "seed_response_date_test";
+  const long test_response_date = 1234567890;
   const bool test_is_gzip_compressed = true;
   android::SetJavaFirstRunPrefsForTesting(test_seed_data, test_seed_signature,
                                           test_seed_country, test_response_date,
@@ -1206,7 +1206,7 @@
   EXPECT_EQ("", seed->data);
   EXPECT_EQ("", seed->signature);
   EXPECT_EQ("", seed->country);
-  EXPECT_EQ("", seed->date);
+  EXPECT_EQ(0, seed->date);
   EXPECT_FALSE(seed->is_gzip_compressed);
 }
 #endif  // OS_ANDROID
diff --git a/components/viz/service/display_embedder/buffer_queue.cc b/components/viz/service/display_embedder/buffer_queue.cc
index 7003bbb..83bd8d5 100644
--- a/components/viz/service/display_embedder/buffer_queue.cc
+++ b/components/viz/service/display_embedder/buffer_queue.cc
@@ -14,6 +14,8 @@
 #include "gpu/command_buffer/common/gpu_memory_buffer_support.h"
 #include "ui/display/types/display_snapshot.h"
 #include "ui/gfx/gpu_memory_buffer.h"
+#include "ui/gl/buffer_format_utils.h"
+#include "ui/gl/gl_image.h"
 
 namespace viz {
 
@@ -28,7 +30,7 @@
                                                   format,
                                                   capabilities)),
       internal_format_(base::strict_cast<uint32_t>(
-          gpu::InternalFormatForGpuMemoryBufferFormat(format))),
+          gl::BufferFormatToGLInternalFormat(format))),
       format_(format),
       gpu_memory_buffer_manager_(gpu_memory_buffer_manager),
       surface_handle_(surface_handle) {}
diff --git a/content/browser/accessibility/browser_accessibility_cocoa.mm b/content/browser/accessibility/browser_accessibility_cocoa.mm
index cedaf64..97d4aa5 100644
--- a/content/browser/accessibility/browser_accessibility_cocoa.mm
+++ b/content/browser/accessibility/browser_accessibility_cocoa.mm
@@ -607,10 +607,11 @@
   if ([immediateDescendantsOnlyParameter isKindOfClass:[NSNumber class]])
     immediateDescendantsOnly = [immediateDescendantsOnlyParameter boolValue];
 
-  bool visibleOnly = false;
-  NSNumber* visibleOnlyParameter = [dictionary objectForKey:@"AXVisibleOnly"];
-  if ([visibleOnlyParameter isKindOfClass:[NSNumber class]])
-    visibleOnly = [visibleOnlyParameter boolValue];
+  bool onscreenOnly = false;
+  // AXVisibleOnly actually means onscreen objects only -- nothing scrolled off.
+  NSNumber* onscreenOnlyParameter = [dictionary objectForKey:@"AXVisibleOnly"];
+  if ([onscreenOnlyParameter isKindOfClass:[NSNumber class]])
+    onscreenOnly = [onscreenOnlyParameter boolValue];
 
   content::OneShotAccessibilityTreeSearch::Direction direction =
       content::OneShotAccessibilityTreeSearch::FORWARDS;
@@ -634,7 +635,7 @@
 
   search->SetDirection(direction);
   search->SetImmediateDescendantsOnly(immediateDescendantsOnly);
-  search->SetVisibleOnly(visibleOnly);
+  search->SetOnscreenOnly(onscreenOnly);
   search->SetSearchText(searchText);
 
   // Mac uses resultsLimit == -1 for unlimited, that that's
diff --git a/content/browser/accessibility/one_shot_accessibility_tree_search.cc b/content/browser/accessibility/one_shot_accessibility_tree_search.cc
index 157d6f5..467b2793 100644
--- a/content/browser/accessibility/one_shot_accessibility_tree_search.cc
+++ b/content/browser/accessibility/one_shot_accessibility_tree_search.cc
@@ -44,7 +44,7 @@
       result_limit_(UNLIMITED_RESULTS),
       immediate_descendants_only_(false),
       can_wrap_to_last_element_(false),
-      visible_only_(false),
+      onscreen_only_(false),
       did_search_(false) {}
 
 OneShotAccessibilityTreeSearch::~OneShotAccessibilityTreeSearch() {}
@@ -82,9 +82,9 @@
   can_wrap_to_last_element_ = can_wrap_to_last_element;
 }
 
-void OneShotAccessibilityTreeSearch::SetVisibleOnly(bool visible_only) {
+void OneShotAccessibilityTreeSearch::SetOnscreenOnly(bool onscreen_only) {
   DCHECK(!did_search_);
-  visible_only_ = visible_only;
+  onscreen_only_ = onscreen_only;
 }
 
 void OneShotAccessibilityTreeSearch::SetSearchText(const std::string& text) {
@@ -197,11 +197,11 @@
       return false;
   }
 
-  if (visible_only_) {
-    if (node->HasState(ax::mojom::State::kInvisible) || node->IsOffscreen()) {
-      return false;
-    }
-  }
+  if (node->HasState(ax::mojom::State::kInvisible))
+    return false;  // Programmatically hidden, e.g. aria-hidden or via CSS.
+
+  if (onscreen_only_ && node->IsOffscreen())
+    return false;  // Partly scrolled offscreen.
 
   if (!search_text_.empty()) {
     base::string16 search_text_lower =
diff --git a/content/browser/accessibility/one_shot_accessibility_tree_search.h b/content/browser/accessibility/one_shot_accessibility_tree_search.h
index 7b68dc02..27128a0 100644
--- a/content/browser/accessibility/one_shot_accessibility_tree_search.h
+++ b/content/browser/accessibility/one_shot_accessibility_tree_search.h
@@ -111,8 +111,9 @@
   // If true, wraps to the last element.
   void SetCanWrapToLastElement(bool can_wrap_to_last_element);
 
-  // If true, only considers nodes that aren't invisible or offscreen.
-  void SetVisibleOnly(bool visible_only);
+  // If true, only considers nodes that aren't offscreen.
+  // Programmatically hidden elements are always skipped.
+  void SetOnscreenOnly(bool onscreen_only);
 
   // Restricts the matches to only nodes where |text| is found as a
   // substring of any of that node's accessible text, including its
@@ -142,7 +143,7 @@
   int result_limit_;
   bool immediate_descendants_only_;
   bool can_wrap_to_last_element_;
-  bool visible_only_;
+  bool onscreen_only_;
   std::string search_text_;
 
   std::vector<AccessibilityMatchPredicate> predicates_;
diff --git a/content/browser/accessibility/one_shot_accessibility_tree_search_unittest.cc b/content/browser/accessibility/one_shot_accessibility_tree_search_unittest.cc
index d4db3d8..90293c6f 100644
--- a/content/browser/accessibility/one_shot_accessibility_tree_search_unittest.cc
+++ b/content/browser/accessibility/one_shot_accessibility_tree_search_unittest.cc
@@ -232,9 +232,9 @@
   EXPECT_EQ(4, search.GetMatchAtIndex(0)->GetId());
 }
 
-TEST_F(MAYBE_OneShotAccessibilityTreeSearchTest, VisibleOnly) {
+TEST_F(MAYBE_OneShotAccessibilityTreeSearchTest, OnscreenOnly) {
   OneShotAccessibilityTreeSearch search(tree_->GetRoot());
-  search.SetVisibleOnly(true);
+  search.SetOnscreenOnly(true);
   ASSERT_EQ(5U, search.CountMatches());
   EXPECT_EQ(1, search.GetMatchAtIndex(0)->GetId());
   EXPECT_EQ(2, search.GetMatchAtIndex(1)->GetId());
diff --git a/content/browser/accessibility/web_contents_accessibility_android.cc b/content/browser/accessibility/web_contents_accessibility_android.cc
index c7d22216..1ad1431 100644
--- a/content/browser/accessibility/web_contents_accessibility_android.cc
+++ b/content/browser/accessibility/web_contents_accessibility_android.cc
@@ -981,7 +981,7 @@
   // SetCanWrapToLastElement needs to be set as true after talkback pushes its
   // corresponding change for b/29103330.
   tree_search.SetCanWrapToLastElement(false);
-  tree_search.SetVisibleOnly(false);
+  tree_search.SetOnscreenOnly(false);
   tree_search.AddPredicate(predicate);
 
   if (tree_search.CountMatches() == 0)
diff --git a/content/browser/back_forward_cache_browsertest.cc b/content/browser/back_forward_cache_browsertest.cc
index af573aa9..9ac17c8 100644
--- a/content/browser/back_forward_cache_browsertest.cc
+++ b/content/browser/back_forward_cache_browsertest.cc
@@ -9,6 +9,7 @@
 #include "base/test/scoped_feature_list.h"
 #include "base/test/test_mock_time_task_runner.h"
 #include "base/time/time.h"
+#include "build/build_config.h"
 #include "components/network_session_configurator/common/network_switches.h"
 #include "content/browser/frame_host/back_forward_cache_impl.h"
 #include "content/browser/frame_host/frame_tree_node.h"
@@ -56,6 +57,8 @@
         switches::kUseFakeUIForMediaStream);
     base::CommandLine::ForCurrentProcess()->AppendSwitch(
         switches::kIgnoreCertificateErrors);
+    base::CommandLine::ForCurrentProcess()->AppendSwitch(
+        switches::kEnableExperimentalWebPlatformFeatures);
     feature_list_.InitAndEnableFeatureWithParameters(
         features::kBackForwardCache, GetFeatureParams());
 
@@ -2774,6 +2777,99 @@
   }
 }
 
+#if !defined(OS_ANDROID)
+// Check that the back-forward cache is disabled when the Serial API is used.
+IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTest, Serial) {
+  // Serial API requires HTTPS.
+  net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS);
+  https_server.AddDefaultHandlers(GetTestDataFilePath());
+  https_server.SetSSLConfig(net::EmbeddedTestServer::CERT_OK);
+  ASSERT_TRUE(https_server.Start());
+
+  // Main document.
+  {
+    content::BackForwardCacheDisabledTester tester;
+    GURL url(https_server.GetURL("a.com", "/title1.html"));
+
+    EXPECT_TRUE(NavigateToURL(shell(), url));
+
+    EXPECT_FALSE(current_frame_host()->is_back_forward_cache_disallowed());
+    EXPECT_EQ("Found 0 ports", content::EvalJs(current_frame_host(), R"(
+        new Promise(async resolve => {
+          let ports = await navigator.serial.getPorts();
+          resolve("Found " + ports.length + " ports");
+        });
+    )"));
+    EXPECT_TRUE(current_frame_host()->is_back_forward_cache_disallowed());
+    EXPECT_TRUE(tester.IsDisabledForFrameWithReason(
+        current_frame_host()->GetProcess()->GetID(),
+        current_frame_host()->GetRoutingID(), "Serial"));
+  }
+
+  // Nested document.
+  {
+    content::BackForwardCacheDisabledTester tester;
+    GURL url(
+        https_server.GetURL("c.com", "/cross_site_iframe_factory.html?c(d)"));
+    EXPECT_TRUE(NavigateToURL(shell(), url));
+    RenderFrameHostImpl* rfh_c = current_frame_host();
+    RenderFrameHostImpl* rfh_d = rfh_c->child_at(0)->current_frame_host();
+
+    EXPECT_FALSE(rfh_c->is_back_forward_cache_disallowed());
+    EXPECT_FALSE(rfh_d->is_back_forward_cache_disallowed());
+    EXPECT_EQ("Found 0 ports", content::EvalJs(rfh_c, R"(
+        new Promise(async resolve => {
+          let ports = await navigator.serial.getPorts();
+          resolve("Found " + ports.length + " ports");
+        });
+    )"));
+    EXPECT_TRUE(rfh_c->is_back_forward_cache_disallowed());
+    EXPECT_FALSE(rfh_d->is_back_forward_cache_disallowed());
+    EXPECT_TRUE(tester.IsDisabledForFrameWithReason(
+        rfh_c->GetProcess()->GetID(), rfh_c->GetRoutingID(), "Serial"));
+  }
+
+  // Worker.
+  {
+    content::BackForwardCacheDisabledTester tester;
+    GURL url(https_server.GetURL("e.com", "/title1.html"));
+    EXPECT_TRUE(NavigateToURL(shell(), url));
+    EXPECT_FALSE(current_frame_host()->is_back_forward_cache_disallowed());
+    EXPECT_EQ("Found 0 ports", content::EvalJs(current_frame_host(), R"(
+        new Promise(async resolve => {
+          const worker = new Worker("/back_forward_cache/serial/worker.js");
+          worker.onmessage = message => resolve(message.data);
+          worker.postMessage("Run");
+        });
+    )"));
+    EXPECT_TRUE(current_frame_host()->is_back_forward_cache_disallowed());
+    EXPECT_TRUE(tester.IsDisabledForFrameWithReason(
+        current_frame_host()->GetProcess()->GetID(),
+        current_frame_host()->GetRoutingID(), "Serial"));
+  }
+
+  // Nested worker.
+  {
+    content::BackForwardCacheDisabledTester tester;
+    GURL url(https_server.GetURL("f.com", "/title1.html"));
+    EXPECT_TRUE(NavigateToURL(shell(), url));
+    EXPECT_FALSE(current_frame_host()->is_back_forward_cache_disallowed());
+    EXPECT_EQ("Found 0 ports", content::EvalJs(current_frame_host(), R"(
+        new Promise(async resolve => {
+          const worker = new Worker(
+            "/back_forward_cache/serial/nested-worker.js");
+          worker.onmessage = message => resolve(message.data);
+          worker.postMessage("Run");
+        });
+    )"));
+    EXPECT_TRUE(current_frame_host()->is_back_forward_cache_disallowed());
+    EXPECT_TRUE(tester.IsDisabledForFrameWithReason(
+        current_frame_host()->GetProcess()->GetID(),
+        current_frame_host()->GetRoutingID(), "Serial"));
+  }
+}
+#endif
+
 IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTest, Encoding) {
   ASSERT_TRUE(embedded_test_server()->Start());
   const GURL url_a(embedded_test_server()->GetURL(
diff --git a/content/browser/browser_interface_binders.cc b/content/browser/browser_interface_binders.cc
index eaf25e2..9f4b51dc 100644
--- a/content/browser/browser_interface_binders.cc
+++ b/content/browser/browser_interface_binders.cc
@@ -9,6 +9,7 @@
 #include "content/browser/background_fetch/background_fetch_service_impl.h"
 #include "content/browser/browser_main_loop.h"
 #include "content/browser/content_index/content_index_service_impl.h"
+#include "content/browser/cookie_store/cookie_store_context.h"
 #include "content/browser/frame_host/render_frame_host_impl.h"
 #include "content/browser/gpu/gpu_process_host.h"
 #include "content/browser/image_capture/image_capture_impl.h"
@@ -47,6 +48,7 @@
 #include "third_party/blink/public/mojom/background_fetch/background_fetch.mojom.h"
 #include "third_party/blink/public/mojom/bluetooth/web_bluetooth.mojom.h"
 #include "third_party/blink/public/mojom/content_index/content_index.mojom.h"
+#include "third_party/blink/public/mojom/cookie_store/cookie_store.mojom.h"
 #include "third_party/blink/public/mojom/credentialmanager/credential_manager.mojom.h"
 #include "third_party/blink/public/mojom/filesystem/file_system.mojom.h"
 #include "third_party/blink/public/mojom/idle/idle_manager.mojom.h"
@@ -293,6 +295,8 @@
     service_manager::BinderMapWithContext<RenderFrameHost*>* map) {
   map->Add<blink::mojom::BackgroundFetchService>(
       base::BindRepeating(&BackgroundFetchServiceImpl::CreateForFrame));
+  map->Add<blink::mojom::CookieStore>(
+      base::BindRepeating(&CookieStoreContext::CreateServiceForFrame));
   map->Add<blink::mojom::ContentIndexService>(
       base::BindRepeating(&ContentIndexServiceImpl::CreateForFrame));
   map->Add<blink::mojom::KeyboardLockService>(
@@ -479,6 +483,8 @@
         base::BindRepeating(&BackgroundFetchServiceImpl::CreateForWorker));
     map->Add<blink::mojom::ContentIndexService>(
         base::BindRepeating(&ContentIndexServiceImpl::CreateForWorker));
+    map->Add<blink::mojom::CookieStore>(
+        base::BindRepeating(&CookieStoreContext::CreateServiceForWorker));
   } else {
     map->Add<blink::mojom::BackgroundFetchService>(
         base::BindRepeating(&BackgroundFetchServiceImpl::CreateForWorker),
@@ -486,6 +492,9 @@
     map->Add<blink::mojom::ContentIndexService>(
         base::BindRepeating(&ContentIndexServiceImpl::CreateForWorker),
         base::CreateSingleThreadTaskRunner(BrowserThread::UI));
+    map->Add<blink::mojom::CookieStore>(
+        base::BindRepeating(&CookieStoreContext::CreateServiceForWorker),
+        base::CreateSingleThreadTaskRunner(BrowserThread::UI));
   }
 }
 
diff --git a/content/browser/browsing_data/browsing_data_browsertest_utils.cc b/content/browser/browsing_data/browsing_data_browsertest_utils.cc
index b0b12d4..d93ac23 100644
--- a/content/browser/browsing_data/browsing_data_browsertest_utils.cc
+++ b/content/browser/browsing_data/browsing_data_browsertest_utils.cc
@@ -104,7 +104,7 @@
       FROM_HERE, ServiceWorkerContext::GetCoreThreadId(),
       base::BindOnce(&ServiceWorkerContextWrapper::RegisterServiceWorker,
                      base::Unretained(service_worker_context), js_url, options,
-                     base::Bind(&AddServiceWorkerCallback)));
+                     base::BindOnce(&AddServiceWorkerCallback)));
 
   // Wait for its activation.
   base::RunLoop run_loop;
@@ -131,8 +131,8 @@
       base::BindOnce(
           &ServiceWorkerContextWrapper::GetAllOriginsInfo,
           base::Unretained(service_worker_context),
-          base::Bind(&GetServiceWorkersCallback, run_loop.QuitClosure(),
-                     base::Unretained(&service_workers))));
+          base::BindOnce(&GetServiceWorkersCallback, run_loop.QuitClosure(),
+                         base::Unretained(&service_workers))));
   run_loop.Run();
 
   return service_workers;
diff --git a/content/browser/browsing_data/browsing_data_filter_builder_impl.cc b/content/browser/browsing_data/browsing_data_filter_builder_impl.cc
index fd1a877..c1a83d3 100644
--- a/content/browser/browsing_data/browsing_data_filter_builder_impl.cc
+++ b/content/browser/browsing_data/browsing_data_filter_builder_impl.cc
@@ -81,8 +81,9 @@
 }
 
 // static
-base::Callback<bool(const GURL&)> BrowsingDataFilterBuilder::BuildNoopFilter() {
-  return base::Bind([](const GURL&) { return true; });
+base::RepeatingCallback<bool(const GURL&)>
+BrowsingDataFilterBuilder::BuildNoopFilter() {
+  return base::BindRepeating([](const GURL&) { return true; });
 }
 
 BrowsingDataFilterBuilderImpl::BrowsingDataFilterBuilderImpl(Mode mode)
diff --git a/content/browser/browsing_data/browsing_data_filter_builder_impl_unittest.cc b/content/browser/browsing_data/browsing_data_filter_builder_impl_unittest.cc
index 515fcf7..b30d063 100644
--- a/content/browser/browsing_data/browsing_data_filter_builder_impl_unittest.cc
+++ b/content/browser/browsing_data/browsing_data_filter_builder_impl_unittest.cc
@@ -46,7 +46,7 @@
 };
 
 void RunTestCase(TestCase test_case,
-                 const base::Callback<bool(const GURL&)>& filter) {
+                 const base::RepeatingCallback<bool(const GURL&)>& filter) {
   GURL url(test_case.url);
   EXPECT_TRUE(url.is_valid()) << test_case.url << " is not valid.";
   EXPECT_EQ(test_case.should_match, filter.Run(GURL(test_case.url)))
@@ -97,7 +97,7 @@
 
 void RunTestCase(
     TestCase test_case,
-    const base::Callback<bool(const std::string&)>& filter) {
+    const base::RepeatingCallback<bool(const std::string&)>& filter) {
   std::string channel_id_server_id = test_case.url;
   EXPECT_EQ(test_case.should_match, filter.Run(channel_id_server_id))
       << channel_id_server_id << " should "
@@ -108,7 +108,7 @@
 
 TEST(BrowsingDataFilterBuilderImplTest, Noop) {
   // An no-op filter matches everything.
-  base::Callback<bool(const GURL&)> filter =
+  base::RepeatingCallback<bool(const GURL&)> filter =
       BrowsingDataFilterBuilder::BuildNoopFilter();
 
   TestCase test_cases[] = {
@@ -131,7 +131,8 @@
   builder.AddRegisterableDomain(std::string(kIPAddress));
   builder.AddRegisterableDomain(std::string(kUnknownRegistryDomain));
   builder.AddRegisterableDomain(std::string(kInternalHostname));
-  base::Callback<bool(const GURL&)> filter = builder.BuildGeneralFilter();
+  base::RepeatingCallback<bool(const GURL&)> filter =
+      builder.BuildGeneralFilter();
 
   TestCase test_cases[] = {
       // We match any URL on the specified domains.
@@ -176,7 +177,8 @@
   builder.AddRegisterableDomain(std::string(kIPAddress));
   builder.AddRegisterableDomain(std::string(kUnknownRegistryDomain));
   builder.AddRegisterableDomain(std::string(kInternalHostname));
-  base::Callback<bool(const GURL&)> filter = builder.BuildGeneralFilter();
+  base::RepeatingCallback<bool(const GURL&)> filter =
+      builder.BuildGeneralFilter();
 
   TestCase test_cases[] = {
       // We match any URL that are not on the specified domains.
@@ -359,7 +361,7 @@
   builder.AddRegisterableDomain(std::string(kIPAddress));
   builder.AddRegisterableDomain(std::string(kUnknownRegistryDomain));
   builder.AddRegisterableDomain(std::string(kInternalHostname));
-  base::Callback<bool(const std::string&)> filter =
+  base::RepeatingCallback<bool(const std::string&)> filter =
       builder.BuildPluginFilter();
 
   TestCase test_cases[] = {
@@ -394,7 +396,7 @@
   builder.AddRegisterableDomain(std::string(kIPAddress));
   builder.AddRegisterableDomain(std::string(kUnknownRegistryDomain));
   builder.AddRegisterableDomain(std::string(kInternalHostname));
-  base::Callback<bool(const std::string&)> filter =
+  base::RepeatingCallback<bool(const std::string&)> filter =
       builder.BuildPluginFilter();
 
   TestCase test_cases[] = {
@@ -425,7 +427,8 @@
       BrowsingDataFilterBuilderImpl::WHITELIST);
   builder.AddOrigin(url::Origin::Create(GURL("https://www.google.com")));
   builder.AddOrigin(url::Origin::Create(GURL("http://www.example.com")));
-  base::Callback<bool(const GURL&)> filter = builder.BuildGeneralFilter();
+  base::RepeatingCallback<bool(const GURL&)> filter =
+      builder.BuildGeneralFilter();
 
   TestCase test_cases[] = {
       // Whitelist matches any URL on the specified origins.
@@ -456,7 +459,8 @@
       BrowsingDataFilterBuilderImpl::BLACKLIST);
   builder.AddOrigin(url::Origin::Create(GURL("https://www.google.com")));
   builder.AddOrigin(url::Origin::Create(GURL("http://www.example.com")));
-  base::Callback<bool(const GURL&)> filter = builder.BuildGeneralFilter();
+  base::RepeatingCallback<bool(const GURL&)> filter =
+      builder.BuildGeneralFilter();
 
   TestCase test_cases[] = {
       // URLS on explicitly specified origins are not matched.
@@ -488,7 +492,8 @@
       BrowsingDataFilterBuilderImpl::WHITELIST);
   builder.AddOrigin(url::Origin::Create(GURL("https://google.com")));
   builder.AddRegisterableDomain("example.com");
-  base::Callback<bool(const GURL&)> filter = builder.BuildGeneralFilter();
+  base::RepeatingCallback<bool(const GURL&)> filter =
+      builder.BuildGeneralFilter();
 
   TestCase test_cases[] = {
       // Whitelist matches any URL on the specified origins.
@@ -511,7 +516,8 @@
       BrowsingDataFilterBuilderImpl::BLACKLIST);
   builder.AddOrigin(url::Origin::Create(GURL("https://google.com")));
   builder.AddRegisterableDomain("example.com");
-  base::Callback<bool(const GURL&)> filter = builder.BuildGeneralFilter();
+  base::RepeatingCallback<bool(const GURL&)> filter =
+      builder.BuildGeneralFilter();
 
   TestCase test_cases[] = {
       // URLS on explicitly specified origins are not matched.
diff --git a/content/browser/browsing_data/browsing_data_remover_impl.cc b/content/browser/browsing_data/browsing_data_remover_impl.cc
index 32b4751a..7cd004f7 100644
--- a/content/browser/browsing_data/browsing_data_remover_impl.cc
+++ b/content/browser/browsing_data/browsing_data_remover_impl.cc
@@ -500,8 +500,8 @@
 }
 
 void BrowsingDataRemoverImpl::SetWouldCompleteCallbackForTesting(
-    const base::Callback<void(const base::Closure& continue_to_completion)>&
-        callback) {
+    const base::RepeatingCallback<
+        void(base::OnceClosure continue_to_completion)>& callback) {
   would_complete_callback_ = callback;
 }
 
@@ -612,7 +612,7 @@
 
   if (!would_complete_callback_.is_null()) {
     would_complete_callback_.Run(
-        base::Bind(&BrowsingDataRemoverImpl::Notify, GetWeakPtr()));
+        base::BindOnce(&BrowsingDataRemoverImpl::Notify, GetWeakPtr()));
     return;
   }
 
diff --git a/content/browser/browsing_data/browsing_data_remover_impl.h b/content/browser/browsing_data/browsing_data_remover_impl.h
index 8879c0f..6984b7c1 100644
--- a/content/browser/browsing_data/browsing_data_remover_impl.h
+++ b/content/browser/browsing_data/browsing_data_remover_impl.h
@@ -73,8 +73,8 @@
   void RemoveObserver(Observer* observer) override;
 
   void SetWouldCompleteCallbackForTesting(
-      const base::Callback<void(const base::Closure& continue_to_completion)>&
-          callback) override;
+      const base::RepeatingCallback<
+          void(base::OnceClosure continue_to_completion)>& callback) override;
 
   const base::Time& GetLastUsedBeginTime() override;
   const base::Time& GetLastUsedEndTime() override;
@@ -212,7 +212,7 @@
   // If non-null, the |would_complete_callback_| is called each time an instance
   // is about to complete a browsing data removal process, and has the ability
   // to artificially delay completion. Used for testing.
-  base::Callback<void(const base::Closure& continue_to_completion)>
+  base::RepeatingCallback<void(base::OnceClosure continue_to_completion)>
       would_complete_callback_;
 
   // Records which tasks of a deletion are currently active.
diff --git a/content/browser/browsing_data/clear_site_data_handler_browsertest.cc b/content/browser/browsing_data/clear_site_data_handler_browsertest.cc
index af963e8..81af7d6e 100644
--- a/content/browser/browsing_data/clear_site_data_handler_browsertest.cc
+++ b/content/browser/browsing_data/clear_site_data_handler_browsertest.cc
@@ -861,8 +861,8 @@
   base::RunLoop loop;
   auto* remover = BrowserContext::GetBrowsingDataRemover(browser_context());
   remover->SetWouldCompleteCallbackForTesting(
-      base::BindLambdaForTesting([&](const base::RepeatingClosure& callback) {
-        callback.Run();
+      base::BindLambdaForTesting([&](base::OnceClosure callback) {
+        std::move(callback).Run();
         loop.Quit();
       }));
 
diff --git a/content/browser/cookie_store/cookie_store_context.cc b/content/browser/cookie_store/cookie_store_context.cc
index 592bd1b2..1e3776b 100644
--- a/content/browser/cookie_store/cookie_store_context.cc
+++ b/content/browser/cookie_store/cookie_store_context.cc
@@ -7,8 +7,10 @@
 #include "base/bind.h"
 #include "base/task/post_task.h"
 #include "content/browser/service_worker/service_worker_context_wrapper.h"
+#include "content/browser/storage_partition_impl.h"
 #include "content/public/browser/browser_task_traits.h"
 #include "content/public/browser/browser_thread.h"
+#include "content/public/browser/render_process_host.h"
 #include "content/public/browser/service_worker_context.h"
 #include "content/public/browser/storage_partition.h"
 
@@ -20,9 +22,9 @@
               {ServiceWorkerContext::GetCoreThreadId()})) {}
 
 CookieStoreContext::~CookieStoreContext() {
-  // The destructor must be called on the core thread, because it runs
-  // cookie_store_manager_'s destructor, and the latter is only accessed on the
-  // core thread.
+  // The destructor must be called on the service worker core thread, because it
+  // runs cookie_store_manager_'s destructor, and the latter is only accessed on
+  // the core thread.
   DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
 }
 
@@ -77,18 +79,48 @@
               std::move(success_callback))));
 }
 
-void CookieStoreContext::CreateService(
-    mojo::PendingReceiver<blink::mojom::CookieStore> receiver,
-    const url::Origin& origin) {
+// static
+void CookieStoreContext::CreateServiceForFrame(
+    RenderFrameHost* render_frame_host,
+    mojo::PendingReceiver<blink::mojom::CookieStore> receiver) {
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
+  DCHECK(render_frame_host);
+  RenderProcessHost* render_process_host = render_frame_host->GetProcess();
+  DCHECK(render_process_host);
+
+  StoragePartitionImpl* storage_partition = static_cast<StoragePartitionImpl*>(
+      render_process_host->GetStoragePartition());
+  storage_partition->GetCookieStoreContext()->CreateServiceForTesting(
+      render_frame_host->GetLastCommittedOrigin(), std::move(receiver));
+}
+
+// static
+void CookieStoreContext::CreateServiceForWorker(
+    const ServiceWorkerVersionInfo& info,
+    mojo::PendingReceiver<blink::mojom::CookieStore> receiver) {
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
+  RenderProcessHost* render_process_host =
+      RenderProcessHost::FromID(info.process_id);
+  if (render_process_host == nullptr)
+    return;
+
+  StoragePartitionImpl* storage_partition = static_cast<StoragePartitionImpl*>(
+      render_process_host->GetStoragePartition());
+  storage_partition->GetCookieStoreContext()->CreateServiceForTesting(
+      info.script_origin, std::move(receiver));
+}
+
+void CookieStoreContext::CreateServiceForTesting(
+    const url::Origin& origin,
+    mojo::PendingReceiver<blink::mojom::CookieStore> receiver) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 #if DCHECK_IS_ON()
   DCHECK(initialize_called_) << __func__ << " called before Initialize()";
 #endif  // DCHECK_IS_ON()
-
   RunOrPostTaskOnThread(
       FROM_HERE, ServiceWorkerContext::GetCoreThreadId(),
       base::BindOnce(&CookieStoreContext::CreateServiceOnCoreThread, this,
-                     std::move(receiver), origin));
+                     origin, std::move(receiver)));
 }
 
 void CookieStoreContext::InitializeOnCoreThread(
@@ -113,8 +145,8 @@
 }
 
 void CookieStoreContext::CreateServiceOnCoreThread(
-    mojo::PendingReceiver<blink::mojom::CookieStore> receiver,
-    const url::Origin& origin) {
+    const url::Origin& origin,
+    mojo::PendingReceiver<blink::mojom::CookieStore> receiver) {
   DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
   DCHECK(cookie_store_manager_);
 
diff --git a/content/browser/cookie_store/cookie_store_context.h b/content/browser/cookie_store/cookie_store_context.h
index 9c11fb49..6c74ae0 100644
--- a/content/browser/cookie_store/cookie_store_context.h
+++ b/content/browser/cookie_store/cookie_store_context.h
@@ -18,7 +18,9 @@
 namespace content {
 
 class CookieStoreManager;
+class RenderFrameHost;
 class ServiceWorkerContextWrapper;
+struct ServiceWorkerVersionInfo;
 
 // UI thread handle to a CookieStoreManager.
 //
@@ -64,10 +66,26 @@
   void ListenToCookieChanges(::network::mojom::NetworkContext* network_context,
                              base::OnceCallback<void(bool)> success_callback);
 
-  // Routes a mojo receiver to the CookieStoreManager on the service worker core
-  // thread.
-  void CreateService(mojo::PendingReceiver<blink::mojom::CookieStore> receiver,
-                     const url::Origin& origin);
+  // Routes a mojo receiver to the CookieStoreManager.
+  //
+  // Production code should use the CreateServiceFor*() helpers below.
+  void CreateServiceForTesting(
+      const url::Origin& origin,
+      mojo::PendingReceiver<blink::mojom::CookieStore> receiver);
+
+  // Routes a mojo receiver from a Frame to the CookieStoreManager.
+  //
+  // Must be called on the UI thread.
+  static void CreateServiceForFrame(
+      RenderFrameHost* render_frame_host,
+      mojo::PendingReceiver<blink::mojom::CookieStore> receiver);
+
+  // Routes a mojo receiver from a Service Worker to the CookieStoreManager.
+  //
+  // Must be called on the UI thread.
+  static void CreateServiceForWorker(
+      const ServiceWorkerVersionInfo& info,
+      mojo::PendingReceiver<blink::mojom::CookieStore> receiver);
 
  private:
   friend class base::RefCountedDeleteOnSequence<CookieStoreContext>;
@@ -84,8 +102,8 @@
       base::OnceCallback<void(bool)> success_callback);
 
   void CreateServiceOnCoreThread(
-      mojo::PendingReceiver<blink::mojom::CookieStore> receiver,
-      const url::Origin& origin);
+      const url::Origin& origin,
+      mojo::PendingReceiver<blink::mojom::CookieStore> receiver);
 
   // Only accessed on the service worker core thread.
   std::unique_ptr<CookieStoreManager> cookie_store_manager_;
diff --git a/content/browser/cookie_store/cookie_store_manager_unittest.cc b/content/browser/cookie_store/cookie_store_manager_unittest.cc
index 5bda492..f0d77c76 100644
--- a/content/browser/cookie_store/cookie_store_manager_unittest.cc
+++ b/content/browser/cookie_store/cookie_store_manager_unittest.cc
@@ -281,15 +281,15 @@
     network_context->GetCookieManager(
         cookie_manager_.BindNewPipeAndPassReceiver());
 
-    cookie_store_context_->CreateService(
-        example_service_remote_.BindNewPipeAndPassReceiver(),
-        url::Origin::Create(GURL(kExampleScope)));
+    cookie_store_context_->CreateServiceForTesting(
+        url::Origin::Create(GURL(kExampleScope)),
+        example_service_remote_.BindNewPipeAndPassReceiver());
     example_service_ =
         std::make_unique<CookieStoreSync>(example_service_remote_.get());
 
-    cookie_store_context_->CreateService(
-        google_service_remote_.BindNewPipeAndPassReceiver(),
-        url::Origin::Create(GURL(kGoogleScope)));
+    cookie_store_context_->CreateServiceForTesting(
+        url::Origin::Create(GURL(kGoogleScope)),
+        google_service_remote_.BindNewPipeAndPassReceiver());
     google_service_ =
         std::make_unique<CookieStoreSync>(google_service_remote_.get());
   }
diff --git a/content/browser/media/media_interface_proxy.cc b/content/browser/media/media_interface_proxy.cc
index 498387b..2f4ea7d 100644
--- a/content/browser/media/media_interface_proxy.cc
+++ b/content/browser/media/media_interface_proxy.cc
@@ -118,14 +118,14 @@
 MediaInterfaceProxy::MediaInterfaceProxy(
     RenderFrameHost* render_frame_host,
     media::mojom::InterfaceFactoryRequest request,
-    const base::Closure& error_handler)
+    base::OnceClosure error_handler)
     : render_frame_host_(render_frame_host),
       binding_(this, std::move(request)) {
   DVLOG(1) << __func__;
   DCHECK(render_frame_host_);
   DCHECK(!error_handler.is_null());
 
-  binding_.set_connection_error_handler(error_handler);
+  binding_.set_connection_error_handler(std::move(error_handler));
 
   // |interface_factory_ptr_| and |cdm_factory_map_| will be lazily
   // connected in GetMediaInterfaceFactory() and GetCdmFactory().
diff --git a/content/browser/media/media_interface_proxy.h b/content/browser/media/media_interface_proxy.h
index eb7ffb2..a3c1b4f 100644
--- a/content/browser/media/media_interface_proxy.h
+++ b/content/browser/media/media_interface_proxy.h
@@ -44,7 +44,7 @@
   // called, which could destroy |this|.
   MediaInterfaceProxy(RenderFrameHost* render_frame_host,
                       media::mojom::InterfaceFactoryRequest request,
-                      const base::Closure& error_handler);
+                      base::OnceClosure error_handler);
   ~MediaInterfaceProxy() final;
 
   // media::mojom::InterfaceFactory implementation.
diff --git a/content/browser/media/media_internals_audio_focus_helper.cc b/content/browser/media/media_internals_audio_focus_helper.cc
index 9c5e1b9..24f4a90 100644
--- a/content/browser/media/media_internals_audio_focus_helper.cc
+++ b/content/browser/media/media_internals_audio_focus_helper.cc
@@ -60,7 +60,7 @@
     return;
 
   // Get the audio focus state from the media session service.
-  audio_focus_ptr_->GetFocusRequests(base::BindOnce(
+  audio_focus_->GetFocusRequests(base::BindOnce(
       &MediaInternalsAudioFocusHelper::DidGetAudioFocusRequestList,
       base::Unretained(this)));
 }
@@ -93,8 +93,8 @@
   EnsureServiceConnection();
 
   if (!enabled) {
-    audio_focus_ptr_.reset();
-    audio_focus_debug_ptr_.reset();
+    audio_focus_.reset();
+    audio_focus_debug_.reset();
     receiver_.reset();
   }
 }
@@ -111,25 +111,25 @@
     return false;
 
   // Connect to the media session service.
-  if (!audio_focus_ptr_.is_bound()) {
-    connector->BindInterface(media_session::mojom::kServiceName,
-                             mojo::MakeRequest(&audio_focus_ptr_));
-    audio_focus_ptr_.set_connection_error_handler(base::BindRepeating(
+  if (!audio_focus_.is_bound()) {
+    connector->Connect(media_session::mojom::kServiceName,
+                       audio_focus_.BindNewPipeAndPassReceiver());
+    audio_focus_.set_disconnect_handler(base::BindRepeating(
         &MediaInternalsAudioFocusHelper::OnMojoError, base::Unretained(this)));
   }
 
   // Connect to the media session service debug interface.
-  if (!audio_focus_debug_ptr_.is_bound()) {
-    connector->BindInterface(media_session::mojom::kServiceName,
-                             mojo::MakeRequest(&audio_focus_debug_ptr_));
-    audio_focus_debug_ptr_.set_connection_error_handler(
+  if (!audio_focus_debug_.is_bound()) {
+    connector->Connect(media_session::mojom::kServiceName,
+                       audio_focus_debug_.BindNewPipeAndPassReceiver());
+    audio_focus_debug_.set_disconnect_handler(
         base::BindRepeating(&MediaInternalsAudioFocusHelper::OnDebugMojoError,
                             base::Unretained(this)));
   }
 
   // Add the observer to receive audio focus events.
   if (!receiver_.is_bound()) {
-    audio_focus_ptr_->AddObserver(receiver_.BindNewPipeAndPassRemote());
+    audio_focus_->AddObserver(receiver_.BindNewPipeAndPassRemote());
 
     receiver_.set_disconnect_handler(base::BindRepeating(
         &MediaInternalsAudioFocusHelper::OnMojoError, base::Unretained(this)));
@@ -139,12 +139,12 @@
 }
 
 void MediaInternalsAudioFocusHelper::OnMojoError() {
-  audio_focus_ptr_.reset();
+  audio_focus_.reset();
   receiver_.reset();
 }
 
 void MediaInternalsAudioFocusHelper::OnDebugMojoError() {
-  audio_focus_debug_ptr_.reset();
+  audio_focus_debug_.reset();
 }
 
 void MediaInternalsAudioFocusHelper::DidGetAudioFocusRequestList(
@@ -171,7 +171,7 @@
 
     request_state_.emplace(id_string, session.Clone());
 
-    audio_focus_debug_ptr_->GetDebugInfoForRequest(
+    audio_focus_debug_->GetDebugInfoForRequest(
         session->request_id.value(),
         base::BindOnce(
             &MediaInternalsAudioFocusHelper::DidGetAudioFocusDebugInfo,
diff --git a/content/browser/media/media_internals_audio_focus_helper.h b/content/browser/media/media_internals_audio_focus_helper.h
index ea218cb..2863eda 100644
--- a/content/browser/media/media_internals_audio_focus_helper.h
+++ b/content/browser/media/media_internals_audio_focus_helper.h
@@ -10,6 +10,7 @@
 #include "base/macros.h"
 #include "base/values.h"
 #include "mojo/public/cpp/bindings/receiver.h"
+#include "mojo/public/cpp/bindings/remote.h"
 #include "services/media_session/public/mojom/audio_focus.mojom.h"
 
 namespace content {
@@ -62,9 +63,9 @@
       const media_session::mojom::AudioFocusRequestStatePtr& state,
       const std::string& provided_state) const;
 
-  // Holds a pointer to the media session service and it's debug interface.
-  media_session::mojom::AudioFocusManagerPtr audio_focus_ptr_;
-  media_session::mojom::AudioFocusManagerDebugPtr audio_focus_debug_ptr_;
+  // Holds a remote to the media session service and it's debug interface.
+  mojo::Remote<media_session::mojom::AudioFocusManager> audio_focus_;
+  mojo::Remote<media_session::mojom::AudioFocusManagerDebug> audio_focus_debug_;
 
   // Must only be accessed on the UI thread.
   base::DictionaryValue audio_focus_data_;
diff --git a/content/browser/media/media_internals_unittest.cc b/content/browser/media/media_internals_unittest.cc
index bedb044..7cb93a4a 100644
--- a/content/browser/media/media_internals_unittest.cc
+++ b/content/browser/media/media_internals_unittest.cc
@@ -25,6 +25,7 @@
 #include "media/base/channel_layout.h"
 #include "media/base/media_log.h"
 #include "media/base/media_switches.h"
+#include "mojo/public/cpp/bindings/remote.h"
 #include "services/media_session/public/cpp/features.h"
 #include "services/media_session/public/mojom/audio_focus.mojom.h"
 #include "services/media_session/public/mojom/constants.mojom.h"
@@ -341,8 +342,9 @@
                             base::Unretained(this));
     run_loop_ = std::make_unique<base::RunLoop>();
 
-    content::GetSystemConnector()->BindInterface(
-        media_session::mojom::kServiceName, &audio_focus_ptr_);
+    content::GetSystemConnector()->Connect(
+        media_session::mojom::kServiceName,
+        audio_focus_.BindNewPipeAndPassReceiver());
 
     content::MediaInternals::GetInstance()->AddUpdateCallback(update_cb_);
   }
@@ -404,14 +406,14 @@
   std::string GetRequestIdForTopFocusRequest() {
     std::string result;
 
-    audio_focus_ptr_->GetFocusRequests(base::BindOnce(
+    audio_focus_->GetFocusRequests(base::BindOnce(
         [](std::string* out, std::vector<AudioFocusRequestStatePtr> requests) {
           DCHECK(!requests.empty());
           *out = requests.back()->request_id.value().ToString();
         },
         &result));
 
-    audio_focus_ptr_.FlushForTesting();
+    audio_focus_.FlushForTesting();
     return result;
   }
 
@@ -424,7 +426,7 @@
   base::Lock lock_;
   std::unique_ptr<base::RunLoop> run_loop_;
 
-  media_session::mojom::AudioFocusManagerPtr audio_focus_ptr_;
+  mojo::Remote<media_session::mojom::AudioFocusManager> audio_focus_;
 };
 
 TEST_F(MediaInternalsAudioFocusTest, AudioFocusStateIsUpdated) {
diff --git a/content/browser/media/session/audio_focus_delegate_default.cc b/content/browser/media/session/audio_focus_delegate_default.cc
index 516c4754..9dbb2f0 100644
--- a/content/browser/media/session/audio_focus_delegate_default.cc
+++ b/content/browser/media/session/audio_focus_delegate_default.cc
@@ -12,6 +12,7 @@
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/system_connector.h"
 #include "media/base/media_switches.h"
+#include "mojo/public/cpp/bindings/remote.h"
 #include "services/media_session/public/cpp/features.h"
 #include "services/media_session/public/mojom/audio_focus.mojom.h"
 #include "services/media_session/public/mojom/constants.mojom.h"
@@ -60,14 +61,14 @@
   // Finishes an async audio focus request.
   void FinishAudioFocusRequest(AudioFocusType type, bool success);
 
-  // Ensures that |audio_focus_ptr_| is connected.
+  // Ensures that |audio_focus_| is connected.
   void EnsureServiceConnection();
 
   // Holds the latest MediaSessionInfo for |media_session_|.
   media_session::mojom::MediaSessionInfoPtr session_info_;
 
-  // Holds a pointer to the Media Session service.
-  media_session::mojom::AudioFocusManagerPtr audio_focus_ptr_;
+  // Holds a remote to the Media Session service.
+  mojo::Remote<media_session::mojom::AudioFocusManager> audio_focus_;
 
   // If the media session has acquired audio focus then this will contain a
   // pointer to that requests AudioFocusRequestClient.
@@ -118,7 +119,7 @@
     mojo::PendingRemote<media_session::mojom::MediaSession> media_session =
         media_session_->AddRemote();
 
-    audio_focus_ptr_->RequestGroupedAudioFocus(
+    audio_focus_->RequestGroupedAudioFocus(
         request_id_, request_client_remote_.BindNewPipeAndPassReceiver(),
         std::move(media_session), session_info_.Clone(), audio_focus_type,
         GetAudioFocusGroupId(media_session_),
@@ -140,7 +141,7 @@
 
   request_client_remote_->AbandonAudioFocus();
   request_client_remote_.reset();
-  audio_focus_ptr_.reset();
+  audio_focus_.reset();
 }
 
 base::Optional<media_session::mojom::AudioFocusType>
@@ -176,19 +177,18 @@
     return;
   }
 
-  if (audio_focus_ptr_.is_bound() && !audio_focus_ptr_.encountered_error())
+  if (audio_focus_.is_bound() && audio_focus_.is_connected())
     return;
 
-  audio_focus_ptr_.reset();
+  audio_focus_.reset();
 
-  // Connect to the Media Session service and bind |audio_focus_ptr_| to it.
-  GetSystemConnector()->BindInterface(media_session::mojom::kServiceName,
-                                      mojo::MakeRequest(&audio_focus_ptr_));
+  // Connect to the Media Session service and bind |audio_focus_| to it.
+  GetSystemConnector()->Connect(media_session::mojom::kServiceName,
+                                audio_focus_.BindNewPipeAndPassReceiver());
 
   // We associate all media sessions with the browser context so we can filter
   // by browser context in the UI.
-  audio_focus_ptr_->SetSource(media_session_->GetSourceId(),
-                              kAudioFocusSourceName);
+  audio_focus_->SetSource(media_session_->GetSourceId(), kAudioFocusSourceName);
 }
 
 // static
diff --git a/content/browser/media/session/audio_focus_delegate_default_browsertest.cc b/content/browser/media/session/audio_focus_delegate_default_browsertest.cc
index 4dc3426..c75b8b4c3 100644
--- a/content/browser/media/session/audio_focus_delegate_default_browsertest.cc
+++ b/content/browser/media/session/audio_focus_delegate_default_browsertest.cc
@@ -14,6 +14,7 @@
 #include "content/shell/browser/shell.h"
 #include "media/base/media_content_type.h"
 #include "media/base/media_switches.h"
+#include "mojo/public/cpp/bindings/remote.h"
 #include "services/media_session/public/cpp/features.h"
 #include "services/media_session/public/cpp/test/audio_focus_test_util.h"
 #include "services/media_session/public/cpp/test/mock_media_session.h"
@@ -36,8 +37,8 @@
   void SetUpOnMainThread() override {
     ContentBrowserTest::SetUpOnMainThread();
 
-    GetSystemConnector()->BindInterface(media_session::mojom::kServiceName,
-                                        mojo::MakeRequest(&audio_focus_ptr_));
+    GetSystemConnector()->Connect(media_session::mojom::kServiceName,
+                                  audio_focus_.BindNewPipeAndPassReceiver());
   }
 
   void SetUpCommandLine(base::CommandLine* command_line) override {
@@ -48,14 +49,14 @@
   }
 
   void CheckSessionSourceName() {
-    audio_focus_ptr_->GetFocusRequests(base::BindOnce(
+    audio_focus_->GetFocusRequests(base::BindOnce(
         [](std::vector<media_session::mojom::AudioFocusRequestStatePtr>
                requests) {
           for (auto& request : requests)
             EXPECT_EQ(kExpectedSourceName, request->source_name.value());
         }));
 
-    audio_focus_ptr_.FlushForTesting();
+    audio_focus_.FlushForTesting();
   }
 
   void Run(WebContents* start_contents,
@@ -155,12 +156,12 @@
   std::unique_ptr<TestAudioFocusObserver> CreateObserver() {
     std::unique_ptr<TestAudioFocusObserver> observer =
         std::make_unique<TestAudioFocusObserver>();
-    audio_focus_ptr_->AddObserver(observer->BindNewPipeAndPassRemote());
-    audio_focus_ptr_.FlushForTesting();
+    audio_focus_->AddObserver(observer->BindNewPipeAndPassRemote());
+    audio_focus_.FlushForTesting();
     return observer;
   }
 
-  media_session::mojom::AudioFocusManagerPtr audio_focus_ptr_;
+  mojo::Remote<media_session::mojom::AudioFocusManager> audio_focus_;
 
   base::test::ScopedFeatureList scoped_feature_list_;
 };
diff --git a/content/browser/native_file_system/native_file_system_directory_handle_impl.cc b/content/browser/native_file_system/native_file_system_directory_handle_impl.cc
index d16cb3b4..047eb865 100644
--- a/content/browser/native_file_system/native_file_system_directory_handle_impl.cc
+++ b/content/browser/native_file_system/native_file_system_directory_handle_impl.cc
@@ -24,6 +24,7 @@
 using blink::mojom::NativeFileSystemHandle;
 using blink::mojom::NativeFileSystemStatus;
 using blink::mojom::NativeFileSystemTransferToken;
+using storage::FileSystemOperationRunner;
 
 namespace content {
 
@@ -116,11 +117,12 @@
         }),
         std::move(callback));
   } else {
-    operation_runner()->FileExists(
-        child_url,
+    DoFileSystemOperation(
+        FROM_HERE, &FileSystemOperationRunner::FileExists,
         base::BindOnce(&NativeFileSystemDirectoryHandleImpl::DidGetFile,
                        weak_factory_.GetWeakPtr(), child_url,
-                       std::move(callback)));
+                       std::move(callback)),
+        child_url);
   }
 }
 
@@ -162,11 +164,12 @@
         }),
         std::move(callback));
   } else {
-    operation_runner()->DirectoryExists(
-        child_url,
+    DoFileSystemOperation(
+        FROM_HERE, &FileSystemOperationRunner::DirectoryExists,
         base::BindOnce(&NativeFileSystemDirectoryHandleImpl::DidGetDirectory,
                        weak_factory_.GetWeakPtr(), child_url,
-                       std::move(callback)));
+                       std::move(callback)),
+        child_url);
   }
 }
 
@@ -174,11 +177,13 @@
     GetEntriesCallback callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
 
-  operation_runner()->ReadDirectory(
-      url(), base::BindRepeating(
-                 &NativeFileSystemDirectoryHandleImpl::DidReadDirectory,
-                 weak_factory_.GetWeakPtr(),
-                 base::Owned(new ReadDirectoryState{std::move(callback)})));
+  DoFileSystemOperation(
+      FROM_HERE, &FileSystemOperationRunner::ReadDirectory,
+      base::BindRepeating(
+          &NativeFileSystemDirectoryHandleImpl::DidReadDirectory,
+          weak_factory_.GetWeakPtr(),
+          base::Owned(new ReadDirectoryState{std::move(callback)})),
+      url());
 }
 
 void NativeFileSystemDirectoryHandleImpl::RemoveEntry(
@@ -219,11 +224,13 @@
   DCHECK_EQ(GetWritePermissionStatus(),
             blink::mojom::PermissionStatus::GRANTED);
 
-  operation_runner()->CreateFile(
-      child_url, /*exclusive=*/false,
+  DoFileSystemOperation(
+      FROM_HERE, &FileSystemOperationRunner::CreateFile,
       base::BindOnce(&NativeFileSystemDirectoryHandleImpl::DidGetFile,
                      weak_factory_.GetWeakPtr(), child_url,
-                     std::move(callback)));
+                     std::move(callback)),
+      child_url,
+      /*exclusive=*/false);
 }
 
 void NativeFileSystemDirectoryHandleImpl::DidGetFile(
@@ -250,11 +257,13 @@
   DCHECK_EQ(GetWritePermissionStatus(),
             blink::mojom::PermissionStatus::GRANTED);
 
-  operation_runner()->CreateDirectory(
-      child_url, /*exclusive=*/false, /*recursive=*/false,
+  DoFileSystemOperation(
+      FROM_HERE, &FileSystemOperationRunner::CreateDirectory,
       base::BindOnce(&NativeFileSystemDirectoryHandleImpl::DidGetDirectory,
                      weak_factory_.GetWeakPtr(), child_url,
-                     std::move(callback)));
+                     std::move(callback)),
+      child_url,
+      /*exclusive=*/false, /*recursive=*/false);
 }
 
 void NativeFileSystemDirectoryHandleImpl::DidGetDirectory(
@@ -320,14 +329,15 @@
   DCHECK_EQ(GetWritePermissionStatus(),
             blink::mojom::PermissionStatus::GRANTED);
 
-  operation_runner()->Remove(
-      url, recurse,
+  DoFileSystemOperation(
+      FROM_HERE, &FileSystemOperationRunner::Remove,
       base::BindOnce(
           [](RemoveEntryCallback callback, base::File::Error result) {
             std::move(callback).Run(
                 native_file_system_error::FromFileError(result));
           },
-          std::move(callback)));
+          std::move(callback)),
+      url, recurse);
 }
 
 blink::mojom::NativeFileSystemErrorPtr
diff --git a/content/browser/native_file_system/native_file_system_file_handle_impl.cc b/content/browser/native_file_system/native_file_system_file_handle_impl.cc
index 6473a30..24b5a877 100644
--- a/content/browser/native_file_system/native_file_system_file_handle_impl.cc
+++ b/content/browser/native_file_system/native_file_system_file_handle_impl.cc
@@ -23,6 +23,7 @@
 using storage::BlobDataHandle;
 using storage::BlobImpl;
 using storage::FileSystemOperation;
+using storage::FileSystemOperationRunner;
 using storage::IsolatedContext;
 
 namespace content {
@@ -63,13 +64,14 @@
 
   // TODO(mek): Check backend::SupportsStreaming and create snapshot file if
   // streaming is not supported.
-  operation_runner()->GetMetadata(
+  DoFileSystemOperation(
+      FROM_HERE, &FileSystemOperationRunner::GetMetadata,
+      base::BindOnce(&NativeFileSystemFileHandleImpl::DidGetMetaDataForBlob,
+                     weak_factory_.GetWeakPtr(), std::move(callback)),
       url(),
       FileSystemOperation::GET_METADATA_FIELD_IS_DIRECTORY |
           FileSystemOperation::GET_METADATA_FIELD_SIZE |
-          FileSystemOperation::GET_METADATA_FIELD_LAST_MODIFIED,
-      base::BindOnce(&NativeFileSystemFileHandleImpl::DidGetMetaDataForBlob,
-                     weak_factory_.GetWeakPtr(), std::move(callback)));
+          FileSystemOperation::GET_METADATA_FIELD_LAST_MODIFIED);
 }
 
 void NativeFileSystemFileHandleImpl::CreateFileWriter(
@@ -229,13 +231,13 @@
     swap_file_system = std::move(handle.file_system);
   }
 
-  operation_runner()->CreateFile(
-      swap_url,
-      /*exclusive=*/true,
+  DoFileSystemOperation(
+      FROM_HERE, &FileSystemOperationRunner::CreateFile,
       base::BindOnce(&NativeFileSystemFileHandleImpl::DidCreateSwapFile,
                      weak_factory_.GetWeakPtr(), count, swap_url,
-                     swap_file_system, keep_existing_data,
-                     std::move(callback)));
+                     swap_file_system, keep_existing_data, std::move(callback)),
+      swap_url,
+      /*exclusive=*/true);
 }
 
 void NativeFileSystemFileHandleImpl::DidCreateSwapFile(
@@ -273,14 +275,15 @@
     return;
   }
 
-  operation_runner()->Copy(
+  DoFileSystemOperation(
+      FROM_HERE, &FileSystemOperationRunner::Copy,
+      base::BindOnce(&NativeFileSystemFileHandleImpl::DidCopySwapFile,
+                     weak_factory_.GetWeakPtr(), swap_url, swap_file_system,
+                     std::move(callback)),
       url(), swap_url,
       storage::FileSystemOperation::OPTION_PRESERVE_LAST_MODIFIED,
       storage::FileSystemOperation::ERROR_BEHAVIOR_ABORT,
-      storage::FileSystemOperation::CopyProgressCallback(),
-      base::BindOnce(&NativeFileSystemFileHandleImpl::DidCopySwapFile,
-                     weak_factory_.GetWeakPtr(), swap_url, swap_file_system,
-                     std::move(callback)));
+      storage::FileSystemOperation::CopyProgressCallback());
 }
 
 void NativeFileSystemFileHandleImpl::DidCopySwapFile(
diff --git a/content/browser/native_file_system/native_file_system_file_handle_impl_unittest.cc b/content/browser/native_file_system/native_file_system_file_handle_impl_unittest.cc
index 2f205cb..28c50d48 100644
--- a/content/browser/native_file_system/native_file_system_file_handle_impl_unittest.cc
+++ b/content/browser/native_file_system/native_file_system_file_handle_impl_unittest.cc
@@ -72,6 +72,8 @@
             allow_grant_, allow_grant_, /*file_system=*/{}));
   }
 
+  void TearDown() override { task_environment_.RunUntilIdle(); }
+
   std::string ReadFile(const FileSystemURL& url) {
     std::unique_ptr<storage::FileStreamReader> reader =
         file_system_context_->CreateFileStreamReader(
diff --git a/content/browser/native_file_system/native_file_system_file_writer_impl.cc b/content/browser/native_file_system/native_file_system_file_writer_impl.cc
index 20ef5731..fc97c20 100644
--- a/content/browser/native_file_system/native_file_system_file_writer_impl.cc
+++ b/content/browser/native_file_system/native_file_system_file_writer_impl.cc
@@ -20,6 +20,7 @@
 using blink::mojom::NativeFileSystemStatus;
 using storage::BlobDataHandle;
 using storage::FileSystemOperation;
+using storage::FileSystemOperationRunner;
 
 namespace {
 
@@ -98,17 +99,19 @@
 
 NativeFileSystemFileWriterImpl::~NativeFileSystemFileWriterImpl() {
   if (can_purge()) {
-    manager()->operation_runner()->RemoveFile(
-        swap_url(), base::BindOnce(
-                        [](const storage::FileSystemURL& swap_url,
-                           base::File::Error result) {
-                          if (result != base::File::FILE_OK) {
-                            DLOG(ERROR) << "Error Deleting Swap File, status: "
-                                        << base::File::ErrorToString(result)
-                                        << " path: " << swap_url.path();
-                          }
-                        },
-                        swap_url()));
+    DoFileSystemOperation(FROM_HERE, &FileSystemOperationRunner::RemoveFile,
+                          base::BindOnce(
+                              [](const storage::FileSystemURL& swap_url,
+                                 base::File::Error result) {
+                                if (result != base::File::FILE_OK) {
+                                  DLOG(ERROR)
+                                      << "Error Deleting Swap File, status: "
+                                      << base::File::ErrorToString(result)
+                                      << " path: " << swap_url.path();
+                                }
+                              },
+                              swap_url()),
+                          swap_url());
   }
 }
 
@@ -210,11 +213,12 @@
     return;
   }
 
-  operation_runner()->Write(
-      swap_url(), std::move(blob), position,
+  DoFileSystemOperation(
+      FROM_HERE, &FileSystemOperationRunner::Write,
       base::BindRepeating(&NativeFileSystemFileWriterImpl::DidWrite,
                           weak_factory_.GetWeakPtr(),
-                          base::Owned(new WriteState{std::move(callback)})));
+                          base::Owned(new WriteState{std::move(callback)})),
+      swap_url(), std::move(blob), position);
 }
 
 void NativeFileSystemFileWriterImpl::WriteStreamImpl(
@@ -234,11 +238,12 @@
     return;
   }
 
-  operation_runner()->Write(
-      swap_url(), std::move(stream), offset,
+  DoFileSystemOperation(
+      FROM_HERE, &FileSystemOperationRunner::WriteStream,
       base::BindRepeating(&NativeFileSystemFileWriterImpl::DidWrite,
                           weak_factory_.GetWeakPtr(),
-                          base::Owned(new WriteState{std::move(callback)})));
+                          base::Owned(new WriteState{std::move(callback)})),
+      swap_url(), std::move(stream), offset);
 }
 
 void NativeFileSystemFileWriterImpl::DidWrite(WriteState* state,
@@ -269,14 +274,15 @@
     return;
   }
 
-  operation_runner()->Truncate(
-      swap_url(), length,
+  DoFileSystemOperation(
+      FROM_HERE, &FileSystemOperationRunner::Truncate,
       base::BindOnce(
           [](TruncateCallback callback, base::File::Error result) {
             std::move(callback).Run(
                 native_file_system_error::FromFileError(result));
           },
-          std::move(callback)));
+          std::move(callback)),
+      swap_url(), length);
 }
 
 void NativeFileSystemFileWriterImpl::CloseImpl(CloseCallback callback) {
@@ -372,11 +378,12 @@
   // will not exist anymore.
   // In case of error, the swap file URL will point to a valid filesystem
   // location. The file at this URL will be deleted when the mojo pipe closes.
-  operation_runner()->Move(
-      swap_url(), url(),
-      storage::FileSystemOperation::OPTION_PRESERVE_LAST_MODIFIED,
+  DoFileSystemOperation(
+      FROM_HERE, &FileSystemOperationRunner::Move,
       base::BindOnce(&NativeFileSystemFileWriterImpl::DidSwapFileBeforeClose,
-                     weak_factory_.GetWeakPtr(), std::move(callback)));
+                     weak_factory_.GetWeakPtr(), std::move(callback)),
+      swap_url(), url(),
+      storage::FileSystemOperation::OPTION_PRESERVE_LAST_MODIFIED);
 }
 
 void NativeFileSystemFileWriterImpl::DidSwapFileBeforeClose(
diff --git a/content/browser/native_file_system/native_file_system_file_writer_impl_unittest.cc b/content/browser/native_file_system/native_file_system_file_writer_impl_unittest.cc
index 34da1cc..6d102d6 100644
--- a/content/browser/native_file_system/native_file_system_file_writer_impl_unittest.cc
+++ b/content/browser/native_file_system/native_file_system_file_writer_impl_unittest.cc
@@ -109,6 +109,9 @@
   }
 
   void TearDown() override {
+    handle_.reset();
+    manager_.reset();
+
     task_environment_.RunUntilIdle();
     EXPECT_TRUE(dir_.Delete());
   }
diff --git a/content/browser/native_file_system/native_file_system_handle_base.h b/content/browser/native_file_system/native_file_system_handle_base.h
index 15fe351..9fc8355d2 100644
--- a/content/browser/native_file_system/native_file_system_handle_base.h
+++ b/content/browser/native_file_system/native_file_system_handle_base.h
@@ -11,6 +11,7 @@
 #include "base/threading/sequence_bound.h"
 #include "content/browser/native_file_system/native_file_system_manager_impl.h"
 #include "content/common/content_export.h"
+#include "storage/browser/fileapi/file_system_operation_runner.h"
 #include "storage/browser/fileapi/file_system_url.h"
 #include "storage/browser/fileapi/isolated_context.h"
 #include "third_party/blink/public/mojom/permissions/permission_status.mojom.h"
@@ -79,9 +80,6 @@
  protected:
   NativeFileSystemManagerImpl* manager() { return manager_; }
   const BindingContext& context() { return context_; }
-  storage::FileSystemOperationRunner* operation_runner() {
-    return manager()->operation_runner();
-  }
   storage::FileSystemContext* file_system_context() {
     return manager()->context();
   }
@@ -94,6 +92,93 @@
   // NativeFileSystemPermissionGrant::Observer:
   void OnPermissionStatusChanged() override;
 
+  // Invokes |method| on the correct sequence on this handle's
+  // FileSystemOperationRunner, passing |args| and a callback to the method. The
+  // passed in |callback| is wrapped to make sure it is called on the correct
+  // sequence before passing it off to the |method|.
+  //
+  // Note that |callback| is passed to this method before other arguments, while
+  // the wrapped callback will be passed as last argument to the underlying
+  // FileSystemOperation |method|.
+  //
+  // TODO(mek): Once Promises are a thing, this can be done a lot cleaner, and
+  // mostly just be integrated in base::SequenceBound, eliminating the need for
+  // these helper methods.
+  template <typename... MethodArgs,
+            typename... ArgsMinusCallback,
+            typename... CallbackArgs>
+  void DoFileSystemOperation(
+      const base::Location& from_here,
+      storage::FileSystemOperationRunner::OperationID (
+          storage::FileSystemOperationRunner::*method)(MethodArgs...),
+      base::OnceCallback<void(CallbackArgs...)> callback,
+      ArgsMinusCallback&&... args) {
+    // Wrap the passed in callback in one that posts a task back to the current
+    // sequence.
+    auto wrapped_callback = base::BindOnce(
+        [](scoped_refptr<base::SequencedTaskRunner> runner,
+           base::OnceCallback<void(CallbackArgs...)> callback,
+           CallbackArgs... args) {
+          runner->PostTask(FROM_HERE,
+                           base::BindOnce(std::move(callback),
+                                          std::forward<CallbackArgs>(args)...));
+        },
+        base::SequencedTaskRunnerHandle::Get(), std::move(callback));
+
+    // And then post a task to the sequence bound operation runner to run the
+    // provided method with the provided arguments (and the wrapped callback).
+    manager()->operation_runner().PostTaskWithThisObject(
+        from_here,
+        base::BindOnce(
+            [](scoped_refptr<storage::FileSystemContext>,
+               storage::FileSystemOperationRunner::OperationID (
+                   storage::FileSystemOperationRunner::*method)(MethodArgs...),
+               MethodArgs... args, storage::FileSystemOperationRunner* runner) {
+              (runner->*method)(std::forward<MethodArgs>(args)...);
+            },
+            base::WrapRefCounted(file_system_context()), method,
+            std::forward<ArgsMinusCallback>(args)...,
+            std::move(wrapped_callback)));
+  }
+  // Same as the previous overload, but using RepeatingCallback and
+  // BindRepeating instead.
+  template <typename... MethodArgs,
+            typename... ArgsMinusCallback,
+            typename... CallbackArgs>
+  void DoFileSystemOperation(
+      const base::Location& from_here,
+      storage::FileSystemOperationRunner::OperationID (
+          storage::FileSystemOperationRunner::*method)(MethodArgs...),
+      base::RepeatingCallback<void(CallbackArgs...)> callback,
+      ArgsMinusCallback&&... args) {
+    // Wrap the passed in callback in one that posts a task back to the current
+    // sequence.
+    auto wrapped_callback = base::BindRepeating(
+        [](scoped_refptr<base::SequencedTaskRunner> runner,
+           const base::RepeatingCallback<void(CallbackArgs...)>& callback,
+           CallbackArgs... args) {
+          runner->PostTask(
+              FROM_HERE,
+              base::BindOnce(callback, std::forward<CallbackArgs>(args)...));
+        },
+        base::SequencedTaskRunnerHandle::Get(), std::move(callback));
+
+    // And then post a task to the sequence bound operation runner to run the
+    // provided method with the provided arguments (and the wrapped callback).
+    manager()->operation_runner().PostTaskWithThisObject(
+        from_here,
+        base::BindOnce(
+            [](scoped_refptr<storage::FileSystemContext>,
+               storage::FileSystemOperationRunner::OperationID (
+                   storage::FileSystemOperationRunner::*method)(MethodArgs...),
+               MethodArgs... args, storage::FileSystemOperationRunner* runner) {
+              (runner->*method)(std::forward<MethodArgs>(args)...);
+            },
+            base::WrapRefCounted(file_system_context()), method,
+            std::forward<ArgsMinusCallback>(args)...,
+            std::move(wrapped_callback)));
+  }
+
  private:
   void DidRequestPermission(
       bool writable,
diff --git a/content/browser/native_file_system/native_file_system_manager_impl.cc b/content/browser/native_file_system/native_file_system_manager_impl.cc
index 1aea515..ebe2a19 100644
--- a/content/browser/native_file_system/native_file_system_manager_impl.cc
+++ b/content/browser/native_file_system/native_file_system_manager_impl.cc
@@ -381,11 +381,13 @@
       base::UnguessableToken()));
 }
 
-storage::FileSystemOperationRunner*
+const base::SequenceBound<storage::FileSystemOperationRunner>&
 NativeFileSystemManagerImpl::operation_runner() {
-  if (!operation_runner_)
-    operation_runner_ = context()->CreateFileSystemOperationRunner();
-  return operation_runner_.get();
+  if (!operation_runner_) {
+    operation_runner_ =
+        context()->CreateSequenceBoundFileSystemOperationRunner();
+  }
+  return operation_runner_;
 }
 
 void NativeFileSystemManagerImpl::DidOpenSandboxedFileSystem(
diff --git a/content/browser/native_file_system/native_file_system_manager_impl.h b/content/browser/native_file_system/native_file_system_manager_impl.h
index 836baed..5f54a98 100644
--- a/content/browser/native_file_system/native_file_system_manager_impl.h
+++ b/content/browser/native_file_system/native_file_system_manager_impl.h
@@ -7,6 +7,7 @@
 
 #include "base/files/file_path.h"
 #include "base/memory/weak_ptr.h"
+#include "base/threading/sequence_bound.h"
 #include "content/browser/blob_storage/chrome_blob_storage_context.h"
 #include "content/browser/native_file_system/file_system_chooser.h"
 #include "content/common/content_export.h"
@@ -160,7 +161,8 @@
   storage::BlobStorageContext* blob_context() {
     return blob_context_->context();
   }
-  storage::FileSystemOperationRunner* operation_runner();
+  const base::SequenceBound<storage::FileSystemOperationRunner>&
+  operation_runner();
 
   NativeFileSystemPermissionContext* permission_context() {
     return permission_context_;
@@ -245,7 +247,7 @@
 
   const scoped_refptr<storage::FileSystemContext> context_;
   const scoped_refptr<ChromeBlobStorageContext> blob_context_;
-  std::unique_ptr<storage::FileSystemOperationRunner> operation_runner_;
+  base::SequenceBound<storage::FileSystemOperationRunner> operation_runner_;
   NativeFileSystemPermissionContext* permission_context_;
 
   // All the mojo receivers for this NativeFileSystemManager itself. Keeps track
diff --git a/content/browser/network_service_client.cc b/content/browser/network_service_client.cc
index 7b0b560..232a521 100644
--- a/content/browser/network_service_client.cc
+++ b/content/browser/network_service_client.cc
@@ -27,7 +27,6 @@
 #include "content/public/common/content_features.h"
 #include "content/public/common/network_service_util.h"
 #include "content/public/common/resource_type.h"
-#include "mojo/public/cpp/bindings/strong_binding.h"
 #include "services/network/public/cpp/load_info_util.h"
 #include "services/network/public/mojom/network_context.mojom.h"
 #include "third_party/blink/public/mojom/web_feature/web_feature.mojom.h"
@@ -49,8 +48,9 @@
 }  // namespace
 
 NetworkServiceClient::NetworkServiceClient(
-    network::mojom::NetworkServiceClientRequest network_service_client_request)
-    : binding_(this, std::move(network_service_client_request))
+    mojo::PendingReceiver<network::mojom::NetworkServiceClient>
+        network_service_client_receiver)
+    : receiver_(this, std::move(network_service_client_receiver))
 #if defined(OS_ANDROID)
       ,
       app_status_listener_(base::android::ApplicationStatusListener::New(
diff --git a/content/browser/network_service_client.h b/content/browser/network_service_client.h
index 1df7126..855afdf 100644
--- a/content/browser/network_service_client.h
+++ b/content/browser/network_service_client.h
@@ -14,7 +14,8 @@
 #include "base/unguessable_token.h"
 #include "build/build_config.h"
 #include "content/common/content_export.h"
-#include "mojo/public/cpp/bindings/binding.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "mojo/public/cpp/bindings/receiver.h"
 #include "net/cert/cert_database.h"
 #include "services/network/public/mojom/network_service.mojom.h"
 #include "url/gurl.h"
@@ -37,8 +38,9 @@
 #endif
       public net::CertDatabase::Observer {
  public:
-  explicit NetworkServiceClient(network::mojom::NetworkServiceClientRequest
-                                    network_service_client_request);
+  explicit NetworkServiceClient(
+      mojo::PendingReceiver<network::mojom::NetworkServiceClient>
+          network_service_client_receiver);
   ~NetworkServiceClient() override;
 
   // network::mojom::NetworkServiceClient implementation:
@@ -91,7 +93,7 @@
 #endif
 
  private:
-  mojo::Binding<network::mojom::NetworkServiceClient> binding_;
+  mojo::Receiver<network::mojom::NetworkServiceClient> receiver_;
 
   std::unique_ptr<base::MemoryPressureListener> memory_pressure_listener_;
 
diff --git a/content/browser/network_service_instance_impl.cc b/content/browser/network_service_instance_impl.cc
index d8be6b8..b4d6e97 100644
--- a/content/browser/network_service_instance_impl.cc
+++ b/content/browser/network_service_instance_impl.cc
@@ -207,12 +207,12 @@
       }
 
       AddNetworkServiceDebugEvent("START");
-      network::mojom::NetworkServiceClientPtr client_ptr;
-      auto client_request = mojo::MakeRequest(&client_ptr);
+      mojo::PendingRemote<network::mojom::NetworkServiceClient> client_remote;
+      auto client_receiver = client_remote.InitWithNewPipeAndPassReceiver();
       // Call SetClient before creating NetworkServiceClient, as the latter
       // might make requests to NetworkService that depend on initialization.
       (*g_network_service_ptr)
-          ->SetClient(std::move(client_ptr), CreateNetworkServiceParams());
+          ->SetClient(std::move(client_remote), CreateNetworkServiceParams());
       g_network_service_is_responding = false;
       g_network_service_ptr->QueryVersion(base::BindRepeating(
           [](base::Time start_time, uint32_t) {
@@ -232,7 +232,7 @@
           base::Time::Now()));
 
       delete g_client;  // In case we're recreating the network service.
-      g_client = new NetworkServiceClient(std::move(client_request));
+      g_client = new NetworkServiceClient(std::move(client_receiver));
 
       const base::CommandLine* command_line =
           base::CommandLine::ForCurrentProcess();
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm
index ed9ea518..4549c3d 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm
+++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
@@ -507,6 +507,10 @@
 }
 
 void RenderWidgetHostViewMac::Focus() {
+  // Ignore redundant calls, as they can cause unending loops of focus-setting.
+  // https://crbug.com/998123
+  if (is_first_responder_)
+    return;
   ns_view_->MakeFirstResponder();
 }
 
diff --git a/content/browser/renderer_interface_binders.cc b/content/browser/renderer_interface_binders.cc
index 8030fd5..b34b84a 100644
--- a/content/browser/renderer_interface_binders.cc
+++ b/content/browser/renderer_interface_binders.cc
@@ -12,7 +12,6 @@
 #include "base/no_destructor.h"
 #include "base/task/post_task.h"
 #include "content/browser/child_process_security_policy_impl.h"
-#include "content/browser/cookie_store/cookie_store_context.h"
 #include "content/browser/native_file_system/native_file_system_manager_impl.h"
 #include "content/browser/notifications/platform_notification_context_impl.h"
 #include "content/browser/permissions/permission_service_context.h"
@@ -34,7 +33,6 @@
 #include "services/service_manager/public/cpp/binder_registry.h"
 #include "third_party/blink/public/common/features.h"
 #include "third_party/blink/public/mojom/cache_storage/cache_storage.mojom.h"
-#include "third_party/blink/public/mojom/cookie_store/cookie_store.mojom.h"
 #include "third_party/blink/public/mojom/native_file_system/native_file_system_manager.mojom.h"
 #include "third_party/blink/public/mojom/notifications/notification_service.mojom.h"
 #include "url/origin.h"
@@ -139,13 +137,6 @@
       }));
   parameterized_binder_registry_.AddInterface(
       base::BindRepeating(&QuotaDispatcherHost::CreateForWorker));
-  parameterized_binder_registry_.AddInterface(base::BindRepeating(
-      [](blink::mojom::CookieStoreRequest request, RenderProcessHost* host,
-         const url::Origin& origin) {
-        static_cast<StoragePartitionImpl*>(host->GetStoragePartition())
-            ->GetCookieStoreContext()
-            ->CreateService(std::move(request), origin);
-      }));
 }
 
 RendererInterfaceBinders& GetRendererInterfaceBinders() {
diff --git a/content/browser/serial/serial_service.cc b/content/browser/serial/serial_service.cc
index da6ff59..9c628bb 100644
--- a/content/browser/serial/serial_service.cc
+++ b/content/browser/serial/serial_service.cc
@@ -9,6 +9,7 @@
 #include "base/bind.h"
 #include "base/callback.h"
 #include "content/browser/web_contents/web_contents_impl.h"
+#include "content/public/browser/back_forward_cache.h"
 #include "content/public/browser/content_browser_client.h"
 #include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/serial_chooser.h"
@@ -41,6 +42,12 @@
     : render_frame_host_(render_frame_host) {
   DCHECK(render_frame_host_->IsFeatureEnabled(
       blink::mojom::FeaturePolicyFeature::kSerial));
+  // Serial API is not supported for back-forward cache for now because we
+  // don't have support for closing/freezing ports when the frame is added to
+  // the back-forward cache, so we mark frames that use this API as disabled
+  // for back-forward cache.
+  BackForwardCache::DisableForRenderFrameHost(render_frame_host, "Serial");
+
   watchers_.set_disconnect_handler(base::BindRepeating(
       &SerialService::OnWatcherConnectionError, base::Unretained(this)));
 }
diff --git a/content/public/app/content_browser_manifest.cc b/content/public/app/content_browser_manifest.cc
index 3bbec4d..08dc2e5 100644
--- a/content/public/app/content_browser_manifest.cc
+++ b/content/public/app/content_browser_manifest.cc
@@ -183,7 +183,7 @@
           .ExposeInterfaceFilterCapability_Deprecated(
               "navigation:service_worker", "renderer",
               std::set<const char*>{
-                  "blink.mojom.CacheStorage", "blink.mojom.CookieStore",
+                  "blink.mojom.CacheStorage",
                   "blink.mojom.NativeFileSystemManager",
                   "blink.mojom.NotificationService",
                   "blink.mojom.QuotaDispatcherHost",
diff --git a/content/public/browser/browsing_data_remover.h b/content/public/browser/browsing_data_remover.h
index c9f4f3a..cacc4ce 100644
--- a/content/public/browser/browsing_data_remover.h
+++ b/content/public/browser/browsing_data_remover.h
@@ -199,8 +199,8 @@
   // |continue_to_completion| to finish the task. Used in tests to artificially
   // prolong execution.
   virtual void SetWouldCompleteCallbackForTesting(
-      const base::Callback<void(const base::Closure& continue_to_completion)>&
-          callback) = 0;
+      const base::RepeatingCallback<
+          void(base::OnceClosure continue_to_completion)>& callback) = 0;
 
   // Parameters of the last call are exposed to be used by tests. Removal and
   // origin type masks equal to -1 mean that no removal has ever been executed.
diff --git a/content/public/test/browsing_data_remover_test_util.cc b/content/public/test/browsing_data_remover_test_util.cc
index 669267f7..807bf31 100644
--- a/content/public/test/browsing_data_remover_test_util.cc
+++ b/content/public/test/browsing_data_remover_test_util.cc
@@ -60,9 +60,9 @@
       origin_task_runner_(base::ThreadTaskRunnerHandle::Get()) {
   DCHECK(remover);
   remover_->SetWouldCompleteCallbackForTesting(
-      base::Bind(&BrowsingDataRemoverCompletionInhibitor::
-                     OnBrowsingDataRemoverWouldComplete,
-                 base::Unretained(this)));
+      base::BindRepeating(&BrowsingDataRemoverCompletionInhibitor::
+                              OnBrowsingDataRemoverWouldComplete,
+                          base::Unretained(this)));
 }
 
 BrowsingDataRemoverCompletionInhibitor::
@@ -74,7 +74,7 @@
   if (!remover_)
     return;
   remover_->SetWouldCompleteCallbackForTesting(
-      base::Callback<void(const base::Closure&)>());
+      base::RepeatingCallback<void(base::OnceClosure)>());
   remover_ = nullptr;
 }
 
@@ -90,14 +90,13 @@
 
 void BrowsingDataRemoverCompletionInhibitor::ContinueToCompletion() {
   DCHECK(!continue_to_completion_callback_.is_null());
-  continue_to_completion_callback_.Run();
-  continue_to_completion_callback_.Reset();
+  std::move(continue_to_completion_callback_).Run();
 }
 
 void BrowsingDataRemoverCompletionInhibitor::OnBrowsingDataRemoverWouldComplete(
-    const base::Closure& continue_to_completion) {
+    base::OnceClosure continue_to_completion) {
   DCHECK(continue_to_completion_callback_.is_null());
-  continue_to_completion_callback_ = continue_to_completion;
+  continue_to_completion_callback_ = std::move(continue_to_completion);
   browsing_data_remover_would_complete_done_ = true;
   QuitRunLoopWhenTasksComplete();
 }
diff --git a/content/public/test/browsing_data_remover_test_util.h b/content/public/test/browsing_data_remover_test_util.h
index eaf96d7..63a4db0 100644
--- a/content/public/test/browsing_data_remover_test_util.h
+++ b/content/public/test/browsing_data_remover_test_util.h
@@ -66,7 +66,7 @@
 
  protected:
   virtual void OnBrowsingDataRemoverWouldComplete(
-      const base::Closure& continue_to_completion);
+      base::OnceClosure continue_to_completion);
 
  private:
   void FlushForTestingComplete();
@@ -83,7 +83,7 @@
   BrowsingDataRemover* remover_;
 
   std::unique_ptr<base::RunLoop> run_loop_;
-  base::Closure continue_to_completion_callback_;
+  base::OnceClosure continue_to_completion_callback_;
   scoped_refptr<base::SequencedTaskRunner> origin_task_runner_;
 
   DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemoverCompletionInhibitor);
diff --git a/content/renderer/BUILD.gn b/content/renderer/BUILD.gn
index 25d2f66..81784ef 100644
--- a/content/renderer/BUILD.gn
+++ b/content/renderer/BUILD.gn
@@ -204,8 +204,6 @@
     "media/webrtc/peer_connection_tracker.h",
     "media/webrtc/rtc_peer_connection_handler.cc",
     "media/webrtc/rtc_peer_connection_handler.h",
-    "media/webrtc/rtc_rtp_receiver.cc",
-    "media/webrtc/rtc_rtp_receiver.h",
     "media/webrtc/rtc_rtp_sender.cc",
     "media/webrtc/rtc_rtp_sender.h",
     "media/webrtc/rtc_rtp_transceiver.cc",
diff --git a/content/renderer/media/webrtc/peer_connection_tracker_unittest.cc b/content/renderer/media/webrtc/peer_connection_tracker_unittest.cc
index 7dda097f..040e25a29 100644
--- a/content/renderer/media/webrtc/peer_connection_tracker_unittest.cc
+++ b/content/renderer/media/webrtc/peer_connection_tracker_unittest.cc
@@ -112,7 +112,7 @@
     DCHECK_EQ(
         implementation_type,
         blink::WebRTCRtpTransceiverImplementationType::kPlanBReceiverOnly);
-    transceiver = std::make_unique<RTCRtpReceiverOnlyTransceiver>(
+    transceiver = std::make_unique<blink::RTCRtpReceiverOnlyTransceiver>(
         std::make_unique<FakeRTCRtpReceiver>(receiver));
   }
   return transceiver;
diff --git a/content/renderer/media/webrtc/rtc_peer_connection_handler.cc b/content/renderer/media/webrtc/rtc_peer_connection_handler.cc
index 7885f94..853f3d7a 100644
--- a/content/renderer/media/webrtc/rtc_peer_connection_handler.cc
+++ b/content/renderer/media/webrtc/rtc_peer_connection_handler.cc
@@ -53,6 +53,7 @@
 #include "third_party/blink/public/platform/web_url.h"
 #include "third_party/blink/public/web/modules/mediastream/media_stream_constraints_util.h"
 #include "third_party/blink/public/web/modules/peerconnection/peer_connection_dependency_factory.h"
+#include "third_party/blink/public/web/modules/peerconnection/rtc_rtp_receiver_impl.h"
 #include "third_party/blink/public/web/modules/webrtc/webrtc_audio_device_impl.h"
 #include "third_party/webrtc/api/rtc_event_log_output.h"
 #include "third_party/webrtc/pc/media_session.h"
@@ -582,7 +583,8 @@
 }
 
 bool IsRemoteStream(
-    const std::vector<std::unique_ptr<RTCRtpReceiver>>& rtp_receivers,
+    const std::vector<std::unique_ptr<blink::RTCRtpReceiverImpl>>&
+        rtp_receivers,
     const std::string& stream_id) {
   for (const auto& receiver : rtp_receivers) {
     for (const auto& receiver_stream_id : receiver->state().stream_ids()) {
@@ -593,7 +595,6 @@
   return false;
 }
 
-
 MediaStreamTrackMetrics::Kind MediaStreamTrackMetricsKind(
     const blink::WebMediaStreamTrack& track) {
   return track.Source().GetType() == blink::WebMediaStreamSource::kTypeAudio
@@ -734,7 +735,7 @@
 
     // Determine which receivers have been removed before processing the
     // removal as to not invalidate the iterator.
-    std::vector<RTCRtpReceiver*> removed_receivers;
+    std::vector<blink::RTCRtpReceiverImpl*> removed_receivers;
     for (auto it = handler_->rtp_receivers_.begin();
          it != handler_->rtp_receivers_.end(); ++it) {
       if (ReceiverWasRemoved(*(*it), states.transceiver_states))
@@ -752,7 +753,7 @@
     for (auto* removed_receiver : removed_receivers) {
       if (handler_) {
         // |handler_| can become null after this call.
-        handler_->OnRemoveReceiverPlanB(RTCRtpReceiver::getId(
+        handler_->OnRemoveReceiverPlanB(blink::RTCRtpReceiverImpl::getId(
             removed_receiver->state().webrtc_receiver().get()));
       }
     }
@@ -760,7 +761,7 @@
 
   bool ReceiverWasAdded(const RtpTransceiverState& transceiver_state) {
     DCHECK(handler_);
-    uintptr_t receiver_id = RTCRtpReceiver::getId(
+    uintptr_t receiver_id = blink::RTCRtpReceiverImpl::getId(
         transceiver_state.receiver_state()->webrtc_receiver().get());
     for (const auto& receiver : handler_->rtp_receivers_) {
       if (receiver->Id() == receiver_id)
@@ -770,7 +771,7 @@
   }
 
   bool ReceiverWasRemoved(
-      const RTCRtpReceiver& receiver,
+      const blink::RTCRtpReceiverImpl& receiver,
       const std::vector<RtpTransceiverState>& transceiver_states) {
     for (const auto& transceiver_state : transceiver_states) {
       if (transceiver_state.receiver_state()->webrtc_receiver() ==
@@ -2156,7 +2157,7 @@
 }
 
 void RTCPeerConnectionHandler::OnAddReceiverPlanB(
-    RtpReceiverState receiver_state) {
+    blink::RtpReceiverState receiver_state) {
   DCHECK(task_runner_->RunsTasksInCurrentSequence());
   DCHECK(receiver_state.is_initialized());
   TRACE_EVENT0("webrtc", "RTCPeerConnectionHandler::OnAddReceiverPlanB");
@@ -2172,15 +2173,16 @@
           ->IncrementStreamCounter();
   }
   uintptr_t receiver_id =
-      RTCRtpReceiver::getId(receiver_state.webrtc_receiver().get());
+      blink::RTCRtpReceiverImpl::getId(receiver_state.webrtc_receiver().get());
   DCHECK(FindReceiver(receiver_id) == rtp_receivers_.end());
-  auto rtp_receiver = std::make_unique<RTCRtpReceiver>(
+  auto rtp_receiver = std::make_unique<blink::RTCRtpReceiverImpl>(
       native_peer_connection_, std::move(receiver_state));
-  rtp_receivers_.push_back(std::make_unique<RTCRtpReceiver>(*rtp_receiver));
+  rtp_receivers_.push_back(
+      std::make_unique<blink::RTCRtpReceiverImpl>(*rtp_receiver));
   if (peer_connection_tracker_) {
     auto receiver_only_transceiver =
-        std::make_unique<RTCRtpReceiverOnlyTransceiver>(
-            std::make_unique<RTCRtpReceiver>(*rtp_receiver));
+        std::make_unique<blink::RTCRtpReceiverOnlyTransceiver>(
+            std::make_unique<blink::RTCRtpReceiverImpl>(*rtp_receiver));
     size_t receiver_index = GetTransceiverIndex(*receiver_only_transceiver);
     peer_connection_tracker_->TrackAddTransceiver(
         this,
@@ -2197,15 +2199,15 @@
 
   auto it = FindReceiver(receiver_id);
   DCHECK(it != rtp_receivers_.end());
-  auto receiver = std::make_unique<RTCRtpReceiver>(*(*it));
+  auto receiver = std::make_unique<blink::RTCRtpReceiverImpl>(*(*it));
   // Update metrics.
   track_metrics_.RemoveTrack(MediaStreamTrackMetrics::Direction::kReceive,
                              MediaStreamTrackMetricsKind(receiver->Track()),
                              receiver->Track().Id().Utf8());
   if (peer_connection_tracker_) {
     auto receiver_only_transceiver =
-        std::make_unique<RTCRtpReceiverOnlyTransceiver>(
-            std::make_unique<RTCRtpReceiver>(*receiver));
+        std::make_unique<blink::RTCRtpReceiverOnlyTransceiver>(
+            std::make_unique<blink::RTCRtpReceiverImpl>(*receiver));
     size_t receiver_index = GetTransceiverIndex(*receiver_only_transceiver);
     peer_connection_tracker_->TrackRemoveTransceiver(
         this,
@@ -2398,7 +2400,7 @@
   return rtp_senders_.end();
 }
 
-std::vector<std::unique_ptr<RTCRtpReceiver>>::iterator
+std::vector<std::unique_ptr<blink::RTCRtpReceiverImpl>>::iterator
 RTCPeerConnectionHandler::FindReceiver(uintptr_t id) {
   for (auto it = rtp_receivers_.begin(); it != rtp_receivers_.end(); ++it) {
     if ((*it)->Id() == id)
@@ -2470,18 +2472,18 @@
            rtp_senders_.end());
     rtp_senders_.push_back(
         std::make_unique<RTCRtpSender>(*transceiver->content_sender()));
-    DCHECK(FindReceiver(RTCRtpReceiver::getId(webrtc_receiver.get())) ==
-           rtp_receivers_.end());
-    rtp_receivers_.push_back(
-        std::make_unique<RTCRtpReceiver>(*transceiver->content_receiver()));
+    DCHECK(FindReceiver(blink::RTCRtpReceiverImpl::getId(
+               webrtc_receiver.get())) == rtp_receivers_.end());
+    rtp_receivers_.push_back(std::make_unique<blink::RTCRtpReceiverImpl>(
+        *transceiver->content_receiver()));
   } else {
     // Update the transceiver. This also updates the sender and receiver.
     transceiver = (*it)->ShallowCopy();
     transceiver->set_state(std::move(transceiver_state), update_mode);
     DCHECK(FindSender(RTCRtpSender::getId(webrtc_sender.get())) !=
            rtp_senders_.end());
-    DCHECK(FindReceiver(RTCRtpReceiver::getId(webrtc_receiver.get())) !=
-           rtp_receivers_.end());
+    DCHECK(FindReceiver(blink::RTCRtpReceiverImpl::getId(
+               webrtc_receiver.get())) != rtp_receivers_.end());
   }
   return transceiver;
 }
diff --git a/content/renderer/media/webrtc/rtc_peer_connection_handler.h b/content/renderer/media/webrtc/rtc_peer_connection_handler.h
index 08f0100..f32ce7b 100644
--- a/content/renderer/media/webrtc/rtc_peer_connection_handler.h
+++ b/content/renderer/media/webrtc/rtc_peer_connection_handler.h
@@ -20,7 +20,6 @@
 #include "base/threading/thread.h"
 #include "content/common/content_export.h"
 #include "content/renderer/media/webrtc/media_stream_track_metrics.h"
-#include "content/renderer/media/webrtc/rtc_rtp_receiver.h"
 #include "content/renderer/media/webrtc/rtc_rtp_sender.h"
 #include "content/renderer/media/webrtc/transceiver_state_surfacer.h"
 #include "third_party/blink/public/platform/web_media_stream_source.h"
@@ -29,6 +28,7 @@
 #include "third_party/blink/public/platform/web_rtc_stats.h"
 #include "third_party/blink/public/platform/web_rtc_stats_request.h"
 #include "third_party/blink/public/platform/web_rtc_stats_response.h"
+#include "third_party/blink/public/web/modules/peerconnection/rtc_rtp_receiver_impl.h"
 #include "third_party/blink/public/web/modules/peerconnection/webrtc_media_stream_track_adapter_map.h"
 #include "third_party/webrtc/api/stats/rtc_stats.h"
 #include "third_party/webrtc/api/stats/rtc_stats_collector_callback.h"
@@ -232,7 +232,7 @@
   void OnIceGatheringChange(
       webrtc::PeerConnectionInterface::IceGatheringState new_state);
   void OnRenegotiationNeeded();
-  void OnAddReceiverPlanB(RtpReceiverState receiver_state);
+  void OnAddReceiverPlanB(blink::RtpReceiverState receiver_state);
   void OnRemoveReceiverPlanB(uintptr_t receiver_id);
   void OnModifySctpTransport(blink::WebRTCSctpTransportSnapshot state);
   void OnModifyTransceivers(std::vector<RtpTransceiverState> transceiver_states,
@@ -318,8 +318,8 @@
       webrtc::PeerConnectionInterface::RTCOfferAnswerOptions offer_options,
       TransceiverStateSurfacer* transceiver_state_surfacer);
   std::vector<std::unique_ptr<RTCRtpSender>>::iterator FindSender(uintptr_t id);
-  std::vector<std::unique_ptr<RTCRtpReceiver>>::iterator FindReceiver(
-      uintptr_t id);
+  std::vector<std::unique_ptr<blink::RTCRtpReceiverImpl>>::iterator
+  FindReceiver(uintptr_t id);
   std::vector<std::unique_ptr<RTCRtpTransceiver>>::iterator FindTransceiver(
       uintptr_t id);
   // For full transceiver implementations, returns the index of
@@ -371,7 +371,7 @@
   // Content layer correspondents of |webrtc::RtpSenderInterface|.
   std::vector<std::unique_ptr<RTCRtpSender>> rtp_senders_;
   // Content layer correspondents of |webrtc::RtpReceiverInterface|.
-  std::vector<std::unique_ptr<RTCRtpReceiver>> rtp_receivers_;
+  std::vector<std::unique_ptr<blink::RTCRtpReceiverImpl>> rtp_receivers_;
   // Content layer correspondents of |webrtc::RtpTransceiverInterface|.
   std::vector<std::unique_ptr<RTCRtpTransceiver>> rtp_transceivers_;
 
diff --git a/content/renderer/media/webrtc/rtc_rtp_sender_unittest.cc b/content/renderer/media/webrtc/rtc_rtp_sender_unittest.cc
index 6804d36..ce7bd41 100644
--- a/content/renderer/media/webrtc/rtc_rtp_sender_unittest.cc
+++ b/content/renderer/media/webrtc/rtc_rtp_sender_unittest.cc
@@ -13,7 +13,6 @@
 #include "base/test/task_environment.h"
 #include "build/build_config.h"
 #include "content/child/child_process.h"
-#include "content/renderer/media/webrtc/test/webrtc_stats_report_obtainer.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/public/platform/modules/mediastream/media_stream_audio_source.h"
 #include "third_party/blink/public/platform/scheduler/test/renderer_scheduler_test_support.h"
@@ -25,6 +24,7 @@
 #include "third_party/blink/public/web/modules/peerconnection/mock_peer_connection_dependency_factory.h"
 #include "third_party/blink/public/web/modules/peerconnection/mock_peer_connection_impl.h"
 #include "third_party/blink/public/web/modules/peerconnection/webrtc_media_stream_track_adapter_map.h"
+#include "third_party/blink/public/web/modules/peerconnection/webrtc_stats_report_obtainer.h"
 #include "third_party/blink/public/web/web_heap.h"
 #include "third_party/webrtc/api/stats/rtc_stats_report.h"
 #include "third_party/webrtc/api/stats/rtcstats_objects.h"
@@ -119,9 +119,9 @@
                           std::move(run_loop));
   }
 
-  scoped_refptr<WebRTCStatsReportObtainer> CallGetStats() {
-    scoped_refptr<WebRTCStatsReportObtainer> obtainer =
-        new WebRTCStatsReportObtainer();
+  scoped_refptr<blink::WebRTCStatsReportObtainer> CallGetStats() {
+    scoped_refptr<blink::WebRTCStatsReportObtainer> obtainer =
+        new blink::WebRTCStatsReportObtainer();
     sender_->GetStats(obtainer->GetStatsCallbackWrapper(), {});
     return obtainer;
   }
diff --git a/content/renderer/media/webrtc/rtc_rtp_transceiver.cc b/content/renderer/media/webrtc/rtc_rtp_transceiver.cc
index f461c77..093213b 100644
--- a/content/renderer/media/webrtc/rtc_rtp_transceiver.cc
+++ b/content/renderer/media/webrtc/rtc_rtp_transceiver.cc
@@ -15,7 +15,7 @@
     scoped_refptr<base::SingleThreadTaskRunner> signaling_task_runner,
     scoped_refptr<webrtc::RtpTransceiverInterface> webrtc_transceiver,
     base::Optional<RtpSenderState> sender_state,
-    base::Optional<RtpReceiverState> receiver_state,
+    base::Optional<blink::RtpReceiverState> receiver_state,
     base::Optional<std::string> mid,
     bool stopped,
     webrtc::RtpTransceiverDirection direction,
@@ -127,15 +127,15 @@
   return *std::move(temp);
 }
 
-const base::Optional<RtpReceiverState>& RtpTransceiverState::receiver_state()
-    const {
+const base::Optional<blink::RtpReceiverState>&
+RtpTransceiverState::receiver_state() const {
   DCHECK(main_task_runner_->BelongsToCurrentThread());
   return receiver_state_;
 }
 
-RtpReceiverState RtpTransceiverState::MoveReceiverState() {
+blink::RtpReceiverState RtpTransceiverState::MoveReceiverState() {
   DCHECK(main_task_runner_->BelongsToCurrentThread());
-  base::Optional<RtpReceiverState> temp(base::nullopt);
+  base::Optional<blink::RtpReceiverState> temp(base::nullopt);
   receiver_state_.swap(temp);
   return *std::move(temp);
 }
@@ -188,8 +188,8 @@
         state_(std::move(state)) {
     sender_ = std::make_unique<RTCRtpSender>(native_peer_connection, track_map,
                                              state_.MoveSenderState());
-    receiver_ = std::make_unique<RTCRtpReceiver>(native_peer_connection,
-                                                 state_.MoveReceiverState());
+    receiver_ = std::make_unique<blink::RTCRtpReceiverImpl>(
+        native_peer_connection, state_.MoveReceiverState());
   }
 
   const RtpTransceiverState& state() const {
@@ -227,7 +227,7 @@
     return sender_.get();
   }
 
-  RTCRtpReceiver* content_receiver() {
+  blink::RTCRtpReceiverImpl* content_receiver() {
     DCHECK(main_task_runner_->BelongsToCurrentThread());
     return receiver_.get();
   }
@@ -261,7 +261,7 @@
   const scoped_refptr<webrtc::RtpTransceiverInterface> webrtc_transceiver_;
   RtpTransceiverState state_;
   std::unique_ptr<RTCRtpSender> sender_;
-  std::unique_ptr<RTCRtpReceiver> receiver_;
+  std::unique_ptr<blink::RTCRtpReceiverImpl> receiver_;
 };
 
 struct RTCRtpTransceiver::RTCRtpTransceiverInternalTraits {
@@ -320,7 +320,7 @@
   return internal_->content_sender();
 }
 
-RTCRtpReceiver* RTCRtpTransceiver::content_receiver() {
+blink::RTCRtpReceiverImpl* RTCRtpTransceiver::content_receiver() {
   return internal_->content_receiver();
 }
 
diff --git a/content/renderer/media/webrtc/rtc_rtp_transceiver.h b/content/renderer/media/webrtc/rtc_rtp_transceiver.h
index aa42efc..ad4c873 100644
--- a/content/renderer/media/webrtc/rtc_rtp_transceiver.h
+++ b/content/renderer/media/webrtc/rtc_rtp_transceiver.h
@@ -8,9 +8,9 @@
 #include "base/memory/scoped_refptr.h"
 #include "base/optional.h"
 #include "base/single_thread_task_runner.h"
-#include "content/renderer/media/webrtc/rtc_rtp_receiver.h"
 #include "content/renderer/media/webrtc/rtc_rtp_sender.h"
 #include "third_party/blink/public/platform/web_rtc_rtp_transceiver.h"
+#include "third_party/blink/public/web/modules/peerconnection/rtc_rtp_receiver_impl.h"
 #include "third_party/blink/public/web/modules/peerconnection/webrtc_media_stream_track_adapter_map.h"
 #include "third_party/webrtc/api/rtp_transceiver_interface.h"
 
@@ -59,7 +59,7 @@
       scoped_refptr<base::SingleThreadTaskRunner> signaling_task_runner,
       scoped_refptr<webrtc::RtpTransceiverInterface> webrtc_transceiver,
       base::Optional<RtpSenderState> sender_state,
-      base::Optional<RtpReceiverState> receiver_state,
+      base::Optional<blink::RtpReceiverState> receiver_state,
       base::Optional<std::string> mid,
       bool stopped,
       webrtc::RtpTransceiverDirection direction,
@@ -83,8 +83,8 @@
   scoped_refptr<webrtc::RtpTransceiverInterface> webrtc_transceiver() const;
   const base::Optional<RtpSenderState>& sender_state() const;
   RtpSenderState MoveSenderState();
-  const base::Optional<RtpReceiverState>& receiver_state() const;
-  RtpReceiverState MoveReceiverState();
+  const base::Optional<blink::RtpReceiverState>& receiver_state() const;
+  blink::RtpReceiverState MoveReceiverState();
   base::Optional<std::string> mid() const;
   bool stopped() const;
   webrtc::RtpTransceiverDirection direction() const;
@@ -98,7 +98,7 @@
   scoped_refptr<webrtc::RtpTransceiverInterface> webrtc_transceiver_;
   bool is_initialized_;
   base::Optional<RtpSenderState> sender_state_;
-  base::Optional<RtpReceiverState> receiver_state_;
+  base::Optional<blink::RtpReceiverState> receiver_state_;
   base::Optional<std::string> mid_;
   bool stopped_;
   webrtc::RtpTransceiverDirection direction_;
@@ -163,7 +163,7 @@
   void set_state(RtpTransceiverState state,
                  TransceiverStateUpdateMode update_mode);
   RTCRtpSender* content_sender();
-  RTCRtpReceiver* content_receiver();
+  blink::RTCRtpReceiverImpl* content_receiver();
 
   blink::WebRTCRtpTransceiverImplementationType ImplementationType()
       const override;
diff --git a/content/renderer/media/webrtc/rtc_rtp_transceiver_unittest.cc b/content/renderer/media/webrtc/rtc_rtp_transceiver_unittest.cc
index 0ffc82d..9bac393 100644
--- a/content/renderer/media/webrtc/rtc_rtp_transceiver_unittest.cc
+++ b/content/renderer/media/webrtc/rtc_rtp_transceiver_unittest.cc
@@ -139,10 +139,10 @@
                        webrtc_transceiver->sender().get(),
                        std::move(sender_track_ref),
                        webrtc_transceiver->sender()->stream_ids()),
-        RtpReceiverState(main_task_runner_, signaling_task_runner(),
-                         webrtc_transceiver->receiver().get(),
-                         std::move(receiver_track_ref),
-                         std::move(receiver_stream_ids)),
+        blink::RtpReceiverState(main_task_runner_, signaling_task_runner(),
+                                webrtc_transceiver->receiver().get(),
+                                std::move(receiver_track_ref),
+                                std::move(receiver_stream_ids)),
         blink::ToBaseOptional(webrtc_transceiver->mid()),
         webrtc_transceiver->stopped(), webrtc_transceiver->direction(),
         blink::ToBaseOptional(webrtc_transceiver->current_direction()),
diff --git a/content/renderer/media/webrtc/transceiver_state_surfacer.cc b/content/renderer/media/webrtc/transceiver_state_surfacer.cc
index 74309bb..3f1fca6 100644
--- a/content/renderer/media/webrtc/transceiver_state_surfacer.cc
+++ b/content/renderer/media/webrtc/transceiver_state_surfacer.cc
@@ -96,7 +96,7 @@
           std::move(sender_track_ref), webrtc_sender->stream_ids());
     }
     // Create the receiver state.
-    base::Optional<RtpReceiverState> receiver_state;
+    base::Optional<blink::RtpReceiverState> receiver_state;
     auto webrtc_receiver = webrtc_transceiver->receiver();
     if (webrtc_receiver) {
       DCHECK(webrtc_receiver->track());
@@ -108,7 +108,7 @@
       for (auto& stream : webrtc_receiver->streams()) {
         receiver_stream_ids.push_back(stream->id());
       }
-      receiver_state = RtpReceiverState(
+      receiver_state = blink::RtpReceiverState(
           main_task_runner_, signaling_task_runner_, webrtc_receiver.get(),
           std::move(receiver_track_ref), std::move(receiver_stream_ids));
     }
diff --git a/content/renderer/media/webrtc/webrtc_set_description_observer.h b/content/renderer/media/webrtc/webrtc_set_description_observer.h
index b4e6be3..050c14d7 100644
--- a/content/renderer/media/webrtc/webrtc_set_description_observer.h
+++ b/content/renderer/media/webrtc/webrtc_set_description_observer.h
@@ -14,10 +14,10 @@
 #include "base/threading/thread_task_runner_handle.h"
 #include "content/common/content_export.h"
 #include "content/renderer/media/webrtc/rtc_peer_connection_handler.h"
-#include "content/renderer/media/webrtc/rtc_rtp_receiver.h"
 #include "content/renderer/media/webrtc/rtc_rtp_sender.h"
 #include "content/renderer/media/webrtc/rtc_rtp_transceiver.h"
 #include "content/renderer/media/webrtc/transceiver_state_surfacer.h"
+#include "third_party/blink/public/web/modules/peerconnection/rtc_rtp_receiver_impl.h"
 #include "third_party/blink/public/web/modules/peerconnection/webrtc_media_stream_track_adapter_map.h"
 #include "third_party/webrtc/api/jsep.h"
 #include "third_party/webrtc/api/peer_connection_interface.h"
diff --git a/content/renderer/media/webrtc/webrtc_set_description_observer_unittest.cc b/content/renderer/media/webrtc/webrtc_set_description_observer_unittest.cc
index 84c9cda7..1e8b137 100644
--- a/content/renderer/media/webrtc/webrtc_set_description_observer_unittest.cc
+++ b/content/renderer/media/webrtc/webrtc_set_description_observer_unittest.cc
@@ -319,7 +319,7 @@
     EXPECT_EQ(sender->stream_ids(), sender_state.stream_ids());
     // Inspect receiver states.
     EXPECT_TRUE(transceiver_state.receiver_state());
-    const RtpReceiverState& receiver_state =
+    const blink::RtpReceiverState& receiver_state =
         *transceiver_state.receiver_state();
     EXPECT_TRUE(receiver_state.is_initialized());
     EXPECT_EQ(receiver.get(), receiver_state.webrtc_receiver());
@@ -353,7 +353,7 @@
         observer_->states().transceiver_states[0];
     EXPECT_FALSE(transceiver_state.sender_state());
     EXPECT_TRUE(transceiver_state.receiver_state());
-    const RtpReceiverState& receiver_state =
+    const blink::RtpReceiverState& receiver_state =
         *transceiver_state.receiver_state();
     EXPECT_TRUE(receiver_state.is_initialized());
     EXPECT_EQ(receiver.get(), receiver_state.webrtc_receiver());
diff --git a/content/renderer/page_properties.cc b/content/renderer/page_properties.cc
index 5d6237f..45b5601 100644
--- a/content/renderer/page_properties.cc
+++ b/content/renderer/page_properties.cc
@@ -14,11 +14,6 @@
     : compositor_deps_(compositor_deps) {}
 PageProperties::~PageProperties() = default;
 
-void PageProperties::SetScreenMetricsEmulator(
-    std::unique_ptr<RenderWidgetScreenMetricsEmulator> emulator) {
-  screen_metrics_emulator_ = std::move(emulator);
-}
-
 CompositorDependencies* PageProperties::GetCompositorDependencies() {
   return compositor_deps_;
 }
diff --git a/content/renderer/page_properties.h b/content/renderer/page_properties.h
index 0af146e..f611e16 100644
--- a/content/renderer/page_properties.h
+++ b/content/renderer/page_properties.h
@@ -11,7 +11,6 @@
 namespace content {
 
 class CompositorDependencies;
-class RenderWidgetScreenMetricsEmulator;
 
 // This interface exposes "page global" concepts to child frames. Historically
 // such state was managed by the RenderView API. However RenderView also has
@@ -37,26 +36,12 @@
   // reduces boilerplate code.
   float GetDeviceScaleFactor() { return screen_info_.device_scale_factor; }
 
-  RenderWidgetScreenMetricsEmulator* ScreenMetricsEmulator() {
-    return screen_metrics_emulator_.get();
-  }
-  const RenderWidgetScreenMetricsEmulator* ScreenMetricsEmulator() const {
-    return screen_metrics_emulator_.get();
-  }
-  void SetScreenMetricsEmulator(
-      std::unique_ptr<RenderWidgetScreenMetricsEmulator> emulator);
-
   CompositorDependencies* GetCompositorDependencies();
 
  private:
   // Properties of the screen hosting the page.
   ScreenInfo screen_info_;
 
-  // TODO(https://crbug.com/1006052): Rename RenderWidgetScreenMetricsEmulator
-  // to RenderViewScreenMetricsEmulator and reroute IPCs through RenderView
-  // instead of RenderWidget.
-  std::unique_ptr<RenderWidgetScreenMetricsEmulator> screen_metrics_emulator_;
-
   CompositorDependencies* compositor_deps_ = nullptr;
 };
 
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 1c53aa8..2ad31d8 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -135,7 +135,6 @@
 #include "content/renderer/render_thread_impl.h"
 #include "content/renderer/render_view_impl.h"
 #include "content/renderer/render_widget_fullscreen_pepper.h"
-#include "content/renderer/render_widget_screen_metrics_emulator.h"
 #include "content/renderer/renderer_blink_platform_impl.h"
 #include "content/renderer/resource_timing_info_conversions.h"
 #include "content/renderer/savable_resources.h"
@@ -2979,21 +2978,6 @@
   return success;
 }
 
-void RenderFrameImpl::DidFailProvisionalLoad(const WebURLError& error,
-                                             const WebString& http_method) {
-  DCHECK_EQ(net::ERR_ABORTED, error.reason());
-  TRACE_EVENT1("navigation,benchmark,rail",
-               "RenderFrameImpl::didFailProvisionalLoad", "id", routing_id_);
-  // Note: It is important this notification occur before DidStopLoading so the
-  //       SSL manager can react to the provisional load failure before being
-  //       notified the load stopped.
-  //
-  NotifyObserversOfFailedProvisionalLoad();
-
-  // Notify the browser that we failed a provisional load with an error.
-  SendFailedProvisionalLoad(http_method.Ascii(), error, frame_);
-}
-
 void RenderFrameImpl::NotifyObserversOfFailedProvisionalLoad() {
   for (auto& observer : observers_)
     observer.DidFailProvisionalLoad();
@@ -4175,14 +4159,8 @@
     return nullptr;
   external_popup_menu_ = std::make_unique<ExternalPopupMenu>(
       this, popup_menu_info, popup_menu_client);
-
-  // Emulation has never worked appropriately for subframes. Don't bother
-  // applying them if this is not a main frame.
-  if (IsMainFrame() &&
-      render_view_->page_properties()->ScreenMetricsEmulator()) {
-    external_popup_menu_->SetOriginScaleForEmulation(
-        render_view_->page_properties()->ScreenMetricsEmulator()->scale());
-  }
+  external_popup_menu_->SetOriginScaleForEmulation(
+      GetLocalRootRenderWidget()->GetEmulatorScale());
   return external_popup_menu_.get();
 #else
   return nullptr;
@@ -5109,6 +5087,7 @@
   browser_side_navigation_pending_ = false;
   sync_navigation_callback_.Cancel();
   mhtml_body_loader_client_.reset();
+  NotifyObserversOfFailedProvisionalLoad();
   if (!IsPerNavigationMojoInterfaceEnabled()) {
     Send(new FrameHostMsg_AbortNavigation(routing_id_));
   } else {
@@ -5200,14 +5179,9 @@
     // them to DIP coordiates relative to the WindowScreenRect.
     blink::WebRect position_in_window(params.x, params.y, 0, 0);
     GetLocalRootRenderWidget()->ConvertViewportToWindow(&position_in_window);
-    if (render_view_->page_properties()->ScreenMetricsEmulator()) {
-      const float scale =
-          render_view_->page_properties()->ScreenMetricsEmulator()->scale();
-      position_in_window.x *= scale;
-      position_in_window.y *= scale;
-    }
-    params.x = position_in_window.x;
-    params.y = position_in_window.y;
+    const float scale = GetLocalRootRenderWidget()->GetEmulatorScale();
+    params.x = position_in_window.x * scale;
+    params.y = position_in_window.y * scale;
   }
 
   // Serializing a GURL longer than kMaxURLChars will fail, so don't do
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
index 1bda8aa..bb3870a 100644
--- a/content/renderer/render_frame_impl.h
+++ b/content/renderer/render_frame_impl.h
@@ -741,8 +741,6 @@
       blink::WebDocumentLoader* document_loader) override;
   void DidStartProvisionalLoad(
       blink::WebDocumentLoader* document_loader) override;
-  void DidFailProvisionalLoad(const blink::WebURLError& error,
-                              const blink::WebString& http_method) override;
   void DidCommitProvisionalLoad(
       const blink::WebHistoryItem& item,
       blink::WebHistoryCommitType commit_type,
diff --git a/content/renderer/render_view_browsertest.cc b/content/renderer/render_view_browsertest.cc
index 32ebc3da..9de7887 100644
--- a/content/renderer/render_view_browsertest.cc
+++ b/content/renderer/render_view_browsertest.cc
@@ -1587,7 +1587,7 @@
   }
 }
 
-TEST_F(RenderViewImplTest, DidFailProvisionalLoadWithErrorForCancellation) {
+TEST_F(RenderViewImplTest, DroppedNavigationStaysInViewSourceMode) {
   GetMainFrame()->EnableViewSourceMode(true);
   WebURLError error(net::ERR_ABORTED, GURL("http://foo"));
   WebLocalFrame* web_frame = GetMainFrame();
@@ -1600,7 +1600,7 @@
   frame()->Navigate(std::move(common_params), CreateCommitNavigationParams());
 
   // A cancellation occurred.
-  view()->GetMainRenderFrame()->DidFailProvisionalLoad(error, "GET");
+  view()->GetMainRenderFrame()->OnDroppedNavigation();
   // Frame should stay in view-source mode.
   EXPECT_TRUE(web_frame->IsViewSourceModeEnabled());
 }
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index 385b4ca..bc69d3b 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -78,7 +78,6 @@
 #include "content/renderer/render_process.h"
 #include "content/renderer/render_thread_impl.h"
 #include "content/renderer/render_widget_fullscreen_pepper.h"
-#include "content/renderer/render_widget_screen_metrics_emulator.h"
 #include "content/renderer/renderer_blink_platform_impl.h"
 #include "content/renderer/savable_resources.h"
 #include "content/renderer/v8_value_converter_impl.h"
@@ -1054,15 +1053,6 @@
   // to do it here.
   bool close_render_widget_here = !main_render_frame_;
 
-  // Disable emulation before destroying everything. Turning off emulation
-  // accesses the WebViewImpl and the main frame (if it exists).
-  // TODO(danakj): Since we are being destroyed, is there even a reason to turn
-  // emulation off before closing?
-  if (page_properties()->ScreenMetricsEmulator()) {
-    page_properties()->ScreenMetricsEmulator()->DisableAndApply();
-    page_properties()->SetScreenMetricsEmulator(nullptr);
-  }
-
   webview_->Close();
   // The webview_ is already destroyed by the time we get here, remove any
   // references to it.
@@ -1478,12 +1468,12 @@
   RenderWidget::ShowCallback opener_callback = base::BindOnce(
       &RenderViewImpl::ShowCreatedPopupWidget, weak_ptr_factory_.GetWeakPtr());
 
-  RenderWidget* render_widget =
+  RenderWidget* opener_render_widget =
       RenderFrameImpl::FromWebFrame(creator)->GetLocalRootRenderWidget();
 
   RenderWidget* popup_widget = RenderWidget::CreateForPopup(
-      widget_routing_id, render_widget->compositor_deps(), page_properties(),
-      blink::mojom::DisplayMode::kUndefined,
+      widget_routing_id, opener_render_widget->compositor_deps(),
+      page_properties(), blink::mojom::DisplayMode::kUndefined,
       /*hidden=*/false,
       /*never_visible=*/false, std::move(widget_channel_receiver));
 
@@ -1495,8 +1485,9 @@
   // Adds a self-reference on the |popup_widget| so it will not be destroyed
   // when leaving scope. The WebPagePopup takes responsibility for Close()ing
   // and thus destroying the RenderWidget.
-  popup_widget->InitForPopup(std::move(opener_callback), popup_web_widget,
-                             render_widget->GetOriginalScreenInfo());
+  popup_widget->InitForPopup(std::move(opener_callback), opener_render_widget,
+                             popup_web_widget,
+                             opener_render_widget->GetOriginalScreenInfo());
   // TODO(crbug.com/419087): RenderWidget has some weird logic for picking a
   // WebWidget which doesn't apply to this case. So we verify. This can go away
   // when RenderWidget::GetWebWidget() is just a simple accessor.
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index 05b8b9f..3897998 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -197,24 +197,14 @@
       : render_widget_(render_widget) {}
 
   void OnLockMouseACK(bool succeeded) override {
-    // TODO(https://crbug.com/995981): Once RenderWidget and WebWidget lifetimes
-    // are synchronized, we should remove these conditionals.
-    WebWidget* web_widget = render_widget_->GetWebWidget();
-    if (!web_widget)
-      return;
-
     if (succeeded)
-      web_widget->DidAcquirePointerLock();
+      render_widget_->GetWebWidget()->DidAcquirePointerLock();
     else
-      web_widget->DidNotAcquirePointerLock();
+      render_widget_->GetWebWidget()->DidNotAcquirePointerLock();
   }
 
   void OnMouseLockLost() override {
-    WebWidget* web_widget = render_widget_->GetWebWidget();
-    if (!web_widget)
-      return;
-
-    web_widget->DidLosePointerLock();
+    render_widget_->GetWebWidget()->DidLosePointerLock();
   }
 
   bool HandleMouseLockedInputEvent(const blink::WebMouseEvent& event) override {
@@ -505,10 +495,19 @@
 }
 
 void RenderWidget::InitForPopup(ShowCallback show_callback,
+                                RenderWidget* opener_widget,
                                 blink::WebPagePopup* web_page_popup,
                                 const ScreenInfo& screen_info) {
   popup_ = true;
   Init(std::move(show_callback), web_page_popup, &screen_info);
+
+  if (opener_widget->device_emulator_) {
+    opener_widget_screen_origin_ =
+        opener_widget->device_emulator_->ViewRectOrigin();
+    opener_original_widget_screen_origin_ =
+        opener_widget->device_emulator_->original_view_rect().origin();
+    opener_emulator_scale_ = opener_widget->GetEmulatorScale();
+  }
 }
 
 void RenderWidget::InitForPepperFullscreen(ShowCallback show_callback,
@@ -583,18 +582,23 @@
   if (is_undead_)
     return false;
 
+  // The EnableDeviceEmulation message is sent to a provisional RenderWidget
+  // before the navigation completes. Some investigation into why is done in
+  // https://chromium-review.googlesource.com/c/chromium/src/+/1853675/5#message-e6edc3fd708d7d267ee981ffe43cae090b37a906
+  // but it's unclear what would need to be done to delay this until after
+  // navigation.
   bool handled = false;
   IPC_BEGIN_MESSAGE_MAP(RenderWidget, message)
     IPC_MESSAGE_HANDLER(WidgetMsg_EnableDeviceEmulation,
                         OnEnableDeviceEmulation)
-    IPC_MESSAGE_HANDLER(WidgetMsg_DisableDeviceEmulation,
-                        OnDisableDeviceEmulation)
   IPC_END_MESSAGE_MAP()
   if (handled)
     return true;
 
-  // TODO(https://crbug.com/1000502): We shouldn't process IPC messages on
-  // provisional frames.
+  // We shouldn't receive IPC messages on provisional frames. It's possible the
+  // message was destined for a RenderWidget that was made undead and then
+  // revived since it keeps the same routing id. Just drop it here if that
+  // happened.
   if (IsForProvisionalFrame())
     return false;
 
@@ -602,11 +606,12 @@
   if (IPC_MESSAGE_CLASS(message) == TextInputClientMsgStart)
     return text_input_client_observer_->OnMessageReceived(message);
 #endif
-  if (mouse_lock_dispatcher_ &&
-      mouse_lock_dispatcher_->OnMessageReceived(message))
+  if (mouse_lock_dispatcher_->OnMessageReceived(message))
     return true;
 
   IPC_BEGIN_MESSAGE_MAP(RenderWidget, message)
+    IPC_MESSAGE_HANDLER(WidgetMsg_DisableDeviceEmulation,
+                        OnDisableDeviceEmulation)
     IPC_MESSAGE_HANDLER(WidgetMsg_ShowContextMenu, OnShowContextMenu)
     IPC_MESSAGE_HANDLER(WidgetMsg_Close, OnClose)
     IPC_MESSAGE_HANDLER(WidgetMsg_WasHidden, OnWasHidden)
@@ -787,7 +792,7 @@
 
   gfx::Size old_visible_viewport_size = visible_viewport_size_;
 
-  if (delegate_ && page_properties_->ScreenMetricsEmulator()) {
+  if (device_emulator_) {
     DCHECK(!auto_resize_mode_);
     DCHECK(!synchronous_resize_mode_for_testing_);
 
@@ -802,13 +807,10 @@
         visual_properties.compositor_viewport_pixel_rect,
         page_properties_->GetScreenInfo());
 
-    // This will call our SynchronizeVisualProperties() method with a
-    // different set of VisualProperties, holding emulated values. Though not
-    // all VisualProperties are modified by the metrics emulator, so it's a
-    // bit unclear to do this with the full structure. Anything it does not
-    // modify can be consumed directly here instead of in
-    // SynchronizeVisualProperties().
-    page_properties_->ScreenMetricsEmulator()->OnSynchronizeVisualProperties(
+    // This will call back into this class to set the widget size, visible
+    // viewport size, screen info and screen rects, based on the device
+    // emulation.
+    device_emulator_->OnSynchronizeVisualProperties(
         visual_properties.screen_info, visual_properties.new_size,
         visual_properties.visible_viewport_size);
   } else {
@@ -932,29 +934,36 @@
 void RenderWidget::OnEnableDeviceEmulation(
     const blink::WebDeviceEmulationParams& params) {
   // Device emulation can only be applied to the local main frame render widget.
-  // TODO(https://crbug.com/1006052): We should fix the IPC to send to
-  // RenderView instead.
+  // TODO(https://crbug.com/1006052): We should move emulation into the browser
+  // and send consistent ScreenInfo and ScreenRects to all RenderWidgets based
+  // on emulation.
   if (!delegate_)
     return;
 
-  if (!page_properties_->ScreenMetricsEmulator()) {
-    page_properties_->SetScreenMetricsEmulator(
-        std::make_unique<RenderWidgetScreenMetricsEmulator>(
-            this, page_properties_->GetScreenInfo(), size_,
-            visible_viewport_size_, widget_screen_rect_, window_screen_rect_));
+  if (!device_emulator_) {
+    device_emulator_ = std::make_unique<RenderWidgetScreenMetricsEmulator>(
+        this, page_properties_->GetScreenInfo(), size_, visible_viewport_size_,
+        widget_screen_rect_, window_screen_rect_);
   }
-  page_properties_->ScreenMetricsEmulator()->ChangeEmulationParams(params);
+  device_emulator_->ChangeEmulationParams(params);
 }
 
 void RenderWidget::OnDisableDeviceEmulation() {
   // Device emulation can only be applied to the local main frame render widget.
-  // TODO(https://crbug.com/1006052): We should fix the IPC to send to
-  // RenderView instead.
+  // TODO(https://crbug.com/1006052): We should move emulation into the browser
+  // and send consistent ScreenInfo and ScreenRects to all RenderWidgets based
+  // on emulation.
   if (!delegate_)
     return;
-  DCHECK(page_properties_->ScreenMetricsEmulator());
-  page_properties_->ScreenMetricsEmulator()->DisableAndApply();
-  page_properties_->SetScreenMetricsEmulator(nullptr);
+  DCHECK(device_emulator_);
+  device_emulator_->DisableAndApply();
+  device_emulator_.reset();
+}
+
+float RenderWidget::GetEmulatorScale() const {
+  if (device_emulator_)
+    return device_emulator_->scale();
+  return 1;
 }
 
 void RenderWidget::SetAutoResizeMode(bool auto_resize,
@@ -2136,42 +2145,24 @@
   return frame_widget->LocalRoot()->IsProvisional();
 }
 
-void RenderWidget::ScreenRectToEmulatedIfNeeded(WebRect* window_rect) const {
-  DCHECK(window_rect);
-
-  if (!popup_)
-    return;
-  RenderWidgetScreenMetricsEmulator* emulator =
-      page_properties_->ScreenMetricsEmulator();
-  if (!emulator)
-    return;
-
-  window_rect->x =
-      emulator->ViewRectOrigin().x() +
-      (window_rect->x - emulator->original_view_rect().origin().x()) /
-          emulator->scale();
-  window_rect->y =
-      emulator->ViewRectOrigin().y() +
-      (window_rect->y - emulator->original_view_rect().origin().y()) /
-          emulator->scale();
+void RenderWidget::ScreenRectToEmulated(gfx::Rect* screen_rect) const {
+  screen_rect->set_x(
+      opener_widget_screen_origin_.x() +
+      (screen_rect->x() - opener_original_widget_screen_origin_.x()) /
+          opener_emulator_scale_);
+  screen_rect->set_y(
+      opener_widget_screen_origin_.y() +
+      (screen_rect->y() - opener_original_widget_screen_origin_.y()) /
+          opener_emulator_scale_);
 }
 
-void RenderWidget::EmulatedToScreenRectIfNeeded(WebRect* window_rect) const {
-  DCHECK(window_rect);
-
-  if (!popup_)
-    return;
-  RenderWidgetScreenMetricsEmulator* emulator =
-      page_properties_->ScreenMetricsEmulator();
-  if (!emulator)
-    return;
-
-  window_rect->x =
-      emulator->original_view_rect().origin().x() +
-      (window_rect->x - emulator->ViewRectOrigin().x()) * emulator->scale();
-  window_rect->y =
-      emulator->original_view_rect().origin().y() +
-      (window_rect->y - emulator->ViewRectOrigin().y()) * emulator->scale();
+void RenderWidget::EmulatedToScreenRect(gfx::Rect* screen_rect) const {
+  screen_rect->set_x(opener_original_widget_screen_origin_.x() +
+                     (screen_rect->x() - opener_widget_screen_origin_.x()) *
+                         opener_emulator_scale_);
+  screen_rect->set_y(opener_original_widget_screen_origin_.y() +
+                     (screen_rect->y() - opener_widget_screen_origin_.y()) *
+                         opener_emulator_scale_);
 }
 
 blink::WebScreenInfo RenderWidget::GetScreenInfo() {
@@ -2212,7 +2203,7 @@
 }
 
 WebRect RenderWidget::WindowRect() {
-  WebRect rect;
+  gfx::Rect rect;
   if (pending_window_rect_count_) {
     // NOTE(mbelshe): If there is a pending_window_rect_, then getting
     // the RootWindowRect is probably going to return wrong results since the
@@ -2224,13 +2215,24 @@
     rect = window_screen_rect_;
   }
 
-  ScreenRectToEmulatedIfNeeded(&rect);
+  // Popup widgets aren't emulated, but the WindowRect (aka WindowScreenRect)
+  // given to them should be.
+  if (opener_emulator_scale_) {
+    DCHECK(popup_);
+    ScreenRectToEmulated(&rect);
+  }
   return rect;
 }
 
 WebRect RenderWidget::ViewRect() {
-  WebRect rect = widget_screen_rect_;
-  ScreenRectToEmulatedIfNeeded(&rect);
+  gfx::Rect rect = widget_screen_rect_;
+
+  // Popup widgets aren't emulated, but the ViewRect (aka WidgetScreenRect)
+  // given to them should be.
+  if (opener_emulator_scale_) {
+    DCHECK(popup_);
+    ScreenRectToEmulated(&rect);
+  }
   return rect;
 }
 
@@ -2248,8 +2250,15 @@
   if (for_child_local_root_frame_)
     return;
 
-  WebRect window_rect = rect_in_screen;
-  EmulatedToScreenRectIfNeeded(&window_rect);
+  gfx::Rect window_rect = rect_in_screen;
+
+  // Popups aren't emulated, but the WidgetScreenRect and WindowScreenRect
+  // given to them are. When they set the WindowScreenRect it is based on those
+  // emulated values, so we reverse the emulation.
+  if (opener_emulator_scale_) {
+    DCHECK(popup_);
+    EmulatedToScreenRect(&window_rect);
+  }
 
   if (synchronous_resize_mode_for_testing_) {
     // This is a web-test-only path. At one point, it was planned to be
@@ -2485,9 +2494,9 @@
 
 void RenderWidget::OnUpdateScreenRects(const gfx::Rect& widget_screen_rect,
                                        const gfx::Rect& window_screen_rect) {
-  if (delegate_ && page_properties_->ScreenMetricsEmulator()) {
-    page_properties_->ScreenMetricsEmulator()->OnUpdateScreenRects(
-        widget_screen_rect, window_screen_rect);
+  if (device_emulator_) {
+    device_emulator_->OnUpdateScreenRects(widget_screen_rect,
+                                          window_screen_rect);
   } else {
     SetScreenRects(widget_screen_rect, window_screen_rect);
   }
@@ -3801,8 +3810,8 @@
 }
 
 const ScreenInfo& RenderWidget::GetOriginalScreenInfo() const {
-  if (page_properties_->ScreenMetricsEmulator())
-    return page_properties_->ScreenMetricsEmulator()->original_screen_info();
+  if (device_emulator_)
+    return device_emulator_->original_screen_info();
   return page_properties_->GetScreenInfo();
 }
 
diff --git a/content/renderer/render_widget.h b/content/renderer/render_widget.h
index 91b535e..c98ddbf2 100644
--- a/content/renderer/render_widget.h
+++ b/content/renderer/render_widget.h
@@ -121,6 +121,7 @@
 class RenderFrameProxy;
 class RenderViewImpl;
 class RenderWidgetDelegate;
+class RenderWidgetScreenMetricsEmulator;
 class WidgetInputHandlerManager;
 struct VisualProperties;
 
@@ -229,8 +230,10 @@
       mojo::PendingReceiver<mojom::Widget> widget_receiver);
 
   // Initialize a new RenderWidget for a popup. The |show_callback| is called
-  // when RenderWidget::Show() happens.
+  // when RenderWidget::Show() happens. The |opener_widget| is the local root
+  // of the frame that is opening the popup.
   void InitForPopup(ShowCallback show_callback,
+                    RenderWidget* opener_widget,
                     blink::WebPagePopup* web_page_popup,
                     const ScreenInfo& screen_info);
 
@@ -496,6 +499,12 @@
                                 bool shrink_viewport) override;
   viz::FrameSinkId GetFrameSinkId() override;
 
+  // Returns the scale being applied to the document in blink by the device
+  // emulator. Returns 1 if there is no emulation active. Use this to position
+  // things when the coordinates did not come from blink, such as from the mouse
+  // position.
+  float GetEmulatorScale() const;
+
   // Registers a SwapPromise to report presentation time and possibly swap time.
   // If |swap_time_callback| is not a null callback, it would be called once
   // swap happens. |presentation_time_callback| will be called some time after
@@ -858,9 +867,9 @@
   blink::WebFrameWidget* GetFrameWidget() const;
 
   // Applies/Removes the DevTools device emulation transformation to/from a
-  // window rect.
-  void ScreenRectToEmulatedIfNeeded(blink::WebRect* window_rect) const;
-  void EmulatedToScreenRectIfNeeded(blink::WebRect* window_rect) const;
+  // screen rect.
+  void ScreenRectToEmulated(gfx::Rect* screen_rect) const;
+  void EmulatedToScreenRect(gfx::Rect* screen_rect) const;
 
   void UpdateSurfaceAndScreenInfo(
       const viz::LocalSurfaceIdAllocation& new_local_surface_id_allocation,
@@ -937,6 +946,19 @@
   // This is valid while |layer_tree_view_| is valid.
   cc::LayerTreeHost* layer_tree_host_ = nullptr;
 
+  // Present when emulation is enabled, only in a main frame RenderWidget. Used
+  // to override values given from the browser such as ScreenInfo,
+  // WidgetScreenRect, WindowScreenRect, and the widget's size.
+  std::unique_ptr<RenderWidgetScreenMetricsEmulator> device_emulator_;
+
+  // When emulation is enabled, and a popup widget is opened, the popup widget
+  // needs these values to move between the popup's (non-emulated) coordinates
+  // and the opener widget's (emulated) coordinates. They are only valid when
+  // the |opener_emulator_scale_| is non-zero.
+  gfx::Point opener_widget_screen_origin_;
+  gfx::Point opener_original_widget_screen_origin_;
+  float opener_emulator_scale_ = 0;
+
   // The rect where this view should be initially shown.
   gfx::Rect initial_rect_;
 
diff --git a/content/renderer/service_worker/embedded_worker_instance_client_impl.cc b/content/renderer/service_worker/embedded_worker_instance_client_impl.cc
index acbb7ce..4269331 100644
--- a/content/renderer/service_worker/embedded_worker_instance_client_impl.cc
+++ b/content/renderer/service_worker/embedded_worker_instance_client_impl.cc
@@ -15,6 +15,7 @@
 #include "content/public/common/content_client.h"
 #include "content/renderer/render_thread_impl.h"
 #include "content/renderer/service_worker/service_worker_context_client.h"
+#include "content/renderer/worker/fetch_client_settings_object_helpers.h"
 #include "mojo/public/cpp/bindings/pending_remote.h"
 #include "third_party/blink/public/common/features.h"
 #include "third_party/blink/public/platform/web_content_settings_client.h"
@@ -166,7 +167,10 @@
 EmbeddedWorkerInstanceClientImpl::BuildStartData(
     const blink::mojom::EmbeddedWorkerStartParams& params) {
   DCHECK(initiator_thread_task_runner_->BelongsToCurrentThread());
-  auto start_data = std::make_unique<blink::WebEmbeddedWorkerStartData>();
+  auto start_data = std::make_unique<blink::WebEmbeddedWorkerStartData>(
+      FetchClientSettingsObjectFromMojomToWeb(
+          params.outside_fetch_client_settings_object));
+
   start_data->script_url = params.script_url;
   start_data->user_agent = blink::WebString::FromUTF8(params.user_agent);
   start_data->script_type = params.script_type;
@@ -176,15 +180,6 @@
           : blink::WebEmbeddedWorkerStartData::kDontWaitForDebugger;
   start_data->devtools_worker_token = params.devtools_worker_token;
 
-  // TODO(bashi): Consider to have a helper function to convert
-  // mojom::FetchClientSettingsObject to WebFetchClientSettingsObject.
-  start_data->outside_fetch_client_settings_object.referrer_policy =
-      params.outside_fetch_client_settings_object->referrer_policy;
-  start_data->outside_fetch_client_settings_object.outgoing_referrer =
-      params.outside_fetch_client_settings_object->outgoing_referrer;
-  start_data->outside_fetch_client_settings_object.insecure_requests_policy =
-      params.outside_fetch_client_settings_object->insecure_requests_policy;
-
   return start_data;
 }
 
diff --git a/content/renderer/worker/fetch_client_settings_object_helpers.cc b/content/renderer/worker/fetch_client_settings_object_helpers.cc
index 7a422d22..cc04c14 100644
--- a/content/renderer/worker/fetch_client_settings_object_helpers.cc
+++ b/content/renderer/worker/fetch_client_settings_object_helpers.cc
@@ -17,4 +17,12 @@
       web_settings_object.insecure_requests_policy);
 }
 
+blink::WebFetchClientSettingsObject FetchClientSettingsObjectFromMojomToWeb(
+    const blink::mojom::FetchClientSettingsObjectPtr& mojom_settings_object) {
+  return blink::WebFetchClientSettingsObject(
+      mojom_settings_object->referrer_policy,
+      mojom_settings_object->outgoing_referrer,
+      mojom_settings_object->insecure_requests_policy);
+}
+
 }  // namespace content
diff --git a/content/renderer/worker/fetch_client_settings_object_helpers.h b/content/renderer/worker/fetch_client_settings_object_helpers.h
index b2a505d..1ffc612d 100644
--- a/content/renderer/worker/fetch_client_settings_object_helpers.h
+++ b/content/renderer/worker/fetch_client_settings_object_helpers.h
@@ -20,6 +20,9 @@
 FetchClientSettingsObjectFromWebToMojom(
     const blink::WebFetchClientSettingsObject& web_settings_object);
 
+blink::WebFetchClientSettingsObject FetchClientSettingsObjectFromMojomToWeb(
+    const blink::mojom::FetchClientSettingsObjectPtr& mojom_settings_object);
+
 }  // namespace content
 
 #endif  // CONTENT_RENDERER_WORKER_FETCH_CLIENT_SETTINGS_OBJECT_HELPERS_H_
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
index 208d98b..e6e271c 100644
--- a/content/test/BUILD.gn
+++ b/content/test/BUILD.gn
@@ -235,8 +235,6 @@
     "../public/test/web_contents_tester.h",
     "../renderer/media/webrtc/mock_web_rtc_peer_connection_handler_client.cc",
     "../renderer/media/webrtc/mock_web_rtc_peer_connection_handler_client.h",
-    "../renderer/media/webrtc/test/webrtc_stats_report_obtainer.cc",
-    "../renderer/media/webrtc/test/webrtc_stats_report_obtainer.h",
     "appcache_test_helper.cc",
     "appcache_test_helper.h",
     "barrier_builder.cc",
@@ -1946,13 +1944,11 @@
     "../renderer/media/webrtc/peer_connection_dependency_factory_unittest.cc",
     "../renderer/media/webrtc/peer_connection_tracker_unittest.cc",
     "../renderer/media/webrtc/rtc_peer_connection_handler_unittest.cc",
-    "../renderer/media/webrtc/rtc_rtp_receiver_unittest.cc",
     "../renderer/media/webrtc/rtc_rtp_sender_unittest.cc",
     "../renderer/media/webrtc/rtc_rtp_transceiver_unittest.cc",
     "../renderer/media/webrtc/task_queue_factory_unittest.cc",
     "../renderer/media/webrtc/transceiver_state_surfacer_unittest.cc",
     "../renderer/media/webrtc/webrtc_audio_renderer_unittest.cc",
-    "../renderer/media/webrtc/webrtc_media_stream_track_adapter_map_unittest.cc",
     "../renderer/media/webrtc/webrtc_set_description_observer_unittest.cc",
     "../renderer/peripheral_content_heuristic_unittest.cc",
     "../renderer/queue_message_swap_promise_unittest.cc",
diff --git a/content/test/data/back_forward_cache/serial/nested-worker.js b/content/test/data/back_forward_cache/serial/nested-worker.js
new file mode 100644
index 0000000..d869eac
--- /dev/null
+++ b/content/test/data/back_forward_cache/serial/nested-worker.js
@@ -0,0 +1,8 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+const worker = new Worker("./worker.js");
+
+// This worker is a simple bidirectional proxy.
+onmessage = message => worker.postMessage(message.data);
+worker.onmessage = message => postMessage(message.data);
diff --git a/content/test/data/back_forward_cache/serial/worker.js b/content/test/data/back_forward_cache/serial/worker.js
new file mode 100644
index 0000000..0eaedac
--- /dev/null
+++ b/content/test/data/back_forward_cache/serial/worker.js
@@ -0,0 +1,7 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+onmessage = async () => {
+  let ports = await navigator.serial.getPorts();
+  postMessage("Found " + ports.length + " ports");
+}
diff --git a/content/test/fuzzer/browser_accessibility_fuzzer.cc b/content/test/fuzzer/browser_accessibility_fuzzer.cc
index 59e9388..f30097c 100644
--- a/content/test/fuzzer/browser_accessibility_fuzzer.cc
+++ b/content/test/fuzzer/browser_accessibility_fuzzer.cc
@@ -160,7 +160,7 @@
                           : OneShotAccessibilityTreeSearch::BACKWARDS);
   search.SetImmediateDescendantsOnly(fdp.ConsumeBool());
   search.SetCanWrapToLastElement(fdp.ConsumeBool());
-  search.SetVisibleOnly(fdp.ConsumeBool());
+  search.SetOnscreenOnly(fdp.ConsumeBool());
   if (fdp.ConsumeBool())
     search.AddPredicate(AccessibilityButtonPredicate);
   if (fdp.ConsumeBool())
diff --git a/fuchsia/engine/BUILD.gn b/fuchsia/engine/BUILD.gn
index 4a8b066..46d5949 100644
--- a/fuchsia/engine/BUILD.gn
+++ b/fuchsia/engine/BUILD.gn
@@ -207,8 +207,6 @@
     "lib/libEGL.so",
     "lib/libGLESv2.so",
     "lib/libfuchsia_egl.so",
-    "lib/libvk_swiftshader.so",
-    "swiftshader/libvk_swiftshader_icd.json",
   ]
 }
 
diff --git a/fuchsia/engine/browser/web_engine_cdm_service.cc b/fuchsia/engine/browser/web_engine_cdm_service.cc
index da929aa..a9d3ab4 100644
--- a/fuchsia/engine/browser/web_engine_cdm_service.cc
+++ b/fuchsia/engine/browser/web_engine_cdm_service.cc
@@ -20,6 +20,7 @@
 #include "media/base/provision_fetcher.h"
 #include "media/fuchsia/cdm/service/fuchsia_cdm_manager.h"
 #include "media/fuchsia/mojom/fuchsia_cdm_provider.mojom.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "third_party/widevine/cdm/widevine_cdm_common.h"
 
 namespace {
@@ -27,10 +28,11 @@
 class FuchsiaCdmProviderImpl
     : public content::FrameServiceBase<media::mojom::FuchsiaCdmProvider> {
  public:
-  FuchsiaCdmProviderImpl(media::FuchsiaCdmManager* cdm_manager,
-                         media::CreateFetcherCB create_fetcher_cb,
-                         content::RenderFrameHost* render_frame_host,
-                         media::mojom::FuchsiaCdmProviderRequest request);
+  FuchsiaCdmProviderImpl(
+      media::FuchsiaCdmManager* cdm_manager,
+      media::CreateFetcherCB create_fetcher_cb,
+      content::RenderFrameHost* render_frame_host,
+      mojo::PendingReceiver<media::mojom::FuchsiaCdmProvider> receiver);
   ~FuchsiaCdmProviderImpl() final;
 
   // media::mojom::FuchsiaCdmProvider implementation.
@@ -50,8 +52,8 @@
     media::FuchsiaCdmManager* cdm_manager,
     media::CreateFetcherCB create_fetcher_cb,
     content::RenderFrameHost* render_frame_host,
-    media::mojom::FuchsiaCdmProviderRequest request)
-    : FrameServiceBase(render_frame_host, std::move(request)),
+    mojo::PendingReceiver<media::mojom::FuchsiaCdmProvider> receiver)
+    : FrameServiceBase(render_frame_host, std::move(receiver)),
       cdm_manager_(cdm_manager),
       create_fetcher_cb_(std::move(create_fetcher_cb)) {
   DCHECK(cdm_manager_);
@@ -67,9 +69,10 @@
                                    std::move(request));
 }
 
-void BindFuchsiaCdmProvider(media::FuchsiaCdmManager* cdm_manager,
-                            media::mojom::FuchsiaCdmProviderRequest request,
-                            content::RenderFrameHost* const frame_host) {
+void BindFuchsiaCdmProvider(
+    media::FuchsiaCdmManager* cdm_manager,
+    mojo::PendingReceiver<media::mojom::FuchsiaCdmProvider> receiver,
+    content::RenderFrameHost* const frame_host) {
   scoped_refptr<network::SharedURLLoaderFactory> loader_factory =
       content::BrowserContext::GetDefaultStoragePartition(
           frame_host->GetProcess()->GetBrowserContext())
@@ -80,7 +83,7 @@
       cdm_manager,
       base::BindRepeating(&content::CreateProvisionFetcher,
                           std::move(loader_factory)),
-      frame_host, std::move(request));
+      frame_host, std::move(receiver));
 }
 
 class WidevineHandler : public media::FuchsiaCdmManager::KeySystemHandler {
diff --git a/google_apis/drive/base_requests_server_unittest.cc b/google_apis/drive/base_requests_server_unittest.cc
index f2c6ec3..0ae87f7e 100644
--- a/google_apis/drive/base_requests_server_unittest.cc
+++ b/google_apis/drive/base_requests_server_unittest.cc
@@ -15,6 +15,7 @@
 #include "google_apis/drive/request_sender.h"
 #include "google_apis/drive/task_util.h"
 #include "google_apis/drive/test_util.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
 #include "mojo/public/cpp/bindings/remote.h"
 #include "net/test/embedded_test_server/embedded_test_server.h"
 #include "net/test/embedded_test_server/http_request.h"
@@ -49,11 +50,12 @@
         network_context_.BindNewPipeAndPassReceiver(),
         std::move(context_params));
 
-    network::mojom::NetworkServiceClientPtr network_service_client_ptr;
+    mojo::PendingRemote<network::mojom::NetworkServiceClient>
+        network_service_client_remote;
     network_service_client_ =
         std::make_unique<network::TestNetworkServiceClient>(
-            mojo::MakeRequest(&network_service_client_ptr));
-    network_service_ptr->SetClient(std::move(network_service_client_ptr),
+            network_service_client_remote.InitWithNewPipeAndPassReceiver());
+    network_service_ptr->SetClient(std::move(network_service_client_remote),
                                    network::mojom::NetworkServiceParams::New());
 
     network::mojom::URLLoaderFactoryParamsPtr params =
diff --git a/google_apis/drive/base_requests_unittest.cc b/google_apis/drive/base_requests_unittest.cc
index 98eaee2..37cf57d6 100644
--- a/google_apis/drive/base_requests_unittest.cc
+++ b/google_apis/drive/base_requests_unittest.cc
@@ -19,6 +19,7 @@
 #include "google_apis/drive/dummy_auth_service.h"
 #include "google_apis/drive/request_sender.h"
 #include "google_apis/drive/test_util.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
 #include "mojo/public/cpp/bindings/remote.h"
 #include "net/test/embedded_test_server/embedded_test_server.h"
 #include "net/test/embedded_test_server/http_response.h"
@@ -126,11 +127,12 @@
         network_context_.BindNewPipeAndPassReceiver(),
         std::move(context_params));
 
-    network::mojom::NetworkServiceClientPtr network_service_client_ptr;
+    mojo::PendingRemote<network::mojom::NetworkServiceClient>
+        network_service_client_remote;
     network_service_client_ =
         std::make_unique<network::TestNetworkServiceClient>(
-            mojo::MakeRequest(&network_service_client_ptr));
-    network_service_ptr->SetClient(std::move(network_service_client_ptr),
+            network_service_client_remote.InitWithNewPipeAndPassReceiver());
+    network_service_ptr->SetClient(std::move(network_service_client_remote),
                                    network::mojom::NetworkServiceParams::New());
 
     network::mojom::URLLoaderFactoryParamsPtr params =
diff --git a/google_apis/drive/drive_api_requests_unittest.cc b/google_apis/drive/drive_api_requests_unittest.cc
index fa2e2a9..a1e4dff 100644
--- a/google_apis/drive/drive_api_requests_unittest.cc
+++ b/google_apis/drive/drive_api_requests_unittest.cc
@@ -27,6 +27,7 @@
 #include "google_apis/drive/dummy_auth_service.h"
 #include "google_apis/drive/request_sender.h"
 #include "google_apis/drive/test_util.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
 #include "mojo/public/cpp/bindings/remote.h"
 #include "net/test/embedded_test_server/embedded_test_server.h"
 #include "net/test/embedded_test_server/http_request.h"
@@ -136,11 +137,12 @@
         network_context_.BindNewPipeAndPassReceiver(),
         std::move(context_params));
 
-    network::mojom::NetworkServiceClientPtr network_service_client_ptr;
+    mojo::PendingRemote<network::mojom::NetworkServiceClient>
+        network_service_client_remote;
     network_service_client_ =
         std::make_unique<network::TestNetworkServiceClient>(
-            mojo::MakeRequest(&network_service_client_ptr));
-    network_service_ptr->SetClient(std::move(network_service_client_ptr),
+            network_service_client_remote.InitWithNewPipeAndPassReceiver());
+    network_service_ptr->SetClient(std::move(network_service_client_remote),
                                    network::mojom::NetworkServiceParams::New());
 
     mojo::PendingRemote<network::mojom::NetworkContextClient>
diff --git a/google_apis/drive/files_list_request_runner_unittest.cc b/google_apis/drive/files_list_request_runner_unittest.cc
index 523e9e4..994b535 100644
--- a/google_apis/drive/files_list_request_runner_unittest.cc
+++ b/google_apis/drive/files_list_request_runner_unittest.cc
@@ -17,6 +17,7 @@
 #include "google_apis/drive/base_requests.h"
 #include "google_apis/drive/dummy_auth_service.h"
 #include "google_apis/drive/request_sender.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
 #include "mojo/public/cpp/bindings/remote.h"
 #include "net/test/embedded_test_server/embedded_test_server.h"
 #include "net/test/embedded_test_server/http_request.h"
@@ -82,11 +83,12 @@
         network_context_.BindNewPipeAndPassReceiver(),
         std::move(context_params));
 
-    network::mojom::NetworkServiceClientPtr network_service_client_ptr;
+    mojo::PendingRemote<network::mojom::NetworkServiceClient>
+        network_service_client_remote;
     network_service_client_ =
         std::make_unique<network::TestNetworkServiceClient>(
-            mojo::MakeRequest(&network_service_client_ptr));
-    network_service_ptr->SetClient(std::move(network_service_client_ptr),
+            network_service_client_remote.InitWithNewPipeAndPassReceiver());
+    network_service_ptr->SetClient(std::move(network_service_client_remote),
                                    network::mojom::NetworkServiceParams::New());
 
     network::mojom::URLLoaderFactoryParamsPtr params =
diff --git a/gpu/command_buffer/common/gpu_memory_buffer_support.cc b/gpu/command_buffer/common/gpu_memory_buffer_support.cc
index 002e93b..fa6f40c 100644
--- a/gpu/command_buffer/common/gpu_memory_buffer_support.cc
+++ b/gpu/command_buffer/common/gpu_memory_buffer_support.cc
@@ -14,44 +14,6 @@
 
 namespace gpu {
 
-unsigned InternalFormatForGpuMemoryBufferFormat(gfx::BufferFormat format) {
-  switch (format) {
-    case gfx::BufferFormat::R_8:
-      return GL_RED_EXT;
-    case gfx::BufferFormat::R_16:
-      return GL_R16_EXT;
-    case gfx::BufferFormat::RG_88:
-      return GL_RG_EXT;
-    case gfx::BufferFormat::BGR_565:
-      return GL_RGB;
-    case gfx::BufferFormat::RGBA_4444:
-      return GL_RGBA;
-    case gfx::BufferFormat::RGBX_8888:
-      return GL_RGB;
-    case gfx::BufferFormat::RGBA_8888:
-      return GL_RGBA;
-    case gfx::BufferFormat::BGRX_8888:
-      return GL_RGB;
-    case gfx::BufferFormat::BGRX_1010102:
-      return GL_RGB10_A2_EXT;
-    case gfx::BufferFormat::RGBX_1010102:
-      return GL_RGB10_A2_EXT;
-    case gfx::BufferFormat::BGRA_8888:
-      return GL_BGRA_EXT;
-    case gfx::BufferFormat::RGBA_F16:
-      return GL_RGBA;
-    case gfx::BufferFormat::YVU_420:
-      return GL_RGB_YCRCB_420_CHROMIUM;
-    case gfx::BufferFormat::YUV_420_BIPLANAR:
-      return GL_RGB_YCBCR_420V_CHROMIUM;
-    case gfx::BufferFormat::P010:
-      return GL_RGB_YCBCR_P010_CHROMIUM;
-    default:
-      NOTREACHED();
-      return 0;
-  }
-}
-
 bool IsImageFromGpuMemoryBufferFormatSupported(
     gfx::BufferFormat format,
     const gpu::Capabilities& capabilities) {
diff --git a/gpu/command_buffer/common/gpu_memory_buffer_support.h b/gpu/command_buffer/common/gpu_memory_buffer_support.h
index c14b9e0..7d51d66 100644
--- a/gpu/command_buffer/common/gpu_memory_buffer_support.h
+++ b/gpu/command_buffer/common/gpu_memory_buffer_support.h
@@ -39,10 +39,6 @@
 
 struct Capabilities;
 
-// Returns the GL internalformat that is compatible with |format|.
-GPU_EXPORT unsigned InternalFormatForGpuMemoryBufferFormat(
-    gfx::BufferFormat format);
-
 // Returns true if creating an image for a GpuMemoryBuffer with |format| is
 // supported by |capabilities|.
 GPU_EXPORT bool IsImageFromGpuMemoryBufferFormatSupported(
diff --git a/gpu/command_buffer/service/gl_stream_texture_image_stub.cc b/gpu/command_buffer/service/gl_stream_texture_image_stub.cc
index 4abec36..118b7c1 100644
--- a/gpu/command_buffer/service/gl_stream_texture_image_stub.cc
+++ b/gpu/command_buffer/service/gl_stream_texture_image_stub.cc
@@ -16,6 +16,9 @@
 unsigned GLStreamTextureImageStub::GetInternalFormat() {
   return 0;
 }
+unsigned GLStreamTextureImageStub::GetDataType() {
+  return 0;
+}
 GLStreamTextureImageStub::BindOrCopy
 GLStreamTextureImageStub::ShouldBindOrCopy() {
   return BIND;
diff --git a/gpu/command_buffer/service/gl_stream_texture_image_stub.h b/gpu/command_buffer/service/gl_stream_texture_image_stub.h
index 8de116f9..9c35dae 100644
--- a/gpu/command_buffer/service/gl_stream_texture_image_stub.h
+++ b/gpu/command_buffer/service/gl_stream_texture_image_stub.h
@@ -17,6 +17,7 @@
   // Overridden from GLImage:
   gfx::Size GetSize() override;
   unsigned GetInternalFormat() override;
+  unsigned GetDataType() override;
   BindOrCopy ShouldBindOrCopy() override;
   bool BindTexImage(unsigned target) override;
   void ReleaseTexImage(unsigned target) override {}
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
index 16e5229..4145584 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
@@ -3184,20 +3184,20 @@
     buffer_format = gfx::BufferFormat::RGBX_8888;
 #endif
   }
-  DCHECK_EQ(format, gpu::InternalFormatForGpuMemoryBufferFormat(buffer_format));
   scoped_refptr<gl::GLImage> image =
       decoder_->GetContextGroup()->image_factory()->CreateAnonymousImage(
           size, buffer_format, gfx::BufferUsage::SCANOUT, &is_cleared);
-  if (!image || !image->BindTexImage(Target()))
+  if (!image)
+    return false;
+  DCHECK_EQ(format, image->GetDataFormat());
+  if (!image->BindTexImage(Target()))
     return false;
 
   image_ = image;
   decoder_->texture_manager()->SetLevelInfo(
       texture_ref_.get(), Target(), 0, image_->GetInternalFormat(),
-      size.width(), size.height(), 1, 0,
-      TextureManager::ExtractFormatFromStorageFormat(
-          image_->GetInternalFormat()),
-      GL_UNSIGNED_BYTE, gfx::Rect(size));
+      size.width(), size.height(), 1, 0, image->GetDataFormat(),
+      image->GetDataType(), gfx::Rect(size));
   decoder_->texture_manager()->SetLevelImage(texture_ref_.get(), Target(), 0,
                                              image_.get(), Texture::BOUND);
 
@@ -18424,9 +18424,7 @@
 
   texture_manager()->SetLevelInfo(
       texture_ref, target, 0, image->GetInternalFormat(), width, height, 1, 0,
-      TextureManager::ExtractFormatFromStorageFormat(
-          image->GetInternalFormat()),
-      GL_UNSIGNED_BYTE, cleared_rect);
+      image->GetDataFormat(), image->GetDataType(), cleared_rect);
   texture_manager()->SetLevelImage(texture_ref, target, 0, image.get(),
                                    Texture::BOUND);
 
@@ -18767,11 +18765,10 @@
   gfx::Size size = image->GetSize();
   GLenum texture_internalformat =
       internalformat ? internalformat : image->GetInternalFormat();
-  texture_manager()->SetLevelInfo(
-      texture_ref, target, 0, texture_internalformat, size.width(),
-      size.height(), 1, 0,
-      TextureManager::ExtractFormatFromStorageFormat(texture_internalformat),
-      GL_UNSIGNED_BYTE, gfx::Rect(size));
+  texture_manager()->SetLevelInfo(texture_ref, target, 0,
+                                  texture_internalformat, size.width(),
+                                  size.height(), 1, 0, image->GetDataFormat(),
+                                  image->GetDataType(), gfx::Rect(size));
   texture_manager()->SetLevelImage(texture_ref, target, 0, image, image_state);
 }
 
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_textures.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_textures.cc
index 8aa4c2e9..03ea64af 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_textures.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_textures.cc
@@ -3699,6 +3699,8 @@
   // Overridden from gl::GLImage:
   MOCK_METHOD0(GetSize, gfx::Size());
   MOCK_METHOD0(GetInternalFormat, unsigned());
+  MOCK_METHOD0(GetDataFormat, unsigned());
+  MOCK_METHOD0(GetDataType, unsigned());
   MOCK_METHOD0(ShouldBindOrCopy, gl::GLImage::BindOrCopy());
   MOCK_METHOD1(BindTexImage, bool(unsigned));
   MOCK_METHOD1(ReleaseTexImage, void(unsigned));
@@ -3753,6 +3755,14 @@
       .Times(1)
       .WillOnce(Return(GL_RGBA))
       .RetiresOnSaturation();
+  EXPECT_CALL(*image.get(), GetDataFormat())
+      .Times(1)
+      .WillOnce(Return(GL_RGBA))
+      .RetiresOnSaturation();
+  EXPECT_CALL(*image.get(), GetDataType())
+      .Times(1)
+      .WillOnce(Return(GL_UNSIGNED_BYTE))
+      .RetiresOnSaturation();
   // ScopedGLErrorSuppressor calls GetError on its constructor and destructor.
   DoBindTexImage2DCHROMIUM(GL_TEXTURE_2D, kImageId);
   Mock::VerifyAndClearExpectations(gl_.get());
@@ -3817,6 +3827,14 @@
       .Times(1)
       .WillOnce(Return(GL_RGBA))
       .RetiresOnSaturation();
+  EXPECT_CALL(*image.get(), GetDataFormat())
+      .Times(1)
+      .WillOnce(Return(GL_RGBA))
+      .RetiresOnSaturation();
+  EXPECT_CALL(*image.get(), GetDataType())
+      .Times(1)
+      .WillOnce(Return(GL_UNSIGNED_BYTE))
+      .RetiresOnSaturation();
   DoBindTexImage2DCHROMIUM(GL_TEXTURE_2D, kImageId);
 
   DoBindFramebuffer(
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.cc b/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.cc
index b8760f0..44e0e17 100644
--- a/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.cc
+++ b/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.cc
@@ -681,15 +681,13 @@
       cleared_rect = gfx::Rect(size());
   }
 
-  GLenum gl_format = viz::GLDataFormat(format());
-  GLenum gl_type = viz::GLDataType(format());
   texture->SetLevelInfo(target, 0, egl_image->GetInternalFormat(),
-                        size().width(), size().height(), 1, 0, gl_format,
-                        gl_type, cleared_rect);
+                        size().width(), size().height(), 1, 0,
+                        egl_image->GetDataFormat(), egl_image->GetDataType(),
+                        cleared_rect);
   texture->SetLevelImage(target, 0, egl_image.get(), gles2::Texture::BOUND);
   texture->SetImmutable(true, false);
   api->glBindTextureFn(target, old_texture_binding);
-  DCHECK_EQ(egl_image->GetInternalFormat(), gl_format);
   return texture;
 }
 
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_d3d.cc b/gpu/command_buffer/service/shared_image_backing_factory_d3d.cc
index 9e36164..100c60b 100644
--- a/gpu/command_buffer/service/shared_image_backing_factory_d3d.cc
+++ b/gpu/command_buffer/service/shared_image_backing_factory_d3d.cc
@@ -494,8 +494,11 @@
   // The GL internal format can differ from the underlying swap chain format
   // e.g. RGBA8 or RGB8 instead of BGRA8.
   const GLenum internal_format = viz::GLInternalFormat(format);
-  auto image = base::MakeRefCounted<gl::GLImageD3D>(size, internal_format,
-                                                    d3d11_texture, swap_chain);
+  const GLenum data_type = viz::GLDataType(format);
+  const GLenum data_format = viz::GLDataFormat(format);
+  auto image = base::MakeRefCounted<gl::GLImageD3D>(
+      size, internal_format, data_type, d3d11_texture, swap_chain);
+  DCHECK_EQ(image->GetDataFormat(), data_format);
   if (!image->Initialize()) {
     DLOG(ERROR) << "GLImageD3D::Initialize failed";
     return nullptr;
@@ -517,11 +520,6 @@
                                &texture_memory_size);
     texture_passthrough->SetEstimatedSize(texture_memory_size);
   } else {
-    const GLenum gl_format =
-        gles2::TextureManager::ExtractFormatFromStorageFormat(internal_format);
-    const GLenum gl_type =
-        gles2::TextureManager::ExtractTypeFromStorageFormat(internal_format);
-
     texture = new gles2::Texture(service_id);
     texture->SetLightweightRef();
     texture->SetTarget(target, 1);
@@ -531,7 +529,7 @@
     texture->sampler_state_.wrap_t = GL_CLAMP_TO_EDGE;
     texture->SetLevelInfo(target, 0 /* level */, internal_format, size.width(),
                           size.height(), 1 /* depth */, 0 /* border */,
-                          gl_format, gl_type, gfx::Rect(size));
+                          data_format, data_type, gfx::Rect(size));
     texture->SetLevelImage(target, 0 /* level */, image.get(),
                            gles2::Texture::BOUND);
     texture->SetImmutable(true, false);
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.cc b/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.cc
index da7eb78..86a1c586 100644
--- a/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.cc
+++ b/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.cc
@@ -13,7 +13,6 @@
 #include "base/trace_event/trace_event.h"
 #include "components/viz/common/resources/resource_format_utils.h"
 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
-#include "gpu/command_buffer/common/gpu_memory_buffer_support.h"
 #include "gpu/command_buffer/common/shared_image_trace_utils.h"
 #include "gpu/command_buffer/common/shared_image_usage.h"
 #include "gpu/command_buffer/service/gles2_cmd_decoder.h"
@@ -30,6 +29,7 @@
 #include "ui/gfx/buffer_format_util.h"
 #include "ui/gfx/color_space.h"
 #include "ui/gfx/geometry/size.h"
+#include "ui/gl/buffer_format_utils.h"
 #include "ui/gl/gl_bindings.h"
 #include "ui/gl/gl_fence.h"
 #include "ui/gl/gl_gl_api_implementation.h"
@@ -763,7 +763,7 @@
     info.allow_scanout = true;
     info.buffer_format = buffer_format;
     DCHECK_EQ(info.gl_format,
-              gpu::InternalFormatForGpuMemoryBufferFormat(buffer_format));
+              gl::BufferFormatToGLInternalFormat(buffer_format));
     if (base::Contains(gpu_preferences.texture_target_exception_list,
                        gfx::BufferUsageAndFormat(gfx::BufferUsage::SCANOUT,
                                                  buffer_format)))
@@ -1010,10 +1010,8 @@
 
   GLuint internal_format =
       is_rgb_emulation ? GL_RGB : image->GetInternalFormat();
-  GLenum gl_format =
-      gles2::TextureManager::ExtractFormatFromStorageFormat(internal_format);
-  GLenum gl_type =
-      gles2::TextureManager::ExtractTypeFromStorageFormat(internal_format);
+  GLenum gl_format = is_rgb_emulation ? GL_RGB : image->GetDataFormat();
+  GLenum gl_type = image->GetDataType();
 
   return MakeBacking(use_passthrough_, mailbox, target, service_id, image,
                      image_state, internal_format, gl_format, gl_type, nullptr,
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_gl_texture_unittest.cc b/gpu/command_buffer/service/shared_image_backing_factory_gl_texture_unittest.cc
index dc487f72..7741f56 100644
--- a/gpu/command_buffer/service/shared_image_backing_factory_gl_texture_unittest.cc
+++ b/gpu/command_buffer/service/shared_image_backing_factory_gl_texture_unittest.cc
@@ -30,6 +30,7 @@
 #include "third_party/skia/include/gpu/GrBackendSurface.h"
 #include "ui/gfx/buffer_format_util.h"
 #include "ui/gfx/color_space.h"
+#include "ui/gl/buffer_format_utils.h"
 #include "ui/gl/gl_bindings.h"
 #include "ui/gl/gl_context.h"
 #include "ui/gl/gl_image_shared_memory.h"
@@ -561,7 +562,10 @@
 
   gfx::Size GetSize() override { return size_; }
   unsigned GetInternalFormat() override {
-    return InternalFormatForGpuMemoryBufferFormat(format_);
+    return gl::BufferFormatToGLInternalFormat(format_);
+  }
+  unsigned GetDataType() override {
+    return gl::BufferFormatToGLDataType(format_);
   }
 
   BindOrCopy ShouldBindOrCopy() override { return BIND; }
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_iosurface.mm b/gpu/command_buffer/service/shared_image_backing_factory_iosurface.mm
index 37763d4..2ca66f31 100644
--- a/gpu/command_buffer/service/shared_image_backing_factory_iosurface.mm
+++ b/gpu/command_buffer/service/shared_image_backing_factory_iosurface.mm
@@ -554,7 +554,7 @@
                            gles2::Texture::BOUND);
     texture->SetImmutable(true, false);
 
-    DCHECK_EQ(image->GetInternalFormat(), gl_info.format);
+    DCHECK_EQ(image->GetInternalFormat(), gl_info.internal_format);
 
     api->glBindTextureFn(GL_TEXTURE_RECTANGLE, old_texture_binding);
     return texture;
diff --git a/gpu/command_buffer/service/texture_definition.cc b/gpu/command_buffer/service/texture_definition.cc
index 0ecb375..e0b48d0 100644
--- a/gpu/command_buffer/service/texture_definition.cc
+++ b/gpu/command_buffer/service/texture_definition.cc
@@ -34,6 +34,7 @@
   // Implement GLImage.
   gfx::Size GetSize() override;
   unsigned GetInternalFormat() override;
+  unsigned GetDataType() override;
   BindOrCopy ShouldBindOrCopy() override;
   bool BindTexImage(unsigned target) override;
   void ReleaseTexImage(unsigned target) override;
@@ -84,6 +85,10 @@
   return GL_RGBA;
 }
 
+unsigned GLImageSync::GetDataType() {
+  return GL_UNSIGNED_BYTE;
+}
+
 GLImageSync::BindOrCopy GLImageSync::ShouldBindOrCopy() {
   return BIND;
 }
diff --git a/gpu/command_buffer/tests/gl_manager.cc b/gpu/command_buffer/tests/gl_manager.cc
index c05876f..4066803 100644
--- a/gpu/command_buffer/tests/gl_manager.cc
+++ b/gpu/command_buffer/tests/gl_manager.cc
@@ -42,6 +42,7 @@
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gfx/buffer_format_util.h"
 #include "ui/gfx/gpu_memory_buffer.h"
+#include "ui/gl/buffer_format_utils.h"
 #include "ui/gl/gl_context.h"
 #include "ui/gl/gl_image_ref_counted_memory.h"
 #include "ui/gl/gl_share_group.h"
@@ -501,8 +502,8 @@
   if (use_iosurface_memory_buffers_) {
     IOSurfaceGpuMemoryBuffer* gpu_memory_buffer =
         IOSurfaceGpuMemoryBuffer::FromClientBuffer(buffer);
-    unsigned internalformat = gpu::InternalFormatForGpuMemoryBufferFormat(
-        gpu_memory_buffer->GetFormat());
+    unsigned internalformat =
+        gl::BufferFormatToGLInternalFormat(gpu_memory_buffer->GetFormat());
     scoped_refptr<gl::GLImageIOSurface> image(
         gl::GLImageIOSurface::Create(size, internalformat));
     if (!image->Initialize(gpu_memory_buffer->iosurface(),
diff --git a/gpu/command_buffer/tests/gl_oes_egl_image_unittest.cc b/gpu/command_buffer/tests/gl_oes_egl_image_unittest.cc
index 0ee1c8c..cf0804b2 100644
--- a/gpu/command_buffer/tests/gl_oes_egl_image_unittest.cc
+++ b/gpu/command_buffer/tests/gl_oes_egl_image_unittest.cc
@@ -127,10 +127,10 @@
 
   // Bind the image.
   EXPECT_TRUE(image->BindTexImage(GL_TEXTURE_2D));
-  unsigned internal_format = image->GetInternalFormat();
   gl_.decoder()->SetLevelInfo(
-      texture_id, 0 /* level */, internal_format, size.width(), size.height(),
-      1 /* depth */, internal_format, GL_UNSIGNED_BYTE, gfx::Rect(size));
+      texture_id, 0 /* level */, image->GetInternalFormat(), size.width(),
+      size.height(), 1 /* depth */, image->GetDataFormat(),
+      image->GetDataType(), gfx::Rect(size));
   gl_.decoder()->BindImage(texture_id, GL_TEXTURE_2D, image.get(),
                            true /* can_bind_to_sampler */);
 
diff --git a/gpu/command_buffer/tests/texture_image_factory.cc b/gpu/command_buffer/tests/texture_image_factory.cc
index 0fe36a8..83d42c5e 100644
--- a/gpu/command_buffer/tests/texture_image_factory.cc
+++ b/gpu/command_buffer/tests/texture_image_factory.cc
@@ -16,13 +16,14 @@
 
   gfx::Size GetSize() override { return size_; }
   unsigned GetInternalFormat() override { return GL_RGBA; }
+  unsigned GetDataType() override { return GL_UNSIGNED_BYTE; }
   BindOrCopy ShouldBindOrCopy() override { return BIND; }
   bool BindTexImage(unsigned target) override {
     glTexImage2D(target,
                  0,  // mip level
                  GetInternalFormat(), size_.width(), size_.height(),
                  0,  // border
-                 GetInternalFormat(), GL_UNSIGNED_BYTE, nullptr);
+                 GetDataFormat(), GetDataType(), nullptr);
     return true;
   }
   bool BindTexImageWithInternalformat(unsigned target,
@@ -31,7 +32,7 @@
                  0,  // mip level
                  GetInternalFormat(), size_.width(), size_.height(),
                  0,  // border
-                 GetInternalFormat(), GL_UNSIGNED_BYTE, nullptr);
+                 GetDataFormat(), GetDataType(), nullptr);
     return true;
   }
   void ReleaseTexImage(unsigned target) override {}
diff --git a/gpu/ipc/service/gpu_memory_buffer_factory_io_surface.cc b/gpu/ipc/service/gpu_memory_buffer_factory_io_surface.cc
index c060224..5e5b56c 100644
--- a/gpu/ipc/service/gpu_memory_buffer_factory_io_surface.cc
+++ b/gpu/ipc/service/gpu_memory_buffer_factory_io_surface.cc
@@ -11,6 +11,7 @@
 #include "gpu/command_buffer/common/gpu_memory_buffer_support.h"
 #include "ui/gfx/buffer_format_util.h"
 #include "ui/gfx/mac/io_surface.h"
+#include "ui/gl/buffer_format_utils.h"
 #include "ui/gl/gl_bindings.h"
 #include "ui/gl/gl_image_io_surface.h"
 
@@ -123,7 +124,7 @@
     return scoped_refptr<gl::GLImage>();
   }
 
-  unsigned internalformat = gpu::InternalFormatForGpuMemoryBufferFormat(format);
+  unsigned internalformat = gl::BufferFormatToGLInternalFormat(format);
   scoped_refptr<gl::GLImageIOSurface> image(
       gl::GLImageIOSurface::Create(size, internalformat));
   if (!image->Initialize(it->second.get(), handle.id, format)) {
@@ -169,7 +170,7 @@
     LOG(ERROR) << "Failed to create IOSurface mach port.";
   }
 
-  unsigned internalformat = gpu::InternalFormatForGpuMemoryBufferFormat(format);
+  unsigned internalformat = gl::BufferFormatToGLInternalFormat(format);
   scoped_refptr<gl::GLImageIOSurface> image(
       gl::GLImageIOSurface::Create(size, internalformat));
   // Use an invalid GMB id so that we can differentiate between anonymous and
diff --git a/gpu/ipc/service/stream_texture_android.cc b/gpu/ipc/service/stream_texture_android.cc
index dd775a1e..0a6237b8 100644
--- a/gpu/ipc/service/stream_texture_android.cc
+++ b/gpu/ipc/service/stream_texture_android.cc
@@ -261,6 +261,10 @@
   return GL_RGBA;
 }
 
+unsigned StreamTexture::GetDataType() {
+  return GL_UNSIGNED_BYTE;
+}
+
 bool StreamTexture::OnMessageReceived(const IPC::Message& message) {
   bool handled = true;
   IPC_BEGIN_MESSAGE_MAP(StreamTexture, message)
diff --git a/gpu/ipc/service/stream_texture_android.h b/gpu/ipc/service/stream_texture_android.h
index 212dfe0..4f3f91f 100644
--- a/gpu/ipc/service/stream_texture_android.h
+++ b/gpu/ipc/service/stream_texture_android.h
@@ -56,6 +56,7 @@
   // gl::GLImage implementation:
   gfx::Size GetSize() override;
   unsigned GetInternalFormat() override;
+  unsigned GetDataType() override;
   BindOrCopy ShouldBindOrCopy() override;
   bool BindTexImage(unsigned target) override;
   void ReleaseTexImage(unsigned target) override;
diff --git a/infra/config/cr-buildbucket.cfg b/infra/config/cr-buildbucket.cfg
index 95ca7dc..df1e0162 100644
--- a/infra/config/cr-buildbucket.cfg
+++ b/infra/config/cr-buildbucket.cfg
@@ -960,6 +960,14 @@
   dimensions: "ssd:0"
 }
 
+builder_mixins {
+  name: "full-codebase-coverage"
+  mixins: "code-coverage"
+  mixins: "builderless"
+  dimensions: "ssd:1"
+  dimensions: "cores:32"
+}
+
 buckets {
   name: "ci"
   acl_sets: "ci"
@@ -1197,12 +1205,9 @@
 
     builders {
       name: "android-code-coverage"
-      mixins: "code-coverage"
+      mixins: "full-codebase-coverage"
       mixins: "java-coverage"
       mixins: "linux-xenial"
-      mixins: "builderless"
-      dimensions: "cores:32"
-      dimensions: "ssd:1"
     }
 
     builders {
@@ -1543,13 +1548,9 @@
 
     builders {
       name: "chromeos-vm-code-coverage"
-      mixins: "code-coverage"
+      mixins: "full-codebase-coverage"
       mixins: "clang-coverage"
-      mixins: "fyi-ci"
       mixins: "linux-xenial"
-      mixins: "builderless"
-      dimensions: "cores:32"
-      dimensions: "ssd:1"
     }
 
     builders {
@@ -1567,13 +1568,9 @@
 
     builders {
       name: "linux-chromeos-code-coverage"
-      mixins: "code-coverage"
+      mixins: "full-codebase-coverage"
       mixins: "clang-coverage"
-      mixins: "fyi-ci"
       mixins: "linux-xenial"
-      mixins: "builderless"
-      dimensions: "cores:32"
-      dimensions: "ssd:1"
     }
 
     builders {
@@ -2284,6 +2281,12 @@
       mixins: "win-ci"
       mixins: "deterministic"
     }
+    builders {
+      name: "win10-code-coverage"
+      mixins: "full-codebase-coverage"
+      mixins: "clang-coverage"
+      dimensions: "os:Windows-10"
+    }
 
     # chromium.clang
     builders {
diff --git a/infra/config/generated/cr-buildbucket.cfg b/infra/config/generated/cr-buildbucket.cfg
index 95ca7dc..df1e0162 100644
--- a/infra/config/generated/cr-buildbucket.cfg
+++ b/infra/config/generated/cr-buildbucket.cfg
@@ -960,6 +960,14 @@
   dimensions: "ssd:0"
 }
 
+builder_mixins {
+  name: "full-codebase-coverage"
+  mixins: "code-coverage"
+  mixins: "builderless"
+  dimensions: "ssd:1"
+  dimensions: "cores:32"
+}
+
 buckets {
   name: "ci"
   acl_sets: "ci"
@@ -1197,12 +1205,9 @@
 
     builders {
       name: "android-code-coverage"
-      mixins: "code-coverage"
+      mixins: "full-codebase-coverage"
       mixins: "java-coverage"
       mixins: "linux-xenial"
-      mixins: "builderless"
-      dimensions: "cores:32"
-      dimensions: "ssd:1"
     }
 
     builders {
@@ -1543,13 +1548,9 @@
 
     builders {
       name: "chromeos-vm-code-coverage"
-      mixins: "code-coverage"
+      mixins: "full-codebase-coverage"
       mixins: "clang-coverage"
-      mixins: "fyi-ci"
       mixins: "linux-xenial"
-      mixins: "builderless"
-      dimensions: "cores:32"
-      dimensions: "ssd:1"
     }
 
     builders {
@@ -1567,13 +1568,9 @@
 
     builders {
       name: "linux-chromeos-code-coverage"
-      mixins: "code-coverage"
+      mixins: "full-codebase-coverage"
       mixins: "clang-coverage"
-      mixins: "fyi-ci"
       mixins: "linux-xenial"
-      mixins: "builderless"
-      dimensions: "cores:32"
-      dimensions: "ssd:1"
     }
 
     builders {
@@ -2284,6 +2281,12 @@
       mixins: "win-ci"
       mixins: "deterministic"
     }
+    builders {
+      name: "win10-code-coverage"
+      mixins: "full-codebase-coverage"
+      mixins: "clang-coverage"
+      dimensions: "os:Windows-10"
+    }
 
     # chromium.clang
     builders {
diff --git a/infra/config/generated/luci-milo.cfg b/infra/config/generated/luci-milo.cfg
index dd06325..ee9f053 100644
--- a/infra/config/generated/luci-milo.cfg
+++ b/infra/config/generated/luci-milo.cfg
@@ -2179,6 +2179,11 @@
     short_name: "ios"
   }
   builders {
+    name: "buildbucket/luci.chromium.ci/win10-code-coverage"
+    category: "code_coverage"
+    short_name: "win"
+  }
+  builders {
     name: "buildbucket/luci.chromium.ci/ios-simulator-cronet"
     category: "cronet"
   }
diff --git a/infra/config/generated/luci-scheduler.cfg b/infra/config/generated/luci-scheduler.cfg
index a52f241..52555b7 100644
--- a/infra/config/generated/luci-scheduler.cfg
+++ b/infra/config/generated/luci-scheduler.cfg
@@ -401,6 +401,7 @@
   triggers: "win-jumbo-rel"
   triggers: "win-archive-rel"
   triggers: "win-pixel-builder-rel"
+  triggers: "win10-code-coverage" # TODO(crbug.com/1010732) Move when stable.
   triggers: "win32-arm64-rel"
   triggers: "win32-archive-dbg"
   triggers: "win32-archive-rel"
@@ -3214,6 +3215,16 @@
 }
 
 job {
+  id: "win10-code-coverage"
+  acl_sets: "default"
+  buildbucket: {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.chromium.ci"
+    builder: "win10-code-coverage"
+  }
+}
+
+job {
   id: "win-asan"
   acl_sets: "default"
   buildbucket: {
diff --git a/infra/config/luci-milo.cfg b/infra/config/luci-milo.cfg
index dd06325..ee9f053 100644
--- a/infra/config/luci-milo.cfg
+++ b/infra/config/luci-milo.cfg
@@ -2179,6 +2179,11 @@
     short_name: "ios"
   }
   builders {
+    name: "buildbucket/luci.chromium.ci/win10-code-coverage"
+    category: "code_coverage"
+    short_name: "win"
+  }
+  builders {
     name: "buildbucket/luci.chromium.ci/ios-simulator-cronet"
     category: "cronet"
   }
diff --git a/infra/config/luci-scheduler.cfg b/infra/config/luci-scheduler.cfg
index a52f241..52555b7 100644
--- a/infra/config/luci-scheduler.cfg
+++ b/infra/config/luci-scheduler.cfg
@@ -401,6 +401,7 @@
   triggers: "win-jumbo-rel"
   triggers: "win-archive-rel"
   triggers: "win-pixel-builder-rel"
+  triggers: "win10-code-coverage" # TODO(crbug.com/1010732) Move when stable.
   triggers: "win32-arm64-rel"
   triggers: "win32-archive-dbg"
   triggers: "win32-archive-rel"
@@ -3214,6 +3215,16 @@
 }
 
 job {
+  id: "win10-code-coverage"
+  acl_sets: "default"
+  buildbucket: {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.chromium.ci"
+    builder: "win10-code-coverage"
+  }
+}
+
+job {
   id: "win-asan"
   acl_sets: "default"
   buildbucket: {
diff --git a/media/capabilities/video_decode_stats_db_impl.cc b/media/capabilities/video_decode_stats_db_impl.cc
index 1a69da9..25c899d 100644
--- a/media/capabilities/video_decode_stats_db_impl.cc
+++ b/media/capabilities/video_decode_stats_db_impl.cc
@@ -261,6 +261,10 @@
     new_entry_efficient_ratio =
         static_cast<double>(new_entry.frames_power_efficient) /
         new_entry.frames_decoded;
+  } else {
+    // Callers shouldn't ask DB to save empty records. See
+    // VideoDecodeStatsRecorder.
+    NOTREACHED() << __func__ << " saving empty stats record";
   }
 
   if (old_frames_decoded + new_entry.frames_decoded > kMaxFramesPerBuffer) {
@@ -271,10 +275,14 @@
         static_cast<double>(new_entry.frames_decoded) / kMaxFramesPerBuffer,
         1.0);
 
-    double old_dropped_ratio =
-        static_cast<double>(old_frames_dropped) / old_frames_decoded;
-    double old_efficient_ratio =
-        static_cast<double>(old_frames_power_efficient) / old_frames_decoded;
+    double old_dropped_ratio = 0;
+    double old_efficient_ratio = 0;
+    if (old_frames_decoded) {
+      old_dropped_ratio =
+          static_cast<double>(old_frames_dropped) / old_frames_decoded;
+      old_efficient_ratio =
+          static_cast<double>(old_frames_power_efficient) / old_frames_decoded;
+    }
 
     double agg_dropped_ratio = fill_ratio * new_entry_dropped_ratio +
                                (1 - fill_ratio) * old_dropped_ratio;
@@ -337,6 +345,14 @@
   // Update the time stamp for the current write.
   stats_proto->set_last_write_date(wall_clock_->Now().ToJsTime());
 
+  // Make sure we never write bogus stats into the DB! While its possible the DB
+  // may experience some corruption (disk), we should have detected that above
+  // and discarded any bad data prior to this upcoming save.
+  // TODO(chcunningham): Make this a DCHECK before we cut M79 for stable. Its
+  // not a show stopper to have corrupt DB, so CHECK is too aggressive. We just
+  // want pre-stable channel users to verify we've eliminated any bugs.
+  CHECK(AreStatsUsable(stats_proto.get()));
+
   // Push the update to the DB.
   using DBType = leveldb_proto::ProtoDatabase<DecodeStatsProto>;
   std::unique_ptr<DBType::KeyEntryVector> entries =
diff --git a/media/capabilities/video_decode_stats_db_impl_unittest.cc b/media/capabilities/video_decode_stats_db_impl_unittest.cc
index 78201caf..e3a8c74 100644
--- a/media/capabilities/video_decode_stats_db_impl_unittest.cc
+++ b/media/capabilities/video_decode_stats_db_impl_unittest.cc
@@ -446,6 +446,43 @@
                        std::round(GetMaxFramesPerBuffer() * kEfficientRateC)));
 }
 
+// Overfilling an empty buffer triggers the codepath to compute weighted dropped
+// and power efficient ratios under a circumstance where the existing counts are
+// all zero. This test ensures that we don't do any dividing by zero with that
+// empty data.
+TEST_F(VideoDecodeStatsDBImplTest, OverfillEmptyBuffer) {
+  InitializeDB();
+
+  // Setup DB entry that overflows the buffer max (by 1) with 10% of frames
+  // dropped and 50% of frames power efficient.
+  const int kNumFramesOverfill = GetMaxFramesPerBuffer() + 1;
+  DecodeStatsEntry entryA(kNumFramesOverfill,
+                          std::round(0.1 * kNumFramesOverfill),
+                          std::round(0.5 * kNumFramesOverfill));
+
+  // Append entry to completely fill the buffer and verify read.
+  AppendStats(kStatsKeyVp9, entryA);
+  // Read-back stats should have same ratios, but scaled such that
+  // frames_decoded = GetMaxFramesPerBuffer().
+  DecodeStatsEntry readBackEntryA(GetMaxFramesPerBuffer(),
+                                  std::round(0.1 * GetMaxFramesPerBuffer()),
+                                  std::round(0.5 * GetMaxFramesPerBuffer()));
+  VerifyReadStats(kStatsKeyVp9, readBackEntryA);
+
+  // Append another entry that again overfills with different dropped and power
+  // efficient ratios. Verify that read-back only reflects latest entry.
+  DecodeStatsEntry entryB(kNumFramesOverfill,
+                          std::round(0.2 * kNumFramesOverfill),
+                          std::round(0.6 * kNumFramesOverfill));
+  AppendStats(kStatsKeyVp9, entryB);
+  // Read-back stats should have same ratios, but scaled such that
+  // frames_decoded = GetMaxFramesPerBuffer().
+  DecodeStatsEntry readBackEntryB(GetMaxFramesPerBuffer(),
+                                  std::round(0.2 * GetMaxFramesPerBuffer()),
+                                  std::round(0.6 * GetMaxFramesPerBuffer()));
+  VerifyReadStats(kStatsKeyVp9, readBackEntryB);
+}
+
 TEST_F(VideoDecodeStatsDBImplTest, NoWriteDateReadAndExpire) {
   InitializeDB();
 
diff --git a/media/fuchsia/cdm/DEPS b/media/fuchsia/cdm/DEPS
index 66b87e0..6e81cc5 100644
--- a/media/fuchsia/cdm/DEPS
+++ b/media/fuchsia/cdm/DEPS
@@ -1,4 +1,5 @@
 include_rules = [
   "+fuchsia/base",
+  "+mojo/public",
   "+services/service_manager/public",
 ]
diff --git a/media/fuchsia/cdm/client/mojo_fuchsia_cdm_provider.cc b/media/fuchsia/cdm/client/mojo_fuchsia_cdm_provider.cc
index 75753b2..5366f06 100644
--- a/media/fuchsia/cdm/client/mojo_fuchsia_cdm_provider.cc
+++ b/media/fuchsia/cdm/client/mojo_fuchsia_cdm_provider.cc
@@ -19,8 +19,10 @@
     const std::string& key_system,
     fidl::InterfaceRequest<fuchsia::media::drm::ContentDecryptionModule>
         cdm_request) {
-  if (!cdm_provider_)
-    interface_provider_->GetInterface(mojo::MakeRequest(&cdm_provider_));
+  if (!cdm_provider_) {
+    interface_provider_->GetInterface(
+        cdm_provider_.BindNewPipeAndPassReceiver());
+  }
 
   cdm_provider_->CreateCdmInterface(key_system, std::move(cdm_request));
 }
diff --git a/media/fuchsia/cdm/client/mojo_fuchsia_cdm_provider.h b/media/fuchsia/cdm/client/mojo_fuchsia_cdm_provider.h
index ca75d99f..2c34ce45 100644
--- a/media/fuchsia/cdm/client/mojo_fuchsia_cdm_provider.h
+++ b/media/fuchsia/cdm/client/mojo_fuchsia_cdm_provider.h
@@ -8,6 +8,7 @@
 #include "base/macros.h"
 #include "media/fuchsia/cdm/fuchsia_cdm_provider.h"
 #include "media/fuchsia/mojom/fuchsia_cdm_provider.mojom.h"
+#include "mojo/public/cpp/bindings/remote.h"
 
 namespace service_manager {
 class InterfaceProvider;
@@ -30,7 +31,7 @@
 
  private:
   service_manager::InterfaceProvider* const interface_provider_;
-  media::mojom::FuchsiaCdmProviderPtr cdm_provider_;
+  mojo::Remote<media::mojom::FuchsiaCdmProvider> cdm_provider_;
 
   DISALLOW_COPY_AND_ASSIGN(MojoFuchsiaCdmProvider);
 };
diff --git a/media/gpu/android/codec_image.cc b/media/gpu/android/codec_image.cc
index eaf4173..917207f 100644
--- a/media/gpu/android/codec_image.cc
+++ b/media/gpu/android/codec_image.cc
@@ -86,6 +86,10 @@
   return GL_RGBA;
 }
 
+unsigned CodecImage::GetDataType() {
+  return GL_UNSIGNED_BYTE;
+}
+
 CodecImage::BindOrCopy CodecImage::ShouldBindOrCopy() {
   // If we're using an overlay, then pretend it's bound.  That way, we'll get
   // calls to ScheduleOverlayPlane.  Otherwise, CopyTexImage needs to be called.
diff --git a/media/gpu/android/codec_image.h b/media/gpu/android/codec_image.h
index 0b13cb36..0e4b168 100644
--- a/media/gpu/android/codec_image.h
+++ b/media/gpu/android/codec_image.h
@@ -65,6 +65,7 @@
   // gl::GLImage implementation
   gfx::Size GetSize() override;
   unsigned GetInternalFormat() override;
+  unsigned GetDataType() override;
   BindOrCopy ShouldBindOrCopy() override;
   bool BindTexImage(unsigned target) override;
   void ReleaseTexImage(unsigned target) override;
diff --git a/media/gpu/test/image.cc b/media/gpu/test/image.cc
index da34a24..3a8de93e 100644
--- a/media/gpu/test/image.cc
+++ b/media/gpu/test/image.cc
@@ -59,8 +59,8 @@
 Image::~Image() {}
 
 bool Image::Load() {
-  CHECK(!file_path_.empty());
-  CHECK(!IsLoaded());
+  DCHECK(!file_path_.empty());
+  DCHECK(!IsLoaded());
 
   ResolveTestFilePath(&file_path_);
 
diff --git a/media/gpu/test/video_frame_file_writer.cc b/media/gpu/test/video_frame_file_writer.cc
index 1f1bd79..163a6473 100644
--- a/media/gpu/test/video_frame_file_writer.cc
+++ b/media/gpu/test/video_frame_file_writer.cc
@@ -34,7 +34,7 @@
 
 VideoFrameFileWriter::~VideoFrameFileWriter() {
   base::AutoLock auto_lock(frame_writer_lock_);
-  CHECK_EQ(0u, num_frames_writing_);
+  DCHECK_EQ(0u, num_frames_writing_);
 
   frame_writer_thread_.Stop();
 }
@@ -147,7 +147,7 @@
     scoped_refptr<const VideoFrame> video_frame,
     const base::FilePath& filename) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(writer_thread_sequence_checker_);
-  CHECK(video_frame_mapper_);
+  DCHECK(video_frame_mapper_);
 
   auto mapped_frame = video_frame;
 #if defined(OS_CHROMEOS)
@@ -189,7 +189,7 @@
     scoped_refptr<const VideoFrame> video_frame,
     const base::FilePath& filename) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(writer_thread_sequence_checker_);
-  CHECK(video_frame_mapper_);
+  DCHECK(video_frame_mapper_);
 
   auto mapped_frame = video_frame;
 #if defined(OS_CHROMEOS)
diff --git a/media/gpu/test/video_frame_helpers.cc b/media/gpu/test/video_frame_helpers.cc
index 5602ab5..61a71dc 100644
--- a/media/gpu/test/video_frame_helpers.cc
+++ b/media/gpu/test/video_frame_helpers.cc
@@ -291,11 +291,11 @@
 }
 
 scoped_refptr<const VideoFrame> CreateVideoFrameFromImage(const Image& image) {
-  CHECK(image.IsLoaded());
+  DCHECK(image.IsLoaded());
   const auto format = image.PixelFormat();
   const auto& visible_size = image.Size();
   // Loaded image data must be tight.
-  CHECK_EQ(image.DataSize(), VideoFrame::AllocationSize(format, visible_size));
+  DCHECK_EQ(image.DataSize(), VideoFrame::AllocationSize(format, visible_size));
 
   // Create planes for layout. We cannot use WrapExternalData() because it
   // calls GetDefaultLayout() and it supports only a few pixel formats.
diff --git a/media/gpu/test/video_frame_validator.cc b/media/gpu/test/video_frame_validator.cc
index b967a50..7b193c4 100644
--- a/media/gpu/test/video_frame_validator.cc
+++ b/media/gpu/test/video_frame_validator.cc
@@ -65,7 +65,7 @@
 void VideoFrameValidator::Destroy() {
   frame_validator_thread_.Stop();
   base::AutoLock auto_lock(frame_validator_lock_);
-  CHECK_EQ(0u, num_frames_validating_);
+  DCHECK_EQ(0u, num_frames_validating_);
 }
 
 std::vector<VideoFrameValidator::MismatchedFrameInfo>
diff --git a/media/gpu/test/video_player/frame_renderer_dummy.cc b/media/gpu/test/video_player/frame_renderer_dummy.cc
index 2669f644..149c901 100644
--- a/media/gpu/test/video_player/frame_renderer_dummy.cc
+++ b/media/gpu/test/video_player/frame_renderer_dummy.cc
@@ -69,7 +69,7 @@
   renderer_thread_.Stop();
 
   base::AutoLock auto_lock(renderer_lock_);
-  CHECK(pending_frames_.empty());
+  DCHECK(pending_frames_.empty());
 }
 
 bool FrameRendererDummy::AcquireGLContext() {
@@ -135,7 +135,7 @@
   // TODO(dstaessens): Remove this function when allocate mode is deprecated.
   base::Optional<VideoFrameLayout> layout =
       CreateVideoFrameLayout(pixel_format, size);
-  CHECK(layout);
+  DCHECK(layout);
   return VideoFrame::WrapExternalDataWithLayout(*layout, gfx::Rect(size), size,
                                                 nullptr, 0, base::TimeDelta());
 }
diff --git a/media/gpu/test/video_player/frame_renderer_thumbnail.cc b/media/gpu/test/video_player/frame_renderer_thumbnail.cc
index 700411d..c6edff93 100644
--- a/media/gpu/test/video_player/frame_renderer_thumbnail.cc
+++ b/media/gpu/test/video_player/frame_renderer_thumbnail.cc
@@ -261,7 +261,7 @@
 
 void FrameRendererThumbnail::DestroyTask(base::WaitableEvent* done) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(renderer_sequence_checker_);
-  CHECK(mailbox_texture_map_.empty());
+  DCHECK(mailbox_texture_map_.empty());
 
   DestroyThumbnailImageTask();
 
diff --git a/media/gpu/test/video_player/test_vda_video_decoder.cc b/media/gpu/test/video_player/test_vda_video_decoder.cc
index 5134e486..fc65575 100644
--- a/media/gpu/test/video_player/test_vda_video_decoder.cc
+++ b/media/gpu/test/video_player/test_vda_video_decoder.cc
@@ -235,7 +235,7 @@
 
 #if BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION)
         handle = CreateGpuMemoryBufferHandle(video_frame.get());
-        CHECK(!handle.is_null());
+        DCHECK(!handle.is_null());
 #else
         NOTREACHED();
 #endif  // BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION)
@@ -312,7 +312,7 @@
         video_frame->natural_size(), video_frame->timestamp());
   }
 
-  CHECK(wrapped_video_frame);
+  DCHECK(wrapped_video_frame);
 
   // Flag that the video frame was decoded in a power efficient way.
   wrapped_video_frame->metadata()->SetBoolean(
@@ -345,7 +345,7 @@
 // Called when a picture buffer is ready to be re-used.
 void TestVDAVideoDecoder::ReusePictureBufferTask(int32_t picture_buffer_id) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(vda_wrapper_sequence_checker_);
-  CHECK(decoder_);
+  DCHECK(decoder_);
   DVLOGF(4) << "Picture buffer ID: " << picture_buffer_id;
 
   // Notify the decoder the picture buffer can be reused. The decoder will only
@@ -369,14 +369,14 @@
 
 void TestVDAVideoDecoder::NotifyFlushDone() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(vda_wrapper_sequence_checker_);
-  CHECK(flush_cb_);
+  DCHECK(flush_cb_);
 
   std::move(flush_cb_).Run(DecodeStatus::OK);
 }
 
 void TestVDAVideoDecoder::NotifyResetDone() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(vda_wrapper_sequence_checker_);
-  CHECK(reset_cb_);
+  DCHECK(reset_cb_);
 
   std::move(reset_cb_).Run();
 }
diff --git a/media/gpu/test/video_player/video.cc b/media/gpu/test/video_player/video.cc
index e99ef86..8167820 100644
--- a/media/gpu/test/video_player/video.cc
+++ b/media/gpu/test/video_player/video.cc
@@ -33,8 +33,8 @@
 bool Video::Load() {
   // TODO(dstaessens@) Investigate reusing existing infrastructure such as
   //                   DecoderBuffer.
-  CHECK(!file_path_.empty());
-  CHECK(data_.empty());
+  DCHECK(!file_path_.empty());
+  DCHECK(data_.empty());
 
   base::Optional<base::FilePath> resolved_path = ResolveFilePath(file_path_);
   if (!resolved_path) {
diff --git a/media/gpu/test/video_player/video_decoder_client.cc b/media/gpu/test/video_player/video_decoder_client.cc
index f323bd9e..44e15ee 100644
--- a/media/gpu/test/video_player/video_decoder_client.cc
+++ b/media/gpu/test/video_player/video_decoder_client.cc
@@ -98,8 +98,8 @@
 
 bool VideoDecoderClient::CreateDecoder() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(video_player_sequence_checker_);
-  CHECK(!decoder_client_thread_.IsRunning());
-  CHECK(event_cb_ && frame_renderer_);
+  DCHECK(!decoder_client_thread_.IsRunning());
+  DCHECK(event_cb_ && frame_renderer_);
 
   if (!decoder_client_thread_.Start()) {
     VLOGF(1) << "Failed to start decoder thread";
@@ -143,7 +143,7 @@
 
 void VideoDecoderClient::Initialize(const Video* video) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(video_player_sequence_checker_);
-  CHECK(video);
+  DCHECK(video);
 
   base::WaitableEvent done;
   decoder_client_thread_.task_runner()->PostTask(
@@ -176,7 +176,7 @@
 void VideoDecoderClient::CreateDecoderTask(bool* success,
                                            base::WaitableEvent* done) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(decoder_client_sequence_checker_);
-  CHECK_EQ(decoder_client_state_, VideoDecoderClientState::kUninitialized);
+  DCHECK_EQ(decoder_client_state_, VideoDecoderClientState::kUninitialized);
   LOG_ASSERT(!decoder_) << "Can't create decoder: already created";
 
   if (decoder_client_config_.use_vd) {
@@ -206,8 +206,8 @@
 void VideoDecoderClient::InitializeDecoderTask(const Video* video,
                                                base::WaitableEvent* done) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(decoder_client_sequence_checker_);
-  CHECK(decoder_client_state_ == VideoDecoderClientState::kUninitialized ||
-        decoder_client_state_ == VideoDecoderClientState::kIdle);
+  DCHECK(decoder_client_state_ == VideoDecoderClientState::kUninitialized ||
+         decoder_client_state_ == VideoDecoderClientState::kIdle);
   LOG_ASSERT(decoder_) << "Can't initialize decoder: not created yet";
   LOG_ASSERT(video);
 
@@ -236,15 +236,15 @@
   decoder_->Initialize(config, false, nullptr, std::move(init_cb), output_cb,
                        WaitingCB());
 
-  CHECK_LE(decoder_client_config_.max_outstanding_decode_requests,
-           static_cast<size_t>(decoder_->GetMaxDecodeRequests()));
+  DCHECK_LE(decoder_client_config_.max_outstanding_decode_requests,
+            static_cast<size_t>(decoder_->GetMaxDecodeRequests()));
 
   done->Signal();
 }
 
 void VideoDecoderClient::DestroyDecoderTask(base::WaitableEvent* done) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(decoder_client_sequence_checker_);
-  CHECK_EQ(0u, num_outstanding_decode_requests_);
+  DCHECK_EQ(0u, num_outstanding_decode_requests_);
   DVLOGF(4);
 
   // Invalidate all scheduled tasks.
@@ -355,8 +355,8 @@
 
 void VideoDecoderClient::DecoderInitializedTask(bool status) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(decoder_client_sequence_checker_);
-  CHECK(decoder_client_state_ == VideoDecoderClientState::kUninitialized ||
-        decoder_client_state_ == VideoDecoderClientState::kIdle);
+  DCHECK(decoder_client_state_ == VideoDecoderClientState::kUninitialized ||
+         decoder_client_state_ == VideoDecoderClientState::kIdle);
   LOG_ASSERT(status) << "Initializing decoder failed";
 
   decoder_client_state_ = VideoDecoderClientState::kIdle;
@@ -365,7 +365,7 @@
 
 void VideoDecoderClient::DecodeDoneTask(media::DecodeStatus status) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(decoder_client_sequence_checker_);
-  CHECK_NE(VideoDecoderClientState::kIdle, decoder_client_state_);
+  DCHECK_NE(VideoDecoderClientState::kIdle, decoder_client_state_);
   LOG_ASSERT(status != media::DecodeStatus::ABORTED ||
              decoder_client_state_ == VideoDecoderClientState::kResetting);
   DVLOGF(4);
@@ -397,7 +397,7 @@
 
 void VideoDecoderClient::FlushDoneTask(media::DecodeStatus status) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(decoder_client_sequence_checker_);
-  CHECK_EQ(0u, num_outstanding_decode_requests_);
+  DCHECK_EQ(0u, num_outstanding_decode_requests_);
 
   // Send an EOS frame to the renderer, so it can reset any internal state it
   // might keep in preparation of the next stream of video frames.
@@ -408,7 +408,7 @@
 
 void VideoDecoderClient::ResetDoneTask() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(decoder_client_sequence_checker_);
-  CHECK_EQ(0u, num_outstanding_decode_requests_);
+  DCHECK_EQ(0u, num_outstanding_decode_requests_);
 
   // We finished resetting to a different point in the stream, so we should
   // update the frame index. Currently only resetting to the start of the stream
diff --git a/media/gpu/test/video_player/video_player.cc b/media/gpu/test/video_player/video_player.cc
index ecfa5b4..4a9b64d 100644
--- a/media/gpu/test/video_player/video_player.cc
+++ b/media/gpu/test/video_player/video_player.cc
@@ -50,8 +50,8 @@
     std::unique_ptr<FrameRenderer> frame_renderer,
     std::vector<std::unique_ptr<VideoFrameProcessor>> frame_processors) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  CHECK_EQ(video_player_state_, VideoPlayerState::kUninitialized);
-  CHECK(frame_renderer);
+  DCHECK_EQ(video_player_state_, VideoPlayerState::kUninitialized);
+  DCHECK(frame_renderer);
   DVLOGF(4);
 
   // base::Unretained is safe here as we will never receive callbacks after
@@ -73,7 +73,7 @@
 
 void VideoPlayer::Destroy() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  CHECK_NE(video_player_state_, VideoPlayerState::kDestroyed);
+  DCHECK_NE(video_player_state_, VideoPlayerState::kDestroyed);
   DVLOGF(4);
 
   decoder_client_.reset();
@@ -89,9 +89,9 @@
 
 bool VideoPlayer::Initialize(const Video* video) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  CHECK(video_player_state_ == VideoPlayerState::kUninitialized ||
-        video_player_state_ == VideoPlayerState::kIdle);
-  CHECK(video);
+  DCHECK(video_player_state_ == VideoPlayerState::kUninitialized ||
+         video_player_state_ == VideoPlayerState::kIdle);
+  DCHECK(video);
   DVLOGF(4);
 
   decoder_client_->Initialize(video);
@@ -107,7 +107,7 @@
 
 void VideoPlayer::Play() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  CHECK_EQ(video_player_state_, VideoPlayerState::kIdle);
+  DCHECK_EQ(video_player_state_, VideoPlayerState::kIdle);
   DVLOGF(4);
 
   // Play until the end of the video.
@@ -116,8 +116,8 @@
 
 void VideoPlayer::PlayUntil(VideoPlayerEvent event, size_t event_count) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  CHECK_EQ(video_player_state_, VideoPlayerState::kIdle);
-  CHECK(video_);
+  DCHECK_EQ(video_player_state_, VideoPlayerState::kIdle);
+  DCHECK(video_);
   DVLOGF(4);
 
   // Start decoding the video.
@@ -163,7 +163,7 @@
 
 bool VideoPlayer::WaitForEvent(VideoPlayerEvent event, size_t times) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  CHECK_GE(times, 1u);
+  DCHECK_GE(times, 1u);
   DVLOGF(4) << "Event ID: " << static_cast<size_t>(event);
 
   base::TimeDelta time_waiting;
diff --git a/media/gpu/test/video_player/video_player_test_environment.cc b/media/gpu/test/video_player/video_player_test_environment.cc
index 7cb2358..c061c36e 100644
--- a/media/gpu/test/video_player/video_player_test_environment.cc
+++ b/media/gpu/test/video_player/video_player_test_environment.cc
@@ -23,8 +23,8 @@
     const base::FilePath& video_metadata_path,
     bool enable_validator,
     bool use_vd,
-    const FrameOutputConfig& frame_output_config,
-    const base::FilePath& output_folder) {
+    const base::FilePath& output_folder,
+    const FrameOutputConfig& frame_output_config) {
   auto video = std::make_unique<media::test::Video>(
       video_path.empty() ? base::FilePath(kDefaultTestVideoPath) : video_path,
       video_metadata_path);
@@ -34,16 +34,16 @@
   }
 
   return new VideoPlayerTestEnvironment(std::move(video), enable_validator,
-                                        use_vd, frame_output_config,
-                                        output_folder);
+                                        use_vd, output_folder,
+                                        frame_output_config);
 }
 
 VideoPlayerTestEnvironment::VideoPlayerTestEnvironment(
     std::unique_ptr<media::test::Video> video,
     bool enable_validator,
     bool use_vd,
-    const FrameOutputConfig& frame_output_config,
-    const base::FilePath& output_folder)
+    const base::FilePath& output_folder,
+    const FrameOutputConfig& frame_output_config)
     : video_(std::move(video)),
       enable_validator_(enable_validator),
       use_vd_(use_vd),
@@ -74,7 +74,7 @@
 #endif  // defined(OS_CHROMEOS)
 
   // VideoDecoders always require import mode to be supported.
-  CHECK(!use_vd_ || import_supported_);
+  DCHECK(!use_vd_ || import_supported_);
 }
 
 const media::test::Video* VideoPlayerTestEnvironment::Video() const {
diff --git a/media/gpu/test/video_player/video_player_test_environment.h b/media/gpu/test/video_player/video_player_test_environment.h
index ed99556..fad8045f 100644
--- a/media/gpu/test/video_player/video_player_test_environment.h
+++ b/media/gpu/test/video_player/video_player_test_environment.h
@@ -48,8 +48,8 @@
       const base::FilePath& video_metadata_path,
       bool enable_validator,
       bool use_vd,
-      const FrameOutputConfig& frame_output_config = FrameOutputConfig(),
-      const base::FilePath& output_folder = base::FilePath());
+      const base::FilePath& output_folder = base::FilePath(),
+      const FrameOutputConfig& frame_output_config = FrameOutputConfig());
   ~VideoPlayerTestEnvironment() override;
 
   // Set up video test environment, called once for entire test run.
@@ -84,8 +84,8 @@
   VideoPlayerTestEnvironment(std::unique_ptr<media::test::Video> video,
                              bool enable_validator,
                              bool use_vd,
-                             const FrameOutputConfig& frame_output_config,
-                             const base::FilePath& output_folder);
+                             const base::FilePath& output_folder,
+                             const FrameOutputConfig& frame_output_config);
 
   const std::unique_ptr<media::test::Video> video_;
   const bool enable_validator_;
diff --git a/media/gpu/video_decode_accelerator_perf_tests.cc b/media/gpu/video_decode_accelerator_perf_tests.cc
index 37c38ee1..06c213e8 100644
--- a/media/gpu/video_decode_accelerator_perf_tests.cc
+++ b/media/gpu/video_decode_accelerator_perf_tests.cc
@@ -423,7 +423,8 @@
   // Set up our test environment.
   media::test::VideoPlayerTestEnvironment* test_environment =
       media::test::VideoPlayerTestEnvironment::Create(
-          video_path, video_metadata_path, false, use_vd);
+          video_path, video_metadata_path, false, use_vd,
+          base::FilePath(output_folder));
   if (!test_environment)
     return EXIT_FAILURE;
 
diff --git a/media/gpu/video_decode_accelerator_tests.cc b/media/gpu/video_decode_accelerator_tests.cc
index f45e9a1..71029d33 100644
--- a/media/gpu/video_decode_accelerator_tests.cc
+++ b/media/gpu/video_decode_accelerator_tests.cc
@@ -472,7 +472,7 @@
   media::test::VideoPlayerTestEnvironment* test_environment =
       media::test::VideoPlayerTestEnvironment::Create(
           video_path, video_metadata_path, enable_validator, use_vd,
-          frame_output_config, base::FilePath(output_folder));
+          base::FilePath(output_folder), frame_output_config);
   if (!test_environment)
     return EXIT_FAILURE;
 
diff --git a/media/gpu/windows/dxva_picture_buffer_win.cc b/media/gpu/windows/dxva_picture_buffer_win.cc
index 1b78e84e..58eee27 100644
--- a/media/gpu/windows/dxva_picture_buffer_win.cc
+++ b/media/gpu/windows/dxva_picture_buffer_win.cc
@@ -34,6 +34,7 @@
   // gl::GLImage implementation.
   gfx::Size GetSize() override { return size_; }
   unsigned GetInternalFormat() override { return GL_BGRA_EXT; }
+  unsigned GetDataType() override { return GL_UNSIGNED_BYTE; }
   BindOrCopy ShouldBindOrCopy() override { return BIND; }
   // PbufferPictureBuffer::CopySurfaceComplete does the actual binding, so
   // this doesn't do anything and always succeeds.
diff --git a/media/mojo/mojom/video_encode_accelerator.mojom b/media/mojo/mojom/video_encode_accelerator.mojom
index 6aad693..d30ac555 100644
--- a/media/mojo/mojom/video_encode_accelerator.mojom
+++ b/media/mojo/mojom/video_encode_accelerator.mojom
@@ -33,7 +33,9 @@
 // of these messages are acknowledged.
 
 interface VideoEncodeAcceleratorProvider {
-  CreateVideoEncodeAccelerator(VideoEncodeAccelerator& request);
+  // Creates a VideoEncodeAccelerator bound to |receiver|.
+  CreateVideoEncodeAccelerator(
+        pending_receiver<VideoEncodeAccelerator> receiver);
 };
 
 // Class that describes how video bitrate, in bps, is allocated across temporal
diff --git a/media/mojo/services/mojo_video_encode_accelerator_provider.cc b/media/mojo/services/mojo_video_encode_accelerator_provider.cc
index f9f8f2e..7a8f2db 100644
--- a/media/mojo/services/mojo_video_encode_accelerator_provider.cc
+++ b/media/mojo/services/mojo_video_encode_accelerator_provider.cc
@@ -38,9 +38,9 @@
     default;
 
 void MojoVideoEncodeAcceleratorProvider::CreateVideoEncodeAccelerator(
-    mojom::VideoEncodeAcceleratorRequest request) {
+    mojo::PendingReceiver<mojom::VideoEncodeAccelerator> receiver) {
   MojoVideoEncodeAcceleratorService::Create(
-      std::move(request), create_vea_callback_, gpu_preferences_);
+      std::move(receiver), create_vea_callback_, gpu_preferences_);
 }
 
 }  // namespace media
diff --git a/media/mojo/services/mojo_video_encode_accelerator_provider.h b/media/mojo/services/mojo_video_encode_accelerator_provider.h
index 20c1cc83..92436cb 100644
--- a/media/mojo/services/mojo_video_encode_accelerator_provider.h
+++ b/media/mojo/services/mojo_video_encode_accelerator_provider.h
@@ -10,6 +10,7 @@
 #include "media/mojo/mojom/video_encode_accelerator.mojom.h"
 #include "media/mojo/services/media_mojo_export.h"
 #include "media/mojo/services/mojo_video_encode_accelerator_service.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
 
 namespace gpu {
 struct GpuPreferences;
@@ -40,7 +41,7 @@
 
   // mojom::VideoEncodeAcceleratorProvider impl.
   void CreateVideoEncodeAccelerator(
-      mojom::VideoEncodeAcceleratorRequest request) override;
+      mojo::PendingReceiver<mojom::VideoEncodeAccelerator> receiver) override;
 
  private:
   const CreateAndInitializeVideoEncodeAcceleratorCallback create_vea_callback_;
diff --git a/media/mojo/services/mojo_video_encode_accelerator_service.cc b/media/mojo/services/mojo_video_encode_accelerator_service.cc
index a8eb4ee..84a47b9c 100644
--- a/media/mojo/services/mojo_video_encode_accelerator_service.cc
+++ b/media/mojo/services/mojo_video_encode_accelerator_service.cc
@@ -10,20 +10,21 @@
 #include "base/logging.h"
 #include "media/base/bind_to_current_loop.h"
 #include "media/base/limits.h"
-#include "mojo/public/cpp/bindings/strong_binding.h"
+#include "mojo/public/cpp/bindings/self_owned_receiver.h"
 #include "mojo/public/cpp/system/platform_handle.h"
 
 namespace media {
 
 // static
 void MojoVideoEncodeAcceleratorService::Create(
-    mojom::VideoEncodeAcceleratorRequest request,
+    mojo::PendingReceiver<mojom::VideoEncodeAccelerator> receiver,
     const CreateAndInitializeVideoEncodeAcceleratorCallback&
         create_vea_callback,
     const gpu::GpuPreferences& gpu_preferences) {
-  mojo::MakeStrongBinding(std::make_unique<MojoVideoEncodeAcceleratorService>(
-                              create_vea_callback, gpu_preferences),
-                          std::move(request));
+  mojo::MakeSelfOwnedReceiver(
+      std::make_unique<MojoVideoEncodeAcceleratorService>(create_vea_callback,
+                                                          gpu_preferences),
+      std::move(receiver));
 }
 
 MojoVideoEncodeAcceleratorService::MojoVideoEncodeAcceleratorService(
diff --git a/media/mojo/services/mojo_video_encode_accelerator_service.h b/media/mojo/services/mojo_video_encode_accelerator_service.h
index 7ac4c22..5d97d2661 100644
--- a/media/mojo/services/mojo_video_encode_accelerator_service.h
+++ b/media/mojo/services/mojo_video_encode_accelerator_service.h
@@ -18,6 +18,7 @@
 #include "media/mojo/mojom/video_encode_accelerator.mojom.h"
 #include "media/mojo/services/media_mojo_export.h"
 #include "media/video/video_encode_accelerator.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
 
 namespace gpu {
 struct GpuPreferences;
@@ -37,10 +38,11 @@
           Client* client,
           const gpu::GpuPreferences& gpu_preferences)>;
 
-  static void Create(mojom::VideoEncodeAcceleratorRequest request,
-                     const CreateAndInitializeVideoEncodeAcceleratorCallback&
-                         create_vea_callback,
-                     const gpu::GpuPreferences& gpu_preferences);
+  static void Create(
+      mojo::PendingReceiver<mojom::VideoEncodeAccelerator> receiver,
+      const CreateAndInitializeVideoEncodeAcceleratorCallback&
+          create_vea_callback,
+      const gpu::GpuPreferences& gpu_preferences);
 
   MojoVideoEncodeAcceleratorService(
       const CreateAndInitializeVideoEncodeAcceleratorCallback&
diff --git a/net/http/transport_security_state_static.json b/net/http/transport_security_state_static.json
index fa00348..8b270bf2 100644
--- a/net/http/transport_security_state_static.json
+++ b/net/http/transport_security_state_static.json
@@ -85532,6 +85532,11 @@
     { "name": "www.raiffeisen.ch", "policy": "custom", "mode": "force-https", "include_subdomains": true },
     { "name": "ebanking.raiffeisen.ch", "policy": "custom", "mode": "force-https", "include_subdomains": true },
     { "name": "login.raiffeisen.ch", "policy": "custom", "mode": "force-https", "include_subdomains": true },
+    { "name": "alessandroz.pro", "policy": "custom", "mode": "force-https", "include_subdomains": true },
+    { "name": "minecraftforum.de", "policy": "custom", "mode": "force-https", "include_subdomains": true },
+    { "name": "weeblrpress.com", "policy": "custom", "mode": "force-https", "include_subdomains": true },
+    { "name": "photistic.org", "policy": "custom", "mode": "force-https", "include_subdomains": true },
+    { "name": "cortis-consulting.ch", "policy": "custom", "mode": "force-https", "include_subdomains": true },
     // Burton domains (contact: burton at typewritten.net)
     { "name": "typewritten.net", "policy": "custom", "mode": "force-https", "include_subdomains": true },
     { "name": "codebreaking.org", "policy": "custom", "mode": "force-https", "include_subdomains": true },
@@ -85546,6 +85551,7 @@
     { "name": "www.ft.com", "policy": "custom", "mode": "force-https", "include_subdomains": true },
     { "name": "va.gov", "policy": "custom", "mode": "force-https", "include_subdomains": false },
     { "name": "gov.uk", "policy": "custom", "mode": "force-https", "include_subdomains": false },
+    { "name": "www.tumblr.com", "policy": "custom", "mode": "force-https", "include_subdomains": false },
     // HPKP
     { "name": "swehack.org", "policy": "custom", "mode": "force-https", "include_subdomains": true, "pins": "swehackCom" },
     // TODO(elawrence): hstspreload.org can't scan IPv6-only sites due to Google
@@ -85590,16 +85596,6 @@
       "expect_ct_report_uri": "https://matteomarescotti.report-uri.com/r/d/ct/reportOnly"
     },
     {
-      "name": "alessandroz.pro",
-      "policy": "custom",
-      "mode": "force-https", "include_subdomains": true
-    },
-    {
-      "name": "minecraftforum.de",
-      "policy": "custom",
-      "mode": "force-https", "include_subdomains": true
-    },
-    {
       "name": "tobiassachs.de",
       "policy": "custom",
       "mode": "force-https", "include_subdomains": true,
@@ -85628,32 +85624,12 @@
       "expect_ct_report_uri": "https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
     },
     {
-      "name": "weeblrpress.com",
-      "policy": "custom",
-      "mode": "force-https", "include_subdomains": true
-    },
-    {
-      "name": "photistic.org",
-      "policy": "custom",
-      "mode": "force-https", "include_subdomains": true
-    },
-    {
-      "name": "www.tumblr.com",
-      "policy": "custom",
-      "mode": "force-https", "include_subdomains": false
-    },
-    {
       "name": "history.pe",
       "policy": "custom",
       "mode": "force-https", "include_subdomains": true,
       "expect_ct": true,
       "expect_ct_report_uri": "https://history.report-uri.com/r/d/ct/reportOnly"
     },
-    {
-      "name": "cortis-consulting.ch",
-      "policy": "custom",
-      "mode": "force-https", "include_subdomains": true
-    },
     // END OF MANUAL CUSTOM ENTRIES
 
     // eTLD owners who are working towards wide HSTS adoption can request to
diff --git a/net/reporting/reporting_endpoint_manager.cc b/net/reporting/reporting_endpoint_manager.cc
index bd0d0e2..a3b2b20d 100644
--- a/net/reporting/reporting_endpoint_manager.cc
+++ b/net/reporting/reporting_endpoint_manager.cc
@@ -10,6 +10,7 @@
 #include <utility>
 #include <vector>
 
+#include "base/containers/mru_cache.h"
 #include "base/logging.h"
 #include "base/macros.h"
 #include "base/rand_util.h"
@@ -40,7 +41,8 @@
         tick_clock_(tick_clock),
         delegate_(delegate),
         cache_(cache),
-        rand_callback_(rand_callback) {
+        rand_callback_(rand_callback),
+        endpoint_backoff_(kMaxEndpointBackoffCacheSize) {
     DCHECK(policy);
     DCHECK(tick_clock);
     DCHECK(delegate);
@@ -66,13 +68,6 @@
     int total_weight = 0;
 
     for (const ReportingEndpoint endpoint : endpoints) {
-      auto endpoint_backoff_it = endpoint_backoff_.find(
-          EndpointBackoffKey(network_isolation_key, endpoint.info.url));
-      if (endpoint_backoff_it != endpoint_backoff_.end() &&
-          endpoint_backoff_it->second->ShouldRejectRequest()) {
-        continue;
-      }
-
       if (!delegate_->CanUseClient(endpoint.group_key.origin,
                                    endpoint.info.url)) {
         continue;
@@ -84,6 +79,15 @@
         continue;
       }
 
+      // This brings each match to the front of the MRU cache, so if an entry
+      // frequently matches requests, it's more likely to stay in the cache.
+      auto endpoint_backoff_it = endpoint_backoff_.Get(
+          EndpointBackoffKey(network_isolation_key, endpoint.info.url));
+      if (endpoint_backoff_it != endpoint_backoff_.end() &&
+          endpoint_backoff_it->second->ShouldRejectRequest()) {
+        continue;
+      }
+
       // If this client is higher priority than the ones we've found (or we
       // haven't found any), forget about those ones and remember this one.
       if (available_endpoints.empty() ||
@@ -124,14 +128,13 @@
                                const GURL& endpoint,
                                bool succeeded) override {
     EndpointBackoffKey endpoint_backoff_key(network_isolation_key, endpoint);
-    auto endpoint_backoff_it = endpoint_backoff_.find(endpoint_backoff_key);
+    // This will bring the entry to the front of the cache, if it exists.
+    auto endpoint_backoff_it = endpoint_backoff_.Get(endpoint_backoff_key);
     if (endpoint_backoff_it == endpoint_backoff_.end()) {
-      endpoint_backoff_it =
-          endpoint_backoff_
-              .emplace(std::move(endpoint_backoff_key),
-                       std::make_unique<BackoffEntry>(
-                           &policy_->endpoint_backoff_policy, tick_clock_))
-              .first;
+      endpoint_backoff_it = endpoint_backoff_.Put(
+          std::move(endpoint_backoff_key),
+          std::make_unique<BackoffEntry>(&policy_->endpoint_backoff_policy,
+                                         tick_clock_));
     }
     endpoint_backoff_it->second->InformOfRequest(succeeded);
   }
@@ -151,7 +154,7 @@
   // to be cleared as well.
   // TODO(chlily): clear this data when endpoints are deleted to avoid unbounded
   // growth of this map.
-  std::map<EndpointBackoffKey, std::unique_ptr<net::BackoffEntry>>
+  base::MRUCache<EndpointBackoffKey, std::unique_ptr<net::BackoffEntry>>
       endpoint_backoff_;
 
   DISALLOW_COPY_AND_ASSIGN(ReportingEndpointManagerImpl);
diff --git a/net/reporting/reporting_endpoint_manager.h b/net/reporting/reporting_endpoint_manager.h
index 84d49d0..589fe82d 100644
--- a/net/reporting/reporting_endpoint_manager.h
+++ b/net/reporting/reporting_endpoint_manager.h
@@ -35,6 +35,12 @@
 // endpoint from an endpoint group to receive reports for an origin.
 class NET_EXPORT ReportingEndpointManager {
  public:
+  // Maximum size of the backoff cache. This is deliberately much larger than is
+  // likely necessary - the only goal is to prevent it from growing without
+  // bound, while preventing repeatedly trying to upload data to down servrs.
+  // Public for tests.
+  static constexpr int kMaxEndpointBackoffCacheSize = 200;
+
   // The ReportingEndpointManager must not be used after any of the objects
   // passed to its constructor are destroyed.
   static std::unique_ptr<ReportingEndpointManager> Create(
diff --git a/net/reporting/reporting_endpoint_manager_unittest.cc b/net/reporting/reporting_endpoint_manager_unittest.cc
index 68801b4..b73fb2a53 100644
--- a/net/reporting/reporting_endpoint_manager_unittest.cc
+++ b/net/reporting/reporting_endpoint_manager_unittest.cc
@@ -6,6 +6,7 @@
 
 #include <string>
 
+#include "base/strings/stringprintf.h"
 #include "base/test/simple_test_tick_clock.h"
 #include "base/time/time.h"
 #include "net/base/backoff_entry.h"
@@ -532,5 +533,63 @@
   EXPECT_EQ(kEndpoint3, endpoint.info.url);
 }
 
+TEST_F(ReportingEndpointManagerTest, CacheEviction) {
+  // Add |kMaxEndpointBackoffCacheSize| endpoints.
+  for (int i = 0; i < ReportingEndpointManager::kMaxEndpointBackoffCacheSize;
+       ++i) {
+    SetEndpoint(GURL(base::StringPrintf("https://endpoint%i/", i)));
+  }
+
+  // Mark each endpoint as bad, one-at-a-time. Use FindEndpointForDelivery() to
+  // pick which one to mark as bad, both to exercise the code walking through
+  // all endpoints, and as a sanity check.
+  std::set<GURL> seen_endpoints;
+  for (int i = 0; i < ReportingEndpointManager::kMaxEndpointBackoffCacheSize;
+       ++i) {
+    ReportingEndpoint endpoint = endpoint_manager_->FindEndpointForDelivery(
+        NetworkIsolationKey(), kOrigin, kGroup);
+    EXPECT_TRUE(endpoint);
+    EXPECT_FALSE(seen_endpoints.count(endpoint.info.url));
+    seen_endpoints.insert(endpoint.info.url);
+    endpoint_manager_->InformOfEndpointRequest(NetworkIsolationKey(),
+                                               endpoint.info.url, false);
+  }
+  // All endpoints should now be marked as bad.
+  EXPECT_FALSE(endpoint_manager_->FindEndpointForDelivery(NetworkIsolationKey(),
+                                                          kOrigin, kGroup));
+
+  // Add another endpoint with a different NetworkIsolationKey;
+  const NetworkIsolationKey kNetworkIsolationKey(kOrigin, kOrigin);
+  SetEndpoint(kEndpoint, ReportingEndpoint::EndpointInfo::kDefaultPriority,
+              ReportingEndpoint::EndpointInfo::kDefaultWeight,
+              kNetworkIsolationKey);
+  // All endpoints associated with the empty NetworkIsolationKey should still be
+  // marked as bad.
+  EXPECT_FALSE(endpoint_manager_->FindEndpointForDelivery(NetworkIsolationKey(),
+                                                          kOrigin, kGroup));
+
+  // Make the endpoint added for the kNetworkIsolationKey as bad.
+  endpoint_manager_->InformOfEndpointRequest(kNetworkIsolationKey, kEndpoint,
+                                             false);
+  // The only endpoint for kNetworkIsolationKey should still be marked as bad.
+  EXPECT_FALSE(endpoint_manager_->FindEndpointForDelivery(kNetworkIsolationKey,
+                                                          kOrigin, kGroup));
+  // One of the endpoints for the empty NetworkIsolationKey should no longer be
+  // marked as bad, due to eviction.
+  ReportingEndpoint endpoint = endpoint_manager_->FindEndpointForDelivery(
+      NetworkIsolationKey(), kOrigin, kGroup);
+  EXPECT_TRUE(endpoint);
+
+  // Reporting a success for the (only) good endpoint for the empty
+  // NetworkIsolationKey should evict the entry for kNetworkIsolationKey, since
+  // the most recent FindEndpointForDelivery() call visited all of the empty
+  // NetworkIsolationKey's cached bad entries.
+  endpoint_manager_->InformOfEndpointRequest(NetworkIsolationKey(),
+                                             endpoint.info.url, true);
+
+  EXPECT_TRUE(endpoint_manager_->FindEndpointForDelivery(kNetworkIsolationKey,
+                                                         kOrigin, kGroup));
+}
+
 }  // namespace
 }  // namespace net
diff --git a/printing/print_settings_conversion.cc b/printing/print_settings_conversion.cc
index 7403d3ea..f844f92 100644
--- a/printing/print_settings_conversion.cc
+++ b/printing/print_settings_conversion.cc
@@ -159,8 +159,6 @@
   base::Optional<int> color = job_settings.FindIntKey(kSettingColor);
   base::Optional<int> duplex_mode = job_settings.FindIntKey(kSettingDuplexMode);
   base::Optional<bool> landscape = job_settings.FindBoolKey(kSettingLandscape);
-  const std::string* device_name =
-      job_settings.FindStringKey(kSettingDeviceName);
   base::Optional<int> scale_factor =
       job_settings.FindIntKey(kSettingScaleFactor);
   base::Optional<bool> rasterize_pdf =
@@ -169,7 +167,7 @@
       job_settings.FindIntKey(kSettingPagesPerSheet);
 
   if (!collate.has_value() || !copies.has_value() || !color.has_value() ||
-      !duplex_mode.has_value() || !landscape.has_value() || !device_name ||
+      !duplex_mode.has_value() || !landscape.has_value() ||
       !scale_factor.has_value() || !rasterize_pdf.has_value() ||
       !pages_per_sheet.has_value()) {
     return false;
@@ -188,7 +186,8 @@
   settings->set_collate(collate.value());
   settings->set_copies(copies.value());
   settings->SetOrientation(landscape.value());
-  settings->set_device_name(base::UTF8ToUTF16(*device_name));
+  settings->set_device_name(
+      base::UTF8ToUTF16(*job_settings.FindStringKey(kSettingDeviceName)));
   settings->set_duplex_mode(static_cast<DuplexMode>(duplex_mode.value()));
   settings->set_color(static_cast<ColorModel>(color.value()));
   settings->set_scale_factor(static_cast<double>(scale_factor.value()) / 100.0);
diff --git a/services/media_session/audio_focus_manager.cc b/services/media_session/audio_focus_manager.cc
index 76a079f..a31d463 100644
--- a/services/media_session/audio_focus_manager.cc
+++ b/services/media_session/audio_focus_manager.cc
@@ -221,7 +221,7 @@
                                   const std::string& name) {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
 
-  auto& context = bindings_.dispatch_context();
+  auto& context = receivers_.current_context();
   context->identity = identity;
   context->source_name = name;
 }
@@ -288,16 +288,16 @@
 }
 
 void AudioFocusManager::BindToInterface(
-    mojom::AudioFocusManagerRequest request) {
+    mojo::PendingReceiver<mojom::AudioFocusManager> receiver) {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
-  bindings_.AddBinding(this, std::move(request),
-                       std::make_unique<BindingContext>());
+  receivers_.Add(this, std::move(receiver),
+                 std::make_unique<ReceiverContext>());
 }
 
 void AudioFocusManager::BindToDebugInterface(
-    mojom::AudioFocusManagerDebugRequest request) {
+    mojo::PendingReceiver<mojom::AudioFocusManagerDebug> receiver) {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
-  debug_bindings_.AddBinding(this, std::move(request));
+  debug_receivers_.Add(this, std::move(receiver));
 }
 
 void AudioFocusManager::BindToControllerManagerInterface(
@@ -415,12 +415,12 @@
 
 const std::string& AudioFocusManager::GetBindingSourceName() const {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
-  return bindings_.dispatch_context()->source_name;
+  return receivers_.current_context()->source_name;
 }
 
 const base::UnguessableToken& AudioFocusManager::GetBindingIdentity() const {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
-  return bindings_.dispatch_context()->identity;
+  return receivers_.current_context()->identity;
 }
 
 bool AudioFocusManager::IsSessionOnTopOfAudioFocusStack(
diff --git a/services/media_session/audio_focus_manager.h b/services/media_session/audio_focus_manager.h
index 2e26176..09127e0 100644
--- a/services/media_session/audio_focus_manager.h
+++ b/services/media_session/audio_focus_manager.h
@@ -13,7 +13,8 @@
 #include "base/memory/weak_ptr.h"
 #include "base/threading/thread_checker.h"
 #include "mojo/public/cpp/bindings/binding_set.h"
-#include "mojo/public/cpp/bindings/interface_ptr.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "mojo/public/cpp/bindings/receiver_set.h"
 #include "mojo/public/cpp/bindings/remote_set.h"
 #include "services/media_session/media_controller.h"
 #include "services/media_session/public/mojom/audio_focus.mojom.h"
@@ -88,11 +89,13 @@
       const base::UnguessableToken& receiver_id) override;
   void SuspendAllSessions() override;
 
-  // Bind to a mojom::AudioFocusManagerRequest.
-  void BindToInterface(mojom::AudioFocusManagerRequest request);
+  // Bind to a receiver of mojom::AudioFocusManager.
+  void BindToInterface(
+      mojo::PendingReceiver<mojom::AudioFocusManager> receiver);
 
-  // Bind to a mojom::AudioFocusManagerDebugRequest.
-  void BindToDebugInterface(mojom::AudioFocusManagerDebugRequest request);
+  // Bind to a receiver of mojom::AudioFocusManagerDebug.
+  void BindToDebugInterface(
+      mojo::PendingReceiver<mojom::AudioFocusManagerDebug> receiver);
 
   // Bind to a mojom::MediaControllerManagerRequest.
   void BindToControllerManagerInterface(
@@ -106,8 +109,8 @@
 
   class SourceObserverHolder;
 
-  // BindingContext stores associated metadata for mojo binding.
-  struct BindingContext {
+  // ReceiverContext stores associated metadata for mojo binding.
+  struct ReceiverContext {
     // The source name is associated with a binding when a client calls
     // |SetSourceName|. It is used to provide more granularity than a
     // service_manager::Identity for metrics and for identifying where an audio
@@ -156,12 +159,12 @@
   // |MediaSession| over mojo.
   MediaController active_media_controller_;
 
-  // Holds mojo bindings for the Audio Focus Manager API.
-  mojo::BindingSet<mojom::AudioFocusManager, std::unique_ptr<BindingContext>>
-      bindings_;
+  // Holds mojo receivers for the Audio Focus Manager API.
+  mojo::ReceiverSet<mojom::AudioFocusManager, std::unique_ptr<ReceiverContext>>
+      receivers_;
 
-  // Holds mojo bindings for the Audio Focus Manager Debug API.
-  mojo::BindingSet<mojom::AudioFocusManagerDebug> debug_bindings_;
+  // Holds mojo receivers for the Audio Focus Manager Debug API.
+  mojo::ReceiverSet<mojom::AudioFocusManagerDebug> debug_receivers_;
 
   // Holds mojo bindings for the Media Controller Manager API.
   mojo::BindingSet<mojom::MediaControllerManager> controller_bindings_;
diff --git a/services/network/network_context.cc b/services/network/network_context.cc
index 299ec19..05c580d2 100644
--- a/services/network/network_context.cc
+++ b/services/network/network_context.cc
@@ -1554,7 +1554,7 @@
                   params_->trial_comparison_cert_verifier_params
                       ->initial_allowed,
                   std::move(params_->trial_comparison_cert_verifier_params
-                                ->config_client_request),
+                                ->config_client_receiver),
                   std::move(params_->trial_comparison_cert_verifier_params
                                 ->report_client),
                   net::CertVerifyProc::CreateSystemVerifyProc(
diff --git a/services/network/network_service.cc b/services/network/network_service.cc
index ad82512..7e2bac5 100644
--- a/services/network/network_service.cc
+++ b/services/network/network_service.cc
@@ -396,9 +396,10 @@
   return net::CreateNetLogEntriesForActiveObjects(contexts, observer);
 }
 
-void NetworkService::SetClient(mojom::NetworkServiceClientPtr client,
-                               mojom::NetworkServiceParamsPtr params) {
-  client_ = std::move(client);
+void NetworkService::SetClient(
+    mojo::PendingRemote<mojom::NetworkServiceClient> client,
+    mojom::NetworkServiceParamsPtr params) {
+  client_.Bind(std::move(client));
   Initialize(std::move(params));
 }
 
diff --git a/services/network/network_service.h b/services/network/network_service.h
index e760aad..acd5000 100644
--- a/services/network/network_service.h
+++ b/services/network/network_service.h
@@ -23,6 +23,8 @@
 #include "base/timer/timer.h"
 #include "build/build_config.h"
 #include "mojo/public/cpp/bindings/binding.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
+#include "mojo/public/cpp/bindings/remote.h"
 #include "net/dns/dns_config.h"
 #include "net/http/http_auth_preferences.h"
 #include "net/log/net_log.h"
@@ -114,7 +116,7 @@
       net::NetLog::ThreadSafeObserver* observer);
 
   // mojom::NetworkService implementation:
-  void SetClient(mojom::NetworkServiceClientPtr client,
+  void SetClient(mojo::PendingRemote<mojom::NetworkServiceClient> client,
                  mojom::NetworkServiceParamsPtr params) override;
 #if defined(OS_CHROMEOS)
   void ReinitializeLogging(mojom::LoggingSettingsPtr settings) override;
@@ -190,7 +192,9 @@
   bool quic_disabled() const { return quic_disabled_; }
   bool HasRawHeadersAccess(uint32_t process_id, const GURL& resource_url) const;
 
-  mojom::NetworkServiceClient* client() { return client_.get(); }
+  mojom::NetworkServiceClient* client() {
+    return client_.is_bound() ? client_.get() : nullptr;
+  }
   net::NetworkQualityEstimator* network_quality_estimator() {
     return network_quality_estimator_manager_->GetNetworkQualityEstimator();
   }
@@ -258,7 +262,7 @@
   std::unique_ptr<net::FileNetLogObserver> file_net_log_observer_;
   net::TraceNetLogObserver trace_net_log_observer_;
 
-  mojom::NetworkServiceClientPtr client_;
+  mojo::Remote<mojom::NetworkServiceClient> client_;
 
   KeepaliveStatisticsRecorder keepalive_statistics_recorder_;
 
diff --git a/services/network/public/cpp/simple_url_loader_unittest.cc b/services/network/public/cpp/simple_url_loader_unittest.cc
index 4159a77..a6efab95 100644
--- a/services/network/public/cpp/simple_url_loader_unittest.cc
+++ b/services/network/public/cpp/simple_url_loader_unittest.cc
@@ -584,10 +584,11 @@
         network_context_.BindNewPipeAndPassReceiver(),
         std::move(context_params));
 
-    network::mojom::NetworkServiceClientPtr network_service_client_ptr;
+    mojo::PendingRemote<network::mojom::NetworkServiceClient>
+        network_service_client_remote;
     network_service_client_ = std::make_unique<TestNetworkServiceClient>(
-        mojo::MakeRequest(&network_service_client_ptr));
-    network_service_ptr->SetClient(std::move(network_service_client_ptr),
+        network_service_client_remote.InitWithNewPipeAndPassReceiver());
+    network_service_ptr->SetClient(std::move(network_service_client_remote),
                                    network::mojom::NetworkServiceParams::New());
 
     mojo::PendingRemote<network::mojom::NetworkContextClient>
diff --git a/services/network/public/mojom/network_service.mojom b/services/network/public/mojom/network_service.mojom
index 55077a48..aeec7fd 100644
--- a/services/network/public/mojom/network_service.mojom
+++ b/services/network/public/mojom/network_service.mojom
@@ -168,7 +168,8 @@
   // Sets client used by all |NetworkContext|s creating by |NetworkService|.
   // Pending requests may hang if the |client| pipe is closed before they
   // complete.
-  SetClient(NetworkServiceClient client, NetworkServiceParams params);
+  SetClient(pending_remote<NetworkServiceClient> client,
+            NetworkServiceParams params);
 
   // Reinitializes the Network Service's logging with the given settings. This
   // is needed on Chrome OS, which switches to a log file in the user's home
diff --git a/services/network/public/mojom/trial_comparison_cert_verifier.mojom b/services/network/public/mojom/trial_comparison_cert_verifier.mojom
index 50e2680..418581e 100644
--- a/services/network/public/mojom/trial_comparison_cert_verifier.mojom
+++ b/services/network/public/mojom/trial_comparison_cert_verifier.mojom
@@ -43,11 +43,12 @@
 
 // Parameters for initializing the cert verification trial.
 // |initial_allowed| is the initial setting for whether the trial is allowed.
-// |config_client_request| is the Mojo pipe over which trial configuration
+// |config_client_receiver| is the Mojo pipe over which trial configuration
 // updates are received.
 // |report_client| is the Mojo pipe used to send trial reports.
 struct TrialComparisonCertVerifierParams {
   bool initial_allowed = false;
-  TrialComparisonCertVerifierConfigClient&? config_client_request;
-  TrialComparisonCertVerifierReportClient? report_client;
+  pending_receiver<TrialComparisonCertVerifierConfigClient>?
+      config_client_receiver;
+  pending_remote<TrialComparisonCertVerifierReportClient>? report_client;
 };
diff --git a/services/network/test/test_network_service_client.cc b/services/network/test/test_network_service_client.cc
index 44f5f84f..452a9fe 100644
--- a/services/network/test/test_network_service_client.cc
+++ b/services/network/test/test_network_service_client.cc
@@ -12,11 +12,11 @@
 
 namespace network {
 
-TestNetworkServiceClient::TestNetworkServiceClient() : binding_(nullptr) {}
+TestNetworkServiceClient::TestNetworkServiceClient() : receiver_(nullptr) {}
 
 TestNetworkServiceClient::TestNetworkServiceClient(
-    mojom::NetworkServiceClientRequest request)
-    : binding_(this, std::move(request)) {}
+    mojo::PendingReceiver<mojom::NetworkServiceClient> receiver)
+    : receiver_(this, std::move(receiver)) {}
 
 TestNetworkServiceClient::~TestNetworkServiceClient() {}
 
diff --git a/services/network/test/test_network_service_client.h b/services/network/test/test_network_service_client.h
index 9bda9be..aa7cb2c 100644
--- a/services/network/test/test_network_service_client.h
+++ b/services/network/test/test_network_service_client.h
@@ -10,6 +10,8 @@
 
 #include "build/build_config.h"
 #include "mojo/public/cpp/bindings/binding.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "mojo/public/cpp/bindings/receiver.h"
 #include "net/cookies/canonical_cookie.h"
 #include "services/network/public/mojom/network_service.mojom.h"
 
@@ -21,7 +23,8 @@
 class TestNetworkServiceClient : public network::mojom::NetworkServiceClient {
  public:
   TestNetworkServiceClient();
-  explicit TestNetworkServiceClient(mojom::NetworkServiceClientRequest request);
+  explicit TestNetworkServiceClient(
+      mojo::PendingReceiver<mojom::NetworkServiceClient> receiver);
   ~TestNetworkServiceClient() override;
 
   // network::mojom::NetworkServiceClient implementation:
@@ -45,7 +48,7 @@
       const base::Optional<std::string>& raw_response_headers) override;
 
  private:
-  mojo::Binding<mojom::NetworkServiceClient> binding_;
+  mojo::Receiver<mojom::NetworkServiceClient> receiver_;
 
   DISALLOW_COPY_AND_ASSIGN(TestNetworkServiceClient);
 };
diff --git a/services/network/trial_comparison_cert_verifier_mojo.cc b/services/network/trial_comparison_cert_verifier_mojo.cc
index 1729b2e..55b5fe20 100644
--- a/services/network/trial_comparison_cert_verifier_mojo.cc
+++ b/services/network/trial_comparison_cert_verifier_mojo.cc
@@ -21,11 +21,13 @@
 
 TrialComparisonCertVerifierMojo::TrialComparisonCertVerifierMojo(
     bool initial_allowed,
-    mojom::TrialComparisonCertVerifierConfigClientRequest config_client_request,
-    mojom::TrialComparisonCertVerifierReportClientPtrInfo report_client,
+    mojo::PendingReceiver<mojom::TrialComparisonCertVerifierConfigClient>
+        config_client_receiver,
+    mojo::PendingRemote<mojom::TrialComparisonCertVerifierReportClient>
+        report_client,
     scoped_refptr<net::CertVerifyProc> primary_verify_proc,
     scoped_refptr<net::CertVerifyProc> trial_verify_proc)
-    : binding_(this, std::move(config_client_request)),
+    : receiver_(this, std::move(config_client_receiver)),
       report_client_(std::move(report_client)) {
   trial_comparison_cert_verifier_ =
       std::make_unique<net::TrialComparisonCertVerifier>(
diff --git a/services/network/trial_comparison_cert_verifier_mojo.h b/services/network/trial_comparison_cert_verifier_mojo.h
index 893baea..9f95203 100644
--- a/services/network/trial_comparison_cert_verifier_mojo.h
+++ b/services/network/trial_comparison_cert_verifier_mojo.h
@@ -11,7 +11,10 @@
 #include "base/macros.h"
 #include "base/observer_list.h"
 #include "base/optional.h"
-#include "mojo/public/cpp/bindings/binding.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 "net/cert/cert_verifier.h"
 #include "services/network/public/mojom/trial_comparison_cert_verifier.mojom.h"
 
@@ -32,16 +35,17 @@
       public mojom::TrialComparisonCertVerifierConfigClient {
  public:
   // |initial_allowed| is the initial setting for whether the trial is allowed.
-  // |config_client_request| is the Mojo pipe over which trial configuration
+  // |config_client_receiver| is the Mojo pipe over which trial configuration
   // updates are received.
   // |report_client| is the Mojo pipe used to send trial reports.
   // |primary_verify_proc| and |trial_verify_proc| are the CertVerifyProc
   // implementations to compare.
   TrialComparisonCertVerifierMojo(
       bool initial_allowed,
-      mojom::TrialComparisonCertVerifierConfigClientRequest
-          config_client_request,
-      mojom::TrialComparisonCertVerifierReportClientPtrInfo report_client,
+      mojo::PendingReceiver<mojom::TrialComparisonCertVerifierConfigClient>
+          config_client_receiver,
+      mojo::PendingRemote<mojom::TrialComparisonCertVerifierReportClient>
+          report_client,
       scoped_refptr<net::CertVerifyProc> primary_verify_proc,
       scoped_refptr<net::CertVerifyProc> trial_verify_proc);
   ~TrialComparisonCertVerifierMojo() override;
@@ -71,9 +75,9 @@
       const net::CertVerifyResult& primary_result,
       const net::CertVerifyResult& trial_result);
 
-  mojo::Binding<mojom::TrialComparisonCertVerifierConfigClient> binding_;
+  mojo::Receiver<mojom::TrialComparisonCertVerifierConfigClient> receiver_;
 
-  mojom::TrialComparisonCertVerifierReportClientPtr report_client_;
+  mojo::Remote<mojom::TrialComparisonCertVerifierReportClient> report_client_;
 
   std::unique_ptr<net::TrialComparisonCertVerifier>
       trial_comparison_cert_verifier_;
diff --git a/services/network/trial_comparison_cert_verifier_mojo_unittest.cc b/services/network/trial_comparison_cert_verifier_mojo_unittest.cc
index 37c4d01..17d41a7d 100644
--- a/services/network/trial_comparison_cert_verifier_mojo_unittest.cc
+++ b/services/network/trial_comparison_cert_verifier_mojo_unittest.cc
@@ -34,9 +34,10 @@
     : public network::mojom::TrialComparisonCertVerifierReportClient {
  public:
   explicit FakeReportClient(
-      network::mojom::TrialComparisonCertVerifierReportClientRequest
-          report_client_request)
-      : binding_(this, std::move(report_client_request)) {}
+      mojo::PendingReceiver<
+          network::mojom::TrialComparisonCertVerifierReportClient>
+          report_client_receiver)
+      : receiver_(this, std::move(report_client_receiver)) {}
 
   // TrialComparisonCertVerifierReportClient implementation:
   void SendTrialReport(
@@ -70,8 +71,8 @@
   void WaitForReport() { run_loop_.Run(); }
 
  private:
-  mojo::Binding<network::mojom::TrialComparisonCertVerifierReportClient>
-      binding_;
+  mojo::Receiver<network::mojom::TrialComparisonCertVerifierReportClient>
+      receiver_;
 
   std::vector<ReceivedReport> reports_;
   base::RunLoop run_loop_;
@@ -114,11 +115,12 @@
   net::CertVerifyProcBuiltinResultDebugData::Create(&trial_result, time,
                                                     der_time);
 
-  network::mojom::TrialComparisonCertVerifierReportClientPtrInfo
-      report_client_ptr;
-  FakeReportClient report_client(mojo::MakeRequest(&report_client_ptr));
+  mojo::PendingRemote<network::mojom::TrialComparisonCertVerifierReportClient>
+      report_client_remote;
+  FakeReportClient report_client(
+      report_client_remote.InitWithNewPipeAndPassReceiver());
   network::TrialComparisonCertVerifierMojo tccvm(
-      true, {}, std::move(report_client_ptr), nullptr, nullptr);
+      true, {}, std::move(report_client_remote), nullptr, nullptr);
 
   tccvm.OnSendTrialReport("example.com", unverified_cert, false, false, false,
                           false, primary_result, trial_result);
diff --git a/storage/browser/fileapi/file_system_context.cc b/storage/browser/fileapi/file_system_context.cc
index 252abc1..9558876 100644
--- a/storage/browser/fileapi/file_system_context.cc
+++ b/storage/browser/fileapi/file_system_context.cc
@@ -17,6 +17,7 @@
 #include "base/stl_util.h"
 #include "base/task_runner_util.h"
 #include "base/threading/thread_task_runner_handle.h"
+#include "base/util/type_safety/pass_key.h"
 #include "net/url_request/url_request.h"
 #include "storage/browser/fileapi/copy_or_move_file_validator.h"
 #include "storage/browser/fileapi/external_mount_points.h"
@@ -172,7 +173,9 @@
       external_mount_points_(external_mount_points),
       partition_path_(partition_path),
       is_incognito_(options.is_incognito()),
-      operation_runner_(new FileSystemOperationRunner(this)) {
+      operation_runner_(
+          new FileSystemOperationRunner(util::PassKey<FileSystemContext>(),
+                                        this)) {
   RegisterBackend(sandbox_backend_.get());
   RegisterBackend(plugin_private_backend_.get());
 
@@ -459,7 +462,15 @@
 
 std::unique_ptr<FileSystemOperationRunner>
 FileSystemContext::CreateFileSystemOperationRunner() {
-  return base::WrapUnique(new FileSystemOperationRunner(this));
+  return std::make_unique<FileSystemOperationRunner>(
+      util::PassKey<FileSystemContext>(), this);
+}
+
+base::SequenceBound<FileSystemOperationRunner>
+FileSystemContext::CreateSequenceBoundFileSystemOperationRunner() {
+  return base::SequenceBound<FileSystemOperationRunner>(
+      io_task_runner_, util::PassKey<FileSystemContext>(),
+      base::WrapRefCounted(this));
 }
 
 FileSystemURL FileSystemContext::CrackURL(const GURL& url) const {
diff --git a/storage/browser/fileapi/file_system_context.h b/storage/browser/fileapi/file_system_context.h
index 0274165..c609cd8 100644
--- a/storage/browser/fileapi/file_system_context.h
+++ b/storage/browser/fileapi/file_system_context.h
@@ -18,6 +18,7 @@
 #include "base/macros.h"
 #include "base/memory/ref_counted_delete_on_sequence.h"
 #include "base/sequenced_task_runner_helpers.h"
+#include "base/threading/sequence_bound.h"
 #include "build/build_config.h"
 #include "storage/browser/fileapi/file_system_url.h"
 #include "storage/browser/fileapi/open_file_system_mode.h"
@@ -259,8 +260,13 @@
 
   // Creates a new FileSystemOperationRunner. Callers have to make sure that
   // this FileSystemContext outlives the returned FileSystemOperationRunner.
+  // This must be called on the IO thread.
   std::unique_ptr<FileSystemOperationRunner> CreateFileSystemOperationRunner();
 
+  // Similar to above, but this method can be called on any thread.
+  base::SequenceBound<FileSystemOperationRunner>
+  CreateSequenceBoundFileSystemOperationRunner();
+
   base::SequencedTaskRunner* default_file_task_runner() {
     return default_file_task_runner_.get();
   }
diff --git a/storage/browser/fileapi/file_system_operation_runner.cc b/storage/browser/fileapi/file_system_operation_runner.cc
index 79f2b6b..fb4ae7b 100644
--- a/storage/browser/fileapi/file_system_operation_runner.cc
+++ b/storage/browser/fileapi/file_system_operation_runner.cc
@@ -27,6 +27,16 @@
 
 using OperationID = FileSystemOperationRunner::OperationID;
 
+FileSystemOperationRunner::FileSystemOperationRunner(
+    util::PassKey<FileSystemContext>,
+    const scoped_refptr<FileSystemContext>& file_system_context)
+    : FileSystemOperationRunner(file_system_context.get()) {}
+
+FileSystemOperationRunner::FileSystemOperationRunner(
+    util::PassKey<FileSystemContext>,
+    FileSystemContext* file_system_context)
+    : FileSystemOperationRunner(file_system_context) {}
+
 FileSystemOperationRunner::~FileSystemOperationRunner() = default;
 
 void FileSystemOperationRunner::Shutdown() {
@@ -272,7 +282,7 @@
   return id;
 }
 
-OperationID FileSystemOperationRunner::Write(
+OperationID FileSystemOperationRunner::WriteStream(
     const FileSystemURL& url,
     mojo::ScopedDataPipeConsumerHandle data_pipe,
     int64_t offset,
diff --git a/storage/browser/fileapi/file_system_operation_runner.h b/storage/browser/fileapi/file_system_operation_runner.h
index 3b9bebd..c221ef5 100644
--- a/storage/browser/fileapi/file_system_operation_runner.h
+++ b/storage/browser/fileapi/file_system_operation_runner.h
@@ -16,6 +16,7 @@
 #include "base/containers/id_map.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
+#include "base/util/type_safety/pass_key.h"
 #include "components/services/filesystem/public/mojom/types.mojom.h"
 #include "storage/browser/blob/blob_data_handle.h"
 #include "storage/browser/fileapi/file_system_operation.h"
@@ -50,6 +51,13 @@
 
   using OperationID = uint64_t;
 
+  // |file_system_context| is stored as a raw pointer. The caller must ensure
+  // that |file_system_context| outlives the new instance.
+  FileSystemOperationRunner(
+      util::PassKey<FileSystemContext>,
+      const scoped_refptr<FileSystemContext>& file_system_context);
+  FileSystemOperationRunner(util::PassKey<FileSystemContext>,
+                            FileSystemContext* file_system_context);
   virtual ~FileSystemOperationRunner();
 
   // Cancels all inflight operations.
@@ -116,10 +124,10 @@
                     const WriteCallback& callback);
 
   // Writes contents of |data_pipe| to |url| at |offset|.
-  OperationID Write(const FileSystemURL& url,
-                    mojo::ScopedDataPipeConsumerHandle data_pipe,
-                    int64_t offset,
-                    const WriteCallback& callback);
+  OperationID WriteStream(const FileSystemURL& url,
+                          mojo::ScopedDataPipeConsumerHandle data_pipe,
+                          int64_t offset,
+                          const WriteCallback& callback);
 
   // Truncates a file at |url| to |length|. If |length| is larger than
   // the original file size, the file will be extended, and the extended
@@ -244,7 +252,6 @@
                                         base::FilePath* platform_path);
 
  private:
-  friend class FileSystemContext;
   explicit FileSystemOperationRunner(FileSystemContext* file_system_context);
 
   void DidFinish(const OperationID id,
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json
index 1bd219ac..0f6e0f90 100644
--- a/testing/buildbot/chromium.fyi.json
+++ b/testing/buildbot/chromium.fyi.json
@@ -9251,6 +9251,9 @@
     ],
     "gtest_tests": [
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9267,6 +9270,9 @@
         "test": "angle_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9283,6 +9289,9 @@
         "test": "base_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9299,6 +9308,9 @@
         "test": "blink_common_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9315,6 +9327,9 @@
         "test": "blink_heap_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9331,6 +9346,9 @@
         "test": "blink_platform_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9347,6 +9365,9 @@
         "test": "cast_runner_browsertests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9363,6 +9384,9 @@
         "test": "cast_runner_integration_tests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9380,7 +9404,8 @@
       },
       {
         "args": [
-          "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.components_unittests.filter"
+          "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.components_unittests.filter",
+          "--device=aemu"
         ],
         "merge": {
           "args": [],
@@ -9399,7 +9424,8 @@
       },
       {
         "args": [
-          "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.content_unittests.filter"
+          "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.content_unittests.filter",
+          "--device=aemu"
         ],
         "merge": {
           "args": [],
@@ -9417,6 +9443,9 @@
         "test": "content_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9433,6 +9462,9 @@
         "test": "cr_fuchsia_base_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9449,6 +9481,9 @@
         "test": "cronet_tests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9465,6 +9500,9 @@
         "test": "cronet_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9481,6 +9519,9 @@
         "test": "crypto_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9497,6 +9538,9 @@
         "test": "fidlgen_js_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9513,6 +9557,9 @@
         "test": "gfx_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9529,6 +9576,9 @@
         "test": "gpu_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9545,6 +9595,9 @@
         "test": "http_service_tests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9561,6 +9614,9 @@
         "test": "ipc_tests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9578,7 +9634,8 @@
       },
       {
         "args": [
-          "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.mojo_unittests.filter"
+          "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.mojo_unittests.filter",
+          "--device=aemu"
         ],
         "merge": {
           "args": [],
@@ -9596,6 +9653,9 @@
         "test": "mojo_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9612,6 +9672,9 @@
         "test": "perfetto_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9629,7 +9692,8 @@
       },
       {
         "args": [
-          "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.services_unittests.filter"
+          "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.services_unittests.filter",
+          "--device=aemu"
         ],
         "merge": {
           "args": [],
@@ -9647,6 +9711,9 @@
         "test": "services_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9663,6 +9730,9 @@
         "test": "skia_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9680,7 +9750,8 @@
       },
       {
         "args": [
-          "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.ui_base_unittests.filter"
+          "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.ui_base_unittests.filter",
+          "--device=aemu"
         ],
         "merge": {
           "args": [],
@@ -9699,7 +9770,8 @@
       },
       {
         "args": [
-          "--child-arg=--ozone-platform=headless"
+          "--child-arg=--ozone-platform=headless",
+          "--device=aemu"
         ],
         "merge": {
           "args": [],
@@ -9717,6 +9789,9 @@
         "test": "viz_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9733,6 +9808,9 @@
         "test": "web_engine_browsertests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9749,6 +9827,9 @@
         "test": "web_engine_integration_tests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9765,6 +9846,9 @@
         "test": "web_engine_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9788,6 +9872,9 @@
     ],
     "gtest_tests": [
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9804,6 +9891,9 @@
         "test": "angle_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9820,6 +9910,9 @@
         "test": "base_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9836,6 +9929,9 @@
         "test": "blink_common_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9852,6 +9948,9 @@
         "test": "blink_heap_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9868,6 +9967,9 @@
         "test": "blink_platform_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9884,6 +9986,9 @@
         "test": "cast_runner_browsertests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9900,6 +10005,9 @@
         "test": "cast_runner_integration_tests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9917,7 +10025,8 @@
       },
       {
         "args": [
-          "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.components_unittests.filter"
+          "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.components_unittests.filter",
+          "--device=aemu"
         ],
         "merge": {
           "args": [],
@@ -9936,7 +10045,8 @@
       },
       {
         "args": [
-          "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.content_unittests.filter"
+          "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.content_unittests.filter",
+          "--device=aemu"
         ],
         "merge": {
           "args": [],
@@ -9954,6 +10064,9 @@
         "test": "content_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9970,6 +10083,9 @@
         "test": "cr_fuchsia_base_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -9986,6 +10102,9 @@
         "test": "cronet_tests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -10002,6 +10121,9 @@
         "test": "cronet_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -10018,6 +10140,9 @@
         "test": "crypto_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -10034,6 +10159,9 @@
         "test": "fidlgen_js_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -10050,6 +10178,9 @@
         "test": "gfx_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -10066,6 +10197,9 @@
         "test": "gpu_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -10082,6 +10216,9 @@
         "test": "http_service_tests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -10098,6 +10235,9 @@
         "test": "ipc_tests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -10115,7 +10255,8 @@
       },
       {
         "args": [
-          "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.mojo_unittests.filter"
+          "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.mojo_unittests.filter",
+          "--device=aemu"
         ],
         "merge": {
           "args": [],
@@ -10134,7 +10275,8 @@
       },
       {
         "args": [
-          "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.net_unittests.filter"
+          "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.net_unittests.filter",
+          "--device=aemu"
         ],
         "merge": {
           "args": [],
@@ -10152,6 +10294,9 @@
         "test": "net_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -10168,6 +10313,9 @@
         "test": "perfetto_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -10185,7 +10333,8 @@
       },
       {
         "args": [
-          "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.services_unittests.filter"
+          "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.services_unittests.filter",
+          "--device=aemu"
         ],
         "merge": {
           "args": [],
@@ -10203,6 +10352,9 @@
         "test": "services_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -10219,6 +10371,9 @@
         "test": "skia_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -10236,7 +10391,8 @@
       },
       {
         "args": [
-          "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.ui_base_unittests.filter"
+          "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.ui_base_unittests.filter",
+          "--device=aemu"
         ],
         "merge": {
           "args": [],
@@ -10255,7 +10411,8 @@
       },
       {
         "args": [
-          "--child-arg=--ozone-platform=headless"
+          "--child-arg=--ozone-platform=headless",
+          "--device=aemu"
         ],
         "merge": {
           "args": [],
@@ -10273,6 +10430,9 @@
         "test": "viz_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -10289,6 +10449,9 @@
         "test": "web_engine_browsertests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -10305,6 +10468,9 @@
         "test": "web_engine_integration_tests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -10321,6 +10487,9 @@
         "test": "web_engine_unittests"
       },
       {
+        "args": [
+          "--device=aemu"
+        ],
         "merge": {
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
@@ -10341,6 +10510,7 @@
       {
         "args": [
           "--num-retries=3",
+          "--device=aemu",
           "--platform=fuchsia"
         ],
         "isolate_name": "blink_web_tests_exparchive",
@@ -23839,6 +24009,1153 @@
       }
     ]
   },
+  "win10-code-coverage": {
+    "gtest_tests": [
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "accessibility_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "angle_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "app_shell_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "aura_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "base_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "base_util_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "blink_common_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "blink_fuzzer_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "blink_heap_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "blink_platform_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "name": "webkit_unit_tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "blink_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "boringssl_crypto_tests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "boringssl_ssl_tests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "browser_switcher_bho_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "shards": 10
+        },
+        "test": "browser_tests"
+      },
+      {
+        "args": [
+          "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0",
+          "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter"
+        ],
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "name": "webui_html_imports_polyfill_browser_tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "browser_tests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "cacheinvalidation_unittests"
+      },
+      {
+        "args": [
+          "--gtest_filter=-*UsingRealWebcam*"
+        ],
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "capture_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "cast_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "cc_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "chrome_app_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "chrome_cleaner_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "chrome_elf_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "chromedriver_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "color_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "components_browsertests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "components_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "compositor_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "shards": 6
+        },
+        "test": "content_browsertests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "content_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "courgette_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "crashpad_tests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "cronet_tests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "cronet_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "crypto_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "delayloads_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "device_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "display_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "elevation_service_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "events_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "extensions_browsertests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "extensions_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "filesystem_service_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "gcm_unit_tests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "gcp_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "gfx_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "gin_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "google_apis_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "gpu_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "gwp_asan_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "headless_browsertests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "headless_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "install_static_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "integrity": "high"
+            }
+          ]
+        },
+        "test": "installer_util_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "shards": 3
+        },
+        "test": "interactive_ui_tests"
+      },
+      {
+        "args": [
+          "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0",
+          "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_interactive_ui_tests.filter"
+        ],
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "name": "webui_html_imports_polyfill_interactive_ui_tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "interactive_ui_tests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "ipc_tests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "jingle_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "latency_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "libjingle_xmpp_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "media_blink_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "media_service_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "media_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "message_center_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "midi_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "mojo_core_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "mojo_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "nacl_loader_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "native_theme_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "net_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "notification_helper_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "pdf_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "perfetto_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "ppapi_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "printing_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "remoting_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "integrity": "high"
+            }
+          ]
+        },
+        "test": "sbox_integration_tests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "sbox_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "sbox_validation_tests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "service_manager_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "services_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "integrity": "high"
+            }
+          ]
+        },
+        "test": "setup_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "shell_dialogs_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "skia_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "snapshot_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "sql_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "storage_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "sync_integration_tests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "traffic_annotation_auditor_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "ui_base_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "ui_touch_selection_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "unit_tests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "updater_tests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "url_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "views_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "viz_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "vr_common_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "vr_pixeltests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "wm_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "wtf_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "zucchini_unittests"
+      }
+    ]
+  },
   "win32-archive-rel-goma-canary-localoutputcache": {
     "additional_compile_targets": [
       "all"
diff --git a/testing/buildbot/chromium.gpu.fyi.json b/testing/buildbot/chromium.gpu.fyi.json
index 1716303..e0313fe7 100644
--- a/testing/buildbot/chromium.gpu.fyi.json
+++ b/testing/buildbot/chromium.gpu.fyi.json
@@ -1576,54 +1576,6 @@
           ]
         },
         "test": "gles2_conform_test"
-      },
-      {
-        "args": [
-          "--use-angle=d3d11",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d11_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "intel-hd-630-win10-stable",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ]
-        },
-        "test": "video_decode_accelerator_unittest"
-      },
-      {
-        "args": [
-          "--use-angle=d3d9",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d9_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "intel-hd-630-win10-stable",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ]
-        },
-        "test": "video_decode_accelerator_unittest"
       }
     ],
     "isolated_scripts": [
@@ -2047,78 +1999,6 @@
           ]
         },
         "test": "gles2_conform_test"
-      },
-      {
-        "args": [
-          "--use-angle=d3d11",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d11_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "nvidia-quadro-p400-win10-stable",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ]
-        },
-        "test": "video_decode_accelerator_unittest"
-      },
-      {
-        "args": [
-          "--use-angle=d3d9",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d9_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "nvidia-quadro-p400-win10-stable",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ]
-        },
-        "test": "video_decode_accelerator_unittest"
-      },
-      {
-        "args": [
-          "--use-angle=gl",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_gl_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "nvidia-quadro-p400-win10-stable",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ]
-        },
-        "test": "video_decode_accelerator_unittest"
       }
     ],
     "isolated_scripts": [
@@ -19338,30 +19218,6 @@
       },
       {
         "args": [
-          "--use-angle=d3d9",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d9_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "intel-hd-630-win10-stable",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ]
-        },
-        "test": "video_decode_accelerator_unittest"
-      },
-      {
-        "args": [
           "--ignore-runtime-requirements=*"
         ],
         "merge": {
@@ -19934,72 +19790,6 @@
       },
       {
         "args": [
-          "--use-angle=d3d9",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d9_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "nvidia-quadro-p400-win10-stable",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ]
-        },
-        "test": "video_decode_accelerator_unittest",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-win10-stable\", \"os\": \"Windows-10\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
-      },
-      {
-        "args": [
-          "--use-angle=gl",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_gl_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "nvidia-quadro-p400-win10-stable",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ]
-        },
-        "test": "video_decode_accelerator_unittest",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-win10-stable\", \"os\": \"Windows-10\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
-      },
-      {
-        "args": [
           "--ignore-runtime-requirements=*"
         ],
         "merge": {
@@ -20685,78 +20475,6 @@
       },
       {
         "args": [
-          "--use-angle=d3d11",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d11_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "nvidia-quadro-p400-win10-stable",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ]
-        },
-        "test": "video_decode_accelerator_unittest"
-      },
-      {
-        "args": [
-          "--use-angle=d3d9",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d9_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "nvidia-quadro-p400-win10-stable",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ]
-        },
-        "test": "video_decode_accelerator_unittest"
-      },
-      {
-        "args": [
-          "--use-angle=gl",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_gl_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "nvidia-quadro-p400-win10-stable",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ]
-        },
-        "test": "video_decode_accelerator_unittest"
-      },
-      {
-        "args": [
           "--ignore-runtime-requirements=*"
         ],
         "merge": {
@@ -21497,56 +21215,6 @@
       },
       {
         "args": [
-          "--use-angle=d3d11",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d11_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "8086:5912-26.20.100.6912",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ],
-          "expiration": 21600
-        },
-        "test": "video_decode_accelerator_unittest"
-      },
-      {
-        "args": [
-          "--use-angle=d3d9",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d9_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "8086:5912-26.20.100.6912",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ],
-          "expiration": 21600
-        },
-        "test": "video_decode_accelerator_unittest"
-      },
-      {
-        "args": [
           "--ignore-runtime-requirements=*"
         ],
         "merge": {
@@ -22457,81 +22125,6 @@
       },
       {
         "args": [
-          "--use-angle=d3d11",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d11_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "1002:699f",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ],
-          "expiration": 21600
-        },
-        "test": "video_decode_accelerator_unittest"
-      },
-      {
-        "args": [
-          "--use-angle=d3d9",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d9_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "1002:699f",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ],
-          "expiration": 21600
-        },
-        "test": "video_decode_accelerator_unittest"
-      },
-      {
-        "args": [
-          "--use-angle=gl",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_gl_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "1002:699f",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ],
-          "expiration": 21600
-        },
-        "test": "video_decode_accelerator_unittest"
-      },
-      {
-        "args": [
           "--ignore-runtime-requirements=*"
         ],
         "merge": {
@@ -23275,54 +22868,6 @@
       },
       {
         "args": [
-          "--use-angle=d3d11",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d11_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "intel-hd-630-win10-stable",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ]
-        },
-        "test": "video_decode_accelerator_unittest"
-      },
-      {
-        "args": [
-          "--use-angle=d3d9",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d9_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "intel-hd-630-win10-stable",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ]
-        },
-        "test": "video_decode_accelerator_unittest"
-      },
-      {
-        "args": [
           "--ignore-runtime-requirements=*"
         ],
         "merge": {
@@ -24207,56 +23752,6 @@
       },
       {
         "args": [
-          "--use-angle=d3d11",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d11_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "intel-uhd-630-win10-stable",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ],
-          "expiration": 14400
-        },
-        "test": "video_decode_accelerator_unittest"
-      },
-      {
-        "args": [
-          "--use-angle=d3d9",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d9_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "intel-uhd-630-win10-stable",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ],
-          "expiration": 14400
-        },
-        "test": "video_decode_accelerator_unittest"
-      },
-      {
-        "args": [
           "--ignore-runtime-requirements=*"
         ],
         "merge": {
@@ -25233,81 +24728,6 @@
       },
       {
         "args": [
-          "--use-angle=d3d11",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d11_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "10de:2184",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ],
-          "expiration": 21600
-        },
-        "test": "video_decode_accelerator_unittest"
-      },
-      {
-        "args": [
-          "--use-angle=d3d9",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d9_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "10de:2184",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ],
-          "expiration": 21600
-        },
-        "test": "video_decode_accelerator_unittest"
-      },
-      {
-        "args": [
-          "--use-angle=gl",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_gl_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "10de:2184",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ],
-          "expiration": 21600
-        },
-        "test": "video_decode_accelerator_unittest"
-      },
-      {
-        "args": [
           "--ignore-runtime-requirements=*"
         ],
         "merge": {
@@ -26232,105 +25652,6 @@
       },
       {
         "args": [
-          "--use-angle=d3d11",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d11_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "nvidia-quadro-p400-win10-stable",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ]
-        },
-        "test": "video_decode_accelerator_unittest",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-win10-stable\", \"os\": \"Windows-10\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
-      },
-      {
-        "args": [
-          "--use-angle=d3d9",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d9_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "nvidia-quadro-p400-win10-stable",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ]
-        },
-        "test": "video_decode_accelerator_unittest",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-win10-stable\", \"os\": \"Windows-10\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
-      },
-      {
-        "args": [
-          "--use-angle=gl",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_gl_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "nvidia-quadro-p400-win10-stable",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ]
-        },
-        "test": "video_decode_accelerator_unittest",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-win10-stable\", \"os\": \"Windows-10\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
-      },
-      {
-        "args": [
           "--ignore-runtime-requirements=*"
         ],
         "merge": {
@@ -28157,39 +27478,6 @@
       },
       {
         "args": [
-          "--use-angle=d3d11",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d11_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "nvidia-quadro-p400-win10-stable",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ]
-        },
-        "test": "video_decode_accelerator_unittest",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-win10-stable\", \"os\": \"Windows-10\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
-      },
-      {
-        "args": [
           "--ignore-runtime-requirements=*"
         ],
         "merge": {
@@ -29120,81 +28408,6 @@
           "expiration": 21600
         },
         "test": "swiftshader_unittests"
-      },
-      {
-        "args": [
-          "--use-angle=d3d11",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d11_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "1002:6613",
-              "os": "Windows-2008ServerR2-SP1",
-              "pool": "Chrome-GPU"
-            }
-          ],
-          "expiration": 21600
-        },
-        "test": "video_decode_accelerator_unittest"
-      },
-      {
-        "args": [
-          "--use-angle=d3d9",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d9_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "1002:6613",
-              "os": "Windows-2008ServerR2-SP1",
-              "pool": "Chrome-GPU"
-            }
-          ],
-          "expiration": 21600
-        },
-        "test": "video_decode_accelerator_unittest"
-      },
-      {
-        "args": [
-          "--use-angle=gl",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_gl_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "1002:6613",
-              "os": "Windows-2008ServerR2-SP1",
-              "pool": "Chrome-GPU"
-            }
-          ],
-          "expiration": 21600
-        },
-        "test": "video_decode_accelerator_unittest"
       }
     ],
     "isolated_scripts": [
@@ -29864,81 +29077,6 @@
           "expiration": 21600
         },
         "test": "swiftshader_unittests"
-      },
-      {
-        "args": [
-          "--use-angle=d3d11",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d11_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "1002:6613",
-              "os": "Windows-2008ServerR2-SP1",
-              "pool": "Chrome-GPU"
-            }
-          ],
-          "expiration": 21600
-        },
-        "test": "video_decode_accelerator_unittest"
-      },
-      {
-        "args": [
-          "--use-angle=d3d9",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d9_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "1002:6613",
-              "os": "Windows-2008ServerR2-SP1",
-              "pool": "Chrome-GPU"
-            }
-          ],
-          "expiration": 21600
-        },
-        "test": "video_decode_accelerator_unittest"
-      },
-      {
-        "args": [
-          "--use-angle=gl",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_gl_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "1002:6613",
-              "os": "Windows-2008ServerR2-SP1",
-              "pool": "Chrome-GPU"
-            }
-          ],
-          "expiration": 21600
-        },
-        "test": "video_decode_accelerator_unittest"
       }
     ],
     "isolated_scripts": [
@@ -30789,108 +29927,6 @@
           ],
           "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
-      },
-      {
-        "args": [
-          "--use-angle=d3d11",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d11_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "10de:1cb3-24.21.14.1195",
-              "os": "Windows-2008ServerR2-SP1",
-              "pool": "Chrome-GPU"
-            }
-          ],
-          "expiration": 21600
-        },
-        "test": "video_decode_accelerator_unittest",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"10de:1cb3-24.21.14.1195\", \"os\": \"Windows-2008ServerR2-SP1\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
-      },
-      {
-        "args": [
-          "--use-angle=d3d9",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d9_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "10de:1cb3-24.21.14.1195",
-              "os": "Windows-2008ServerR2-SP1",
-              "pool": "Chrome-GPU"
-            }
-          ],
-          "expiration": 21600
-        },
-        "test": "video_decode_accelerator_unittest",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"10de:1cb3-24.21.14.1195\", \"os\": \"Windows-2008ServerR2-SP1\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
-      },
-      {
-        "args": [
-          "--use-angle=gl",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_gl_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "10de:1cb3-24.21.14.1195",
-              "os": "Windows-2008ServerR2-SP1",
-              "pool": "Chrome-GPU"
-            }
-          ],
-          "expiration": 21600
-        },
-        "test": "video_decode_accelerator_unittest",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"10de:1cb3-24.21.14.1195\", \"os\": \"Windows-2008ServerR2-SP1\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
       }
     ],
     "isolated_scripts": [
@@ -31954,108 +30990,6 @@
           ],
           "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
         }
-      },
-      {
-        "args": [
-          "--use-angle=d3d11",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d11_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "10de:1cb3-24.21.14.1195",
-              "os": "Windows-2008ServerR2-SP1",
-              "pool": "Chrome-GPU"
-            }
-          ],
-          "expiration": 21600
-        },
-        "test": "video_decode_accelerator_unittest",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"10de:1cb3-24.21.14.1195\", \"os\": \"Windows-2008ServerR2-SP1\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-23.21.14.1195\", \"os\": \"Windows-2008ServerR2-SP1\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
-      },
-      {
-        "args": [
-          "--use-angle=d3d9",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d9_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "10de:1cb3-24.21.14.1195",
-              "os": "Windows-2008ServerR2-SP1",
-              "pool": "Chrome-GPU"
-            }
-          ],
-          "expiration": 21600
-        },
-        "test": "video_decode_accelerator_unittest",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"10de:1cb3-24.21.14.1195\", \"os\": \"Windows-2008ServerR2-SP1\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-23.21.14.1195\", \"os\": \"Windows-2008ServerR2-SP1\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
-      },
-      {
-        "args": [
-          "--use-angle=gl",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_gl_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "10de:1cb3-24.21.14.1195",
-              "os": "Windows-2008ServerR2-SP1",
-              "pool": "Chrome-GPU"
-            }
-          ],
-          "expiration": 21600
-        },
-        "test": "video_decode_accelerator_unittest",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"10de:1cb3-24.21.14.1195\", \"os\": \"Windows-2008ServerR2-SP1\", \"pool\": \"Chrome-GPU\"}, {\"gpu\": \"10de:1cb3-23.21.14.1195\", \"os\": \"Windows-2008ServerR2-SP1\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
       }
     ],
     "isolated_scripts": [
diff --git a/testing/buildbot/chromium.gpu.json b/testing/buildbot/chromium.gpu.json
index 3ef43bb..f2d46b95 100644
--- a/testing/buildbot/chromium.gpu.json
+++ b/testing/buildbot/chromium.gpu.json
@@ -2952,30 +2952,6 @@
       },
       {
         "args": [
-          "--use-angle=d3d11",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d11_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "nvidia-quadro-p400-win10-stable",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ]
-        },
-        "test": "video_decode_accelerator_unittest"
-      },
-      {
-        "args": [
           "--ignore-runtime-requirements=*"
         ],
         "merge": {
@@ -3517,39 +3493,6 @@
       },
       {
         "args": [
-          "--use-angle=d3d11",
-          "--use-test-data-path",
-          "--test_video_data=test-25fps.h264:320:240:250:258:::1"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "video_decode_accelerator_d3d11_unittest",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "containment_type": "AUTO",
-          "dimension_sets": [
-            {
-              "gpu": "nvidia-quadro-p400-win10-stable",
-              "os": "Windows-10",
-              "pool": "Chrome-GPU"
-            }
-          ]
-        },
-        "test": "video_decode_accelerator_unittest",
-        "trigger_script": {
-          "args": [
-            "--multiple-trigger-configs",
-            "[{\"gpu\": \"nvidia-quadro-p400-win10-stable\", \"os\": \"Windows-10\", \"pool\": \"Chrome-GPU\"}]",
-            "--multiple-dimension-script-verbose",
-            "True"
-          ],
-          "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py"
-        }
-      },
-      {
-        "args": [
           "--ignore-runtime-requirements=*"
         ],
         "merge": {
diff --git a/testing/buildbot/filters/bfcache.content_unittests.filter b/testing/buildbot/filters/bfcache.content_unittests.filter
index 7c474576..814433b4 100644
--- a/testing/buildbot/filters/bfcache.content_unittests.filter
+++ b/testing/buildbot/filters/bfcache.content_unittests.filter
@@ -12,15 +12,6 @@
 -RenderFrameHostManagerTest.CommitNewNavigationBeforeSendingSwapOut
 -RenderFrameHostManagerTest.SwapOutFrameAfterSwapOutACK
 
-# WebSerial:
-#
-# WebContentsImpl::IsConnectedToSerialPort() returns true, because the previous
-# document uses the WebSerial and continue to do so after entering the
-# BackForwardCache.
-#
-# See https://crbug.com/992851
--SerialTest.OpenAndNavigateCrossOrigin
-
 # Test:
 # 1) Normal navigation to a non-webui URL.
 # 2) Add the webui capability to the RenderFrameHost.
diff --git a/testing/buildbot/gn_isolate_map.pyl b/testing/buildbot/gn_isolate_map.pyl
index a66e7ed..8bf82e7 100644
--- a/testing/buildbot/gn_isolate_map.pyl
+++ b/testing/buildbot/gn_isolate_map.pyl
@@ -2875,11 +2875,6 @@
     "label": "//testing/libfuzzer/fuzzers:v8_wasm_fuzzer",
     "type": "fuzzer",
   },
-  "video_decode_accelerator_unittest": {
-    "args": [],
-    "label": "//media/gpu:video_decode_accelerator_unittest",
-    "type": "raw",
-  },
   "views_perftests": {
     "args": [
       "--xvfb",
diff --git a/testing/buildbot/mixins.pyl b/testing/buildbot/mixins.pyl
index e64452b..c714f626 100644
--- a/testing/buildbot/mixins.pyl
+++ b/testing/buildbot/mixins.pyl
@@ -193,6 +193,13 @@
       },
     },
   },
+  'fuchsia_aemu': {
+    '$mixin_append': {
+      'args': [
+        '--device=aemu',
+      ],
+    },
+  },
   'gpu_pool': {
     'swarming': {
       'dimensions': {
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl
index a88bf8a4..d450a419 100644
--- a/testing/buildbot/test_suites.pyl
+++ b/testing/buildbot/test_suites.pyl
@@ -3623,22 +3623,6 @@
         ],
         'test': 'gles2_conform_test',
       },
-      'video_decode_accelerator_d3d9_unittest': {
-        'args': [
-          '--use-angle=d3d9',
-          '--use-test-data-path',
-          '--test_video_data=test-25fps.h264:320:240:250:258:::1',
-        ],
-        'test': 'video_decode_accelerator_unittest',
-      },
-      'video_decode_accelerator_gl_unittest': {
-        'args': [
-          '--use-angle=gl',
-          '--use-test-data-path',
-          '--test_video_data=test-25fps.h264:320:240:250:258:::1',
-        ],
-        'test': 'video_decode_accelerator_unittest',
-      },
     },
 
     'gpu_fyi_mac_specific_gtests': {
@@ -4181,14 +4165,6 @@
           '--use-cmd-decoder=passthrough',
         ],
       },
-      'video_decode_accelerator_d3d11_unittest': {
-        'args': [
-          '--use-angle=d3d11',
-          '--use-test-data-path',
-          '--test_video_data=test-25fps.h264:320:240:250:258:::1',
-        ],
-        'test': 'video_decode_accelerator_unittest',
-      },
     },
 
     'ios_code_coverage_gtests': {
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl
index 6c6ba6a..81dc75b 100644
--- a/testing/buildbot/waterfalls.pyl
+++ b/testing/buildbot/waterfalls.pyl
@@ -1737,7 +1737,8 @@
           'all',
         ],
         'mixins': [
-          'linux-xenial',
+          'fuchsia_aemu',
+	  'linux-xenial',
         ],
         'swarming': {
           'dimension_sets': [
@@ -1755,6 +1756,7 @@
           'all',
         ],
         'mixins': [
+	        'fuchsia_aemu',
           'linux-xenial',
         ],
         'swarming': {
@@ -2058,6 +2060,14 @@
           'isolated_scripts': 'chromium_webkit_isolated_scripts',
         },
       },
+      'win10-code-coverage': {
+        'mixins': [
+          'code-coverage',
+        ],
+        'test_suites': {
+          'gtest_tests': 'chromium_win_gtests',
+        }
+      },
       'win32-archive-rel-goma-canary-localoutputcache': {
         'additional_compile_targets': [
           'all',
diff --git a/third_party/blink/public/BUILD.gn b/third_party/blink/public/BUILD.gn
index 91c59c3..7a4d269 100644
--- a/third_party/blink/public/BUILD.gn
+++ b/third_party/blink/public/BUILD.gn
@@ -111,6 +111,7 @@
     "web/modules/peerconnection/mock_data_channel_impl.h",
     "web/modules/peerconnection/mock_peer_connection_dependency_factory.h",
     "web/modules/peerconnection/mock_peer_connection_impl.h",
+    "web/modules/peerconnection/webrtc_stats_report_obtainer.h",
   ]
   deps = [
     ":blink_headers",
@@ -385,6 +386,7 @@
     "web/modules/peerconnection/media_stream_remote_video_source.h",
     "web/modules/peerconnection/media_stream_video_webrtc_sink.h",
     "web/modules/peerconnection/peer_connection_dependency_factory.h",
+    "web/modules/peerconnection/rtc_rtp_receiver_impl.h",
     "web/modules/peerconnection/webrtc_media_stream_track_adapter.h",
     "web/modules/peerconnection/webrtc_media_stream_track_adapter_map.h",
     "web/modules/service_worker/web_service_worker_context_client.h",
diff --git a/third_party/blink/public/platform/web_fetch_client_settings_object.h b/third_party/blink/public/platform/web_fetch_client_settings_object.h
index fbee76a1..ebb8e56 100644
--- a/third_party/blink/public/platform/web_fetch_client_settings_object.h
+++ b/third_party/blink/public/platform/web_fetch_client_settings_object.h
@@ -21,11 +21,19 @@
 // Onion Soup is done.
 // Keep this struct consistent with mojom::FetchClientSettingsObject.
 struct WebFetchClientSettingsObject {
-  network::mojom::ReferrerPolicy referrer_policy;
+  network::mojom::ReferrerPolicy referrer_policy =
+      network::mojom::ReferrerPolicy::kDefault;
   WebURL outgoing_referrer;
-  mojom::InsecureRequestsPolicy insecure_requests_policy;
+  mojom::InsecureRequestsPolicy insecure_requests_policy =
+      blink::mojom::InsecureRequestsPolicy::kDoNotUpgrade;
 
-  WebFetchClientSettingsObject() {}
+  WebFetchClientSettingsObject(
+      network::mojom::ReferrerPolicy referrer_policy,
+      WebURL outgoing_referrer,
+      mojom::InsecureRequestsPolicy insecure_requests_policy)
+      : referrer_policy(referrer_policy),
+        outgoing_referrer(outgoing_referrer),
+        insecure_requests_policy(insecure_requests_policy) {}
 
 #if INSIDE_BLINK
   explicit WebFetchClientSettingsObject(
diff --git a/third_party/blink/public/web/modules/peerconnection/DEPS b/third_party/blink/public/web/modules/peerconnection/DEPS
index e2f8772b..45e1ae23 100644
--- a/third_party/blink/public/web/modules/peerconnection/DEPS
+++ b/third_party/blink/public/web/modules/peerconnection/DEPS
@@ -8,5 +8,11 @@
     "+base/single_thread_task_runner.h",
     "+base/synchronization/waitable_event.h",
     "+base/threading/thread.h",
-    "+testing/gmock/include/gmock/gmock.h",
 ]
+
+specific_include_rules = {
+    ".*obtainer\.h|mock.*\.h": [
+        "+base/run_loop.h",
+        "+testing/gmock/include/gmock/gmock.h",
+    ],
+}
diff --git a/content/renderer/media/webrtc/rtc_rtp_receiver.h b/third_party/blink/public/web/modules/peerconnection/rtc_rtp_receiver_impl.h
similarity index 85%
rename from content/renderer/media/webrtc/rtc_rtp_receiver.h
rename to third_party/blink/public/web/modules/peerconnection/rtc_rtp_receiver_impl.h
index 25cb2089..a96694f 100644
--- a/content/renderer/media/webrtc/rtc_rtp_receiver.h
+++ b/third_party/blink/public/web/modules/peerconnection/rtc_rtp_receiver_impl.h
@@ -2,15 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CONTENT_RENDERER_MEDIA_WEBRTC_RTC_RTP_RECEIVER_H_
-#define CONTENT_RENDERER_MEDIA_WEBRTC_RTC_RTP_RECEIVER_H_
+#ifndef THIRD_PARTY_BLINK_PUBLIC_WEB_MODULES_PEERCONNECTION_RTC_RTP_RECEIVER_IMPL_H_
+#define THIRD_PARTY_BLINK_PUBLIC_WEB_MODULES_PEERCONNECTION_RTC_RTP_RECEIVER_IMPL_H_
 
 #include <vector>
 
 #include "base/macros.h"
-#include "base/memory/ref_counted.h"
+#include "base/memory/scoped_refptr.h"
 #include "base/single_thread_task_runner.h"
-#include "content/common/content_export.h"
+#include "third_party/blink/public/platform/web_common.h"
 #include "third_party/blink/public/platform/web_media_stream.h"
 #include "third_party/blink/public/platform/web_media_stream_track.h"
 #include "third_party/blink/public/platform/web_rtc_rtp_receiver.h"
@@ -22,7 +22,7 @@
 #include "third_party/webrtc/api/rtp_receiver_interface.h"
 #include "third_party/webrtc/api/stats/rtc_stats.h"
 
-namespace content {
+namespace blink {
 
 // This class represents the state of a receiver; a snapshot of what a
 // webrtc-layer receiver looked like when it was inspected on the signaling
@@ -55,10 +55,12 @@
 // Except for initialization logic and operator=(), the RtpReceiverState is
 // immutable and only accessible on the main thread.
 //
-// TODO(hbos): [Onion Soup] When the sender implementation is moved to blink
-// this will be part of the blink sender instead of the content sender.
-// https://crbug.com/787254
-class CONTENT_EXPORT RtpReceiverState {
+// TODO(crbug.com/787254): Move the classes below out of the Blink exposed API.
+// Also, consider merging RTCRtpReceiverImpl and RTCRtpReceiver, and removing
+// WebRTCRtpReceiver when all its clients are Onion soup'ed.
+//
+// Last, move away from using std::vector.
+class BLINK_MODULES_EXPORT RtpReceiverState {
  public:
   RtpReceiverState(
       scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
@@ -104,20 +106,21 @@
 };
 
 // Used to surface |webrtc::RtpReceiverInterface| to blink. Multiple
-// |RTCRtpReceiver|s could reference the same webrtc receiver; |id| is the value
-// of the pointer to the webrtc receiver.
-class CONTENT_EXPORT RTCRtpReceiver : public blink::WebRTCRtpReceiver {
+// |RTCRtpReceiverImpl|s could reference the same webrtc receiver; |id| is the
+// value of the pointer to the webrtc receiver.
+class BLINK_MODULES_EXPORT RTCRtpReceiverImpl
+    : public blink::WebRTCRtpReceiver {
  public:
   static uintptr_t getId(
       const webrtc::RtpReceiverInterface* webrtc_rtp_receiver);
 
-  RTCRtpReceiver(
+  RTCRtpReceiverImpl(
       scoped_refptr<webrtc::PeerConnectionInterface> native_peer_connection,
       RtpReceiverState state);
-  RTCRtpReceiver(const RTCRtpReceiver& other);
-  ~RTCRtpReceiver() override;
+  RTCRtpReceiverImpl(const RTCRtpReceiverImpl& other);
+  ~RTCRtpReceiverImpl() override;
 
-  RTCRtpReceiver& operator=(const RTCRtpReceiver& other);
+  RTCRtpReceiverImpl& operator=(const RTCRtpReceiverImpl& other);
 
   const RtpReceiverState& state() const;
   void set_state(RtpReceiverState state);
@@ -144,7 +147,7 @@
   scoped_refptr<RTCRtpReceiverInternal> internal_;
 };
 
-class CONTENT_EXPORT RTCRtpReceiverOnlyTransceiver
+class BLINK_MODULES_EXPORT RTCRtpReceiverOnlyTransceiver
     : public blink::WebRTCRtpTransceiver {
  public:
   RTCRtpReceiverOnlyTransceiver(
@@ -171,6 +174,6 @@
   std::unique_ptr<blink::WebRTCRtpReceiver> receiver_;
 };
 
-}  // namespace content
+}  // namespace blink
 
-#endif  // CONTENT_RENDERER_MEDIA_WEBRTC_RTC_RTP_RECEIVER_H_
+#endif  // THIRD_PARTY_BLINK_PUBLIC_WEB_MODULES_PEERCONNECTION_RTC_RTP_RECEIVER_IMPL_H_
diff --git a/content/renderer/media/webrtc/test/webrtc_stats_report_obtainer.h b/third_party/blink/public/web/modules/peerconnection/webrtc_stats_report_obtainer.h
similarity index 75%
rename from content/renderer/media/webrtc/test/webrtc_stats_report_obtainer.h
rename to third_party/blink/public/web/modules/peerconnection/webrtc_stats_report_obtainer.h
index ce1c105..db742376 100644
--- a/content/renderer/media/webrtc/test/webrtc_stats_report_obtainer.h
+++ b/third_party/blink/public/web/modules/peerconnection/webrtc_stats_report_obtainer.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 CONTENT_RENDERER_MEDIA_WEBRTC_TEST_WEBRTC_STATS_REPORT_OBTAINER_H_
-#define CONTENT_RENDERER_MEDIA_WEBRTC_TEST_WEBRTC_STATS_REPORT_OBTAINER_H_
+#ifndef THIRD_PARTY_BLINK_PUBLIC_WEB_MODULES_PEERCONNECTION_WEBRTC_STATS_REPORT_OBTAINER_H_
+#define THIRD_PARTY_BLINK_PUBLIC_WEB_MODULES_PEERCONNECTION_WEBRTC_STATS_REPORT_OBTAINER_H_
 
 #include <memory>
 
@@ -11,7 +11,7 @@
 #include "base/run_loop.h"
 #include "third_party/blink/public/platform/web_rtc_stats.h"
 
-namespace content {
+namespace blink {
 
 // The obtainer is a test-only helper class capable of waiting for a GetStats()
 // callback to be called. It takes ownership of and exposes the resulting
@@ -20,6 +20,9 @@
 // thread are executed (see base::RunLoop::Run()) making it safe to wait on the
 // same thread that the stats report callback occurs on without blocking the
 // callback.
+//
+// TODO(crbug.com/787254): Move this class out of the Blink API
+// when all its clients get Onion souped.
 class WebRTCStatsReportObtainer
     : public base::RefCountedThreadSafe<WebRTCStatsReportObtainer> {
  public:
@@ -41,6 +44,6 @@
   std::unique_ptr<blink::WebRTCStatsReport> report_;
 };
 
-}  // namespace content
+}  // namespace blink
 
-#endif  // CONTENT_RENDERER_MEDIA_WEBRTC_TEST_WEBRTC_STATS_REPORT_OBTAINER_H_
+#endif  // THIRD_PARTY_BLINK_PUBLIC_WEB_MODULES_PEERCONNECTION_WEBRTC_STATS_REPORT_OBTAINER_H_
diff --git a/third_party/blink/public/web/web_embedded_worker_start_data.h b/third_party/blink/public/web/web_embedded_worker_start_data.h
index abebc1f..d475bda 100644
--- a/third_party/blink/public/web/web_embedded_worker_start_data.h
+++ b/third_party/blink/public/web/web_embedded_worker_start_data.h
@@ -58,7 +58,11 @@
 
   WebFetchClientSettingsObject outside_fetch_client_settings_object;
 
-  WebEmbeddedWorkerStartData() : wait_for_debugger_mode(kDontWaitForDebugger) {}
+  explicit WebEmbeddedWorkerStartData(
+      WebFetchClientSettingsObject outside_fetch_client_settings_object)
+      : wait_for_debugger_mode(kDontWaitForDebugger),
+        outside_fetch_client_settings_object(
+            std::move(outside_fetch_client_settings_object)) {}
 };
 
 }  // namespace blink
diff --git a/third_party/blink/public/web/web_local_frame_client.h b/third_party/blink/public/web/web_local_frame_client.h
index e2db541..03eef09 100644
--- a/third_party/blink/public/web/web_local_frame_client.h
+++ b/third_party/blink/public/web/web_local_frame_client.h
@@ -406,11 +406,6 @@
   // A new provisional load has been started.
   virtual void DidStartProvisionalLoad(WebDocumentLoader* document_loader) {}
 
-  // The provisional load failed, which used |http_method| to load the main
-  // resource.
-  virtual void DidFailProvisionalLoad(const WebURLError&,
-                                      const WebString& http_method) {}
-
   // The provisional datasource is now committed.  The first part of the
   // response body has been received, and the encoding of the response
   // body is known.
diff --git a/third_party/blink/renderer/core/css/resolver/viewport_style_resolver.cc b/third_party/blink/renderer/core/css/resolver/viewport_style_resolver.cc
index e5dea3b..a79ba7df 100644
--- a/third_party/blink/renderer/core/css/resolver/viewport_style_resolver.cc
+++ b/third_party/blink/renderer/core/css/resolver/viewport_style_resolver.cc
@@ -320,7 +320,7 @@
   if (result.IsFixed() && document_->GetPage()) {
     float scaled_value =
         document_->GetPage()->GetChromeClient().WindowToViewportScalar(
-            result.GetFloatValue());
+            document_->GetFrame(), result.GetFloatValue());
     result = Length::Fixed(scaled_value);
   }
   return result;
diff --git a/third_party/blink/renderer/core/dom/space_split_string.h b/third_party/blink/renderer/core/dom/space_split_string.h
index 21ac9d7..103cf9e 100644
--- a/third_party/blink/renderer/core/dom/space_split_string.h
+++ b/third_party/blink/renderer/core/dom/space_split_string.h
@@ -74,12 +74,8 @@
 
     ~Data();
 
-    bool Contains(const AtomicString& string) {
-      for (const auto& item : vector_) {
-        if (item == string)
-          return true;
-      }
-      return false;
+    bool Contains(const AtomicString& string) const {
+      return vector_.Contains(string);
     }
 
     bool ContainsAll(Data&);
diff --git a/third_party/blink/renderer/core/editing/frame_selection.cc b/third_party/blink/renderer/core/editing/frame_selection.cc
index d299253d..12b6a57 100644
--- a/third_party/blink/renderer/core/editing/frame_selection.cc
+++ b/third_party/blink/renderer/core/editing/frame_selection.cc
@@ -1246,8 +1246,8 @@
 }
 
 LayoutSelectionStatus FrameSelection::ComputeLayoutSelectionStatus(
-    const NGPaintFragment& text_fragment) const {
-  return layout_selection_->ComputeSelectionStatus(text_fragment);
+    const NGInlineCursor& cursor) const {
+  return layout_selection_->ComputeSelectionStatus(cursor);
 }
 
 bool FrameSelection::IsDirectional() const {
diff --git a/third_party/blink/renderer/core/editing/frame_selection.h b/third_party/blink/renderer/core/editing/frame_selection.h
index 97ce34c..0567aab 100644
--- a/third_party/blink/renderer/core/editing/frame_selection.h
+++ b/third_party/blink/renderer/core/editing/frame_selection.h
@@ -50,7 +50,7 @@
 class FrameCaret;
 class GranularityStrategy;
 class GraphicsContext;
-class NGPaintFragment;
+class NGInlineCursor;
 class Range;
 class SelectionEditor;
 class LayoutSelection;
@@ -69,7 +69,7 @@
 enum class HandleVisibility { kNotVisible, kVisible };
 enum class SelectSoftLineBreak { kNotSelected, kSelected };
 
-// This is return type of ComputeLayoutSelectionStatus(paintfragment).
+// This is return type of ComputeLayoutSelectionStatus(cursor).
 // This structure represents how the fragment is selected.
 // |start|, |end| : Selection start/end offset. This offset is based on
 //   the text of NGInlineNode of a parent block thus
@@ -281,7 +281,7 @@
   LayoutTextSelectionStatus ComputeLayoutSelectionStatus(
       const LayoutText& text) const;
   LayoutSelectionStatus ComputeLayoutSelectionStatus(
-      const NGPaintFragment&) const;
+      const NGInlineCursor& cursor) const;
 
   void Trace(Visitor*) override;
 
diff --git a/third_party/blink/renderer/core/editing/layout_selection.cc b/third_party/blink/renderer/core/editing/layout_selection.cc
index 73cfe0f..3f130f7c 100644
--- a/third_party/blink/renderer/core/editing/layout_selection.cc
+++ b/third_party/blink/renderer/core/editing/layout_selection.cc
@@ -33,11 +33,12 @@
 #include "third_party/blink/renderer/core/layout/layout_text.h"
 #include "third_party/blink/renderer/core/layout/layout_text_fragment.h"
 #include "third_party/blink/renderer/core/layout/layout_view.h"
+#include "third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.h"
+#include "third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_offset_mapping.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_physical_line_box_fragment.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_physical_text_fragment.h"
 #include "third_party/blink/renderer/core/layout/ng/ng_block_node.h"
-#include "third_party/blink/renderer/core/paint/ng/ng_paint_fragment.h"
 #include "third_party/blink/renderer/core/paint/paint_layer.h"
 #include "third_party/blink/renderer/platform/fonts/shaping/shape_result_view.h"
 
@@ -118,6 +119,13 @@
   kBlockCursor,
 };
 
+void LayoutSelection::AssertIsValid() const {
+  const Document& document = frame_selection_->GetDocument();
+  DCHECK_GE(document.Lifecycle().GetState(), DocumentLifecycle::kLayoutClean);
+  DCHECK(!document.IsSlotAssignmentOrLegacyDistributionDirty());
+  DCHECK(!has_pending_selection_);
+}
+
 static SelectionMode ComputeSelectionMode(
     const FrameSelection& frame_selection) {
   const SelectionInDOMTree& selection_in_dom =
@@ -549,49 +557,11 @@
       *paint_range.start_node, start_offset, *paint_range.end_node, end_offset);
 }
 
-// ClampOffset modifies |offset| fixed in a range of |text_fragment| start/end
-// offsets.
 static unsigned ClampOffset(unsigned offset,
-                            const NGPhysicalTextFragment& text_fragment) {
-  return std::min(std::max(offset, text_fragment.StartOffset()),
-                  text_fragment.EndOffset());
-}
-
-// We don't paint a line break the end of inline-block
-// because if an inline-block is at the middle of line, we should not paint
-// a line break.
-// Old layout paints line break if the inline-block is at the end of line, but
-// since its complex to determine if the inline-block is at the end of line on NG,
-// we just cancels block-end line break painting for any inline-block.
-static bool IsLastLineInInlineBlock(const NGPaintFragment& line) {
-  DCHECK(line.PhysicalFragment().IsLineBox());
-  NGPaintFragment* parent = line.Parent();
-  if (!parent->PhysicalFragment().IsAtomicInline())
-    return false;
-  return &parent->Children().back() == &line;
-}
-
-static bool IsBeforeSoftLineBreak(const NGPaintFragment& fragment) {
-  if (To<NGPhysicalTextFragment>(fragment.PhysicalFragment()).IsLineBreak())
-    return false;
-
-  // TODO(yoichio): InlineBlock should not be container line box.
-  // See paint/selection/text-selection-inline-block.html.
-  const NGPaintFragment* container_line_box = fragment.ContainerLineBox();
-  DCHECK(container_line_box);
-  if (IsLastLineInInlineBlock(*container_line_box))
-    return false;
-  const auto& physical_line_box =
-      To<NGPhysicalLineBoxFragment>(container_line_box->PhysicalFragment());
-  const NGPhysicalFragment* last_leaf = physical_line_box.LastLogicalLeaf();
-  DCHECK(last_leaf);
-  if (&fragment.PhysicalFragment() != last_leaf)
-    return false;
-  // Even If |fragment| is before linebreak, if its direction differs to line
-  // direction, we don't paint line break. See
-  // paint/selection/text-selection-newline-mixed-ltr-rtl.html.
-  return physical_line_box.BaseDirection() ==
-         fragment.PhysicalFragment().ResolvedDirection();
+                            unsigned start_offset,
+                            unsigned end_offset) {
+  DCHECK_LE(start_offset, end_offset);
+  return std::min(std::max(offset, start_offset), end_offset);
 }
 
 static Text* AssociatedTextNode(const LayoutText& text) {
@@ -613,6 +583,12 @@
   return layout_text.GetSelectionState();
 }
 
+static SelectionState GetSelectionStateFor(const NGInlineCursor& cursor) {
+  DCHECK(cursor.CurrentLayoutObject() &&
+         cursor.CurrentLayoutObject()->IsText());
+  return GetSelectionStateFor(ToLayoutText(*cursor.CurrentLayoutObject()));
+}
+
 bool LayoutSelection::IsSelected(const LayoutObject& layout_object) {
   if (const LayoutText* layout_text = ToLayoutTextOrNull(layout_object))
     return GetSelectionStateFor(*layout_text) != SelectionState::kNone;
@@ -650,10 +626,7 @@
 
 LayoutTextSelectionStatus LayoutSelection::ComputeSelectionStatus(
     const LayoutText& layout_text) const {
-  Document& document = frame_selection_->GetDocument();
-  DCHECK_GE(document.Lifecycle().GetState(), DocumentLifecycle::kLayoutClean);
-  DCHECK(!document.IsSlotAssignmentOrLegacyDistributionDirty());
-  DCHECK(!has_pending_selection_);
+  AssertIsValid();
   const SelectionState selection_state = GetSelectionStateFor(layout_text);
   if (selection_state == SelectionState::kNone)
     return {0, 0, SelectionIncludeEnd::kNotInclude};
@@ -683,54 +656,50 @@
 // FrameSelection holds selection offsets in layout block flow at
 // LayoutSelection::Commit() if selection starts/ends within Text that
 // each LayoutObject::SelectionState indicates.
-// These offset can be out of |text_fragment| because SelectionState is of each
-// LayoutText and not of each NGPhysicalTextFragment for it.
+// These offset can be out of fragment because SelectionState is of each
+// LayoutText and not of each fragment for it.
 LayoutSelectionStatus LayoutSelection::ComputeSelectionStatus(
-    const NGPaintFragment& fragment) const {
-  Document& document = frame_selection_->GetDocument();
-  DCHECK_GE(document.Lifecycle().GetState(), DocumentLifecycle::kLayoutClean);
-  DCHECK(!document.IsSlotAssignmentOrLegacyDistributionDirty());
-  const auto& text_fragment =
-      To<NGPhysicalTextFragment>(fragment.PhysicalFragment());
+    const NGInlineCursor& cursor) const {
   // We don't paint selection on ellipsis.
-  if (text_fragment.StyleVariant() == NGStyleVariant::kEllipsis)
+  if (cursor.IsEllipsis())
     return {0, 0, SelectSoftLineBreak::kNotSelected};
-  // Needs GetSelectionStateFor
-  DCHECK(text_fragment.GetLayoutObject());
-  switch (
-      GetSelectionStateFor(ToLayoutText(*text_fragment.GetLayoutObject()))) {
+  const unsigned start_offset = cursor.CurrentTextStartOffset();
+  const unsigned end_offset = cursor.CurrentTextEndOffset();
+  switch (GetSelectionStateFor(cursor)) {
     case SelectionState::kStart: {
       const unsigned start_in_block = paint_range_->start_offset.value();
-      const bool is_continuous = start_in_block <= text_fragment.EndOffset();
-      return {ClampOffset(start_in_block, text_fragment),
-              text_fragment.EndOffset(),
-              (is_continuous && IsBeforeSoftLineBreak(fragment))
+      const bool is_continuous = start_in_block <= end_offset;
+      return {ClampOffset(start_in_block, start_offset, end_offset), end_offset,
+              (is_continuous && cursor.IsBeforeSoftLineBreak())
                   ? SelectSoftLineBreak::kSelected
                   : SelectSoftLineBreak::kNotSelected};
     }
     case SelectionState::kEnd: {
       const unsigned end_in_block = paint_range_->end_offset.value();
-      const unsigned end_in_fragment = ClampOffset(end_in_block, text_fragment);
-      const bool is_continuous = text_fragment.EndOffset() < end_in_block;
-      return {text_fragment.StartOffset(), end_in_fragment,
-              (is_continuous && IsBeforeSoftLineBreak(fragment))
+      const unsigned end_in_fragment =
+          ClampOffset(end_in_block, start_offset, end_offset);
+      const bool is_continuous = end_offset < end_in_block;
+      return {start_offset, end_in_fragment,
+              (is_continuous && cursor.IsBeforeSoftLineBreak())
                   ? SelectSoftLineBreak::kSelected
                   : SelectSoftLineBreak::kNotSelected};
     }
     case SelectionState::kStartAndEnd: {
       const unsigned start_in_block = paint_range_->start_offset.value();
       const unsigned end_in_block = paint_range_->end_offset.value();
-      const unsigned end_in_fragment = ClampOffset(end_in_block, text_fragment);
-      const bool is_continuous = start_in_block <= text_fragment.EndOffset() &&
-                                 text_fragment.EndOffset() < end_in_block;
-      return {ClampOffset(start_in_block, text_fragment), end_in_fragment,
-              (is_continuous && IsBeforeSoftLineBreak(fragment))
+      const unsigned end_in_fragment =
+          ClampOffset(end_in_block, start_offset, end_offset);
+      const bool is_continuous =
+          start_in_block <= end_offset && end_offset < end_in_block;
+      return {ClampOffset(start_in_block, start_offset, end_offset),
+              end_in_fragment,
+              (is_continuous && cursor.IsBeforeSoftLineBreak())
                   ? SelectSoftLineBreak::kSelected
                   : SelectSoftLineBreak::kNotSelected};
     }
     case SelectionState::kInside: {
-      return {text_fragment.StartOffset(), text_fragment.EndOffset(),
-              IsBeforeSoftLineBreak(fragment)
+      return {start_offset, end_offset,
+              cursor.IsBeforeSoftLineBreak()
                   ? SelectSoftLineBreak::kSelected
                   : SelectSoftLineBreak::kNotSelected};
     }
diff --git a/third_party/blink/renderer/core/editing/layout_selection.h b/third_party/blink/renderer/core/editing/layout_selection.h
index e75e45b..c7c218ca 100644
--- a/third_party/blink/renderer/core/editing/layout_selection.h
+++ b/third_party/blink/renderer/core/editing/layout_selection.h
@@ -32,7 +32,7 @@
 class IntRect;
 class LayoutObject;
 class LayoutText;
-class NGPaintFragment;
+class NGInlineCursor;
 class FrameSelection;
 struct LayoutSelectionStatus;
 struct LayoutTextSelectionStatus;
@@ -49,7 +49,7 @@
   void InvalidatePaintForSelection();
 
   LayoutTextSelectionStatus ComputeSelectionStatus(const LayoutText&) const;
-  LayoutSelectionStatus ComputeSelectionStatus(const NGPaintFragment&) const;
+  LayoutSelectionStatus ComputeSelectionStatus(const NGInlineCursor&) const;
   static bool IsSelected(const LayoutObject&);
 
   void OnDocumentShutdown();
@@ -57,6 +57,8 @@
   void Trace(Visitor*);
 
  private:
+  void AssertIsValid() const;
+
   Member<FrameSelection> frame_selection_;
   bool has_pending_selection_ : 1;
 
diff --git a/third_party/blink/renderer/core/editing/layout_selection_test.cc b/third_party/blink/renderer/core/editing/layout_selection_test.cc
index d24c62f..1796f3b 100644
--- a/third_party/blink/renderer/core/editing/layout_selection_test.cc
+++ b/third_party/blink/renderer/core/editing/layout_selection_test.cc
@@ -12,9 +12,7 @@
 #include "third_party/blink/renderer/core/layout/layout_object.h"
 #include "third_party/blink/renderer/core/layout/layout_text.h"
 #include "third_party/blink/renderer/core/layout/layout_text_fragment.h"
-#include "third_party/blink/renderer/core/layout/ng/inline/ng_physical_text_fragment.h"
-#include "third_party/blink/renderer/core/layout/ng/layout_ng_block_flow.h"
-#include "third_party/blink/renderer/core/paint/ng/ng_paint_fragment.h"
+#include "third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor.h"
 #include "third_party/blink/renderer/platform/testing/runtime_enabled_features_test_helpers.h"
 #include "third_party/blink/renderer/platform/wtf/assertions.h"
 #include "third_party/blink/renderer/platform/wtf/functional.h"
@@ -40,14 +38,15 @@
                                   std::ostream& ostream,
                                   const LayoutText& layout_text,
                                   SelectionState state) {
-    const auto fragments = NGPaintFragment::InlineFragmentsFor(&layout_text);
-    if (fragments.IsInLayoutNGInlineFormattingContext()) {
-      const unsigned text_start =
-          To<NGPhysicalTextFragment>(fragments.begin()->PhysicalFragment())
-              .StartOffset();
-      for (const NGPaintFragment* fragment : fragments) {
+    if (layout_text.IsInLayoutNGInlineFormattingContext()) {
+      NGInlineCursor cursor(*layout_text.RootInlineFormattingContext());
+      cursor.MoveTo(layout_text);
+      if (!cursor)
+        return;
+      const unsigned text_start = cursor.CurrentTextStartOffset();
+      for (; cursor; cursor.MoveToNextForSameLayoutObject()) {
         const LayoutSelectionStatus status =
-            selection.ComputeLayoutSelectionStatus(*fragment);
+            selection.ComputeLayoutSelectionStatus(cursor);
         if (state == SelectionState::kNone && status.start == status.end)
           continue;
         ostream << "(" << status.start - text_start << ","
@@ -944,32 +943,6 @@
       DumpSelectionInfo());
 }
 
-static const NGPaintFragment* FindNGPaintFragmentInternal(
-    const NGPaintFragment* paint,
-    const LayoutObject* layout_object) {
-  if (paint->GetLayoutObject() == layout_object)
-    return paint;
-  for (const NGPaintFragment* child : paint->Children()) {
-    if (const NGPaintFragment* child_fragment =
-            FindNGPaintFragmentInternal(child, layout_object))
-      return child_fragment;
-  }
-  return nullptr;
-}
-
-static const NGPaintFragment& GetNGPaintFragment(
-    const LayoutObject* layout_object) {
-  DCHECK(layout_object->IsText());
-  LayoutBlockFlow* block_flow = layout_object->ContainingNGBlockFlow();
-  DCHECK(block_flow);
-  DCHECK(block_flow->IsLayoutNGMixin());
-  LayoutNGBlockFlow* layout_ng = ToLayoutNGBlockFlow(block_flow);
-  const NGPaintFragment* paint_fragment =
-      FindNGPaintFragmentInternal(layout_ng->PaintFragment(), layout_object);
-  DCHECK(paint_fragment);
-  return *paint_fragment;
-}
-
 class NGLayoutSelectionTest
     : public LayoutSelectionTestBase,
       private ScopedLayoutNGForTest,
@@ -979,6 +952,7 @@
       : ScopedLayoutNGForTest(true),
         ScopedPaintUnderInvalidationCheckingForTest(true) {}
 
+ protected:
   const Text* GetFirstTextNode() {
     for (const Node& runner : NodeTraversal::StartsAt(*GetDocument().body())) {
       if (auto* text_node = DynamicTo<Text>(runner))
@@ -990,17 +964,22 @@
 
   bool IsFirstTextLineBreak(const std::string& selection_text) {
     SetSelectionAndUpdateLayoutSelection(selection_text);
-    const Text* const first_text = GetFirstTextNode();
-    const NGPaintFragment& fragment =
-        GetNGPaintFragment(first_text->GetLayoutObject());
+    const LayoutText& first_text = *GetFirstTextNode()->GetLayoutObject();
     const LayoutSelectionStatus& status =
-        Selection().ComputeLayoutSelectionStatus(fragment);
+        ComputeLayoutSelectionStatus(first_text);
     return status.line_break == SelectSoftLineBreak::kSelected;
   }
 
   LayoutSelectionStatus ComputeLayoutSelectionStatus(const Node& node) {
-    return Selection().ComputeLayoutSelectionStatus(
-        GetNGPaintFragment(node.GetLayoutObject()));
+    return ComputeLayoutSelectionStatus(*node.GetLayoutObject());
+  }
+
+  LayoutSelectionStatus ComputeLayoutSelectionStatus(
+      const LayoutObject& layout_object) const {
+    DCHECK(layout_object.IsText());
+    NGInlineCursor cursor(*layout_object.RootInlineFormattingContext());
+    cursor.MoveTo(layout_object);
+    return Selection().ComputeLayoutSelectionStatus(cursor);
   }
 
   void SetSelectionAndUpdateLayoutSelection(const std::string& selection_text) {
@@ -1053,7 +1032,7 @@
   LayoutObject* const foo =
       GetDocument().body()->firstChild()->firstChild()->GetLayoutObject();
   EXPECT_EQ(LayoutSelectionStatus(1u, 3u, SelectSoftLineBreak::kSelected),
-            Selection().ComputeLayoutSelectionStatus(GetNGPaintFragment(foo)));
+            ComputeLayoutSelectionStatus(*foo));
   LayoutObject* const bar = GetDocument()
                                 .body()
                                 ->firstChild()
@@ -1061,7 +1040,7 @@
                                 ->firstChild()
                                 ->GetLayoutObject();
   EXPECT_EQ(LayoutSelectionStatus(0u, 2u, SelectSoftLineBreak::kNotSelected),
-            Selection().ComputeLayoutSelectionStatus(GetNGPaintFragment(bar)));
+            ComputeLayoutSelectionStatus(*bar));
 }
 
 // TODO(editing-dev): Once LayoutNG supports editing, we should change this
@@ -1123,15 +1102,14 @@
   EXPECT_FALSE(IsFirstTextLineBreak("<div>f^oo|</div>"));
   EXPECT_FALSE(IsFirstTextLineBreak("<div>f^oo<!--|--></div>"));
   EXPECT_FALSE(IsFirstTextLineBreak("<div>f^oo</div>|"));
-  // TODO(yoichio): Fix the test. See LayoutSelection::IsLineBreak.
-  // EXPECT_FALSE(IsFirstTextLineBreak(
-  //    "<div style='display:inline-block'>f^oo</div>bar|"));
 }
 
 TEST_F(NGLayoutSelectionTest, LineBreakInlineBlock) {
   LoadAhem();
   EXPECT_FALSE(
       IsFirstTextLineBreak("<div style='display:inline-block'>^x</div>y|"));
+  EXPECT_FALSE(
+      IsFirstTextLineBreak("<div style='display:inline-block'>f^oo</div>bar|"));
 }
 
 TEST_F(NGLayoutSelectionTest, LineBreakImage) {
@@ -1155,9 +1133,8 @@
   LayoutObject* const layout_br =
       GetDocument().QuerySelector("br")->GetLayoutObject();
   CHECK(layout_br->IsBR());
-  EXPECT_EQ(
-      LayoutSelectionStatus(3u, 4u, SelectSoftLineBreak::kNotSelected),
-      Selection().ComputeLayoutSelectionStatus(GetNGPaintFragment(layout_br)));
+  EXPECT_EQ(LayoutSelectionStatus(3u, 4u, SelectSoftLineBreak::kNotSelected),
+            ComputeLayoutSelectionStatus(*layout_br));
 }
 
 // https://crbug.com/907186
@@ -1166,9 +1143,8 @@
       "<div style=\"width:0\">^foo<wbr>bar|</div>");
   const LayoutObject* layout_wbr =
       GetDocument().QuerySelector("wbr")->GetLayoutObject();
-  EXPECT_EQ(
-      LayoutSelectionStatus(3u, 4u, SelectSoftLineBreak::kSelected),
-      Selection().ComputeLayoutSelectionStatus(GetNGPaintFragment(layout_wbr)));
+  EXPECT_EQ(LayoutSelectionStatus(3u, 4u, SelectSoftLineBreak::kSelected),
+            ComputeLayoutSelectionStatus(*layout_wbr));
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/exported/local_frame_client_impl.cc b/third_party/blink/renderer/core/exported/local_frame_client_impl.cc
index cdd0bd1..55c2e90 100644
--- a/third_party/blink/renderer/core/exported/local_frame_client_impl.cc
+++ b/third_party/blink/renderer/core/exported/local_frame_client_impl.cc
@@ -469,12 +469,6 @@
   CoreInitializer::GetInstance().DidCommitLoad(*web_frame_->GetFrame());
 }
 
-void LocalFrameClientImpl::DispatchDidFailProvisionalLoad(
-    const ResourceError& error,
-    const AtomicString& http_method) {
-  web_frame_->DidFailProvisionalLoad(error, http_method);
-}
-
 void LocalFrameClientImpl::DispatchDidFailLoad(
     const ResourceError& error,
     WebHistoryCommitType commit_type) {
diff --git a/third_party/blink/renderer/core/exported/local_frame_client_impl.h b/third_party/blink/renderer/core/exported/local_frame_client_impl.h
index f87c0dd..24bdb71 100644
--- a/third_party/blink/renderer/core/exported/local_frame_client_impl.h
+++ b/third_party/blink/renderer/core/exported/local_frame_client_impl.h
@@ -109,8 +109,6 @@
   void DispatchDidCommitLoad(HistoryItem*,
                              WebHistoryCommitType,
                              GlobalObjectReusePolicy) override;
-  void DispatchDidFailProvisionalLoad(const ResourceError&,
-                                      const AtomicString& http_method) override;
   void DispatchDidFailLoad(const ResourceError&, WebHistoryCommitType) override;
   void DispatchDidFinishDocumentLoad() override;
   void DispatchDidFinishLoad() override;
diff --git a/third_party/blink/renderer/core/exported/web_frame_serializer.cc b/third_party/blink/renderer/core/exported/web_frame_serializer.cc
index 6b706fa..cdc460e 100644
--- a/third_party/blink/renderer/core/exported/web_frame_serializer.cc
+++ b/third_party/blink/renderer/core/exported/web_frame_serializer.cc
@@ -204,8 +204,10 @@
   int center_x = window->innerWidth() / 2;
   int center_y = window->innerHeight() / 2;
   if (Page* page = element.GetDocument().GetPage()) {
-    center_x = page->GetChromeClient().WindowToViewportScalar(center_x);
-    center_y = page->GetChromeClient().WindowToViewportScalar(center_y);
+    center_x = page->GetChromeClient().WindowToViewportScalar(
+        window->GetFrame(), center_x);
+    center_y = page->GetChromeClient().WindowToViewportScalar(
+        window->GetFrame(), center_y);
   }
   LayoutPoint center_point(center_x, center_y);
   if (!box->FrameRect().Contains(center_point))
diff --git a/third_party/blink/renderer/core/exported/web_frame_test.cc b/third_party/blink/renderer/core/exported/web_frame_test.cc
index 51f7c1ad..f7a4868 100644
--- a/third_party/blink/renderer/core/exported/web_frame_test.cc
+++ b/third_party/blink/renderer/core/exported/web_frame_test.cc
@@ -12331,10 +12331,6 @@
       TestWebFrameClient::DidStopLoading();
     }
 
-    void DidFailProvisionalLoad(const WebURLError&, const WebString&) override {
-      EXPECT_TRUE(false) << "The load should not have failed.";
-    }
-
     void DidFinishDocumentLoad() override {
       // TODO(dcheng): Investigate not calling this as well during frame detach.
       did_call_did_finish_document_load_ = true;
diff --git a/third_party/blink/renderer/core/exported/web_page_popup_impl.cc b/third_party/blink/renderer/core/exported/web_page_popup_impl.cc
index 6ba87e7..4af72cc9 100644
--- a/third_party/blink/renderer/core/exported/web_page_popup_impl.cc
+++ b/third_party/blink/renderer/core/exported/web_page_popup_impl.cc
@@ -106,6 +106,11 @@
   }
 
   float WindowToViewportScalar(const float scalar_value) const override {
+    return WindowToViewportScalar(nullptr, scalar_value);
+  }
+
+  float WindowToViewportScalar(LocalFrame*,
+                               const float scalar_value) const override {
     WebFloatRect viewport_rect(0, 0, scalar_value, 0);
     popup_->WidgetClient()->ConvertWindowToViewport(&viewport_rect);
     return viewport_rect.width;
diff --git a/third_party/blink/renderer/core/frame/local_frame_client.h b/third_party/blink/renderer/core/frame/local_frame_client.h
index cb92ea9..7a7b0b1 100644
--- a/third_party/blink/renderer/core/frame/local_frame_client.h
+++ b/third_party/blink/renderer/core/frame/local_frame_client.h
@@ -147,9 +147,6 @@
   virtual void DispatchDidCommitLoad(HistoryItem*,
                                      WebHistoryCommitType,
                                      GlobalObjectReusePolicy) = 0;
-  virtual void DispatchDidFailProvisionalLoad(
-      const ResourceError&,
-      const AtomicString& http_method) = 0;
   virtual void DispatchDidFailLoad(const ResourceError&,
                                    WebHistoryCommitType) = 0;
   virtual void DispatchDidFinishDocumentLoad() = 0;
diff --git a/third_party/blink/renderer/core/frame/local_frame_view.cc b/third_party/blink/renderer/core/frame/local_frame_view.cc
index 3dd437fe..10b95a1 100644
--- a/third_party/blink/renderer/core/frame/local_frame_view.cc
+++ b/third_party/blink/renderer/core/frame/local_frame_view.cc
@@ -4302,8 +4302,8 @@
 }
 
 LayoutUnit LocalFrameView::CaretWidth() const {
-  return LayoutUnit(
-      std::max<float>(1.0, GetChromeClient()->WindowToViewportScalar(1)));
+  return LayoutUnit(std::max<float>(
+      1.0f, GetChromeClient()->WindowToViewportScalar(&GetFrame(), 1.0f)));
 }
 
 LocalFrameUkmAggregator& LocalFrameView::EnsureUkmAggregator() {
diff --git a/third_party/blink/renderer/core/frame/visual_viewport.cc b/third_party/blink/renderer/core/frame/visual_viewport.cc
index 2cedb01..c7e7354 100644
--- a/third_party/blink/renderer/core/frame/visual_viewport.cc
+++ b/third_party/blink/renderer/core/frame/visual_viewport.cc
@@ -656,8 +656,9 @@
 int VisualViewport::ScrollbarThickness() const {
   ScrollbarThemeOverlay& theme = ScrollbarThemeOverlay::MobileTheme();
   int thickness = theme.ScrollbarThickness(kRegularScrollbar);
-  return clampTo<int>(std::floor(
-      GetPage().GetChromeClient().WindowToViewportScalar(thickness)));
+  return clampTo<int>(
+      std::floor(GetPage().GetChromeClient().WindowToViewportScalar(
+          MainFrame(), thickness)));
 }
 
 IntSize VisualViewport::ScrollbarSize(ScrollbarOrientation orientation) const {
@@ -690,10 +691,10 @@
     ScrollbarThemeOverlay& theme = ScrollbarThemeOverlay::MobileTheme();
     int thumb_thickness = clampTo<int>(
         std::floor(GetPage().GetChromeClient().WindowToViewportScalar(
-            theme.ThumbThickness())));
+            MainFrame(), theme.ThumbThickness())));
     int scrollbar_margin = clampTo<int>(
         std::floor(GetPage().GetChromeClient().WindowToViewportScalar(
-            theme.ScrollbarMargin())));
+            MainFrame(), theme.ScrollbarMargin())));
     scrollbar_layer = coordinator->CreateSolidColorScrollbarLayer(
         orientation, thumb_thickness, scrollbar_margin, false,
         GetScrollbarElementId(orientation));
diff --git a/third_party/blink/renderer/core/frame/visual_viewport_test.cc b/third_party/blink/renderer/core/frame/visual_viewport_test.cc
index 6fa88f587a..516470158 100644
--- a/third_party/blink/renderer/core/frame/visual_viewport_test.cc
+++ b/third_party/blink/renderer/core/frame/visual_viewport_test.cc
@@ -2432,7 +2432,7 @@
   ScrollbarThemeOverlay& theme = ScrollbarThemeOverlay::MobileTheme();
   int scrollbar_thickness = clampTo<int>(std::floor(
       GetFrame()->GetPage()->GetChromeClient().WindowToViewportScalar(
-          theme.ScrollbarThickness(kRegularScrollbar))));
+          GetFrame(), theme.ScrollbarThickness(kRegularScrollbar))));
 
   EXPECT_EQ(vertical_scrollbar_state.Effect().GetCompositorElementId(),
             visual_viewport.GetScrollbarElementId(
diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
index ad305ad8..d997dd15e 100644
--- a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
+++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
@@ -1931,17 +1931,6 @@
   Client()->DidFailLoad(web_error, web_commit_type);
 }
 
-void WebLocalFrameImpl::DidFailProvisionalLoad(
-    const ResourceError& error,
-    const AtomicString& http_method) {
-  if (!Client())
-    return;
-  WebURLError web_error = error;
-  if (WebPluginContainerImpl* plugin = GetFrame()->GetWebPluginContainer())
-    plugin->DidFailLoading(error);
-  Client()->DidFailProvisionalLoad(web_error, http_method);
-}
-
 void WebLocalFrameImpl::DidFinish() {
   if (!Client())
     return;
diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.h b/third_party/blink/renderer/core/frame/web_local_frame_impl.h
index 46472da1..72585dc 100644
--- a/third_party/blink/renderer/core/frame/web_local_frame_impl.h
+++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.h
@@ -419,8 +419,6 @@
   void SetFindEndstateFocusAndSelection();
 
   void DidFailLoad(const ResourceError&, WebHistoryCommitType);
-  void DidFailProvisionalLoad(const ResourceError&,
-                              const AtomicString& http_method);
   void DidFinish();
 
   void SetClient(WebLocalFrameClient* client) { client_ = client; }
diff --git a/third_party/blink/renderer/core/html/forms/internal_popup_menu.cc b/third_party/blink/renderer/core/html/forms/internal_popup_menu.cc
index 9f81321..9f018a5 100644
--- a/third_party/blink/renderer/core/html/forms/internal_popup_menu.cc
+++ b/third_party/blink/renderer/core/html/forms/internal_popup_menu.cc
@@ -231,7 +231,8 @@
       owner_element.VisibleBoundsInVisualViewport(),
       owner_element.GetDocument().View());
 
-  float scale_factor = chrome_client_->WindowToViewportScalar(1.f);
+  float scale_factor = chrome_client_->WindowToViewportScalar(
+      owner_element.GetDocument().GetFrame(), 1.f);
   PagePopupClient::AddString(
       "<!DOCTYPE html><head><meta charset='UTF-8'><style>\n", data);
   data->Append(ChooserResourceLoader::GetPickerCommonStyleSheet());
diff --git a/third_party/blink/renderer/core/html/html_meta_element.cc b/third_party/blink/renderer/core/html/html_meta_element.cc
index e763d45..e8713d5 100644
--- a/third_party/blink/renderer/core/html/html_meta_element.cc
+++ b/third_party/blink/renderer/core/html/html_meta_element.cc
@@ -202,8 +202,8 @@
     return Length();  // auto
 
   if (document && document->GetPage()) {
-    value =
-        document->GetPage()->GetChromeClient().WindowToViewportScalar(value);
+    value = document->GetPage()->GetChromeClient().WindowToViewportScalar(
+        document->GetFrame(), value);
   }
   return Length::Fixed(ClampLengthValue(value));
 }
diff --git a/third_party/blink/renderer/core/html/image_document.cc b/third_party/blink/renderer/core/html/image_document.cc
index 6947540..2b580f3 100644
--- a/third_party/blink/renderer/core/html/image_document.cc
+++ b/third_party/blink/renderer/core/html/image_document.cc
@@ -309,7 +309,7 @@
   // We want to pretend the viewport is larger when the user has zoomed the
   // page in (but not when the zoom is coming from device scale).
   const float viewport_zoom =
-      view->GetChromeClient()->WindowToViewportScalar(1.f);
+      view->GetChromeClient()->WindowToViewportScalar(GetFrame(), 1.f);
   float width_scale = view->Width() / (viewport_zoom * image_size.Width());
   float height_scale = view->Height() / (viewport_zoom * image_size.Height());
 
@@ -352,7 +352,8 @@
 
     double scale = Scale();
     double device_scale_factor =
-        GetFrame()->View()->GetChromeClient()->WindowToViewportScalar(1.f);
+        GetFrame()->View()->GetChromeClient()->WindowToViewportScalar(
+            GetFrame(), 1.f);
 
     float scroll_x = (image_x * device_scale_factor) / scale -
                      static_cast<float>(GetFrame()->View()->Width()) / 2;
diff --git a/third_party/blink/renderer/core/html/image_document_test.cc b/third_party/blink/renderer/core/html/image_document_test.cc
index a3616b7..71b2dfc 100644
--- a/third_party/blink/renderer/core/html/image_document_test.cc
+++ b/third_party/blink/renderer/core/html/image_document_test.cc
@@ -69,6 +69,9 @@
   float WindowToViewportScalar(const float s) const override {
     return s * scale_factor_;
   }
+  float WindowToViewportScalar(LocalFrame*, const float s) const override {
+    return s * scale_factor_;
+  }
 
  private:
   float scale_factor_;
diff --git a/third_party/blink/renderer/core/inspector/dev_tools_host.cc b/third_party/blink/renderer/core/inspector/dev_tools_host.cc
index 34743949..082fe36 100644
--- a/third_party/blink/renderer/core/inspector/dev_tools_host.cc
+++ b/third_party/blink/renderer/core/inspector/dev_tools_host.cc
@@ -153,7 +153,8 @@
   // use-zoom-for-dsf mode.
   const ChromeClient* client =
       frontend_frame_->View()->GetChromeClient();
-  float window_to_viewport_ratio = client->WindowToViewportScalar(1.0f);
+  float window_to_viewport_ratio =
+      client->WindowToViewportScalar(frontend_frame_, 1.0f);
   return zoom_factor / window_to_viewport_ratio;
 }
 
diff --git a/third_party/blink/renderer/core/inspector/inspector_highlight.cc b/third_party/blink/renderer/core/inspector/inspector_highlight.cc
index 9a3046f..db0c40d 100644
--- a/third_party/blink/renderer/core/inspector/inspector_highlight.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_highlight.cc
@@ -448,8 +448,10 @@
       scale_(1.f) {
   DCHECK(!DisplayLockUtilities::NearestLockedExclusiveAncestor(*node));
   LocalFrameView* frame_view = node->GetDocument().View();
-  if (frame_view)
-    scale_ = 1.f / frame_view->GetChromeClient()->WindowToViewportScalar(1.f);
+  if (frame_view) {
+    scale_ = 1.f / frame_view->GetChromeClient()->WindowToViewportScalar(
+                       &frame_view->GetFrame(), 1.f);
+  }
   AppendPathsForShapeOutside(node, highlight_config);
   AppendNodeHighlight(node, highlight_config);
   auto* text_node = DynamicTo<Text>(node);
diff --git a/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc b/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc
index 429eddd8..15d959301 100644
--- a/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc
@@ -830,7 +830,8 @@
   LocalFrame* frame = GetFrame();
   if (!frame)
     return 1.0f;
-  return frame->GetPage()->GetChromeClient().WindowToViewportScalar(1.0f);
+  return frame->GetPage()->GetChromeClient().WindowToViewportScalar(frame,
+                                                                    1.0f);
 }
 
 void InspectorOverlayAgent::EnsureOverlayPageCreated() {
diff --git a/third_party/blink/renderer/core/inspector/inspector_page_agent.cc b/third_party/blink/renderer/core/inspector/inspector_page_agent.cc
index fa9d6d1..1cd4296 100644
--- a/third_party/blink/renderer/core/inspector/inspector_page_agent.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_page_agent.cc
@@ -1181,7 +1181,8 @@
   // page_zoom_factor is CSS to DIP (device independent pixels).
   float page_zoom_factor =
       page_zoom /
-      main_frame->GetPage()->GetChromeClient().WindowToViewportScalar(1);
+      main_frame->GetPage()->GetChromeClient().WindowToViewportScalar(
+          main_frame, 1);
   FloatRect visible_rect = visual_viewport.VisibleRect();
   float scale = visual_viewport.Scale();
 
diff --git a/third_party/blink/renderer/core/layout/layout_menu_list.cc b/third_party/blink/renderer/core/layout/layout_menu_list.cc
index be5d43d4..5f1f9d1 100644
--- a/third_party/blink/renderer/core/layout/layout_menu_list.cc
+++ b/third_party/blink/renderer/core/layout/layout_menu_list.cc
@@ -138,9 +138,8 @@
 
   Length padding_start = Length::Fixed(
       LayoutTheme::GetTheme().PopupInternalPaddingStart(StyleRef()));
-  Length padding_end =
-      Length::Fixed(LayoutTheme::GetTheme().PopupInternalPaddingEnd(
-          GetFrameView()->GetChromeClient(), StyleRef()));
+  Length padding_end = Length::Fixed(
+      LayoutTheme::GetTheme().PopupInternalPaddingEnd(GetFrame(), StyleRef()));
   inner_style.SetPaddingLeft(StyleRef().Direction() == TextDirection::kLtr
                                  ? padding_start
                                  : padding_end);
diff --git a/third_party/blink/renderer/core/layout/layout_text.cc b/third_party/blink/renderer/core/layout/layout_text.cc
index 253628e9..46a2b24 100644
--- a/third_party/blink/renderer/core/layout/layout_text.cc
+++ b/third_party/blink/renderer/core/layout/layout_text.cc
@@ -54,6 +54,7 @@
 #include "third_party/blink/renderer/core/layout/ng/inline/layout_ng_text.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_abstract_inline_text_box.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.h"
+#include "third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_inline_fragment_traversal.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_offset_mapping.h"
@@ -2084,20 +2085,19 @@
     return PhysicalRect();
 
   const FrameSelection& frame_selection = GetFrame()->Selection();
-  const auto fragments = NGPaintFragment::InlineFragmentsFor(this);
-  if (fragments.IsInLayoutNGInlineFormattingContext()) {
+  if (IsInLayoutNGInlineFormattingContext()) {
     PhysicalRect rect;
-    for (const NGPaintFragment* fragment : fragments) {
-      if (fragment->PhysicalFragment().IsHiddenForPaint())
+    NGInlineCursor cursor(*RootInlineFormattingContext());
+    for (cursor.MoveTo(*this); cursor; cursor.MoveToNextForSameLayoutObject()) {
+      if (cursor.IsHiddenForPaint())
         continue;
       const LayoutSelectionStatus status =
-          frame_selection.ComputeLayoutSelectionStatus(*fragment);
+          frame_selection.ComputeLayoutSelectionStatus(cursor);
       if (status.start == status.end)
         continue;
-      PhysicalRect fragment_rect =
-          fragment->ComputeLocalSelectionRectForText(status);
-      fragment_rect.offset += fragment->InlineOffsetToContainerBox();
-      rect.Unite(fragment_rect);
+      PhysicalRect item_rect = ComputeLocalSelectionRectForText(cursor, status);
+      item_rect.offset += cursor.CurrentOffset();
+      rect.Unite(item_rect);
     }
     return rect;
   }
diff --git a/third_party/blink/renderer/core/layout/layout_theme.h b/third_party/blink/renderer/core/layout/layout_theme.h
index 68f506d..a62bbd3 100644
--- a/third_party/blink/renderer/core/layout/layout_theme.h
+++ b/third_party/blink/renderer/core/layout/layout_theme.h
@@ -48,8 +48,8 @@
 class HTMLInputElement;
 class LengthSize;
 class Locale;
+class LocalFrame;
 class Node;
-class ChromeClient;
 class ThemePainter;
 
 class CORE_EXPORT LayoutTheme : public RefCounted<LayoutTheme> {
@@ -213,8 +213,7 @@
   virtual int PopupInternalPaddingStart(const ComputedStyle&) const {
     return 0;
   }
-  virtual int PopupInternalPaddingEnd(const ChromeClient*,
-                                      const ComputedStyle&) const {
+  virtual int PopupInternalPaddingEnd(LocalFrame*, const ComputedStyle&) const {
     return 0;
   }
   virtual int PopupInternalPaddingTop(const ComputedStyle&) const { return 0; }
diff --git a/third_party/blink/renderer/core/layout/layout_theme_default.cc b/third_party/blink/renderer/core/layout/layout_theme_default.cc
index f11b471..4fdbc62 100644
--- a/third_party/blink/renderer/core/layout/layout_theme_default.cc
+++ b/third_party/blink/renderer/core/layout/layout_theme_default.cc
@@ -28,8 +28,10 @@
 #include "third_party/blink/public/platform/web_theme_engine.h"
 #include "third_party/blink/public/resources/grit/blink_resources.h"
 #include "third_party/blink/renderer/core/css_value_keywords.h"
+#include "third_party/blink/renderer/core/frame/local_frame.h"
 #include "third_party/blink/renderer/core/layout/layout_theme_font_provider.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/core/style/computed_style.h"
 #include "third_party/blink/renderer/platform/data_resource_helper.h"
 #include "third_party/blink/renderer/platform/graphics/color.h"
@@ -348,12 +350,12 @@
 }
 
 int LayoutThemeDefault::PopupInternalPaddingEnd(
-    const ChromeClient* client,
+    LocalFrame* frame,
     const ComputedStyle& style) const {
   if (!style.HasEffectiveAppearance())
     return 0;
   return 1 * style.EffectiveZoom() +
-         ClampedMenuListArrowPaddingSize(client, style);
+         ClampedMenuListArrowPaddingSize(frame, style);
 }
 
 int LayoutThemeDefault::PopupInternalPaddingTop(
@@ -375,15 +377,15 @@
 }
 
 float LayoutThemeDefault::ClampedMenuListArrowPaddingSize(
-    const ChromeClient* client,
+    LocalFrame* frame,
     const ComputedStyle& style) const {
   if (cached_menu_list_arrow_padding_size_ > 0 &&
       style.EffectiveZoom() == cached_menu_list_arrow_zoom_level_)
     return cached_menu_list_arrow_padding_size_;
   cached_menu_list_arrow_zoom_level_ = style.EffectiveZoom();
   int original_size = MenuListArrowWidthInDIP();
-  int scaled_size =
-      client ? client->WindowToViewportScalar(original_size) : original_size;
+  int scaled_size = frame->GetPage()->GetChromeClient().WindowToViewportScalar(
+      frame, original_size);
   // The result should not be samller than the scrollbar thickness in order to
   // secure space for scrollbar in popup.
   float device_scale = 1.0f * scaled_size / original_size;
diff --git a/third_party/blink/renderer/core/layout/layout_theme_default.h b/third_party/blink/renderer/core/layout/layout_theme_default.h
index 346371a..ff349a8 100644
--- a/third_party/blink/renderer/core/layout/layout_theme_default.h
+++ b/third_party/blink/renderer/core/layout/layout_theme_default.h
@@ -123,8 +123,7 @@
 
   // These methods define the padding for the MenuList's inner block.
   int PopupInternalPaddingStart(const ComputedStyle&) const override;
-  int PopupInternalPaddingEnd(const ChromeClient*,
-                              const ComputedStyle&) const override;
+  int PopupInternalPaddingEnd(LocalFrame*, const ComputedStyle&) const override;
   int PopupInternalPaddingTop(const ComputedStyle&) const override;
   int PopupInternalPaddingBottom(const ComputedStyle&) const override;
   // This returns a value based on scrollbar thickness.  It's not 0 even in
@@ -132,7 +131,7 @@
   // thickness, which is 3px or 4px, and we use the value from the default Aura
   // theme.
   int MenuListArrowWidthInDIP() const;
-  float ClampedMenuListArrowPaddingSize(const ChromeClient*,
+  float ClampedMenuListArrowPaddingSize(LocalFrame*,
                                         const ComputedStyle&) const;
 
  protected:
diff --git a/third_party/blink/renderer/core/layout/layout_theme_mac.h b/third_party/blink/renderer/core/layout/layout_theme_mac.h
index 6c340ee..ae22fe6 100644
--- a/third_party/blink/renderer/core/layout/layout_theme_mac.h
+++ b/third_party/blink/renderer/core/layout/layout_theme_mac.h
@@ -84,8 +84,7 @@
   int SliderTickOffsetFromTrackCenter() const override;
 
   int PopupInternalPaddingStart(const ComputedStyle&) const override;
-  int PopupInternalPaddingEnd(const ChromeClient*,
-                              const ComputedStyle&) const override;
+  int PopupInternalPaddingEnd(LocalFrame*, const ComputedStyle&) const override;
   int PopupInternalPaddingTop(const ComputedStyle&) const override;
   int PopupInternalPaddingBottom(const ComputedStyle&) const override;
 
diff --git a/third_party/blink/renderer/core/layout/layout_theme_mac.mm b/third_party/blink/renderer/core/layout/layout_theme_mac.mm
index f2c3d16..c51e536 100644
--- a/third_party/blink/renderer/core/layout/layout_theme_mac.mm
+++ b/third_party/blink/renderer/core/layout/layout_theme_mac.mm
@@ -752,7 +752,7 @@
   return 0;
 }
 
-int LayoutThemeMac::PopupInternalPaddingEnd(const ChromeClient*,
+int LayoutThemeMac::PopupInternalPaddingEnd(LocalFrame*,
                                             const ComputedStyle& style) const {
   if (style.EffectiveAppearance() == kMenulistPart)
     return PopupButtonPadding(ControlSizeForFont(style))[kRightMargin] *
diff --git a/third_party/blink/renderer/core/layout/layout_tree_as_text.cc b/third_party/blink/renderer/core/layout/layout_tree_as_text.cc
index fe4a22cc..e4bf50b 100644
--- a/third_party/blink/renderer/core/layout/layout_tree_as_text.cc
+++ b/third_party/blink/renderer/core/layout/layout_tree_as_text.cc
@@ -46,7 +46,8 @@
 #include "third_party/blink/renderer/core/layout/layout_table_cell.h"
 #include "third_party/blink/renderer/core/layout/layout_view.h"
 #include "third_party/blink/renderer/core/layout/line/inline_text_box.h"
-#include "third_party/blink/renderer/core/layout/ng/inline/ng_inline_fragment_traversal.h"
+#include "third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.h"
+#include "third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_text_fragment.h"
 #include "third_party/blink/renderer/core/layout/ng/list/layout_ng_list_item.h"
 #include "third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.h"
@@ -450,21 +451,17 @@
 }
 
 static void WriteTextFragment(WTF::TextStream& ts,
-                              const NGPhysicalFragment& physical_fragment,
-                              PhysicalOffset offset_to_container_box) {
-  const auto* physical_text_fragment =
-      DynamicTo<NGPhysicalTextFragment>(physical_fragment);
-  if (!physical_text_fragment)
-    return;
-  const ComputedStyle& style = physical_fragment.Style();
+                              const LayoutObject* layout_object,
+                              PhysicalRect rect,
+                              const ComputedStyle& style,
+                              StringView text,
+                              LayoutUnit inline_size) {
   // TODO(layout-dev): Dump physical coordinates when removing the legacy inline
   // layout code.
-  NGTextFragment fragment(style.GetWritingMode(), *physical_text_fragment);
+  PhysicalOffset offset_to_container_box = rect.offset;
   if (UNLIKELY(style.IsFlippedBlocksWritingMode())) {
-    if (physical_fragment.GetLayoutObject()) {
-      PhysicalRect rect(offset_to_container_box, physical_fragment.Size());
-      const LayoutBlock* containing_block =
-          physical_fragment.GetLayoutObject()->ContainingBlock();
+    if (layout_object) {
+      const LayoutBlock* containing_block = layout_object->ContainingBlock();
       LayoutRect layout_rect = containing_block->FlipForWritingMode(rect);
       offset_to_container_box.left = layout_rect.X();
     }
@@ -473,14 +470,39 @@
   // See WriteTextRun() for why we convert to int.
   int x = offset_to_container_box.left.ToInt();
   int y = offset_to_container_box.top.ToInt();
-  int logical_width =
-      (offset_to_container_box.left + fragment.InlineSize()).Ceil() - x;
+  int logical_width = (offset_to_container_box.left + inline_size).Ceil() - x;
   ts << "text run at (" << x << "," << y << ") width " << logical_width;
-  ts << ": "
-     << QuoteAndEscapeNonPrintables(physical_text_fragment->Text().ToString());
+  ts << ": " << QuoteAndEscapeNonPrintables(text.ToString());
   ts << "\n";
 }
 
+static void WriteTextFragment(WTF::TextStream& ts,
+                              const NGInlineCursor& cursor) {
+  if (const NGPaintFragment* const paint_fragment =
+          cursor.CurrentPaintFragment()) {
+    const auto* physical_text_fragment =
+        DynamicTo<NGPhysicalTextFragment>(paint_fragment->PhysicalFragment());
+    if (!physical_text_fragment)
+      return;
+    const NGTextFragment fragment(paint_fragment->Style().GetWritingMode(),
+                                  *physical_text_fragment);
+    WriteTextFragment(ts, paint_fragment->GetLayoutObject(),
+                      PhysicalRect(paint_fragment->InlineOffsetToContainerBox(),
+                                   paint_fragment->Size()),
+                      paint_fragment->Style(), physical_text_fragment->Text(),
+                      fragment.InlineSize());
+    return;
+  }
+  DCHECK(cursor.CurrentItem());
+  const NGFragmentItem& item = *cursor.CurrentItem();
+  DCHECK(item.Type() == NGFragmentItem::kText ||
+         item.Type() == NGFragmentItem::kGeneratedText);
+  const LayoutUnit inline_size =
+      item.IsHorizontal() ? item.Size().width : item.Size().height;
+  WriteTextFragment(ts, item.GetLayoutObject(), item.Rect(), item.Style(),
+                    item.Text(cursor.Items()), inline_size);
+}
+
 static void WritePaintProperties(WTF::TextStream& ts,
                                  const LayoutObject& o,
                                  int indent) {
@@ -560,12 +582,12 @@
 
   if (o.IsText() && !o.IsBR()) {
     const LayoutText& text = ToLayoutText(o);
-    if (const NGPhysicalBoxFragment* box_fragment =
-            text.ContainingBlockFlowFragment()) {
-      for (const auto& child :
-           NGInlineFragmentTraversal::SelfFragmentsOf(*box_fragment, &text)) {
+    if (const LayoutBlockFlow* block_flow = text.ContainingNGBlockFlow()) {
+      NGInlineCursor cursor(*block_flow);
+      cursor.MoveTo(text);
+      for (; cursor; cursor.MoveToNextForSameLayoutObject()) {
         WriteIndent(ts, indent + 1);
-        WriteTextFragment(ts, *child.fragment, child.offset_to_container_box);
+        WriteTextFragment(ts, cursor);
       }
     } else {
       for (InlineTextBox* box : text.TextBoxes()) {
diff --git a/third_party/blink/renderer/core/layout/ng/exclusions/ng_exclusion_space.h b/third_party/blink/renderer/core/layout/ng/exclusions/ng_exclusion_space.h
index 3f40568..b592b3c 100644
--- a/third_party/blink/renderer/core/layout/ng/exclusions/ng_exclusion_space.h
+++ b/third_party/blink/renderer/core/layout/ng/exclusions/ng_exclusion_space.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 NGExclusionSpace_h
-#define NGExclusionSpace_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_EXCLUSIONS_NG_EXCLUSION_SPACE_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_EXCLUSIONS_NG_EXCLUSION_SPACE_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/layout/ng/exclusions/ng_exclusion.h"
@@ -586,4 +586,4 @@
 WTF_ALLOW_MOVE_INIT_AND_COMPARE_WITH_MEM_FUNCTIONS(
     blink::NGExclusionSpaceInternal::NGShelfEdge)
 
-#endif  // NGExclusionSpace_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_EXCLUSIONS_NG_EXCLUSION_SPACE_H_
diff --git a/third_party/blink/renderer/core/layout/ng/exclusions/ng_layout_opportunity.h b/third_party/blink/renderer/core/layout/ng/exclusions/ng_layout_opportunity.h
index 226f01d..abf46f8 100644
--- a/third_party/blink/renderer/core/layout/ng/exclusions/ng_layout_opportunity.h
+++ b/third_party/blink/renderer/core/layout/ng/exclusions/ng_layout_opportunity.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 NGLayoutOpportunity_h
-#define NGLayoutOpportunity_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_EXCLUSIONS_NG_LAYOUT_OPPORTUNITY_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_EXCLUSIONS_NG_LAYOUT_OPPORTUNITY_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/layout/ng/exclusions/ng_line_layout_opportunity.h"
@@ -62,4 +62,4 @@
 
 }  // namespace blink
 
-#endif  // NGLayoutOpportunity_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_EXCLUSIONS_NG_LAYOUT_OPPORTUNITY_H_
diff --git a/third_party/blink/renderer/core/layout/ng/geometry/ng_bfc_offset.h b/third_party/blink/renderer/core/layout/ng/geometry/ng_bfc_offset.h
index ee363f93..91471c9 100644
--- a/third_party/blink/renderer/core/layout/ng/geometry/ng_bfc_offset.h
+++ b/third_party/blink/renderer/core/layout/ng/geometry/ng_bfc_offset.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 NGBfcOffset_h
-#define NGBfcOffset_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_GEOMETRY_NG_BFC_OFFSET_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_GEOMETRY_NG_BFC_OFFSET_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/platform/geometry/layout_unit.h"
@@ -58,4 +58,4 @@
 
 }  // namespace blink
 
-#endif  // NGBfcOffset_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_GEOMETRY_NG_BFC_OFFSET_H_
diff --git a/third_party/blink/renderer/core/layout/ng/geometry/ng_bfc_rect.h b/third_party/blink/renderer/core/layout/ng/geometry/ng_bfc_rect.h
index eac77c3..2801e81 100644
--- a/third_party/blink/renderer/core/layout/ng/geometry/ng_bfc_rect.h
+++ b/third_party/blink/renderer/core/layout/ng/geometry/ng_bfc_rect.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 NGBfcRect_h
-#define NGBfcRect_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_GEOMETRY_NG_BFC_RECT_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_GEOMETRY_NG_BFC_RECT_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/layout/geometry/logical_size.h"
@@ -51,4 +51,4 @@
 
 }  // namespace blink
 
-#endif  // NGBfcRect_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_GEOMETRY_NG_BFC_RECT_H_
diff --git a/third_party/blink/renderer/core/layout/ng/geometry/ng_border_edges.h b/third_party/blink/renderer/core/layout/ng/geometry/ng_border_edges.h
index 975cbdf..424d64a5 100644
--- a/third_party/blink/renderer/core/layout/ng/geometry/ng_border_edges.h
+++ b/third_party/blink/renderer/core/layout/ng/geometry/ng_border_edges.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 NGBorderEdges_h
-#define NGBorderEdges_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_GEOMETRY_NG_BORDER_EDGES_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_GEOMETRY_NG_BORDER_EDGES_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/platform/text/writing_mode.h"
@@ -65,4 +65,4 @@
 
 }  // namespace blink
 
-#endif  // NGBorderEdges_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_GEOMETRY_NG_BORDER_EDGES_H_
diff --git a/third_party/blink/renderer/core/layout/ng/geometry/ng_box_strut.h b/third_party/blink/renderer/core/layout/ng/geometry/ng_box_strut.h
index e4e8a9e..f5c78a92 100644
--- a/third_party/blink/renderer/core/layout/ng/geometry/ng_box_strut.h
+++ b/third_party/blink/renderer/core/layout/ng/geometry/ng_box_strut.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 NGBoxStrut_h
-#define NGBoxStrut_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_GEOMETRY_NG_BOX_STRUT_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_GEOMETRY_NG_BOX_STRUT_H_
 
 #include <utility>
 
@@ -241,4 +241,4 @@
 
 }  // namespace blink
 
-#endif  // NGBoxStrut_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_GEOMETRY_NG_BOX_STRUT_H_
diff --git a/third_party/blink/renderer/core/layout/ng/geometry/ng_margin_strut.h b/third_party/blink/renderer/core/layout/ng/geometry/ng_margin_strut.h
index d533797..50f6994 100644
--- a/third_party/blink/renderer/core/layout/ng/geometry/ng_margin_strut.h
+++ b/third_party/blink/renderer/core/layout/ng/geometry/ng_margin_strut.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 NGMarginStrut_h
-#define NGMarginStrut_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_GEOMETRY_NG_MARGIN_STRUT_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_GEOMETRY_NG_MARGIN_STRUT_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/platform/geometry/layout_unit.h"
@@ -57,4 +57,4 @@
 
 }  // namespace blink
 
-#endif  // NGMarginStrut_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_GEOMETRY_NG_MARGIN_STRUT_H_
diff --git a/third_party/blink/renderer/core/layout/ng/geometry/ng_static_position.h b/third_party/blink/renderer/core/layout/ng/geometry/ng_static_position.h
index 2da520c..bda114a 100644
--- a/third_party/blink/renderer/core/layout/ng/geometry/ng_static_position.h
+++ b/third_party/blink/renderer/core/layout/ng/geometry/ng_static_position.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 NGStaticPosition_h
-#define NGStaticPosition_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_GEOMETRY_NG_STATIC_POSITION_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_GEOMETRY_NG_STATIC_POSITION_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/layout/geometry/logical_offset.h"
@@ -144,4 +144,4 @@
 
 }  // namespace blink
 
-#endif  // NGStaticPosition_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_GEOMETRY_NG_STATIC_POSITION_H_
diff --git a/third_party/blink/renderer/core/layout/ng/inline/empty_offset_mapping_builder.h b/third_party/blink/renderer/core/layout/ng/inline/empty_offset_mapping_builder.h
index 0de484a0..7c69dad0 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/empty_offset_mapping_builder.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/empty_offset_mapping_builder.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 EmptyOffsetMappingBuilder_h
-#define EmptyOffsetMappingBuilder_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_EMPTY_OFFSET_MAPPING_BUILDER_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_EMPTY_OFFSET_MAPPING_BUILDER_H_
 
 #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
 
@@ -39,4 +39,4 @@
 
 }  // namespace blink
 
-#endif  // EmptyOffsetMappingBuilder_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_EMPTY_OFFSET_MAPPING_BUILDER_H_
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_baseline.h b/third_party/blink/renderer/core/layout/ng/inline/ng_baseline.h
index 4f4a197..6442620 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_baseline.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_baseline.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 NGBaseline_h
-#define NGBaseline_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_BASELINE_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_BASELINE_H_
 
 #include "base/optional.h"
 #include "third_party/blink/renderer/core/core_export.h"
@@ -204,4 +204,4 @@
 
 }  // namespace blink
 
-#endif  // NGBaseline_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_BASELINE_H_
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_bidi_paragraph.h b/third_party/blink/renderer/core/layout/ng/inline/ng_bidi_paragraph.h
index ee1c47fb..dc53a48 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_bidi_paragraph.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_bidi_paragraph.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 NGBidiParagraph_h
-#define NGBidiParagraph_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_BIDI_PARAGRAPH_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_BIDI_PARAGRAPH_H_
 
 #include "third_party/blink/renderer/platform/text/text_direction.h"
 #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
@@ -69,4 +69,4 @@
 
 }  // namespace blink
 
-#endif  // NGBidiParagraph_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_BIDI_PARAGRAPH_H_
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_caret_rect.h b/third_party/blink/renderer/core/layout/ng/inline/ng_caret_rect.h
index d7a1a029..47db5da 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_caret_rect.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_caret_rect.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 NGCaretRect_h
-#define NGCaretRect_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_CARET_RECT_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_CARET_RECT_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/editing/forward.h"
@@ -27,4 +27,4 @@
 
 }  // namespace blink
 
-#endif  // NGCaretRect_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_CARET_RECT_H_
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_box_state.h b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_box_state.h
index 335e042..066225e8 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_box_state.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_box_state.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 NGInlineBoxState_h
-#define NGInlineBoxState_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_BOX_STATE_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_BOX_STATE_H_
 
 #include "third_party/blink/renderer/core/layout/geometry/logical_size.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_line_box_fragment_builder.h"
@@ -256,4 +256,4 @@
 
 }  // namespace blink
 
-#endif  // NGInlineBoxState_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_BOX_STATE_H_
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_break_token.h b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_break_token.h
index f5c93cd..fdf2ebd 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_break_token.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_break_token.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 NGInlineBreakToken_h
-#define NGInlineBreakToken_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_BREAK_TOKEN_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_BREAK_TOKEN_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.h"
@@ -96,4 +96,4 @@
 
 }  // namespace blink
 
-#endif  // NGInlineBreakToken_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_BREAK_TOKEN_H_
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_fragment_traversal.h b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_fragment_traversal.h
index e2ec8c6..c286b791 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_fragment_traversal.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_fragment_traversal.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 NGInlineFragmentTraversal_h
-#define NGInlineFragmentTraversal_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_FRAGMENT_TRAVERSAL_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_FRAGMENT_TRAVERSAL_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/layout/ng/ng_physical_fragment.h"
@@ -42,4 +42,4 @@
 
 }  // namespace blink
 
-#endif  // NGInlineFragmentTraversal_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_FRAGMENT_TRAVERSAL_H_
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_item.h b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_item.h
index 0ae6630..018e02db 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_item.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_item.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 NGInlineItem_h
-#define NGInlineItem_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_ITEM_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_ITEM_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/layout/layout_inline.h"
@@ -297,4 +297,4 @@
 
 }  // namespace blink
 
-#endif  // NGInlineItem_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_ITEM_H_
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_item_result.h b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_item_result.h
index 95ba2a6..c55dfae 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_item_result.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_item_result.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 NGInlineItemResult_h
-#define NGInlineItemResult_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_ITEM_RESULT_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_ITEM_RESULT_H_
 
 #include "third_party/blink/renderer/core/layout/ng/geometry/ng_box_strut.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_physical_text_fragment.h"
@@ -284,4 +284,4 @@
 
 }  // namespace blink
 
-#endif  // NGInlineItemResult_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_ITEM_RESULT_H_
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_items_builder.h b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_items_builder.h
index 07abca2..8b0939a 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_items_builder.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_items_builder.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 NGInlineItemsBuilder_h
-#define NGInlineItemsBuilder_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_ITEMS_BUILDER_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_ITEMS_BUILDER_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/empty_offset_mapping_builder.h"
@@ -263,4 +263,4 @@
 
 }  // namespace blink
 
-#endif  // NGInlineItemsBuilder_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_ITEMS_BUILDER_H_
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_layout_algorithm.h b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_layout_algorithm.h
index 4b7c45e..6fe33fe9 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_layout_algorithm.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_layout_algorithm.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 NGInlineLayoutAlgorithm_h
-#define NGInlineLayoutAlgorithm_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_LAYOUT_ALGORITHM_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_LAYOUT_ALGORITHM_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.h"
@@ -123,4 +123,4 @@
 
 }  // namespace blink
 
-#endif  // NGInlineLayoutAlgorithm_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_LAYOUT_ALGORITHM_H_
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.h b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.h
index 318a6cefa..ddb8325 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.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 NGInlineNode_h
-#define NGInlineNode_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_NODE_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_NODE_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/layout/layout_block_flow.h"
@@ -202,4 +202,4 @@
 
 }  // namespace blink
 
-#endif  // NGInlineNode_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_NODE_H_
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node_data.h b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node_data.h
index b7c04d4..1db4627 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node_data.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node_data.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 NGInlineNodeData_h
-#define NGInlineNodeData_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_NODE_DATA_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_NODE_DATA_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_inline_item.h"
@@ -68,4 +68,4 @@
 
 }  // namespace blink
 
-#endif  // NGInlineNode_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_INLINE_NODE_DATA_H_
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_line_box_fragment.h b/third_party/blink/renderer/core/layout/ng/inline/ng_line_box_fragment.h
index 3625e41..b1a43d80 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_line_box_fragment.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_line_box_fragment.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 NGLineBoxFragment_h
-#define NGLineBoxFragment_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_LINE_BOX_FRAGMENT_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_LINE_BOX_FRAGMENT_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_physical_line_box_fragment.h"
@@ -29,4 +29,4 @@
 
 }  // namespace blink
 
-#endif  // NGLineBoxFragment_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_LINE_BOX_FRAGMENT_H_
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_line_box_fragment_builder.h b/third_party/blink/renderer/core/layout/ng/inline/ng_line_box_fragment_builder.h
index 850586c4..d7320dd 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_line_box_fragment_builder.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_line_box_fragment_builder.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 NGLineBoxFragmentBuilder_h
-#define NGLineBoxFragmentBuilder_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_LINE_BOX_FRAGMENT_BUILDER_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_LINE_BOX_FRAGMENT_BUILDER_H_
 
 #include "third_party/blink/renderer/core/layout/geometry/logical_offset.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_inline_break_token.h"
@@ -278,4 +278,4 @@
 WTF_ALLOW_MOVE_INIT_AND_COMPARE_WITH_MEM_FUNCTIONS(
     blink::NGLineBoxFragmentBuilder::Child)
 
-#endif  // NGLineBoxFragmentBuilder
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_LINE_BOX_FRAGMENT_BUILDER_H_
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_line_breaker.h b/third_party/blink/renderer/core/layout/ng/inline/ng_line_breaker.h
index 7d444eb..8fcb16a 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_line_breaker.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_line_breaker.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 NGLineBreaker_h
-#define NGLineBreaker_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_LINE_BREAKER_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_LINE_BREAKER_H_
 
 #include "base/optional.h"
 #include "third_party/blink/renderer/core/core_export.h"
@@ -308,4 +308,4 @@
 
 }  // namespace blink
 
-#endif  // NGLineBreaker_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_LINE_BREAKER_H_
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_line_height_metrics.h b/third_party/blink/renderer/core/layout/ng/inline/ng_line_height_metrics.h
index d8d9eba3..4e3be49 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_line_height_metrics.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_line_height_metrics.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 NGLineHeightMetrics_h
-#define NGLineHeightMetrics_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_LINE_HEIGHT_METRICS_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_LINE_HEIGHT_METRICS_H_
 
 #include "third_party/blink/renderer/platform/fonts/font_baseline.h"
 #include "third_party/blink/renderer/platform/geometry/layout_unit.h"
@@ -70,4 +70,4 @@
 
 }  // namespace blink
 
-#endif  // NGLineHeightMetrics_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_LINE_HEIGHT_METRICS_H_
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_offset_mapping.h b/third_party/blink/renderer/core/layout/ng/inline/ng_offset_mapping.h
index 1a2ad8c..40ab1e6 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_offset_mapping.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_offset_mapping.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 NGOffsetMapping_h
-#define NGOffsetMapping_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_OFFSET_MAPPING_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_OFFSET_MAPPING_H_
 
 #include "base/optional.h"
 #include "third_party/blink/renderer/core/core_export.h"
@@ -243,4 +243,4 @@
 
 }  // namespace blink
 
-#endif  // NGOffsetMapping_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_OFFSET_MAPPING_H_
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_offset_mapping_builder.h b/third_party/blink/renderer/core/layout/ng/inline/ng_offset_mapping_builder.h
index 652d603..957e64a8 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_offset_mapping_builder.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_offset_mapping_builder.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 NGOffsetMappingBuilder_h
-#define NGOffsetMappingBuilder_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_OFFSET_MAPPING_BUILDER_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_OFFSET_MAPPING_BUILDER_H_
 
 #include <memory>
 #include "base/auto_reset.h"
@@ -146,4 +146,4 @@
 
 }  // namespace blink
 
-#endif  // OffsetMappingBuilder_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_OFFSET_MAPPING_BUILDER_H_
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_physical_line_box_fragment.h b/third_party/blink/renderer/core/layout/ng/inline/ng_physical_line_box_fragment.h
index 7fc614b..ad017734 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_physical_line_box_fragment.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_physical_line_box_fragment.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 NGPhysicalLineBoxFragment_h
-#define NGPhysicalLineBoxFragment_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_PHYSICAL_LINE_BOX_FRAGMENT_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_PHYSICAL_LINE_BOX_FRAGMENT_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_line_height_metrics.h"
@@ -96,4 +96,4 @@
 
 }  // namespace blink
 
-#endif  // NGPhysicalBoxFragment_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_PHYSICAL_LINE_BOX_FRAGMENT_H_
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_physical_text_fragment.h b/third_party/blink/renderer/core/layout/ng/inline/ng_physical_text_fragment.h
index 921af7d..7d0adc9b 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_physical_text_fragment.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_physical_text_fragment.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 NGPhysicalTextFragment_h
-#define NGPhysicalTextFragment_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_PHYSICAL_TEXT_FRAGMENT_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_PHYSICAL_TEXT_FRAGMENT_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_text_end_effect.h"
@@ -161,4 +161,4 @@
 
 }  // namespace blink
 
-#endif  // NGPhysicalTextFragment_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_PHYSICAL_TEXT_FRAGMENT_H_
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_text_end_effect.h b/third_party/blink/renderer/core/layout/ng/inline/ng_text_end_effect.h
index 48af391..0dbc9f8 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_text_end_effect.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_text_end_effect.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 NGTextEndEffect_h
-#define NGTextEndEffect_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_TEXT_END_EFFECT_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_TEXT_END_EFFECT_H_
 
 namespace blink {
 
@@ -17,4 +17,4 @@
 
 }  // namespace blink
 
-#endif  // NGTextEndEffect_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_TEXT_END_EFFECT_H_
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_text_fragment.h b/third_party/blink/renderer/core/layout/ng/inline/ng_text_fragment.h
index abf640f..dc2e79fd 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_text_fragment.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_text_fragment.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 NGTextFragment_h
-#define NGTextFragment_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_TEXT_FRAGMENT_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_TEXT_FRAGMENT_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_physical_text_fragment.h"
@@ -20,4 +20,4 @@
 
 }  // namespace blink
 
-#endif  // NGTextFragment_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_TEXT_FRAGMENT_H_
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_text_fragment_builder.h b/third_party/blink/renderer/core/layout/ng/inline/ng_text_fragment_builder.h
index 97ec61d..422fcd3 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_text_fragment_builder.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_text_fragment_builder.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 NGTextFragmentBuilder_h
-#define NGTextFragmentBuilder_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_TEXT_FRAGMENT_BUILDER_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_TEXT_FRAGMENT_BUILDER_H_
 
 #include "third_party/blink/renderer/core/layout/geometry/logical_size.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.h"
@@ -61,4 +61,4 @@
 
 }  // namespace blink
 
-#endif  // NGTextFragmentBuilder
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_INLINE_NG_TEXT_FRAGMENT_BUILDER_H_
diff --git a/third_party/blink/renderer/core/layout/ng/layout_ng_block_flow.h b/third_party/blink/renderer/core/layout/ng/layout_ng_block_flow.h
index ae132bb..37fafae2 100644
--- a/third_party/blink/renderer/core/layout/ng/layout_ng_block_flow.h
+++ b/third_party/blink/renderer/core/layout/ng/layout_ng_block_flow.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 LayoutNGBlockFlow_h
-#define LayoutNGBlockFlow_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_LAYOUT_NG_BLOCK_FLOW_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_LAYOUT_NG_BLOCK_FLOW_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/layout/layout_block_flow.h"
@@ -33,4 +33,4 @@
 
 }  // namespace blink
 
-#endif  // LayoutNGBlockFlow_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_LAYOUT_NG_BLOCK_FLOW_H_
diff --git a/third_party/blink/renderer/core/layout/ng/layout_ng_mixin.h b/third_party/blink/renderer/core/layout/ng/layout_ng_mixin.h
index 57eea64..7234dcf 100644
--- a/third_party/blink/renderer/core/layout/ng/layout_ng_mixin.h
+++ b/third_party/blink/renderer/core/layout/ng/layout_ng_mixin.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 LayoutNGMixin_h
-#define LayoutNGMixin_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_LAYOUT_NG_MIXIN_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_LAYOUT_NG_MIXIN_H_
 
 #include <type_traits>
 
@@ -44,4 +44,4 @@
 
 }  // namespace blink
 
-#endif  // LayoutNGMixin_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_LAYOUT_NG_MIXIN_H_
diff --git a/third_party/blink/renderer/core/layout/ng/layout_ng_table_cell.h b/third_party/blink/renderer/core/layout/ng/layout_ng_table_cell.h
index d51ed5338..4781aa0 100644
--- a/third_party/blink/renderer/core/layout/ng/layout_ng_table_cell.h
+++ b/third_party/blink/renderer/core/layout/ng/layout_ng_table_cell.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 LayoutNGTableCell_h
-#define LayoutNGTableCell_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_LAYOUT_NG_TABLE_CELL_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_LAYOUT_NG_TABLE_CELL_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/layout/layout_table_cell.h"
@@ -23,4 +23,4 @@
 
 }  // namespace blink
 
-#endif  // LayoutNGTableCell_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_LAYOUT_NG_TABLE_CELL_H_
diff --git a/third_party/blink/renderer/core/layout/ng/legacy_layout_tree_walking.h b/third_party/blink/renderer/core/layout/ng/legacy_layout_tree_walking.h
index 82ea95e..e01bc5d 100644
--- a/third_party/blink/renderer/core/layout/ng/legacy_layout_tree_walking.h
+++ b/third_party/blink/renderer/core/layout/ng/legacy_layout_tree_walking.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 LegacyLayoutTreeWalking_h
-#define LegacyLayoutTreeWalking_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_LEGACY_LAYOUT_TREE_WALKING_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_LEGACY_LAYOUT_TREE_WALKING_H_
 
 #include "third_party/blink/renderer/core/layout/layout_block_flow.h"
 
@@ -106,4 +106,4 @@
 
 }  // namespace blink
 
-#endif  // LegacyLayoutTreeWalking_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_LEGACY_LAYOUT_TREE_WALKING_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_absolute_utils.h b/third_party/blink/renderer/core/layout/ng/ng_absolute_utils.h
index f6d237a..bcfa41f 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_absolute_utils.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_absolute_utils.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 NGAbsoluteUtils_h
-#define NGAbsoluteUtils_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_ABSOLUTE_UTILS_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_ABSOLUTE_UTILS_H_
 
 #include "base/optional.h"
 #include "third_party/blink/renderer/core/core_export.h"
@@ -85,4 +85,4 @@
 
 }  // namespace blink
 
-#endif  // NGAbsoluteUtils_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_ABSOLUTE_UTILS_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_block_break_token.h b/third_party/blink/renderer/core/layout/ng/ng_block_break_token.h
index 6c500fc..fc5ab4b 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_block_break_token.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_block_break_token.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 NGBlockBreakToken_h
-#define NGBlockBreakToken_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_BLOCK_BREAK_TOKEN_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_BLOCK_BREAK_TOKEN_H_
 
 #include "base/memory/scoped_refptr.h"
 #include "third_party/blink/renderer/core/core_export.h"
@@ -129,4 +129,4 @@
 
 }  // namespace blink
 
-#endif  // NGBlockBreakToken_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_BLOCK_BREAK_TOKEN_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_block_child_iterator.h b/third_party/blink/renderer/core/layout/ng/ng_block_child_iterator.h
index cf44366..3b7636a 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_block_child_iterator.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_block_child_iterator.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 NGBlockChildIterator_h
-#define NGBlockChildIterator_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_BLOCK_CHILD_ITERATOR_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_BLOCK_CHILD_ITERATOR_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/layout/ng/ng_layout_input_node.h"
@@ -72,4 +72,4 @@
 
 }  // namespace blink
 
-#endif  // NGBlockChildIterator_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_BLOCK_CHILD_ITERATOR_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.h b/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.h
index 9b1b9d5..1fa4901 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.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 NGBlockLayoutAlgorithm_h
-#define NGBlockLayoutAlgorithm_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_BLOCK_LAYOUT_ALGORITHM_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_BLOCK_LAYOUT_ALGORITHM_H_
 
 #include "base/memory/scoped_refptr.h"
 #include "third_party/blink/renderer/core/core_export.h"
@@ -435,4 +435,4 @@
 
 }  // namespace blink
 
-#endif  // NGBlockLayoutAlgorithm_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_BLOCK_LAYOUT_ALGORITHM_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_block_node.h b/third_party/blink/renderer/core/layout/ng/ng_block_node.h
index 57def4fe..306838b 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_block_node.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_block_node.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 NGBlockNode_h
-#define NGBlockNode_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_BLOCK_NODE_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_BLOCK_NODE_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/layout/geometry/physical_offset.h"
@@ -200,4 +200,4 @@
 
 }  // namespace blink
 
-#endif  // NGBlockNode
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_BLOCK_NODE_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_box_fragment.h b/third_party/blink/renderer/core/layout/ng/ng_box_fragment.h
index d282938..dbfd474 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_box_fragment.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_box_fragment.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 NGBoxFragment_h
-#define NGBoxFragment_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_BOX_FRAGMENT_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_BOX_FRAGMENT_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/layout/ng/ng_fragment.h"
@@ -63,4 +63,4 @@
 
 }  // namespace blink
 
-#endif  // NGBoxFragment_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_BOX_FRAGMENT_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_break_token.h b/third_party/blink/renderer/core/layout/ng/ng_break_token.h
index fbd12de..29c7bb60 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_break_token.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_break_token.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 NGBreakToken_h
-#define NGBreakToken_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_BREAK_TOKEN_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_BREAK_TOKEN_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/layout/ng/ng_break_appeal.h"
@@ -119,4 +119,4 @@
 
 }  // namespace blink
 
-#endif  // NGBreakToken_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_BREAK_TOKEN_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_column_layout_algorithm.h b/third_party/blink/renderer/core/layout/ng/ng_column_layout_algorithm.h
index 7f558dde..03a5662 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_column_layout_algorithm.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_column_layout_algorithm.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 NGColumnLayoutAlgorithm_h
-#define NGColumnLayoutAlgorithm_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_COLUMN_LAYOUT_ALGORITHM_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_COLUMN_LAYOUT_ALGORITHM_H_
 
 #include "third_party/blink/renderer/core/layout/ng/ng_box_fragment_builder.h"
 #include "third_party/blink/renderer/core/layout/ng/ng_layout_algorithm.h"
@@ -77,4 +77,4 @@
 
 }  // namespace blink
 
-#endif  // NGColumnLayoutAlgorithm_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_COLUMN_LAYOUT_ALGORITHM_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_constraint_space.h b/third_party/blink/renderer/core/layout/ng/ng_constraint_space.h
index 207b169..eb57e54 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_constraint_space.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_constraint_space.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 NGConstraintSpace_h
-#define NGConstraintSpace_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_CONSTRAINT_SPACE_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_CONSTRAINT_SPACE_H_
 
 #include "base/optional.h"
 #include "third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h"
@@ -974,4 +974,4 @@
 
 }  // namespace blink
 
-#endif  // NGConstraintSpace_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_CONSTRAINT_SPACE_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_constraint_space_builder.h b/third_party/blink/renderer/core/layout/ng/ng_constraint_space_builder.h
index dea3f89..152b5be0 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_constraint_space_builder.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_constraint_space_builder.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 NGConstraintSpaceBuilder_h
-#define NGConstraintSpaceBuilder_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_CONSTRAINT_SPACE_BUILDER_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_CONSTRAINT_SPACE_BUILDER_H_
 
 #include "base/optional.h"
 #include "third_party/blink/renderer/core/layout/geometry/logical_size.h"
@@ -365,4 +365,4 @@
 
 }  // namespace blink
 
-#endif  // NGConstraintSpaceBuilder
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_CONSTRAINT_SPACE_BUILDER_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_container_fragment_builder.h b/third_party/blink/renderer/core/layout/ng/ng_container_fragment_builder.h
index 050ba3dc..870f70f 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_container_fragment_builder.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_container_fragment_builder.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 NGContainerFragmentBuilder_h
-#define NGContainerFragmentBuilder_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_CONTAINER_FRAGMENT_BUILDER_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_CONTAINER_FRAGMENT_BUILDER_H_
 
 #include "base/memory/scoped_refptr.h"
 #include "third_party/blink/renderer/core/core_export.h"
@@ -239,4 +239,4 @@
 WTF_ALLOW_MOVE_INIT_AND_COMPARE_WITH_MEM_FUNCTIONS(
     blink::NGContainerFragmentBuilder::ChildWithOffset)
 
-#endif  // NGContainerFragmentBuilder
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_CONTAINER_FRAGMENT_BUILDER_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_floats_utils.h b/third_party/blink/renderer/core/layout/ng/ng_floats_utils.h
index bc75b01..06fedcf 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_floats_utils.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_floats_utils.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 NGFloatsUtils_h
-#define NGFloatsUtils_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_FLOATS_UTILS_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_FLOATS_UTILS_H_
 
 #include "base/memory/scoped_refptr.h"
 #include "third_party/blink/renderer/core/core_export.h"
@@ -44,4 +44,4 @@
 
 }  // namespace blink
 
-#endif  // NGFloatsUtils_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_FLOATS_UTILS_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_fragment.h b/third_party/blink/renderer/core/layout/ng/ng_fragment.h
index cd5ac2a..63e80ed 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_fragment.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_fragment.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 NGFragment_h
-#define NGFragment_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_FRAGMENT_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_FRAGMENT_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/layout/ng/geometry/ng_border_edges.h"
@@ -57,4 +57,4 @@
 
 }  // namespace blink
 
-#endif  // NGFragment_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_FRAGMENT_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_fragmentation_utils.h b/third_party/blink/renderer/core/layout/ng/ng_fragmentation_utils.h
index c170ff3..6e8ae1a 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_fragmentation_utils.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_fragmentation_utils.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 NGFragmentationUtils_h
-#define NGFragmentationUtils_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_FRAGMENTATION_UTILS_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_FRAGMENTATION_UTILS_H_
 
 #include "third_party/blink/renderer/core/layout/ng/ng_block_break_token.h"
 #include "third_party/blink/renderer/core/layout/ng/ng_block_node.h"
@@ -86,4 +86,4 @@
 
 }  // namespace blink
 
-#endif  // NGFragmentationUtils_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_FRAGMENTATION_UTILS_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_layout_algorithm.h b/third_party/blink/renderer/core/layout/ng/ng_layout_algorithm.h
index 379dc9c..2ef8605 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_layout_algorithm.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_layout_algorithm.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 NGLayoutAlgorithm_h
-#define NGLayoutAlgorithm_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_LAYOUT_ALGORITHM_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_LAYOUT_ALGORITHM_H_
 
 #include "base/optional.h"
 #include "third_party/blink/renderer/core/core_export.h"
@@ -119,4 +119,4 @@
 
 }  // namespace blink
 
-#endif  // NGLayoutAlgorithm_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_LAYOUT_ALGORITHM_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_layout_input_node.h b/third_party/blink/renderer/core/layout/ng/ng_layout_input_node.h
index 3ccf93f..85b3841 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_layout_input_node.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_layout_input_node.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 NGLayoutInputNode_h
-#define NGLayoutInputNode_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_LAYOUT_INPUT_NODE_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_LAYOUT_INPUT_NODE_H_
 
 #include "base/optional.h"
 #include "third_party/blink/renderer/core/core_export.h"
@@ -238,4 +238,4 @@
 
 }  // namespace blink
 
-#endif  // NGLayoutInputNode_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_LAYOUT_INPUT_NODE_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_layout_result.h b/third_party/blink/renderer/core/layout/ng/ng_layout_result.h
index 416b1dfa..ed9f62e7 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_layout_result.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_layout_result.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 NGLayoutResult_h
-#define NGLayoutResult_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_LAYOUT_RESULT_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_LAYOUT_RESULT_H_
 
 #include "base/memory/scoped_refptr.h"
 #include "third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h"
@@ -406,4 +406,4 @@
 
 }  // namespace blink
 
-#endif  // NGLayoutResult_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_LAYOUT_RESULT_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_layout_test.h b/third_party/blink/renderer/core/layout/ng/ng_layout_test.h
index f0eb096..95b6a5f5 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_layout_test.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_layout_test.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 NGLayoutTest_h
-#define NGLayoutTest_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_LAYOUT_TEST_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_LAYOUT_TEST_H_
 
 #include "third_party/blink/renderer/core/frame/local_frame_client.h"
 #include "third_party/blink/renderer/core/testing/core_unit_test_helper.h"
@@ -22,4 +22,4 @@
 
 }  // namespace blink
 
-#endif  // NGLayoutTest_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_LAYOUT_TEST_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_length_utils.h b/third_party/blink/renderer/core/layout/ng/ng_length_utils.h
index 9f40cb2..4d69861 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_length_utils.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_length_utils.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 NGLengthUtils_h
-#define NGLengthUtils_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_LENGTH_UTILS_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_LENGTH_UTILS_H_
 
 #include "base/optional.h"
 #include "third_party/blink/renderer/core/core_export.h"
@@ -484,4 +484,4 @@
 
 }  // namespace blink
 
-#endif  // NGLengthUtils_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_LENGTH_UTILS_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.h b/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.h
index dc32c3e..0564516 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.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 NGOutOfFlowLayoutPart_h
-#define NGOutOfFlowLayoutPart_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_OUT_OF_FLOW_LAYOUT_PART_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_OUT_OF_FLOW_LAYOUT_PART_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 
@@ -135,4 +135,4 @@
 
 }  // namespace blink
 
-#endif
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_OUT_OF_FLOW_LAYOUT_PART_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_page_layout_algorithm.h b/third_party/blink/renderer/core/layout/ng/ng_page_layout_algorithm.h
index 8491eaa..f05b8a8 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_page_layout_algorithm.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_page_layout_algorithm.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 NGPageLayoutAlgorithm_h
-#define NGPageLayoutAlgorithm_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_PAGE_LAYOUT_ALGORITHM_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_PAGE_LAYOUT_ALGORITHM_H_
 
 #include "third_party/blink/renderer/core/layout/ng/ng_layout_algorithm.h"
 
@@ -38,4 +38,4 @@
 
 }  // namespace blink
 
-#endif  // NGPageLayoutAlgorithm_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_PAGE_LAYOUT_ALGORITHM_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.h b/third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.h
index 6539b5b..999537f7 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.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 NGPhysicalBoxFragment_h
-#define NGPhysicalBoxFragment_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_PHYSICAL_BOX_FRAGMENT_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_PHYSICAL_BOX_FRAGMENT_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/layout/ng/geometry/ng_box_strut.h"
@@ -140,4 +140,4 @@
 
 }  // namespace blink
 
-#endif  // NGPhysicalBoxFragment_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_PHYSICAL_BOX_FRAGMENT_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h b/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h
index b76a863..86f35a5 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.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 NGPhysicalContainerFragment_h
-#define NGPhysicalContainerFragment_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_PHYSICAL_CONTAINER_FRAGMENT_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_PHYSICAL_CONTAINER_FRAGMENT_H_
 
 #include "base/containers/span.h"
 #include "third_party/blink/renderer/core/core_export.h"
@@ -179,4 +179,4 @@
 
 }  // namespace blink
 
-#endif  // NGPhysicalContainerFragment_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_PHYSICAL_CONTAINER_FRAGMENT_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_physical_fragment.h b/third_party/blink/renderer/core/layout/ng/ng_physical_fragment.h
index 19c743c..271350d4 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_physical_fragment.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_physical_fragment.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 NGPhysicalFragment_h
-#define NGPhysicalFragment_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_PHYSICAL_FRAGMENT_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_PHYSICAL_FRAGMENT_H_
 
 #include "base/memory/scoped_refptr.h"
 #include "third_party/blink/renderer/core/core_export.h"
@@ -351,4 +351,4 @@
 
 }  // namespace blink
 
-#endif  // NGPhysicalFragment_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_PHYSICAL_FRAGMENT_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_positioned_float.h b/third_party/blink/renderer/core/layout/ng/ng_positioned_float.h
index 72c6ead..e24bf5b 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_positioned_float.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_positioned_float.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 NGPositionedFloat_h
-#define NGPositionedFloat_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_POSITIONED_FLOAT_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_POSITIONED_FLOAT_H_
 
 #include "base/memory/scoped_refptr.h"
 #include "third_party/blink/renderer/core/core_export.h"
@@ -30,4 +30,4 @@
 
 }  // namespace blink
 
-#endif  // NGPositionedFloat_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_POSITIONED_FLOAT_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_relative_utils.h b/third_party/blink/renderer/core/layout/ng/ng_relative_utils.h
index 5c2ce9d5..e15d5563 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_relative_utils.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_relative_utils.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 NGRelativeUtils_h
-#define NGRelativeUtils_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_RELATIVE_UTILS_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_RELATIVE_UTILS_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/layout/geometry/logical_size.h"
@@ -25,4 +25,4 @@
 
 }  // namespace blink
 
-#endif  // NGRelativeUtils_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_RELATIVE_UTILS_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_space_utils.h b/third_party/blink/renderer/core/layout/ng/ng_space_utils.h
index 90f3adb..af96da0c 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_space_utils.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_space_utils.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 NGSpaceUtils_h
-#define NGSpaceUtils_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_SPACE_UTILS_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_SPACE_UTILS_H_
 
 #include "base/memory/scoped_refptr.h"
 #include "base/optional.h"
@@ -44,4 +44,4 @@
 
 }  // namespace blink
 
-#endif  // NGSpaceUtils_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_SPACE_UTILS_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_unpositioned_float.h b/third_party/blink/renderer/core/layout/ng/ng_unpositioned_float.h
index b0148f5..ce5d0b9 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_unpositioned_float.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_unpositioned_float.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 NGUnpositionedFloat_h
-#define NGUnpositionedFloat_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_UNPOSITIONED_FLOAT_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_UNPOSITIONED_FLOAT_H_
 
 #include "base/memory/scoped_refptr.h"
 #include "third_party/blink/renderer/core/layout/ng/geometry/ng_box_strut.h"
@@ -53,4 +53,4 @@
 
 }  // namespace blink
 
-#endif  // NGUnpositionedFloat_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_NG_UNPOSITIONED_FLOAT_H_
diff --git a/third_party/blink/renderer/core/layout/text_autosizer_test.cc b/third_party/blink/renderer/core/layout/text_autosizer_test.cc
index aa7e849..103457e 100644
--- a/third_party/blink/renderer/core/layout/text_autosizer_test.cc
+++ b/third_party/blink/renderer/core/layout/text_autosizer_test.cc
@@ -20,6 +20,9 @@
 class TextAutosizerClient : public RenderingTestChromeClient {
  public:
   float WindowToViewportScalar(const float value) const override {
+    return WindowToViewportScalar(nullptr, value);
+  }
+  float WindowToViewportScalar(LocalFrame*, const float value) const override {
     return value * device_scale_factor_;
   }
   IntRect ViewportToScreen(const IntRect& rect,
diff --git a/third_party/blink/renderer/core/loader/empty_clients.h b/third_party/blink/renderer/core/loader/empty_clients.h
index ec31d7f..5bd38b6 100644
--- a/third_party/blink/renderer/core/loader/empty_clients.h
+++ b/third_party/blink/renderer/core/loader/empty_clients.h
@@ -284,9 +284,6 @@
   void DispatchDidCommitLoad(HistoryItem*,
                              WebHistoryCommitType,
                              GlobalObjectReusePolicy) override {}
-  void DispatchDidFailProvisionalLoad(
-      const ResourceError&,
-      const AtomicString& http_method) override {}
   void DispatchDidFailLoad(const ResourceError&,
                            WebHistoryCommitType) override {}
   void DispatchDidFinishDocumentLoad() override {}
diff --git a/third_party/blink/renderer/core/loader/frame_loader.cc b/third_party/blink/renderer/core/loader/frame_loader.cc
index 8aa2ca0..138f90f 100644
--- a/third_party/blink/renderer/core/loader/frame_loader.cc
+++ b/third_party/blink/renderer/core/loader/frame_loader.cc
@@ -63,6 +63,7 @@
 #include "third_party/blink/renderer/core/dom/element.h"
 #include "third_party/blink/renderer/core/dom/ignore_opens_during_unload_count_incrementer.h"
 #include "third_party/blink/renderer/core/events/page_transition_event.h"
+#include "third_party/blink/renderer/core/exported/web_plugin_container_impl.h"
 #include "third_party/blink/renderer/core/frame/csp/content_security_policy.h"
 #include "third_party/blink/renderer/core/frame/csp/navigation_initiator_impl.h"
 #include "third_party/blink/renderer/core/frame/frame_console.h"
@@ -976,7 +977,6 @@
   progress_tracker_->ProgressStarted();
   client_navigation_ = std::make_unique<ClientNavigationState>();
   client_navigation_->url = info.url_request.Url();
-  client_navigation_->http_method = info.url_request.HttpMethod();
   client_navigation_->is_history_navigation_in_new_frame =
       is_history_navigation_in_new_frame;
   frame_->GetFrameScheduler()->DidStartProvisionalLoad(frame_->IsMainFrame());
@@ -1481,9 +1481,10 @@
   if (!client_navigation_)
     return;
   ResourceError error = ResourceError::CancelledError(client_navigation_->url);
-  AtomicString http_method = client_navigation_->http_method;
   ClearClientNavigation();
-  Client()->DispatchDidFailProvisionalLoad(error, http_method);
+  if (WebPluginContainerImpl* plugin = frame_->GetWebPluginContainer())
+    plugin->DidFailLoading(error);
+  Client()->AbortClientNavigation();
 }
 
 void FrameLoader::DispatchDocumentElementAvailable() {
diff --git a/third_party/blink/renderer/core/loader/frame_loader.h b/third_party/blink/renderer/core/loader/frame_loader.h
index c3606acb..4b5ddfe5 100644
--- a/third_party/blink/renderer/core/loader/frame_loader.h
+++ b/third_party/blink/renderer/core/loader/frame_loader.h
@@ -292,7 +292,6 @@
   // is either committed or cancelled.
   struct ClientNavigationState {
     KURL url;
-    AtomicString http_method;
     bool is_history_navigation_in_new_frame = false;
   };
   std::unique_ptr<ClientNavigationState> client_navigation_;
diff --git a/third_party/blink/renderer/core/page/chrome_client_impl.cc b/third_party/blink/renderer/core/page/chrome_client_impl.cc
index 08ace3f..abd56cf 100644
--- a/third_party/blink/renderer/core/page/chrome_client_impl.cc
+++ b/third_party/blink/renderer/core/page/chrome_client_impl.cc
@@ -474,22 +474,28 @@
 
 float ChromeClientImpl::WindowToViewportScalar(const float scalar_value) const {
   // TODO(darin): Change callers to pass a LocalFrame.
-  return WindowToViewportScalar(web_view_->MainFrameImpl()
-                                    ? web_view_->MainFrameImpl()->GetFrame()
-                                    : nullptr,
+  if (!web_view_->MainFrameImpl())
+    return scalar_value;
+  return WindowToViewportScalar(web_view_->MainFrameImpl()->GetFrame(),
                                 scalar_value);
 }
 
 float ChromeClientImpl::WindowToViewportScalar(LocalFrame* frame,
                                                const float scalar_value) const {
-  // Note, FrameWidgetImpl() can be null during Scrollbar() construction.
-  WebLocalFrameImpl* local_frame = WebLocalFrameImpl::FromFrame(frame);
-  if (!local_frame || !local_frame->FrameWidgetImpl())
+
+  // TODO(darin): Clean up callers to not pass null. E.g., VisualViewport::
+  // ScrollbarThickness() is one such caller. See https://pastebin.com/axgctw0N
+  // for a sample call stack.
+  if (!frame) {
+    DLOG(WARNING) << "LocalFrame is null!";
     return scalar_value;
+  }
 
   WebFloatRect viewport_rect(0, 0, scalar_value, 0);
-  local_frame->FrameWidgetImpl()->Client()->ConvertWindowToViewport(
-      &viewport_rect);
+  WebLocalFrameImpl::FromFrame(frame)
+      ->LocalRootFrameWidget()
+      ->Client()
+      ->ConvertWindowToViewport(&viewport_rect);
   return viewport_rect.width;
 }
 
diff --git a/third_party/blink/renderer/core/page/validation_message_overlay_delegate.cc b/third_party/blink/renderer/core/page/validation_message_overlay_delegate.cc
index 80e376e4..f20b9da 100644
--- a/third_party/blink/renderer/core/page/validation_message_overlay_delegate.cc
+++ b/third_party/blink/renderer/core/page/validation_message_overlay_delegate.cc
@@ -52,6 +52,12 @@
     return main_chrome_client_->WindowToViewportScalar(scalar_value);
   }
 
+  float WindowToViewportScalar(LocalFrame* local_frame,
+                               const float scalar_value) const override {
+    return main_chrome_client_->WindowToViewportScalar(local_frame,
+                                                       scalar_value);
+  }
+
  private:
   Member<ChromeClient> main_chrome_client_;
   Member<LocalFrameView> anchor_view_;
diff --git a/third_party/blink/renderer/core/paint/ng/ng_paint_fragment.cc b/third_party/blink/renderer/core/paint/ng/ng_paint_fragment.cc
index 525151f1..a5d4187 100644
--- a/third_party/blink/renderer/core/paint/ng/ng_paint_fragment.cc
+++ b/third_party/blink/renderer/core/paint/ng/ng_paint_fragment.cc
@@ -14,6 +14,7 @@
 #include "third_party/blink/renderer/core/layout/layout_block_flow.h"
 #include "third_party/blink/renderer/core/layout/layout_inline.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_caret_position.h"
+#include "third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_offset_mapping.h"
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_physical_line_box_fragment.h"
@@ -47,11 +48,9 @@
               "NGPaintFragment should stay small.");
 
 LogicalRect ComputeLogicalRectFor(const PhysicalRect& physical_rect,
-                                  const NGPaintFragment& paint_fragment) {
-  const WritingMode writing_mode = paint_fragment.Style().GetWritingMode();
-  const TextDirection text_direction =
-      paint_fragment.PhysicalFragment().ResolvedDirection();
-  const PhysicalSize outer_size = paint_fragment.Size();
+                                  WritingMode writing_mode,
+                                  TextDirection text_direction,
+                                  const PhysicalSize& outer_size) {
   const LogicalOffset logical_offset = physical_rect.offset.ConvertToLogical(
       writing_mode, text_direction, outer_size, physical_rect.size);
   const LogicalSize logical_size =
@@ -59,12 +58,28 @@
   return {logical_offset, logical_size};
 }
 
+LogicalRect ComputeLogicalRectFor(const PhysicalRect& physical_rect,
+                                  const NGPaintFragment& paint_fragment) {
+  return ComputeLogicalRectFor(
+      physical_rect, paint_fragment.Style().GetWritingMode(),
+      paint_fragment.PhysicalFragment().ResolvedDirection(),
+      paint_fragment.Size());
+}
+
+LogicalRect ComputeLogicalRectFor(const PhysicalRect& physical_rect,
+                                  const NGInlineCursor& cursor) {
+  if (const NGPaintFragment* paint_fragment = cursor.CurrentPaintFragment())
+    return ComputeLogicalRectFor(physical_rect, *paint_fragment);
+
+  const NGFragmentItem& item = *cursor.CurrentItem();
+  return ComputeLogicalRectFor(physical_rect, item.GetWritingMode(),
+                               item.ResolvedDirection(), item.Size());
+}
+
 PhysicalRect ComputePhysicalRectFor(const LogicalRect& logical_rect,
-                                    const NGPaintFragment& paint_fragment) {
-  const WritingMode writing_mode = paint_fragment.Style().GetWritingMode();
-  const TextDirection text_direction =
-      paint_fragment.PhysicalFragment().ResolvedDirection();
-  const PhysicalSize outer_size = paint_fragment.Size();
+                                    WritingMode writing_mode,
+                                    TextDirection text_direction,
+                                    const PhysicalSize& outer_size) {
   const PhysicalSize physical_size =
       ToPhysicalSize(logical_rect.size, writing_mode);
   const PhysicalOffset physical_offset = logical_rect.offset.ConvertToPhysical(
@@ -72,21 +87,36 @@
 
   return {physical_offset, physical_size};
 }
+PhysicalRect ComputePhysicalRectFor(const LogicalRect& logical_rect,
+                                    const NGPaintFragment& paint_fragment) {
+  return ComputePhysicalRectFor(
+      logical_rect, paint_fragment.Style().GetWritingMode(),
+      paint_fragment.PhysicalFragment().ResolvedDirection(),
+      paint_fragment.Size());
+}
+
+PhysicalRect ComputePhysicalRectFor(const LogicalRect& logical_rect,
+                                    const NGInlineCursor& cursor) {
+  if (const NGPaintFragment* paint_fragment = cursor.CurrentPaintFragment())
+    return ComputePhysicalRectFor(logical_rect, *paint_fragment);
+  const NGFragmentItem& item = *cursor.CurrentItem();
+  return ComputePhysicalRectFor(logical_rect, item.GetWritingMode(),
+                                item.ResolvedDirection(), item.Size());
+}
 
 LogicalRect ExpandedSelectionRectForSoftLineBreakIfNeeded(
     const LogicalRect& rect,
-    const NGPaintFragment& paint_fragment,
+    const NGInlineCursor& cursor,
     const LayoutSelectionStatus& selection_status) {
   // Expand paint rect if selection covers multiple lines and
   // this fragment is at the end of line.
   if (selection_status.line_break == SelectSoftLineBreak::kNotSelected)
     return rect;
-  LayoutBlockFlow* layout_block_flow =
-      paint_fragment.GetLayoutObject()->ContainingNGBlockFlow();
+  const LayoutBlockFlow* const layout_block_flow = cursor.GetLayoutBlockFlow();
   if (layout_block_flow && layout_block_flow->ShouldTruncateOverflowingText())
     return rect;
   // Copy from InlineTextBoxPainter::PaintSelection.
-  const LayoutUnit space_width(paint_fragment.Style().GetFont().SpaceWidth());
+  const LayoutUnit space_width(cursor.CurrentStyle().GetFont().SpaceWidth());
   return {rect.offset,
           {rect.size.inline_size + space_width, rect.size.block_size}};
 }
@@ -94,6 +124,18 @@
 // Expands selection height so that the selection rect fills entire line.
 LogicalRect ExpandSelectionRectToLineHeight(
     const LogicalRect& rect,
+    const LogicalRect& line_logical_rect) {
+  // Unite the rect only in the block direction.
+  const LayoutUnit selection_top =
+      std::min(rect.offset.block_offset, line_logical_rect.offset.block_offset);
+  const LayoutUnit selection_bottom =
+      std::max(rect.BlockEndOffset(), line_logical_rect.BlockEndOffset());
+  return {{rect.offset.inline_offset, selection_top},
+          {rect.size.inline_size, selection_bottom - selection_top}};
+}
+
+LogicalRect ExpandSelectionRectToLineHeight(
+    const LogicalRect& rect,
     const NGPaintFragment& paint_fragment) {
   // Compute the rect of the containing line box relative to |paint_fragment|.
   const NGPaintFragment* current_line = paint_fragment.ContainerLineBox();
@@ -102,16 +144,18 @@
       current_line->InlineOffsetToContainerBox() -
           paint_fragment.InlineOffsetToContainerBox(),
       current_line->Size());
-  const LogicalRect line_logical_rect =
-      ComputeLogicalRectFor(line_physical_rect, paint_fragment);
+  return ExpandSelectionRectToLineHeight(
+      rect, ComputeLogicalRectFor(line_physical_rect, paint_fragment));
+}
 
-  // Unite the rect only in the block direction.
-  LayoutUnit selection_top =
-      std::min(rect.offset.block_offset, line_logical_rect.offset.block_offset);
-  LayoutUnit selection_bottom =
-      std::max(rect.BlockEndOffset(), line_logical_rect.BlockEndOffset());
-  return {{rect.offset.inline_offset, selection_top},
-          {rect.size.inline_size, selection_bottom - selection_top}};
+LogicalRect ExpandSelectionRectToLineHeight(const LogicalRect& rect,
+                                            const NGInlineCursor& cursor) {
+  NGInlineCursor line(cursor);
+  line.MoveToContainingLine();
+  const PhysicalRect line_physical_rect(
+      line.CurrentOffset() - cursor.CurrentOffset(), line.CurrentSize());
+  return ExpandSelectionRectToLineHeight(
+      rect, ComputeLogicalRectFor(line_physical_rect, cursor));
 }
 
 LogicalOffset ChildLogicalOffsetInParent(const NGPaintFragment& child) {
@@ -163,9 +207,8 @@
   }
 }
 
-bool IsLastBRInPage(const NGPhysicalTextFragment& text_fragment) {
-  return text_fragment.GetLayoutObject()->IsBR() &&
-         !text_fragment.GetLayoutObject()->NextInPreOrder();
+bool IsLastBRInPage(const LayoutObject& layout_object) {
+  return layout_object.IsBR() && !layout_object.NextInPreOrder();
 }
 
 const LayoutObject* ListMarkerFromMarkerOrMarkerContent(
@@ -183,6 +226,23 @@
   return nullptr;
 }
 
+// TODO(yosin): Move to "ng_selection_painter.cc"
+PhysicalRect ComputeLocalRect(const NGInlineCursor& cursor,
+                              unsigned start_offset,
+                              unsigned end_offset) {
+  DCHECK_LE(start_offset, end_offset);
+  if (const NGPaintFragment* paint_fragment = cursor.CurrentPaintFragment()) {
+    return To<NGPhysicalTextFragment>(paint_fragment->PhysicalFragment())
+        .LocalRect(start_offset, end_offset);
+  }
+  if (const NGFragmentItem* item = cursor.CurrentItem()) {
+    return item->LocalRect(cursor.Items().Text(item->UsesFirstLineStyle()),
+                           start_offset, end_offset);
+  }
+  NOTREACHED();
+  return PhysicalRect();
+}
+
 }  // namespace
 
 NGPaintFragment::NGPaintFragment(
@@ -832,6 +892,16 @@
   return nullptr;
 }
 
+const NGPaintFragment* NGPaintFragment::Root() const {
+  DCHECK(PhysicalFragment().IsInline());
+  const NGPaintFragment* root = this;
+  for (const NGPaintFragment* fragment :
+       NGPaintFragmentTraversal::InclusiveAncestorsOf(*this)) {
+    root = fragment;
+  }
+  return root;
+}
+
 void NGPaintFragment::DirtyLinesFromChangedChild(LayoutObject* child) {
   if (!RuntimeEnabledFeatures::LayoutNGLineCacheEnabled())
     return;
@@ -947,30 +1017,31 @@
   }
 }
 
-PhysicalRect NGPaintFragment::ComputeLocalSelectionRectForText(
-    const LayoutSelectionStatus& selection_status) const {
-  const auto& text_fragment = To<NGPhysicalTextFragment>(PhysicalFragment());
-  PhysicalRect selection_rect =
-      text_fragment.LocalRect(selection_status.start, selection_status.end);
-  LogicalRect logical_rect = ComputeLogicalRectFor(selection_rect, *this);
+// TODO(yosin): We should move |ComputeLocalSelectionRectForText()| to
+// "ng_selection_painter.cc".
+PhysicalRect ComputeLocalSelectionRectForText(
+    const NGInlineCursor& cursor,
+    const LayoutSelectionStatus& selection_status) {
+  const PhysicalRect selection_rect =
+      ComputeLocalRect(cursor, selection_status.start, selection_status.end);
+  LogicalRect logical_rect = ComputeLogicalRectFor(selection_rect, cursor);
   // Let LocalRect for line break have a space width to paint line break
   // when it is only character in a line or only selected in a line.
-  if (text_fragment.IsLineBreak() &&
-      selection_status.start != selection_status.end &&
+  if (selection_status.start != selection_status.end && cursor.IsLineBreak() &&
       // This is for old compatible that old doesn't paint last br in a page.
-      !IsLastBRInPage(text_fragment)) {
+      !IsLastBRInPage(*cursor.CurrentLayoutObject())) {
     DCHECK(!logical_rect.size.inline_size);
-    logical_rect.size.inline_size = LayoutUnit(Style().GetFont().SpaceWidth());
+    logical_rect.size.inline_size =
+        LayoutUnit(cursor.CurrentStyle().GetFont().SpaceWidth());
   }
   const LogicalRect line_break_extended_rect =
-      text_fragment.IsLineBreak()
-          ? logical_rect
-          : ExpandedSelectionRectForSoftLineBreakIfNeeded(logical_rect, *this,
-                                                          selection_status);
+      cursor.IsLineBreak() ? logical_rect
+                           : ExpandedSelectionRectForSoftLineBreakIfNeeded(
+                                 logical_rect, cursor, selection_status);
   const LogicalRect line_height_expanded_rect =
-      ExpandSelectionRectToLineHeight(line_break_extended_rect, *this);
+      ExpandSelectionRectToLineHeight(line_break_extended_rect, cursor);
   const PhysicalRect physical_rect =
-      ComputePhysicalRectFor(line_height_expanded_rect, *this);
+      ComputePhysicalRectFor(line_height_expanded_rect, cursor);
   return physical_rect;
 }
 
diff --git a/third_party/blink/renderer/core/paint/ng/ng_paint_fragment.h b/third_party/blink/renderer/core/paint/ng/ng_paint_fragment.h
index fbfdbe7c..254f65b 100644
--- a/third_party/blink/renderer/core/paint/ng/ng_paint_fragment.h
+++ b/third_party/blink/renderer/core/paint/ng/ng_paint_fragment.h
@@ -18,6 +18,7 @@
 namespace blink {
 
 class NGBlockBreakToken;
+class NGInlineCursor;
 struct LayoutSelectionStatus;
 struct NGContainerInkOverflow;
 enum class NGOutlineType;
@@ -184,8 +185,6 @@
   IntRect VisualRect() const override;
   IntRect PartialInvalidationVisualRect() const override;
 
-  PhysicalRect ComputeLocalSelectionRectForText(
-      const LayoutSelectionStatus&) const;
   PhysicalRect ComputeLocalSelectionRectForReplaced() const;
 
   // Set ShouldDoFullPaintInvalidation flag in the corresponding LayoutObject.
@@ -429,6 +428,10 @@
 extern template class CORE_EXTERN_TEMPLATE_EXPORT
     NGPaintFragment::List<NGPaintFragment::TraverseNextSibling>;
 
+PhysicalRect ComputeLocalSelectionRectForText(
+    const NGInlineCursor& cursor,
+    const LayoutSelectionStatus& selection_status);
+
 }  // namespace blink
 
 #endif  // THIRD_PARTY_BLINK_RENDERER_CORE_PAINT_NG_NG_PAINT_FRAGMENT_H_
diff --git a/third_party/blink/renderer/core/paint/ng/ng_paint_fragment_traversal.h b/third_party/blink/renderer/core/paint/ng/ng_paint_fragment_traversal.h
index 67b0de5..4e26682 100644
--- a/third_party/blink/renderer/core/paint/ng/ng_paint_fragment_traversal.h
+++ b/third_party/blink/renderer/core/paint/ng/ng_paint_fragment_traversal.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 NGPaintFragmentTraversal_h
-#define NGPaintFragmentTraversal_h
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_PAINT_NG_NG_PAINT_FRAGMENT_TRAVERSAL_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_PAINT_NG_NG_PAINT_FRAGMENT_TRAVERSAL_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/layout/geometry/physical_offset.h"
@@ -203,4 +203,4 @@
 
 }  // namespace blink
 
-#endif  // NGPaintFragmentTraversal_h
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_PAINT_NG_NG_PAINT_FRAGMENT_TRAVERSAL_H_
diff --git a/third_party/blink/renderer/core/paint/ng/ng_text_fragment_painter.cc b/third_party/blink/renderer/core/paint/ng/ng_text_fragment_painter.cc
index 89f033d..883a0eb 100644
--- a/third_party/blink/renderer/core/paint/ng/ng_text_fragment_painter.cc
+++ b/third_party/blink/renderer/core/paint/ng/ng_text_fragment_painter.cc
@@ -98,19 +98,26 @@
 // |NGFragmentItem| is done. http://crbug.com/982194
 inline LayoutSelectionStatus ComputeLayoutSelectionStatus(
     const NGInlineCursor& cursor) {
-  // TODO(yosin): We should implement |NGInlineCursor| version of
-  // ComputeLayoutSelectionStatus
-  return LayoutSelectionStatus(0, 0, SelectSoftLineBreak::kNotSelected);
-}
-
-inline LayoutSelectionStatus ComputeLayoutSelectionStatus(
-    const NGTextPainterCursor& cursor) {
   return cursor.CurrentItem()
       ->GetLayoutObject()
       ->GetDocument()
       .GetFrame()
       ->Selection()
-      .ComputeLayoutSelectionStatus(cursor.PaintFragment());
+      .ComputeLayoutSelectionStatus(cursor);
+}
+
+inline LayoutSelectionStatus ComputeLayoutSelectionStatus(
+    const NGTextPainterCursor& cursor) {
+  // Note:: Because of this function is hot, we should not use |NGInlineCursor|
+  // on paint fragment which requires traversing ancestors to root.
+  NGInlineCursor inline_cursor(cursor.RootPaintFragment());
+  inline_cursor.MoveTo(cursor.PaintFragment());
+  return cursor.CurrentItem()
+      ->GetLayoutObject()
+      ->GetDocument()
+      .GetFrame()
+      ->Selection()
+      .ComputeLayoutSelectionStatus(inline_cursor);
 }
 
 // TODO(yosin): Remove |ComputeLocalRect| once the transition to
@@ -305,26 +312,30 @@
 
 }  // namespace
 
+const NGPaintFragment& NGTextPainterCursor::RootPaintFragment() const {
+  if (!root_paint_fragment_)
+    root_paint_fragment_ = paint_fragment_.Root();
+  return *root_paint_fragment_;
+}
+
 template <typename Cursor>
 NGTextFragmentPainter<Cursor>::NGTextFragmentPainter(const Cursor& cursor)
     : cursor_(cursor) {}
 
+static PhysicalRect ComputeLocalSelectionRectForText(
+    const NGTextPainterCursor& cursor,
+    const LayoutSelectionStatus& selection_status) {
+  NGInlineCursor inline_cursor(cursor.RootPaintFragment());
+  inline_cursor.MoveTo(cursor.PaintFragment());
+  return ComputeLocalSelectionRectForText(inline_cursor, selection_status);
+}
+
 // Logic is copied from InlineTextBoxPainter::PaintSelection.
 // |selection_start| and |selection_end| should be between
 // [text_fragment.StartOffset(), text_fragment.EndOffset()].
-// TODO(yosin): We should implement |NGInlineCursor| version of
-// |PaintSelection()|
+template <typename Cursor>
 static void PaintSelection(GraphicsContext& context,
-                           const NGInlineCursor& cursor,
-                           Node* node,
-                           const Document& document,
-                           const ComputedStyle& style,
-                           Color text_color,
-                           const PhysicalRect& box_rect,
-                           const LayoutSelectionStatus& selection_status) {}
-
-static void PaintSelection(GraphicsContext& context,
-                           const NGTextPainterCursor& cursor,
+                           const Cursor& cursor,
                            Node* node,
                            const Document& document,
                            const ComputedStyle& style,
@@ -334,7 +345,7 @@
   const Color color =
       SelectionBackgroundColor(document, style, node, text_color);
   const PhysicalRect selection_rect =
-      cursor.PaintFragment().ComputeLocalSelectionRectForText(selection_status);
+      ComputeLocalSelectionRectForText(cursor, selection_status);
   PaintRect(context, box_rect.offset, selection_rect, color);
 }
 
diff --git a/third_party/blink/renderer/core/paint/ng/ng_text_fragment_painter.h b/third_party/blink/renderer/core/paint/ng/ng_text_fragment_painter.h
index c4250c1..6294fca 100644
--- a/third_party/blink/renderer/core/paint/ng/ng_text_fragment_painter.h
+++ b/third_party/blink/renderer/core/paint/ng/ng_text_fragment_painter.h
@@ -38,10 +38,12 @@
 
   const NGPaintFragment& PaintFragment() const { return paint_fragment_; }
   const NGPhysicalTextFragment* CurrentItem() const { return &text_fragment_; }
+  const NGPaintFragment& RootPaintFragment() const;
 
  private:
   const NGPaintFragment& paint_fragment_;
   const NGPhysicalTextFragment& text_fragment_;
+  mutable const NGPaintFragment* root_paint_fragment_ = nullptr;
 };
 
 // Text fragment painter for LayoutNG. Operates on NGPhysicalTextFragments and
diff --git a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc
index f7736d68..d5f5003 100644
--- a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc
+++ b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc
@@ -310,6 +310,7 @@
             .GetPage()
             ->GetChromeClient()
             .WindowToViewportScalar(
+                GetLayoutBox()->GetFrame(),
                 GetPageScrollbarTheme().ScrollbarThickness());
     vertical_thickness = horizontal_thickness;
   } else if (VerticalScrollbar() && !HorizontalScrollbar()) {
@@ -1377,7 +1378,7 @@
       ->GetDocument()
       .GetPage()
       ->GetChromeClient()
-      .WindowToViewportScalar(thickness);
+      .WindowToViewportScalar(GetLayoutBox()->GetFrame(), thickness);
 }
 
 bool PaintLayerScrollableArea::NeedsScrollbarReconstruction() const {
@@ -2326,8 +2327,9 @@
 }
 
 bool PaintLayerScrollableArea::ScheduleAnimation() {
-  if (ChromeClient* client = GetChromeClient()) {
-    client->ScheduleAnimation(GetLayoutBox()->GetFrame()->View());
+  if (ChromeClient* client =
+          GetLayoutBox()->GetFrameView()->GetChromeClient()) {
+    client->ScheduleAnimation(GetLayoutBox()->GetFrameView());
     return true;
   }
   return false;
diff --git a/third_party/blink/renderer/core/paint/theme_painter_default.cc b/third_party/blink/renderer/core/paint/theme_painter_default.cc
index da53fcb..5d32376 100644
--- a/third_party/blink/renderer/core/paint/theme_painter_default.cc
+++ b/third_party/blink/renderer/core/paint/theme_painter_default.cc
@@ -311,8 +311,8 @@
   const int middle = rect.Y() + rect.Height() / 2;
 
   extra_params.menu_list.arrow_y = middle;
-  float arrow_box_width = theme_.ClampedMenuListArrowPaddingSize(
-      document.View()->GetChromeClient(), style);
+  float arrow_box_width =
+      theme_.ClampedMenuListArrowPaddingSize(document.GetFrame(), style);
   float arrow_scale_factor = arrow_box_width / theme_.MenuListArrowWidthInDIP();
   if (UseMockTheme()) {
     // The size and position of the drop-down button is different between
diff --git a/third_party/blink/renderer/devtools/front_end/settings/SettingsScreen.js b/third_party/blink/renderer/devtools/front_end/settings/SettingsScreen.js
index 728a7b899..f76c0251 100644
--- a/third_party/blink/renderer/devtools/front_end/settings/SettingsScreen.js
+++ b/third_party/blink/renderer/devtools/front_end/settings/SettingsScreen.js
@@ -74,6 +74,12 @@
     const dialog = new UI.Dialog();
     dialog.contentElement.tabIndex = -1;
     dialog.addCloseButton();
+
+    // Prevent clicks outside the Settings dialog from dismissing the dialog
+    // Settings screen is fullscreen and has its own close button, unlike other dialogs
+    // This also prevents screen readers (NVDA) from dismissing the dialog on Enter keypresses
+    dialog.setOutsideClickCallback(event => event.consume());
+
     settingsScreen.show(dialog.contentElement);
     dialog.show();
     settingsScreen._selectTab(name || 'preferences');
diff --git a/third_party/blink/renderer/devtools/front_end/ui/Toolbar.js b/third_party/blink/renderer/devtools/front_end/ui/Toolbar.js
index b27b0540..0d5b6fb 100644
--- a/third_party/blink/renderer/devtools/front_end/ui/Toolbar.js
+++ b/third_party/blink/renderer/devtools/front_end/ui/Toolbar.js
@@ -570,8 +570,9 @@
    * @param {!Event} event
    */
   _keydown(event) {
-    if (!this._enabled)
+    if (!this._enabled) {
       return;
+    }
     this.dispatchEventToListeners(UI.ToolbarButton.Events.KeyDown, event);
     event.consume();
   }
diff --git a/third_party/blink/renderer/modules/BUILD.gn b/third_party/blink/renderer/modules/BUILD.gn
index cc7b5c2..21d648b 100644
--- a/third_party/blink/renderer/modules/BUILD.gn
+++ b/third_party/blink/renderer/modules/BUILD.gn
@@ -390,7 +390,9 @@
     "peerconnection/rtc_quic_stream_test.cc",
     "peerconnection/rtc_quic_transport_test.cc",
     "peerconnection/rtc_quic_transport_test.h",
+    "peerconnection/rtc_rtp_receiver_impl_test.cc",
     "peerconnection/rtc_sctp_transport_test.cc",
+    "peerconnection/webrtc_media_stream_track_adapter_map_test.cc",
     "peerconnection/webrtc_media_stream_track_adapter_test.cc",
     "picture_in_picture/picture_in_picture_controller_test.cc",
     "presentation/mock_presentation_service.h",
diff --git a/third_party/blink/renderer/modules/badging/BUILD.gn b/third_party/blink/renderer/modules/badging/BUILD.gn
index 8af6081..0e248dc7 100644
--- a/third_party/blink/renderer/modules/badging/BUILD.gn
+++ b/third_party/blink/renderer/modules/badging/BUILD.gn
@@ -6,7 +6,7 @@
 
 blink_modules_sources("badging") {
   sources = [
-    "badge.cc",
-    "badge.h",
+    "navigator_badge.cc",
+    "navigator_badge.h",
   ]
 }
diff --git a/third_party/blink/renderer/modules/badging/badge.cc b/third_party/blink/renderer/modules/badging/badge.cc
deleted file mode 100644
index 64e28e1..0000000
--- a/third_party/blink/renderer/modules/badging/badge.cc
+++ /dev/null
@@ -1,135 +0,0 @@
-// Copyright 2018 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file
-
-#include "third_party/blink/renderer/modules/badging/badge.h"
-
-#include "base/memory/scoped_refptr.h"
-#include "third_party/blink/public/common/browser_interface_broker_proxy.h"
-#include "third_party/blink/renderer/core/dom/document.h"
-#include "third_party/blink/renderer/core/execution_context/execution_context.h"
-#include "third_party/blink/renderer/modules/badging/badge_options.h"
-#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/weborigin/security_origin.h"
-
-namespace blink {
-
-const char Badge::kSupplementName[] = "Badge";
-
-Badge::~Badge() = default;
-
-// static
-Badge* Badge::From(ExecutionContext* context) {
-  Badge* supplement = Supplement<ExecutionContext>::From<Badge>(context);
-  if (!supplement) {
-    supplement = MakeGarbageCollected<Badge>(context);
-    ProvideTo(*context, supplement);
-  }
-  return supplement;
-}
-
-// static
-void Badge::set(ScriptState* script_state, ExceptionState& exception_state) {
-  Badge::set(script_state, BadgeOptions::Create(), exception_state);
-}
-
-// static
-void Badge::set(ScriptState* script_state,
-                const BadgeOptions* options,
-                ExceptionState& exception_state) {
-  BadgeFromState(script_state)
-      ->SetBadge(options->scope(), mojom::blink::BadgeValue::NewFlag(0),
-                 exception_state);
-}
-
-// static
-void Badge::set(ScriptState* script_state,
-                uint64_t content,
-                ExceptionState& exception_state) {
-  Badge::set(script_state, content, BadgeOptions::Create(), exception_state);
-}
-
-// static
-void Badge::set(ScriptState* script_state,
-                uint64_t content,
-                const BadgeOptions* options,
-                ExceptionState& exception_state) {
-  if (content == 0) {
-    Badge::clear(script_state, options, exception_state);
-  } else {
-    BadgeFromState(script_state)
-        ->SetBadge(options->scope(),
-                   mojom::blink::BadgeValue::NewNumber(content),
-                   exception_state);
-  }
-}
-
-// static
-void Badge::clear(ScriptState* script_state,
-                  const BadgeOptions* options,
-                  ExceptionState& exception_state) {
-  BadgeFromState(script_state)->ClearBadge(options->scope(), exception_state);
-}
-
-void Badge::SetBadge(WTF::String scope,
-                     mojom::blink::BadgeValuePtr value,
-                     ExceptionState& exception_state) {
-  base::Optional<KURL> scope_url = ScopeStringToURL(scope, exception_state);
-  if (!scope_url)
-    return;
-
-  badge_service_->SetBadge(std::move(value));
-}
-
-void Badge::ClearBadge(WTF::String scope, ExceptionState& exception_state) {
-  base::Optional<KURL> scope_url = ScopeStringToURL(scope, exception_state);
-  if (!scope_url)
-    return;
-
-  badge_service_->ClearBadge();
-}
-
-void Badge::Trace(blink::Visitor* visitor) {
-  Supplement<ExecutionContext>::Trace(visitor);
-  ScriptWrappable::Trace(visitor);
-
-  visitor->Trace(execution_context_);
-}
-
-Badge::Badge(ExecutionContext* context) : execution_context_(context) {
-  context->GetBrowserInterfaceBroker().GetInterface(
-      badge_service_.BindNewPipeAndPassReceiver());
-  DCHECK(badge_service_);
-}
-
-// static
-Badge* Badge::BadgeFromState(ScriptState* script_state) {
-  return Badge::From(ExecutionContext::From(script_state));
-}
-
-base::Optional<KURL> Badge::ScopeStringToURL(WTF::String& scope,
-                                             ExceptionState& exception_state) {
-  // Resolve |scope| against the URL of the current document/worker.
-  KURL scope_url = KURL(execution_context_->Url(), scope);
-
-  if (!scope_url.IsValid()) {
-    exception_state.ThrowTypeError("Invalid scope URL");
-    return base::nullopt;
-  }
-
-  // Same-origin check. Note that this is also checked in BadgeManager on the
-  // browser side for security, but it is also checked here to report the error.
-  scoped_refptr<SecurityOrigin> scope_origin =
-      SecurityOrigin::Create(scope_url);
-  if (!execution_context_->GetSecurityOrigin()->IsSameSchemeHostPort(
-          scope_origin.get())) {
-    exception_state.ThrowSecurityError(
-        "Scope URL is not in the current origin");
-    return base::nullopt;
-  }
-
-  return base::Optional<KURL>(scope_url);
-}
-
-}  // namespace blink
diff --git a/third_party/blink/renderer/modules/badging/badge.h b/third_party/blink/renderer/modules/badging/badge.h
deleted file mode 100644
index ee62f44..0000000
--- a/third_party/blink/renderer/modules/badging/badge.h
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2018 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file
-
-#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_BADGING_BADGE_H_
-#define THIRD_PARTY_BLINK_RENDERER_MODULES_BADGING_BADGE_H_
-
-#include "base/optional.h"
-#include "mojo/public/cpp/bindings/remote.h"
-#include "third_party/blink/public/mojom/badging/badging.mojom-blink.h"
-#include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
-#include "third_party/blink/renderer/platform/supplementable.h"
-#include "third_party/blink/renderer/platform/weborigin/kurl.h"
-#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
-
-namespace blink {
-
-class BadgeOptions;
-class ExceptionState;
-class ExecutionContext;
-class ScriptState;
-
-class Badge final : public ScriptWrappable,
-                    public Supplement<ExecutionContext> {
-  DEFINE_WRAPPERTYPEINFO();
-  USING_GARBAGE_COLLECTED_MIXIN(Badge);
-
- public:
-  static const char kSupplementName[];
-
-  static Badge* From(ExecutionContext*);
-
-  explicit Badge(ExecutionContext*);
-  ~Badge() override;
-
-  // Badge IDL interface.
-  static void set(ScriptState*, const BadgeOptions*, ExceptionState&);
-  static void set(ScriptState*,
-                  uint64_t content,
-                  const BadgeOptions*,
-                  ExceptionState&);
-  static void set(ScriptState*, ExceptionState&);
-  static void set(ScriptState*, uint64_t content, ExceptionState&);
-  static void clear(ScriptState*, const BadgeOptions*, ExceptionState&);
-
-  void SetBadge(WTF::String scope,
-                mojom::blink::BadgeValuePtr value,
-                ExceptionState&);
-  void ClearBadge(WTF::String scope, ExceptionState&);
-
-  void Trace(blink::Visitor*) override;
-
- private:
-  static Badge* BadgeFromState(ScriptState* script_state);
-
-  // If the URL is invalid, sets an exception and returns nullopt, which callers
-  // should check for and stop doing work.
-  base::Optional<KURL> ScopeStringToURL(WTF::String& scope, ExceptionState&);
-
-  mojo::Remote<blink::mojom::blink::BadgeService> badge_service_;
-  Member<ExecutionContext> execution_context_;
-};
-
-}  // namespace blink
-
-#endif  // THIRD_PARTY_BLINK_RENDERER_MODULES_BADGING_BADGE_H_
diff --git a/third_party/blink/renderer/modules/badging/badge_options.idl b/third_party/blink/renderer/modules/badging/badge_options.idl
deleted file mode 100644
index 279519c..0000000
--- a/third_party/blink/renderer/modules/badging/badge_options.idl
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// The options used to decide how to apply a badge.
-// See the explainer https://github.com/WICG/badging/blob/master/explainer.md
-dictionary BadgeOptions {
-    // The scope of the badge. This is resolved against the URL of the current
-    // page.
-    // https://github.com/WICG/badging/blob/master/explainer.md#badge-scope
-    DOMString scope = "/";
-};
\ No newline at end of file
diff --git a/third_party/blink/renderer/modules/badging/experimental_badge.idl b/third_party/blink/renderer/modules/badging/experimental_badge.idl
deleted file mode 100644
index 1273bcc..0000000
--- a/third_party/blink/renderer/modules/badging/experimental_badge.idl
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright 2018 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// TODO(estevenson): Add link to spec once complete.
-// https://github.com/WICG/badging/blob/master/explainer.md
-
-[
-    RuntimeEnabled=Badging,
-    // TODO(estevenson): Expose the Badge interface to Worker.
-    Exposed=Window,
-    ImplementedAs=Badge
-] interface ExperimentalBadge {
-  [CallWith=ScriptState, RaisesException, MeasureAs=BadgeSet]
-  static void set(optional [EnforceRange] unsigned long long contents, optional BadgeOptions options);
-  [CallWith=ScriptState, RaisesException, MeasureAs=BadgeClear] static void clear(optional BadgeOptions options);
-};
diff --git a/third_party/blink/renderer/modules/badging/navigator_badge.cc b/third_party/blink/renderer/modules/badging/navigator_badge.cc
new file mode 100644
index 0000000..a6f540d
--- /dev/null
+++ b/third_party/blink/renderer/modules/badging/navigator_badge.cc
@@ -0,0 +1,65 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file
+
+#include "third_party/blink/renderer/modules/badging/navigator_badge.h"
+
+#include "third_party/blink/public/common/browser_interface_broker_proxy.h"
+#include "third_party/blink/renderer/bindings/core/v8/script_promise.h"
+#include "third_party/blink/renderer/core/execution_context/execution_context.h"
+#include "third_party/blink/renderer/core/frame/local_dom_window.h"
+
+namespace blink {
+
+const char NavigatorBadge::kSupplementName[] = "NavigatorBadge";
+
+// static
+NavigatorBadge& NavigatorBadge::From(ScriptState* script_state) {
+  ExecutionContext* context = ExecutionContext::From(script_state);
+  NavigatorBadge* supplement =
+      Supplement<ExecutionContext>::From<NavigatorBadge>(context);
+  if (!supplement) {
+    supplement = MakeGarbageCollected<NavigatorBadge>(context);
+    ProvideTo(*context, supplement);
+  }
+  return *supplement;
+}
+
+NavigatorBadge::NavigatorBadge(ExecutionContext* context) {
+  context->GetBrowserInterfaceBroker().GetInterface(
+      badge_service_.BindNewPipeAndPassReceiver());
+  DCHECK(badge_service_);
+}
+
+// static
+ScriptPromise NavigatorBadge::setAppBadge(ScriptState* script_state,
+                                          Navigator& /*navigator*/) {
+  From(script_state)
+      .badge_service_->SetBadge(mojom::blink::BadgeValue::NewFlag(0));
+  return ScriptPromise::CastUndefined(script_state);
+}
+
+// static
+ScriptPromise NavigatorBadge::setAppBadge(ScriptState* script_state,
+                                          Navigator& navigator,
+                                          uint64_t content) {
+  if (content == 0)
+    return NavigatorBadge::clearAppBadge(script_state, navigator);
+
+  From(script_state)
+      .badge_service_->SetBadge(mojom::blink::BadgeValue::NewNumber(content));
+  return ScriptPromise::CastUndefined(script_state);
+}
+
+// static
+ScriptPromise NavigatorBadge::clearAppBadge(ScriptState* script_state,
+                                            Navigator& /*navigator*/) {
+  From(script_state).badge_service_->ClearBadge();
+  return ScriptPromise::CastUndefined(script_state);
+}
+
+void NavigatorBadge::Trace(blink::Visitor* visitor) {
+  Supplement<ExecutionContext>::Trace(visitor);
+}
+
+}  // namespace blink
diff --git a/third_party/blink/renderer/modules/badging/navigator_badge.h b/third_party/blink/renderer/modules/badging/navigator_badge.h
new file mode 100644
index 0000000..e806dce
--- /dev/null
+++ b/third_party/blink/renderer/modules/badging/navigator_badge.h
@@ -0,0 +1,40 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file
+
+#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_BADGING_NAVIGATOR_BADGE_H_
+#define THIRD_PARTY_BLINK_RENDERER_MODULES_BADGING_NAVIGATOR_BADGE_H_
+
+#include "mojo/public/cpp/bindings/remote.h"
+#include "third_party/blink/public/mojom/badging/badging.mojom-blink.h"
+#include "third_party/blink/renderer/core/frame/navigator.h"
+#include "third_party/blink/renderer/platform/supplementable.h"
+#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
+
+namespace blink {
+class ScriptPromise;
+
+class NavigatorBadge final : public GarbageCollected<NavigatorBadge>,
+                             public Supplement<ExecutionContext> {
+  USING_GARBAGE_COLLECTED_MIXIN(NavigatorBadge);
+
+ public:
+  static const char kSupplementName[];
+
+  static NavigatorBadge& From(ScriptState*);
+  explicit NavigatorBadge(ExecutionContext*);
+
+  // Badge IDL interface.
+  static ScriptPromise setAppBadge(ScriptState*, Navigator&);
+  static ScriptPromise setAppBadge(ScriptState*, Navigator&, uint64_t content);
+  static ScriptPromise clearAppBadge(ScriptState*, Navigator&);
+
+  void Trace(blink::Visitor*) override;
+
+ private:
+  mojo::Remote<blink::mojom::blink::BadgeService> badge_service_;
+};
+
+}  // namespace blink
+
+#endif  // THIRD_PARTY_BLINK_RENDERER_MODULES_BADGING_NAVIGATOR_BADGE_H_
diff --git a/third_party/blink/renderer/modules/badging/navigator_badge.idl b/third_party/blink/renderer/modules/badging/navigator_badge.idl
new file mode 100644
index 0000000..a115a8e
--- /dev/null
+++ b/third_party/blink/renderer/modules/badging/navigator_badge.idl
@@ -0,0 +1,16 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://wicg.github.io/badging/
+[
+    SecureContext,
+    RuntimeEnabled=Badging,
+    ImplementedAs=NavigatorBadge
+] partial interface Navigator {
+  [CallWith=ScriptState, MeasureAs=BadgeSet, ImplementedAs=setAppBadge]
+  Promise<void> setExperimentalAppBadge(optional [EnforceRange] unsigned long long contents);
+
+  [CallWith=ScriptState, MeasureAs=BadgeClear, ImplementedAs=clearAppBadge]
+  Promise<void> clearExperimentalAppBadge();
+};
\ No newline at end of file
diff --git a/third_party/blink/renderer/modules/compression/deflate_transformer.cc b/third_party/blink/renderer/modules/compression/deflate_transformer.cc
index 3abfcc85..e288321 100644
--- a/third_party/blink/renderer/modules/compression/deflate_transformer.cc
+++ b/third_party/blink/renderer/modules/compression/deflate_transformer.cc
@@ -79,6 +79,7 @@
   Deflate(nullptr, 0u, IsFinished(true), controller, exception_state);
   was_flush_called_ = true;
   deflateEnd(&stream_);
+  out_buffer_.clear();
 }
 
 void DeflateTransformer::Deflate(
diff --git a/third_party/blink/renderer/modules/compression/inflate_transformer.cc b/third_party/blink/renderer/modules/compression/inflate_transformer.cc
index ebab103..c4a47de3 100644
--- a/third_party/blink/renderer/modules/compression/inflate_transformer.cc
+++ b/third_party/blink/renderer/modules/compression/inflate_transformer.cc
@@ -72,6 +72,7 @@
   Inflate(nullptr, 0u, IsFinished(true), controller, exception_state);
   inflateEnd(&stream_);
   was_flush_called_ = true;
+  out_buffer_.clear();
 }
 
 void InflateTransformer::Inflate(
diff --git a/third_party/blink/renderer/modules/cookie_store/global_cookie_store_impl.h b/third_party/blink/renderer/modules/cookie_store/global_cookie_store_impl.h
index ec85f11..6c0e832e 100644
--- a/third_party/blink/renderer/modules/cookie_store/global_cookie_store_impl.h
+++ b/third_party/blink/renderer/modules/cookie_store/global_cookie_store_impl.h
@@ -8,6 +8,7 @@
 #include <utility>
 
 #include "services/service_manager/public/cpp/interface_provider.h"
+#include "third_party/blink/renderer/core/execution_context/execution_context.h"
 #include "third_party/blink/renderer/modules/cookie_store/cookie_store.h"
 #include "third_party/blink/renderer/platform/heap/handle.h"
 #include "third_party/blink/renderer/platform/supplementable.h"
diff --git a/third_party/blink/renderer/modules/cookie_store/service_worker_global_scope_cookie_store.cc b/third_party/blink/renderer/modules/cookie_store/service_worker_global_scope_cookie_store.cc
index 586f5394..15ba2af 100644
--- a/third_party/blink/renderer/modules/cookie_store/service_worker_global_scope_cookie_store.cc
+++ b/third_party/blink/renderer/modules/cookie_store/service_worker_global_scope_cookie_store.cc
@@ -8,6 +8,7 @@
 
 #include "services/network/public/mojom/restricted_cookie_manager.mojom-blink.h"
 #include "services/service_manager/public/cpp/interface_provider.h"
+#include "third_party/blink/renderer/core/execution_context/execution_context.h"
 #include "third_party/blink/renderer/core/workers/worker_thread.h"
 #include "third_party/blink/renderer/modules/cookie_store/cookie_store.h"
 #include "third_party/blink/renderer/modules/cookie_store/global_cookie_store_impl.h"
@@ -24,8 +25,9 @@
   interface_provider->GetInterface(
       cookie_manager_remote.BindNewPipeAndPassReceiver(
           execution_context->GetTaskRunner(TaskType::kMiscPlatformAPI)));
+
   mojo::Remote<blink::mojom::blink::CookieStore> cookie_store_remote;
-  interface_provider->GetInterface(
+  execution_context->GetBrowserInterfaceBroker().GetInterface(
       cookie_store_remote.BindNewPipeAndPassReceiver(
           execution_context->GetTaskRunner(TaskType::kMiscPlatformAPI)));
 
diff --git a/third_party/blink/renderer/modules/modules_idl_files.gni b/third_party/blink/renderer/modules/modules_idl_files.gni
index d44dbf0..5d0860f 100644
--- a/third_party/blink/renderer/modules/modules_idl_files.gni
+++ b/third_party/blink/renderer/modules/modules_idl_files.gni
@@ -74,7 +74,6 @@
           "background_sync/periodic_sync_event.idl",
           "background_sync/periodic_sync_manager.idl",
           "background_sync/sync_manager.idl",
-          "badging/experimental_badge.idl",
           "battery/battery_manager.idl",
           "bluetooth/bluetooth.idl",
           "bluetooth/bluetooth_advertising_event.idl",
@@ -575,7 +574,6 @@
           "background_sync/background_sync_options.idl",
           "background_sync/sync_event_init.idl",
           "background_sync/periodic_sync_event_init.idl",
-          "badging/badge_options.idl",
           "bluetooth/bluetooth_advertising_event_init.idl",
           "bluetooth/bluetooth_le_scan_filter_init.idl",
           "bluetooth/bluetooth_le_scan_options.idl",
@@ -925,6 +923,7 @@
           "background_fetch/service_worker_registration_background_fetch.idl",
           "background_sync/service_worker_global_scope_sync.idl",
           "background_sync/service_worker_registration_sync.idl",
+          "badging/navigator_badge.idl",
           "battery/navigator_battery.idl",
           "beacon/navigator_beacon.idl",
           "bluetooth/navigator_bluetooth.idl",
diff --git a/third_party/blink/renderer/modules/peerconnection/BUILD.gn b/third_party/blink/renderer/modules/peerconnection/BUILD.gn
index 10ec29be..2a4e062 100644
--- a/third_party/blink/renderer/modules/peerconnection/BUILD.gn
+++ b/third_party/blink/renderer/modules/peerconnection/BUILD.gn
@@ -97,6 +97,7 @@
     "rtc_quic_transport.h",
     "rtc_rtp_receiver.cc",
     "rtc_rtp_receiver.h",
+    "rtc_rtp_receiver_impl.cc",
     "rtc_rtp_sender.cc",
     "rtc_rtp_sender.h",
     "rtc_rtp_transceiver.cc",
@@ -144,6 +145,7 @@
     "mock_data_channel_impl.cc",
     "mock_peer_connection_dependency_factory.cc",
     "mock_peer_connection_impl.cc",
+    "webrtc_stats_report_obtainer.cc",
   ]
 
   deps = [
diff --git a/third_party/blink/renderer/modules/peerconnection/DEPS b/third_party/blink/renderer/modules/peerconnection/DEPS
index 31dc9c7..c0f90696 100644
--- a/third_party/blink/renderer/modules/peerconnection/DEPS
+++ b/third_party/blink/renderer/modules/peerconnection/DEPS
@@ -23,6 +23,8 @@
 specific_include_rules = {
     ".*test\.cc" : [
         "+base/run_loop.h",
+        "+base/test/bind_test_util.h",
+        "+base/test/test_timeouts.h",
         "+ui/gfx/color_space.h",
     ],
 }
diff --git a/content/renderer/media/webrtc/rtc_rtp_receiver.cc b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver_impl.cc
similarity index 84%
rename from content/renderer/media/webrtc/rtc_rtp_receiver.cc
rename to third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver_impl.cc
index c5399ee..f3dba4fa 100644
--- a/content/renderer/media/webrtc/rtc_rtp_receiver.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver_impl.cc
@@ -2,16 +2,17 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "content/renderer/media/webrtc/rtc_rtp_receiver.h"
+#include "third_party/blink/public/web/modules/peerconnection/rtc_rtp_receiver_impl.h"
 
 #include "base/bind.h"
 #include "base/logging.h"
 #include "third_party/blink/public/platform/modules/peerconnection/webrtc_util.h"
 #include "third_party/blink/public/platform/web_rtc_rtp_source.h"
 #include "third_party/blink/public/platform/web_rtc_stats.h"
+#include "third_party/blink/renderer/platform/wtf/thread_safe_ref_counted.h"
 #include "third_party/webrtc/api/scoped_refptr.h"
 
-namespace content {
+namespace blink {
 
 RtpReceiverState::RtpReceiverState(
     scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
@@ -126,10 +127,10 @@
   return stream_ids_;
 }
 
-class RTCRtpReceiver::RTCRtpReceiverInternal
-    : public base::RefCountedThreadSafe<
-          RTCRtpReceiver::RTCRtpReceiverInternal,
-          RTCRtpReceiver::RTCRtpReceiverInternalTraits> {
+class RTCRtpReceiverImpl::RTCRtpReceiverInternal
+    : public WTF::ThreadSafeRefCounted<
+          RTCRtpReceiverImpl::RTCRtpReceiverInternal,
+          RTCRtpReceiverImpl::RTCRtpReceiverInternalTraits> {
  public:
   RTCRtpReceiverInternal(
       scoped_refptr<webrtc::PeerConnectionInterface> native_peer_connection,
@@ -189,7 +190,9 @@
   }
 
  private:
-  friend struct RTCRtpReceiver::RTCRtpReceiverInternalTraits;
+  friend class WTF::ThreadSafeRefCounted<RTCRtpReceiverInternal,
+                                         RTCRtpReceiverInternalTraits>;
+  friend struct RTCRtpReceiverImpl::RTCRtpReceiverInternalTraits;
 
   ~RTCRtpReceiverInternal() {
     DCHECK(main_task_runner_->BelongsToCurrentThread());
@@ -214,11 +217,7 @@
   RtpReceiverState state_;
 };
 
-struct RTCRtpReceiver::RTCRtpReceiverInternalTraits {
- private:
-  friend class base::RefCountedThreadSafe<RTCRtpReceiverInternal,
-                                          RTCRtpReceiverInternalTraits>;
-
+struct RTCRtpReceiverImpl::RTCRtpReceiverInternalTraits {
   static void Destruct(const RTCRtpReceiverInternal* receiver) {
     // RTCRtpReceiverInternal owns AdapterRefs which have to be destroyed on the
     // main thread, this ensures delete always happens there.
@@ -226,7 +225,7 @@
       receiver->main_task_runner_->PostTask(
           FROM_HERE,
           base::BindOnce(
-              &RTCRtpReceiver::RTCRtpReceiverInternalTraits::Destruct,
+              &RTCRtpReceiverImpl::RTCRtpReceiverInternalTraits::Destruct,
               base::Unretained(receiver)));
       return;
     }
@@ -234,57 +233,61 @@
   }
 };
 
-uintptr_t RTCRtpReceiver::getId(
+uintptr_t RTCRtpReceiverImpl::getId(
     const webrtc::RtpReceiverInterface* webrtc_rtp_receiver) {
   return reinterpret_cast<uintptr_t>(webrtc_rtp_receiver);
 }
 
-RTCRtpReceiver::RTCRtpReceiver(
+RTCRtpReceiverImpl::RTCRtpReceiverImpl(
     scoped_refptr<webrtc::PeerConnectionInterface> native_peer_connection,
     RtpReceiverState state)
-    : internal_(new RTCRtpReceiverInternal(std::move(native_peer_connection),
-                                           std::move(state))) {}
+    : internal_(base::MakeRefCounted<RTCRtpReceiverInternal>(
+          std::move(native_peer_connection),
+          std::move(state))) {}
 
-RTCRtpReceiver::RTCRtpReceiver(const RTCRtpReceiver& other)
+RTCRtpReceiverImpl::RTCRtpReceiverImpl(const RTCRtpReceiverImpl& other)
     : internal_(other.internal_) {}
 
-RTCRtpReceiver::~RTCRtpReceiver() {}
+RTCRtpReceiverImpl::~RTCRtpReceiverImpl() {}
 
-RTCRtpReceiver& RTCRtpReceiver::operator=(const RTCRtpReceiver& other) {
+RTCRtpReceiverImpl& RTCRtpReceiverImpl::operator=(
+    const RTCRtpReceiverImpl& other) {
   internal_ = other.internal_;
   return *this;
 }
 
-const RtpReceiverState& RTCRtpReceiver::state() const {
+const RtpReceiverState& RTCRtpReceiverImpl::state() const {
   return internal_->state();
 }
 
-void RTCRtpReceiver::set_state(RtpReceiverState state) {
+void RTCRtpReceiverImpl::set_state(RtpReceiverState state) {
   internal_->set_state(std::move(state));
 }
 
-std::unique_ptr<blink::WebRTCRtpReceiver> RTCRtpReceiver::ShallowCopy() const {
-  return std::make_unique<RTCRtpReceiver>(*this);
+std::unique_ptr<blink::WebRTCRtpReceiver> RTCRtpReceiverImpl::ShallowCopy()
+    const {
+  return std::make_unique<RTCRtpReceiverImpl>(*this);
 }
 
-uintptr_t RTCRtpReceiver::Id() const {
+uintptr_t RTCRtpReceiverImpl::Id() const {
   return getId(internal_->state().webrtc_receiver().get());
 }
 
 rtc::scoped_refptr<webrtc::DtlsTransportInterface>
-RTCRtpReceiver::DtlsTransport() {
+RTCRtpReceiverImpl::DtlsTransport() {
   return internal_->state().webrtc_dtls_transport();
 }
 
-webrtc::DtlsTransportInformation RTCRtpReceiver::DtlsTransportInformation() {
+webrtc::DtlsTransportInformation
+RTCRtpReceiverImpl::DtlsTransportInformation() {
   return internal_->state().webrtc_dtls_transport_information();
 }
 
-const blink::WebMediaStreamTrack& RTCRtpReceiver::Track() const {
+const blink::WebMediaStreamTrack& RTCRtpReceiverImpl::Track() const {
   return internal_->state().track_ref()->web_track();
 }
 
-blink::WebVector<blink::WebString> RTCRtpReceiver::StreamIds() const {
+blink::WebVector<blink::WebString> RTCRtpReceiverImpl::StreamIds() const {
   const auto& stream_ids = internal_->state().stream_ids();
   blink::WebVector<blink::WebString> web_stream_ids(stream_ids.size());
   for (size_t i = 0; i < stream_ids.size(); ++i)
@@ -293,21 +296,22 @@
 }
 
 blink::WebVector<std::unique_ptr<blink::WebRTCRtpSource>>
-RTCRtpReceiver::GetSources() {
+RTCRtpReceiverImpl::GetSources() {
   return internal_->GetSources();
 }
 
-void RTCRtpReceiver::GetStats(
+void RTCRtpReceiverImpl::GetStats(
     blink::WebRTCStatsReportCallback callback,
     const blink::WebVector<webrtc::NonStandardGroupId>& exposed_group_ids) {
   internal_->GetStats(std::move(callback), exposed_group_ids);
 }
 
-std::unique_ptr<webrtc::RtpParameters> RTCRtpReceiver::GetParameters() const {
+std::unique_ptr<webrtc::RtpParameters> RTCRtpReceiverImpl::GetParameters()
+    const {
   return internal_->GetParameters();
 }
 
-void RTCRtpReceiver::SetJitterBufferMinimumDelay(
+void RTCRtpReceiverImpl::SetJitterBufferMinimumDelay(
     base::Optional<double> delay_seconds) {
   internal_->SetJitterBufferMinimumDelay(delay_seconds);
 }
@@ -379,4 +383,4 @@
   NOTIMPLEMENTED();
   return {};
 }
-}  // namespace content
+}  // namespace blink
diff --git a/content/renderer/media/webrtc/rtc_rtp_receiver_unittest.cc b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver_impl_test.cc
similarity index 81%
rename from content/renderer/media/webrtc/rtc_rtp_receiver_unittest.cc
rename to third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver_impl_test.cc
index 1d9097d..f2b6faa8 100644
--- a/content/renderer/media/webrtc/rtc_rtp_receiver_unittest.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver_impl_test.cc
@@ -2,19 +2,16 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "content/renderer/media/webrtc/rtc_rtp_receiver.h"
+#include "third_party/blink/public/web/modules/peerconnection/rtc_rtp_receiver_impl.h"
 
 #include <memory>
 
 #include "base/bind.h"
 #include "base/logging.h"
-#include "base/memory/ref_counted.h"
+#include "base/memory/scoped_refptr.h"
 #include "base/run_loop.h"
 #include "base/single_thread_task_runner.h"
 #include "base/synchronization/waitable_event.h"
-#include "base/test/task_environment.h"
-#include "content/child/child_process.h"
-#include "content/renderer/media/webrtc/test/webrtc_stats_report_obtainer.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/public/platform/scheduler/test/renderer_scheduler_test_support.h"
 #include "third_party/blink/public/platform/web_rtc_stats.h"
@@ -22,14 +19,16 @@
 #include "third_party/blink/public/web/modules/peerconnection/mock_peer_connection_dependency_factory.h"
 #include "third_party/blink/public/web/modules/peerconnection/mock_peer_connection_impl.h"
 #include "third_party/blink/public/web/modules/peerconnection/webrtc_media_stream_track_adapter_map.h"
+#include "third_party/blink/public/web/modules/peerconnection/webrtc_stats_report_obtainer.h"
 #include "third_party/blink/public/web/web_heap.h"
+#include "third_party/blink/renderer/platform/testing/io_task_runner_testing_platform_support.h"
 #include "third_party/webrtc/api/stats/rtc_stats_report.h"
 #include "third_party/webrtc/api/stats/rtcstats_objects.h"
 #include "third_party/webrtc/api/test/mock_rtpreceiver.h"
 
-namespace content {
+namespace blink {
 
-class RTCRtpReceiverTest : public ::testing::Test {
+class RTCRtpReceiverImplTest : public ::testing::Test {
  public:
   void SetUp() override {
     dependency_factory_.reset(new blink::MockPeerConnectionDependencyFactory());
@@ -59,31 +58,31 @@
     run_loop.Run();
   }
 
-  std::unique_ptr<RTCRtpReceiver> CreateReceiver(
+  std::unique_ptr<RTCRtpReceiverImpl> CreateReceiver(
       scoped_refptr<webrtc::MediaStreamTrackInterface> webrtc_track) {
     std::unique_ptr<blink::WebRtcMediaStreamTrackAdapterMap::AdapterRef>
         track_ref;
     base::RunLoop run_loop;
     dependency_factory_->GetWebRtcSignalingThread()->PostTask(
         FROM_HERE,
-        base::BindOnce(&RTCRtpReceiverTest::CreateReceiverOnSignalingThread,
+        base::BindOnce(&RTCRtpReceiverImplTest::CreateReceiverOnSignalingThread,
                        base::Unretained(this), std::move(webrtc_track),
                        base::Unretained(&track_ref),
                        base::Unretained(&run_loop)));
     run_loop.Run();
     DCHECK(mock_webrtc_receiver_);
     DCHECK(track_ref);
-    RtpReceiverState state(
+    blink::RtpReceiverState state(
         main_thread_, dependency_factory_->GetWebRtcSignalingThread(),
         mock_webrtc_receiver_.get(), std::move(track_ref), {});
     state.Initialize();
-    return std::make_unique<RTCRtpReceiver>(peer_connection_.get(),
-                                            std::move(state));
+    return std::make_unique<RTCRtpReceiverImpl>(peer_connection_.get(),
+                                                std::move(state));
   }
 
-  scoped_refptr<WebRTCStatsReportObtainer> GetStats() {
-    scoped_refptr<WebRTCStatsReportObtainer> obtainer =
-        new WebRTCStatsReportObtainer();
+  scoped_refptr<blink::WebRTCStatsReportObtainer> GetStats() {
+    scoped_refptr<blink::WebRTCStatsReportObtainer> obtainer =
+        new blink::WebRTCStatsReportObtainer();
     receiver_->GetStats(obtainer->GetStatsCallbackWrapper(), {});
     return obtainer;
   }
@@ -100,11 +99,7 @@
     run_loop->Quit();
   }
 
-  // Code under test expects to be run in a process with an initialized
-  // ChildProcess, which requires ThreadPool, and a main-thread MessageLoop,
-  // which the TaskEnvironment also provides.
-  base::test::TaskEnvironment task_environment_;
-  ChildProcess child_process_;
+  ScopedTestingPlatformSupport<IOTaskRunnerTestingPlatformSupport> platform_;
 
   std::unique_ptr<blink::MockPeerConnectionDependencyFactory>
       dependency_factory_;
@@ -112,10 +107,10 @@
   scoped_refptr<blink::WebRtcMediaStreamTrackAdapterMap> track_map_;
   rtc::scoped_refptr<blink::MockPeerConnectionImpl> peer_connection_;
   rtc::scoped_refptr<webrtc::MockRtpReceiver> mock_webrtc_receiver_;
-  std::unique_ptr<RTCRtpReceiver> receiver_;
+  std::unique_ptr<RTCRtpReceiverImpl> receiver_;
 };
 
-TEST_F(RTCRtpReceiverTest, CreateReceiver) {
+TEST_F(RTCRtpReceiverImplTest, CreateReceiver) {
   scoped_refptr<blink::MockWebRtcAudioTrack> webrtc_track =
       blink::MockWebRtcAudioTrack::Create("webrtc_track");
   receiver_ = CreateReceiver(webrtc_track);
@@ -124,11 +119,11 @@
   EXPECT_EQ(receiver_->state().track_ref()->webrtc_track(), webrtc_track);
 }
 
-TEST_F(RTCRtpReceiverTest, ShallowCopy) {
+TEST_F(RTCRtpReceiverImplTest, ShallowCopy) {
   scoped_refptr<blink::MockWebRtcAudioTrack> webrtc_track =
       blink::MockWebRtcAudioTrack::Create("webrtc_track");
   receiver_ = CreateReceiver(webrtc_track);
-  auto copy = std::make_unique<RTCRtpReceiver>(*receiver_);
+  auto copy = std::make_unique<RTCRtpReceiverImpl>(*receiver_);
   EXPECT_EQ(receiver_->state().track_ref()->webrtc_track(), webrtc_track);
   const auto& webrtc_receiver = receiver_->state().webrtc_receiver();
   auto web_track_unique_id = receiver_->Track().UniqueId();
@@ -143,7 +138,7 @@
   EXPECT_EQ(copy->Track().UniqueId(), web_track_unique_id);
 }
 
-TEST_F(RTCRtpReceiverTest, GetStats) {
+TEST_F(RTCRtpReceiverImplTest, GetStats) {
   scoped_refptr<blink::MockWebRtcAudioTrack> webrtc_track =
       blink::MockWebRtcAudioTrack::Create("webrtc_track");
   receiver_ = CreateReceiver(webrtc_track);
@@ -170,4 +165,4 @@
   EXPECT_EQ(stats->Timestamp(), 1.234);
 }
 
-}  // namespace content
+}  // namespace blink
diff --git a/content/renderer/media/webrtc/webrtc_media_stream_track_adapter_map_unittest.cc b/third_party/blink/renderer/modules/peerconnection/webrtc_media_stream_track_adapter_map_test.cc
similarity index 96%
rename from content/renderer/media/webrtc/webrtc_media_stream_track_adapter_map_unittest.cc
rename to third_party/blink/renderer/modules/peerconnection/webrtc_media_stream_track_adapter_map_test.cc
index b389c3ff..3392959 100644
--- a/content/renderer/media/webrtc/webrtc_media_stream_track_adapter_map_unittest.cc
+++ b/third_party/blink/renderer/modules/peerconnection/webrtc_media_stream_track_adapter_map_test.cc
@@ -7,13 +7,11 @@
 #include <memory>
 
 #include "base/bind.h"
-#include "base/memory/ref_counted.h"
+#include "base/memory/scoped_refptr.h"
 #include "base/run_loop.h"
 #include "base/single_thread_task_runner.h"
 #include "base/test/bind_test_util.h"
-#include "base/test/task_environment.h"
 #include "base/test/test_timeouts.h"
-#include "content/child/child_process.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/public/platform/modules/mediastream/media_stream_audio_source.h"
 #include "third_party/blink/public/platform/scheduler/test/renderer_scheduler_test_support.h"
@@ -22,8 +20,9 @@
 #include "third_party/blink/public/platform/web_string.h"
 #include "third_party/blink/public/web/modules/peerconnection/mock_peer_connection_dependency_factory.h"
 #include "third_party/blink/public/web/web_heap.h"
+#include "third_party/blink/renderer/platform/testing/io_task_runner_testing_platform_support.h"
 
-namespace content {
+namespace blink {
 
 class WebRtcMediaStreamTrackAdapterMapTest : public ::testing::Test {
  public:
@@ -111,10 +110,7 @@
   }
 
  protected:
-  // The TaskEnvironment prevents the ChildProcess from leaking a
-  // ThreadPool.
-  base::test::TaskEnvironment task_environment_;
-  ChildProcess child_process_;
+  ScopedTestingPlatformSupport<IOTaskRunnerTestingPlatformSupport> platform_;
 
   std::unique_ptr<blink::MockPeerConnectionDependencyFactory>
       dependency_factory_;
@@ -358,4 +354,4 @@
   RunStressTest(kNumStressTestIterations);
 }
 
-}  // namespace content
+}  // namespace blink
diff --git a/content/renderer/media/webrtc/test/webrtc_stats_report_obtainer.cc b/third_party/blink/renderer/modules/peerconnection/webrtc_stats_report_obtainer.cc
similarity index 86%
rename from content/renderer/media/webrtc/test/webrtc_stats_report_obtainer.cc
rename to third_party/blink/renderer/modules/peerconnection/webrtc_stats_report_obtainer.cc
index 4ac01eb..f27836d 100644
--- a/content/renderer/media/webrtc/test/webrtc_stats_report_obtainer.cc
+++ b/third_party/blink/renderer/modules/peerconnection/webrtc_stats_report_obtainer.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 "content/renderer/media/webrtc/test/webrtc_stats_report_obtainer.h"
+#include "third_party/blink/public/web/modules/peerconnection/webrtc_stats_report_obtainer.h"
 
 #include "base/bind.h"
 #include "base/callback.h"
 
-namespace content {
+namespace blink {
 
 WebRTCStatsReportObtainer::WebRTCStatsReportObtainer() {}
 
@@ -33,4 +33,4 @@
   run_loop_.Quit();
 }
 
-}  // namespace content
+}  // namespace blink
diff --git a/third_party/blink/renderer/modules/service_worker/web_embedded_worker_impl_test.cc b/third_party/blink/renderer/modules/service_worker/web_embedded_worker_impl_test.cc
index a75e597..0b8b5fc 100644
--- a/third_party/blink/renderer/modules/service_worker/web_embedded_worker_impl_test.cc
+++ b/third_party/blink/renderer/modules/service_worker/web_embedded_worker_impl_test.cc
@@ -217,7 +217,12 @@
   }
 
   std::unique_ptr<WebEmbeddedWorkerStartData> CreateStartData() {
-    auto start_data = std::make_unique<WebEmbeddedWorkerStartData>();
+    WebFetchClientSettingsObject outside_settings_object(
+        network::mojom::ReferrerPolicy::kDefault,
+        /*outgoing_referrer=*/WebURL(script_url_),
+        blink::mojom::InsecureRequestsPolicy::kDoNotUpgrade);
+    auto start_data = std::make_unique<WebEmbeddedWorkerStartData>(
+        std::move(outside_settings_object));
     start_data->script_url = script_url_;
     start_data->user_agent = WebString("dummy user agent");
     start_data->script_type = mojom::ScriptType::kClassic;
diff --git a/third_party/blink/renderer/platform/graphics/canvas_resource_provider.cc b/third_party/blink/renderer/platform/graphics/canvas_resource_provider.cc
index 576f6781..749a1f7 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_resource_provider.cc
+++ b/third_party/blink/renderer/platform/graphics/canvas_resource_provider.cc
@@ -752,9 +752,6 @@
       case CanvasResourceType::kDirect3DGpuMemoryBuffer:
         if (!is_gpu_memory_buffer_image_allowed)
           continue;
-        DCHECK_EQ(color_params.GLUnsizedInternalFormat(),
-                  gpu::InternalFormatForGpuMemoryBufferFormat(
-                      color_params.GetBufferFormat()));
         provider = std::make_unique<CanvasResourceProviderPassThrough>(
             size, filter_quality, color_params, context_provider_wrapper,
             resource_dispatcher);
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index 9cea30b..c3f818c 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -5791,3 +5791,7 @@
 crbug.com/1010655 virtual/disable-deferred-rendering/fast/canvas/canvas-lost-gpu-context.html [ Failure ]
 crbug.com/1010657 [ Mac ] virtual/disable-deferred-rendering/fast/canvas/image-object-in-canvas.html [ Failure ]
 crbug.com/1011723 virtual/disable-deferred-rendering/fast/canvas/OffscreenCanvas-copyImage.html [ Failure ]
+
+# Sheriff 2019-10-11
+crbug.com/1012599 external/wpt/fetch/cross-origin-resource-policy/fetch.https.any.sharedworker.html [ Pass Timeout ]
+crbug.com/1012599 virtual/outofblink-cors/external/wpt/fetch/cross-origin-resource-policy/fetch.https.any.sharedworker.html [ Pass Timeout ]
diff --git a/third_party/blink/web_tests/badging/badge-error.html b/third_party/blink/web_tests/badging/badge-error.html
index 62ccb5d..75ab5a2 100644
--- a/third_party/blink/web_tests/badging/badge-error.html
+++ b/third_party/blink/web_tests/badging/badge-error.html
@@ -12,21 +12,27 @@
 <script>
 
 // Negative value not allowed.
-badge_test(() => { ExperimentalBadge.set(-1); }, undefined, 'TypeError');
+badge_test(() => navigator.setExperimentalAppBadge(-1), undefined,
+  'TypeError');
 
 // Value too large (2^53).
-badge_test(() => { ExperimentalBadge.set(9007199254740992); },
+badge_test(() => navigator.setExperimentalAppBadge(Number.MAX_SAFE_INTEGER + 1),
   undefined,
   'TypeError');
 
 // Illegal numeric values.
-badge_test(() => { ExperimentalBadge.set(Infinity); }, undefined, 'TypeError');
-badge_test(() => { ExperimentalBadge.set(-Infinity); }, undefined, 'TypeError');
-badge_test(() => { ExperimentalBadge.set(NaN); }, undefined, 'TypeError');
+badge_test(() => navigator.setExperimentalAppBadge(Infinity), undefined,
+  'TypeError');
+badge_test(() => navigator.setExperimentalAppBadge(-Infinity), undefined,
+  'TypeError');
+badge_test(() => navigator.setExperimentalAppBadge(NaN), undefined,
+  'TypeError');
 
 // Other values that can't convert to a long.
-badge_test(() => { ExperimentalBadge.set("Foo"); }, undefined, 'TypeError');
-badge_test(() => { ExperimentalBadge.set({}); }, undefined, 'TypeError');
+badge_test(() => navigator.setExperimentalAppBadge("Foo"), undefined,
+  'TypeError');
+badge_test(() => navigator.setExperimentalAppBadge({}), undefined,
+  'TypeError');
 
 </script>
 </body>
diff --git a/third_party/blink/web_tests/badging/badge-success.html b/third_party/blink/web_tests/badging/badge-success.html
index 403833c..ac153d4 100644
--- a/third_party/blink/web_tests/badging/badge-success.html
+++ b/third_party/blink/web_tests/badging/badge-success.html
@@ -11,29 +11,29 @@
 <body>
 <script>
 
-badge_test(() => { ExperimentalBadge.set(); }, 'flag');
+badge_test(() => navigator.setExperimentalAppBadge(), 'flag');
 
-badge_test(() => { ExperimentalBadge.set(undefined); }, 'flag');
+badge_test(() => navigator.setExperimentalAppBadge(undefined), 'flag');
 
-badge_test(() => { ExperimentalBadge.set(1); }, 'number:1');
+badge_test(() => navigator.setExperimentalAppBadge(1), 'number:1');
 
 // Non-whole number should round down to nearest integer.
-badge_test(() => { ExperimentalBadge.set(10.6); }, 'number:10');
+badge_test(() => navigator.setExperimentalAppBadge(10.6), 'number:10');
 
 // Maximum allowed value (2^53 - 1).
-badge_test(() => { ExperimentalBadge.set(9007199254740991); },
-           'number:9007199254740991');
+badge_test(() => navigator.setExperimentalAppBadge(Number.MAX_SAFE_INTEGER),
+           'number:' + Number.MAX_SAFE_INTEGER);
 
 // Setting the Badge to 0 should be equivalent to clearing the badge.
-badge_test(() => { ExperimentalBadge.set(0); }, 'clear');
+badge_test(() => navigator.setExperimentalAppBadge(0), 'clear');
 
-badge_test(() => { ExperimentalBadge.clear(); }, 'clear');
+badge_test(() => navigator.clearExperimentalAppBadge(), 'clear');
 
 // Non-numeric values that convert to integer.
-badge_test(() => { ExperimentalBadge.set(null); }, 'clear');
-badge_test(() => { ExperimentalBadge.set(false); }, 'clear');
-badge_test(() => { ExperimentalBadge.set(true); }, 'number:1');
-badge_test(() => { ExperimentalBadge.set('3'); }, 'number:3');
+badge_test(() => navigator.setExperimentalAppBadge(null), 'clear');
+badge_test(() => navigator.setExperimentalAppBadge(false), 'clear');
+badge_test(() => navigator.setExperimentalAppBadge(true), 'number:1');
+badge_test(() => navigator.setExperimentalAppBadge('3'), 'number:3');
 
 </script>
 </body>
diff --git a/third_party/blink/web_tests/badging/idl.html b/third_party/blink/web_tests/badging/idl.html
index 19ab1e2..6c9ac44 100644
--- a/third_party/blink/web_tests/badging/idl.html
+++ b/third_party/blink/web_tests/badging/idl.html
@@ -5,11 +5,10 @@
 <script src="../resources/webidl2.js"></script>
 <script src="../resources/idlharness.js"></script>
 <script type="text/plain" id="tested">
-    interface ExperimentalBadge {
-      [CallWith=ScriptState, RaisesException]
-      static void set(optional [EnforceRange] unsigned long long contents, optional BadgeOptions options);
-      [CallWith=ScriptState] static void clear(optional BadgeOptions options);
-    };
+  interface Navigator {
+    Promise<void> setExperimentalAppBadge(optional [EnforceRange] unsigned long long contents);
+    Promise<void> clearExperimentalAppBadge();
+  };
 </script>
 <script>
     "use strict";
diff --git a/third_party/blink/web_tests/badging/resources/mock-badge-service.js b/third_party/blink/web_tests/badging/resources/mock-badge-service.js
index 8012aee..91810b0 100644
--- a/third_party/blink/web_tests/badging/resources/mock-badge-service.js
+++ b/third_party/blink/web_tests/badging/resources/mock-badge-service.js
@@ -49,25 +49,16 @@
 
 let mockBadgeService = new MockBadgeService();
 
-function callAndObserveErrors(func, expectedErrorName) {
-  return new Promise((resolve, reject) => {
-    try {
-      func();
-    } catch (error) {
-      try {
-        assert_equals(error.name, expectedErrorName);
-        resolve();
-      } catch (reason) {
-        reject(reason);
-      }
-    }
-  });
-}
-
 function badge_test(func, expectedAction, expectedError) {
-  promise_test(() => {
+  promise_test(async () => {
     let mockPromise = mockBadgeService.init_(expectedAction);
-    return Promise.race(
-        [callAndObserveErrors(func, expectedError), mockPromise]);
+
+    try {
+      await func();
+    } catch (error) {
+      return assert_equals(error.name, expectedError);
+    }
+
+    await mockPromise;
   });
 }
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_6.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_6.json
index 5a3c806..d015a627 100644
--- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_6.json
+++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_6.json
@@ -123757,6 +123757,36 @@
    "2dcontext/pixel-manipulation/2d.imageData.put.alpha.png": [
     []
    ],
+   "2dcontext/resources/canvas-frame.css": [
+    []
+   ],
+   "2dcontext/resources/canvas-frame.css.headers": [
+    []
+   ],
+   "2dcontext/resources/canvas-index.css": [
+    []
+   ],
+   "2dcontext/resources/canvas-index.css.headers": [
+    []
+   ],
+   "2dcontext/resources/canvas-spec.css": [
+    []
+   ],
+   "2dcontext/resources/canvas-spec.css.headers": [
+    []
+   ],
+   "2dcontext/resources/canvas-tests.css": [
+    []
+   ],
+   "2dcontext/resources/canvas-tests.css.headers": [
+    []
+   ],
+   "2dcontext/resources/canvas-tests.js": [
+    []
+   ],
+   "2dcontext/resources/canvas-tests.js.headers": [
+    []
+   ],
    "2dcontext/shadows/2d.shadow.alpha.2.png": [
     []
    ],
@@ -124999,36 +125029,6 @@
    "common/blank.html": [
     []
    ],
-   "common/canvas-frame.css": [
-    []
-   ],
-   "common/canvas-frame.css.headers": [
-    []
-   ],
-   "common/canvas-index.css": [
-    []
-   ],
-   "common/canvas-index.css.headers": [
-    []
-   ],
-   "common/canvas-spec.css": [
-    []
-   ],
-   "common/canvas-spec.css.headers": [
-    []
-   ],
-   "common/canvas-tests.css": [
-    []
-   ],
-   "common/canvas-tests.css.headers": [
-    []
-   ],
-   "common/canvas-tests.js": [
-    []
-   ],
-   "common/canvas-tests.js.headers": [
-    []
-   ],
    "common/domain-setter.sub.html": [
     []
    ],
@@ -125053,9 +125053,6 @@
    "common/media.js.headers": [
     []
    ],
-   "common/namespaces.js": [
-    []
-   ],
    "common/object-association.js": [
     []
    ],
@@ -126082,9 +126079,6 @@
    "cookie-store/README.md": [
     []
    ],
-   "cookie-store/idlharness_serviceworker.js": [
-    []
-   ],
    "cookie-store/resources/cookie-test-helpers.js": [
     []
    ],
@@ -126094,6 +126088,9 @@
    "cookie-store/resources/document_cookie.js": [
     []
    ],
+   "cookie-store/resources/empty_sw.js": [
+    []
+   ],
    "cookie-store/resources/helper_iframe.sub.html": [
     []
    ],
@@ -202083,16 +202080,62 @@
      }
     ]
    ],
-   "cookie-store/idlharness.tentative.https.html": [
+   "cookie-store/idlharness.tentative.https.any.js": [
     [
-     "cookie-store/idlharness.tentative.https.html",
-     {}
-    ]
-   ],
-   "cookie-store/idlharness_serviceworker.tentative.https.html": [
+     "cookie-store/idlharness.tentative.https.any.html",
+     {
+      "script_metadata": [
+       [
+        "global",
+        "!default,serviceworker,window"
+       ],
+       [
+        "timeout",
+        "long"
+       ],
+       [
+        "script",
+        "/resources/WebIDLParser.js"
+       ],
+       [
+        "script",
+        "/resources/idlharness.js"
+       ],
+       [
+        "script",
+        "/service-workers/service-worker/resources/test-helpers.sub.js"
+       ]
+      ],
+      "timeout": "long"
+     }
+    ],
     [
-     "cookie-store/idlharness_serviceworker.tentative.https.html",
-     {}
+     "cookie-store/idlharness.tentative.https.any.serviceworker.html",
+     {
+      "script_metadata": [
+       [
+        "global",
+        "!default,serviceworker,window"
+       ],
+       [
+        "timeout",
+        "long"
+       ],
+       [
+        "script",
+        "/resources/WebIDLParser.js"
+       ],
+       [
+        "script",
+        "/resources/idlharness.js"
+       ],
+       [
+        "script",
+        "/service-workers/service-worker/resources/test-helpers.sub.js"
+       ]
+      ],
+      "timeout": "long"
+     }
     ]
    ],
    "cookie-store/no_name_and_no_value.tentative.https.html": [
@@ -329848,7 +329891,7 @@
    "reftest"
   ],
   "2dcontext/compositing/2d.composite.canvas.copy.html": [
-   "5f32421fb79c5cb96ae5e57857c47982e8502858",
+   "90e263e669341184ac4f927ab5eca5b641dad093",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.canvas.copy.png": [
@@ -329856,7 +329899,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.canvas.destination-atop.html": [
-   "14261d0be0fc8c67501eced200b657a9ff832110",
+   "2cda697cda7c848515bca8f57d248fd08d2bfe86",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.canvas.destination-atop.png": [
@@ -329864,7 +329907,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.canvas.destination-in.html": [
-   "2320064fa261841b402a09add7180d133e05dd11",
+   "77d867fa8e4801efae2647b1b051b916f5da07bd",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.canvas.destination-in.png": [
@@ -329872,7 +329915,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.canvas.destination-out.html": [
-   "5d392eebc81cee7caf28e9f2ab64819af7c6ec80",
+   "d561fc151aed95b04c98c2e268c2f99cea8b7a33",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.canvas.destination-out.png": [
@@ -329880,7 +329923,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.canvas.destination-over.html": [
-   "130cbba8fcb6d058e01e8605fc7f402b97d09960",
+   "7b1dfdaca503a9d62441b791e57930807961563f",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.canvas.destination-over.png": [
@@ -329888,7 +329931,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.canvas.lighter.html": [
-   "bab8118617dec24844483d7ee5f2795247317fca",
+   "446ad0db885fb5dfab3374fb214faa388a0531b3",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.canvas.lighter.png": [
@@ -329896,7 +329939,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.canvas.source-atop.html": [
-   "3d19701ddf8dbe21057b7bdfd1000f278edcd982",
+   "f6b10c50c1cab426ce497966db0be8e9e331727e",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.canvas.source-atop.png": [
@@ -329904,7 +329947,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.canvas.source-in.html": [
-   "dfc1a5af8bbae5389781610925d11f7fa18792ff",
+   "e7169204f3bdc4bf650eb1f721aa87cc3600f618",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.canvas.source-in.png": [
@@ -329912,7 +329955,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.canvas.source-out.html": [
-   "a4bd322bef194399adb2e1197abfe50d1ffd4549",
+   "c9ecd2fd99a2d02fa95d0b0e2f7ee50cf6a019f1",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.canvas.source-out.png": [
@@ -329920,7 +329963,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.canvas.source-over.html": [
-   "ff8dc528bf1c781e784bd3bcfd9c68d5d62fd16a",
+   "7d971a7a26bf5eeecb59db149de81b3b0ab16e02",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.canvas.source-over.png": [
@@ -329928,7 +329971,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.canvas.xor.html": [
-   "f39a023f6fd2ee4eb14db523d89c13ad10419236",
+   "de9fc503c4397cc939efd92b743615f5cfa669d6",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.canvas.xor.png": [
@@ -329936,87 +329979,87 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.clip.copy.html": [
-   "08096cf1fd36ddb03b1050576522118cde86964f",
+   "9eada15ff9b15f766f20ca11f9f83fa19b9c4323",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.clip.destination-atop.html": [
-   "c05cd34b5f52ff1989dbc75bbea6aca51a140563",
+   "ad59f9646f2603658aa449a9caa06434eab61c06",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.clip.destination-in.html": [
-   "24aff70cdfb900826245daf89063b9cd3f0f272d",
+   "8d7f4776ca496c6a5eb640e08d1dd5031ad2e247",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.clip.destination-out.html": [
-   "afeb00984db1c0072a5e7723ff8b9b12755bab96",
+   "a01fa897386a83a1eb802a4927b981764da14943",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.clip.destination-over.html": [
-   "7a258836d49e51d55460b9fba3d26c2cf6ea2f4d",
+   "a030e287bb6b98321cd9e7519b46cd3c47cadf60",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.clip.lighter.html": [
-   "ffc864b7b124a7839747dc5230905e0e9e4fb3d8",
+   "0629a999e7b81b676f0e6075fa65f65a3a56c974",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.clip.source-atop.html": [
-   "4580b54293c4719e9b6158092d310902f2dd0b9d",
+   "5b649117d974bf00d4bef64a82969fc6e9eef526",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.clip.source-in.html": [
-   "79c4e16a619abb53f634e238b42e08c0a04a80ce",
+   "d763cddd33a74265ddaa2bcb3f17435ce86ff2f0",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.clip.source-out.html": [
-   "53456660dfab13a9d3117d73fcd49894edd968e0",
+   "6021ad041bbae143f81b1590c2d80e16b7c396d8",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.clip.source-over.html": [
-   "98b446a1fe3ad9c15cff9af64c65ddfda72b4182",
+   "0e2a7c93e8336ec734c8b563ef4c11de39f0e66f",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.clip.xor.html": [
-   "b6e36bc11ac77dade6ea67760311788c1073ab43",
+   "3224c03bc92838acc29c1ade0bfba79dcfcca58a",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.globalAlpha.canvas.html": [
-   "0b6df4930573f0aec3d52d47ff59c505fe9a7d6c",
+   "2ba76aedc73373c111564e52e13d78fd37c32efc",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.globalAlpha.canvascopy.html": [
-   "e7978c89137c7cc42d7e78acc27794e90f501fc0",
+   "3af79e61c835480e7cc248fc0900fac0d671616c",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.globalAlpha.canvaspattern.html": [
-   "eeb2442bf370bfdee2ccd39d414e8015de8be1e2",
+   "d338115e0e407dddbdd076614d2a022dd7595f56",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.globalAlpha.default.html": [
-   "f84a340fe21968292a05edb218773b0b034ed295",
+   "cb889566e64951d82a9f1289d06fc895797cf781",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.globalAlpha.fill.html": [
-   "591fb6b5a5b913f9c6b84dfa04da16e41b38fa7a",
+   "b08b0ba047cec71cd3b48538a4b32205715425fd",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.globalAlpha.image.html": [
-   "b796992dea29ff4b45677c44494bab6eccdfd1bb",
+   "9894af28eda1319e89000d1f978413faeaa78d39",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.globalAlpha.imagepattern.html": [
-   "ab8633952af404edf1c1ef855bc6124aeeb26795",
+   "cba042250d3a740d36e3b4d5cc464e64ca2b20ca",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.globalAlpha.invalid.html": [
-   "980ef8380f8d7724c5c1cf0efcfe8fbbcdfdf4d7",
+   "4fb8b65461514402eaf2e3345d7e9236b613a5d5",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.globalAlpha.range.html": [
-   "14926e6ebf2f323aefe10e680f41021d7f582b6f",
+   "bcea6d29eab60bd48008d85c51eac99a901cf5a1",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.image.copy.html": [
-   "96492347b43adb4ec177daf776f5f94d291806da",
+   "97a8031af4621b118df0d49b363c24f0be68a4d9",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.image.copy.png": [
@@ -330024,7 +330067,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.image.destination-atop.html": [
-   "221e7b205cc66fc02792c0069d8c5ef478924a83",
+   "a0c531515c84806c355f73f70a75963c0dc6d7b3",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.image.destination-atop.png": [
@@ -330032,7 +330075,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.image.destination-in.html": [
-   "b52860205c596aa7265755976138de5087e9785b",
+   "61521788faa0f83a99ffce0b92883b6f461147de",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.image.destination-in.png": [
@@ -330040,7 +330083,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.image.destination-out.html": [
-   "572ad859ad1cc0a5fcf9fe4b967b370c67b58227",
+   "21d48d3920ff6aedeb8cbabdb360cb359670d765",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.image.destination-out.png": [
@@ -330048,7 +330091,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.image.destination-over.html": [
-   "16131412bce943751db99495f4ec49a7831dcead",
+   "15e327e4702e2f3399ebe7f6b227d0484d0701b7",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.image.destination-over.png": [
@@ -330056,7 +330099,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.image.lighter.html": [
-   "f44d6dc3238bbecc62017738e3f1620c2f4d572e",
+   "45710327348d586c5245175e354ef2777495162a",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.image.lighter.png": [
@@ -330064,7 +330107,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.image.source-atop.html": [
-   "2d3a88a86872d8081b8c02041577e41a8604f550",
+   "5491a546ff6454d34ade296558cdd70ded4a08d3",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.image.source-atop.png": [
@@ -330072,7 +330115,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.image.source-in.html": [
-   "a8c1b5848c554cd5c63474b80d6a75d3eeee2295",
+   "a5ab32911749e0629061a0ea7ae5f71927f9cee4",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.image.source-in.png": [
@@ -330080,7 +330123,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.image.source-out.html": [
-   "079d342c00705dac17ffddc904055dfaed36b151",
+   "6e23dbba11f25ecb8731826af19645bdc86f0f74",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.image.source-out.png": [
@@ -330088,7 +330131,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.image.source-over.html": [
-   "bbb00e2e8ffe8b415d4516319c763e0a68c24b65",
+   "2509f65b42e437abb78e4812def9c5de285a14ce",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.image.source-over.png": [
@@ -330096,7 +330139,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.image.xor.html": [
-   "a38ece5dda7431c5c4f4c966dbd2275170e2b3f3",
+   "95b3c4900ac7594709b1c435e1405543a1a5fe5d",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.image.xor.png": [
@@ -330104,43 +330147,43 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.operation.casesensitive.html": [
-   "81b72375bc6213fe622cfa47abc532d043b3d26b",
+   "c5cc5af9d028f6ca19bdb1a7a4c049d2301f83c1",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.operation.clear.html": [
-   "8f1b834ae271aa47c76d9c7f64411a5d93a46166",
+   "ddb5f632b0c44b6ca80bae42dbbe2da3e1f5bf5e",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.operation.darker.html": [
-   "ac155ab047e5e1e0b523ba9de938af8475ea178d",
+   "f586e0b7f3250b9d52a1a460126fd7f0a63461e6",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.operation.default.html": [
-   "165e8b8334a53f477647ac50fe10c31738856c58",
+   "f5d4ccacabde26e7d01cda7430042811436f4ac2",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.operation.get.html": [
-   "53762dafe3878df2121d11f18a027a4af5c12ac3",
+   "4aebe9f996bee8745a07340d2572e418f9a6f377",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.operation.highlight.html": [
-   "8a3bcf753bc147c37bd89c72988ce777057f4d78",
+   "bd4c22b9f8fd7f2deefae0ba5df4f5f55856d11b",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.operation.nullsuffix.html": [
-   "aa3f8ccd5b39d5e2cdaf57d2abb736bda97759c3",
+   "cbe5c35297996058f7c781b6583e881dd50dd67c",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.operation.over.html": [
-   "e9b91e83ddbbab9d308e2469ef34eca645bc1b91",
+   "de08623871267d826eb1e2b4fc4530156ef74eec",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.operation.unrecognised.html": [
-   "ced2accc4f661325ac9c693497be39371173fa2b",
+   "6f5b602875054686bb54c318214bc30d00ac733b",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.solid.copy.html": [
-   "8bf99f3f82f638fe2abd697ea53501c2bcd0ad46",
+   "d88098f74c478d9d7eb844491ad3a1e2dc37df67",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.solid.copy.png": [
@@ -330148,7 +330191,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.solid.destination-atop.html": [
-   "045caaa02807cc2e3c75371798eaef15a7ff74d2",
+   "eb43f7a38ea461040fd3d0d56cd7b9c7fd5ba152",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.solid.destination-atop.png": [
@@ -330156,7 +330199,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.solid.destination-in.html": [
-   "ec27d60b4b2c5b08d7a3de11b5c6bc8c2b4fc39d",
+   "52709fe0da8c3e1219f9e86fdedc7706daadae3a",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.solid.destination-in.png": [
@@ -330164,7 +330207,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.solid.destination-out.html": [
-   "d96ce76cac339d7619ce12632cc5d1f24a6221ef",
+   "652ca2f8c46147e34937b2e138fe3f9de9d40088",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.solid.destination-out.png": [
@@ -330172,7 +330215,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.solid.destination-over.html": [
-   "08a02387d65a82ae0bf45c0918f930dde835d1f3",
+   "f1473fe54395b8d66fe4ab1163fb1a6806ba4158",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.solid.destination-over.png": [
@@ -330180,7 +330223,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.solid.lighter.html": [
-   "0ffdcbb0fc99de9ef9dd5e3699c54dab1c9132bb",
+   "49afdc4130eb5f5051402dbd094517c935e1be9a",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.solid.lighter.png": [
@@ -330188,7 +330231,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.solid.source-atop.html": [
-   "a122e437d1c6e12e6d877b996855c397445c96ee",
+   "27796664eb7cf94c1476baad16e34bad60fc7cf1",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.solid.source-atop.png": [
@@ -330196,7 +330239,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.solid.source-in.html": [
-   "ae3124ffab3bccef805afcb432953e28b5e01d2b",
+   "4411b53cd0a5f9934f3957dd04d295844e24819b",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.solid.source-in.png": [
@@ -330204,7 +330247,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.solid.source-out.html": [
-   "8ea16796c8f1b87360570308f3b7af3d19457359",
+   "f158e8ba50c09853c29af8450a2a530465423e57",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.solid.source-out.png": [
@@ -330212,7 +330255,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.solid.source-over.html": [
-   "e038d557b181993401dd7c1e7140f8ceb95e4f99",
+   "8d6c3991e81643666ff20b8c1a029328ca3d39da",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.solid.source-over.png": [
@@ -330220,7 +330263,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.solid.xor.html": [
-   "a7b4e821e28040ee9e000e7c7832557bce0985be",
+   "33d6f15cc24565bc417166b382772193e61ca5e1",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.solid.xor.png": [
@@ -330228,7 +330271,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.transparent.copy.html": [
-   "ede88859e89481b6788415c12b6392520f667f0b",
+   "e9acf3b36aac2b551cff3ca91a69c34fc3d50336",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.transparent.copy.png": [
@@ -330236,7 +330279,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.transparent.destination-atop.html": [
-   "350fe2be3f94c423eea352720501b256b63c4a13",
+   "df14ad95366e98ed0f4012758ba0b906211d0fd9",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.transparent.destination-atop.png": [
@@ -330244,7 +330287,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.transparent.destination-in.html": [
-   "b2e907d2afce074ecfcf4ef941e6bee9f8de7bae",
+   "8f8a85a7500a93b504dd2d905126bee17ae80284",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.transparent.destination-in.png": [
@@ -330252,7 +330295,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.transparent.destination-out.html": [
-   "aca47b8bd75ff3d88e81a67cd0c1fb0e79ee8487",
+   "7b022d2101c9774023d5162c14f7128c31bf1c3a",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.transparent.destination-out.png": [
@@ -330260,7 +330303,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.transparent.destination-over.html": [
-   "676278df7708caef4299f48703f52e59e62deff0",
+   "267eb116281afeeb2412a42c5e6f002749eca389",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.transparent.destination-over.png": [
@@ -330268,7 +330311,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.transparent.lighter.html": [
-   "9aba34c48a54efb8cc875daed42e2bad326d0bab",
+   "21024dd76e317b30f405bf792d7a19f8d95d04b8",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.transparent.lighter.png": [
@@ -330276,7 +330319,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.transparent.source-atop.html": [
-   "18229d6ae0b5e7aaf1f0e34433a650bb9ebf0d2c",
+   "81f95fba2c9989a69b0c4cd292f7bb54aa1fb7fc",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.transparent.source-atop.png": [
@@ -330284,7 +330327,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.transparent.source-in.html": [
-   "57124d886e89c11f211201d9c6b48d7de0cd7030",
+   "7fe80d534a653e7ab96e0d99eceed8fc9a5f6261",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.transparent.source-in.png": [
@@ -330292,7 +330335,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.transparent.source-out.html": [
-   "9b4b9d309877d8c2129de31d3a3c9fbca4a280b6",
+   "aa3fa6707303a0d716dfe87b9544f51ea8a130f6",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.transparent.source-out.png": [
@@ -330300,7 +330343,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.transparent.source-over.html": [
-   "6299e8c8edccdb0a41ed615459ce192b00aa9613",
+   "947d6f8cfa8d60545a21225dd31ea64375690703",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.transparent.source-over.png": [
@@ -330308,7 +330351,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.transparent.xor.html": [
-   "b53d140489e504578037e54bb75821476c98b092",
+   "95a1a20057d3b77586b7e6a5cf246c768049ac21",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.transparent.xor.png": [
@@ -330316,7 +330359,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.uncovered.fill.copy.html": [
-   "966d7265dfaedceff174588164b86fb9033ba9ba",
+   "d66bb5fac7981021cbe7fb7c70f7c01d17750de4",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.uncovered.fill.copy.png": [
@@ -330324,7 +330367,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.uncovered.fill.destination-atop.html": [
-   "8ffc8db3f3408a081cbdbd1bde3c744c0c843743",
+   "9b435e9badd9f56701566dcfe4eb4894cc2f94be",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.uncovered.fill.destination-atop.png": [
@@ -330332,7 +330375,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.uncovered.fill.destination-in.html": [
-   "040fdf3515c152d8fdf6800394d85667474ae007",
+   "381970b08c8dd0101887113e9ddcc901a282da85",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.uncovered.fill.destination-in.png": [
@@ -330340,7 +330383,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.uncovered.fill.source-in.html": [
-   "4d64f909460137bbae8095a01d433727848c4a80",
+   "4c20a823cb73b7ce1d1b92c2172955635bcf975b",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.uncovered.fill.source-in.png": [
@@ -330348,7 +330391,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.uncovered.fill.source-out.html": [
-   "d1f39bafff7cb2289cb6341e9adfb2d7e16c368b",
+   "2e94fc72911fd0076a3d61bb1801a0bbf555bcb7",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.uncovered.fill.source-out.png": [
@@ -330356,7 +330399,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.uncovered.image.copy.html": [
-   "43e070dc3ec28f179effa52cbbbed26365d0f172",
+   "9e035e83fc0efff84799516ad037a3d989f93e89",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.uncovered.image.copy.png": [
@@ -330364,7 +330407,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.uncovered.image.destination-atop.html": [
-   "e59e8aa89cb98700a5efc9fe1893482ddbccee9e",
+   "6f4cba52b499e1cc18801a025426602b530eaf06",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.uncovered.image.destination-atop.png": [
@@ -330372,7 +330415,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.uncovered.image.destination-in.html": [
-   "2872fd236529cc894123fb370b961e96a95f56ef",
+   "b120876abe86478c613f997b388f2ed74f607a62",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.uncovered.image.destination-in.png": [
@@ -330380,7 +330423,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.uncovered.image.source-in.html": [
-   "234e92472da059b176d2823ee747c72bc4f73f31",
+   "c0790826f373bb52b4861a6fbf08e43bbc6362a1",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.uncovered.image.source-in.png": [
@@ -330388,7 +330431,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.uncovered.image.source-out.html": [
-   "4ab233a4886702380fe3aeed333982095dbf5072",
+   "c4c1524e51c58e9b22f9d534f99db648e588fdf1",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.uncovered.image.source-out.png": [
@@ -330396,7 +330439,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.uncovered.nocontext.copy.html": [
-   "68a93669270cd799409113086956628200739759",
+   "8d29ae4cbfaf16f6558c8874ee5f1f53862b2a3d",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.uncovered.nocontext.copy.png": [
@@ -330404,7 +330447,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.uncovered.nocontext.destination-atop.html": [
-   "ad11e21d954f318570139765ee63f44d2728e5ed",
+   "8ff166122e2b39d973f9bf371ddad7b6413b2582",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.uncovered.nocontext.destination-atop.png": [
@@ -330412,7 +330455,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.uncovered.nocontext.destination-in.html": [
-   "0412a7aa30ab064f4cb48bc9d4dec646ad88b7a6",
+   "0208ef6a08723e29c8947a98409aa213b6ba63f1",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.uncovered.nocontext.destination-in.png": [
@@ -330420,7 +330463,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.uncovered.nocontext.source-in.html": [
-   "d6136630ede2931afbaa30086a2c9843265c452c",
+   "904448deb540854e5e20f5f7c11b4d8852a9618e",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.uncovered.nocontext.source-in.png": [
@@ -330428,7 +330471,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.uncovered.nocontext.source-out.html": [
-   "be5d6bf1226c52128efd4f95c14fd18d9e2bfe7e",
+   "5ef388a4728d9d5a3bd623592814655d5db0e820",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.uncovered.nocontext.source-out.png": [
@@ -330436,7 +330479,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.uncovered.pattern.copy.html": [
-   "8c38388c23bea17b8d2975b5ef456a6d76a52925",
+   "5872f5211925c13b8a4a4a88e31c038d8495c265",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.uncovered.pattern.copy.png": [
@@ -330444,7 +330487,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.uncovered.pattern.destination-atop.html": [
-   "7ad35f48df00f9064999c0319f8f2b7843ec1ce0",
+   "75dd8a063eee93959cbb90af537c9026acb405a7",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.uncovered.pattern.destination-atop.png": [
@@ -330452,7 +330495,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.uncovered.pattern.destination-in.html": [
-   "085851c9164c95c841d5c16778a5b31076851c43",
+   "0acf6ae3ced0b211b15c47393792ca95a54ce38f",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.uncovered.pattern.destination-in.png": [
@@ -330460,7 +330503,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.uncovered.pattern.source-in.html": [
-   "7e0b8795c5e1d838dc6b5876c5075890803c333a",
+   "3c99a68c47285a35e881cd170dfe5a7f0443254c",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.uncovered.pattern.source-in.png": [
@@ -330468,7 +330511,7 @@
    "support"
   ],
   "2dcontext/compositing/2d.composite.uncovered.pattern.source-out.html": [
-   "0d34f693c1c3df4e88a977199c765bb0cbea10e5",
+   "b21ab037607cbba5cc2f5fbec50c8d555515ea22",
    "testharness"
   ],
   "2dcontext/compositing/2d.composite.uncovered.pattern.source-out.png": [
@@ -330484,7 +330527,7 @@
    "reftest"
   ],
   "2dcontext/conformance-requirements/2d.coordinatespace-manual.html": [
-   "ba925df1b91fb3c7b8711068637ea272706e92e9",
+   "1a6f7316f5147d984bd50ebb89f801d809b29700",
    "manual"
   ],
   "2dcontext/conformance-requirements/2d.coordinatespace.png": [
@@ -330492,15 +330535,15 @@
    "support"
   ],
   "2dcontext/conformance-requirements/2d.missingargs.html": [
-   "de3d920dd5677d224eeb0fb1ab98ed14d86d6116",
+   "1056eb078f43b15717e6b642132161035bcef08b",
    "testharness"
   ],
   "2dcontext/conformance-requirements/2d.type.delete.html": [
-   "4097c35dd5c11891556bfec8b8ebf0145b23bd01",
+   "97f640c4f48798711a93a00802908c26024eda3b",
    "testharness"
   ],
   "2dcontext/conformance-requirements/2d.voidreturn.html": [
-   "a1697c60087c2426338a467604c3542ca3d01c4a",
+   "826cad0fbcd9b359bd45753bf164ac779f711f06",
    "testharness"
   ],
   "2dcontext/context-attributes/getContextAttributes.html": [
@@ -330508,43 +330551,43 @@
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.3arg.html": [
-   "b4fd347b9bf3ef246940379f4c86a1a3539f350d",
+   "231693cab7a9c6d048ec90d9baffdf9deb12f99b",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.5arg.html": [
-   "b2075a607aeea8b4033ca150307a33952eceb4b7",
+   "ea361b08ce47cd4c9851a80d4cbb981c8e9393f0",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html": [
-   "8ccecae22fab244e88f30eeba109f497aeb047c2",
+   "802f46b058eec70f3f5db0affa6e289c54cf9c23",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.html": [
-   "e71d1ab4d5d4d538f74805d2c03274ed1d55d019",
+   "1ed326fa7e5a8efc2a3e00e1cfd469e96159bdcf",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.html": [
-   "a76e0baa331b8817f8a541a4e47c30f69b0f1362",
+   "e5e3c1161fe7a8e1d858903f0518b3d45973f330",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html": [
-   "34785c75788b91641694b59bbe5d52b6474ea585",
+   "aea140669fa2d6d0ae384f450fdfa34e80ab3b5d",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html": [
-   "a640605b1d6fa571335a932cb2039362a8f76c07",
+   "f67b6d8fcdcd17d391789d062eed8bb49f9a7c54",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.alpha.html": [
-   "8056c96d360824dc54216cf8c0cd12c1c6932431",
+   "e053c30e0a28c59cadbfc53e46e760aef8026e82",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.apng.html": [
-   "28281cacf30d1d8f3b3d806f5199cbc3382d6713",
+   "880b74dea3d7651b92f6064b8929a3969be36ceb",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.gif.html": [
-   "041db0e62a5bd67965aea315da7e2fd569a272a1",
+   "b6d10eeda6dd031a51b7b00490c1be5af489e30c",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.poster-expected.txt": [
@@ -330552,103 +330595,103 @@
    "support"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html": [
-   "b0c76c1e5a20743d11f35294cbe4ca0632cf588e",
+   "5ff0638034907ba458405f871855b6330f37ba5c",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.broken.html": [
-   "f56ece4d0c5d64af5b5f81d840ece37a03910eaa",
+   "df93d83442cc58d1001a8b111eaeb3de0fdeaf9d",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.canvas.html": [
-   "7ae9614040e194cf7c6f0e98543d00ae7ef63040",
+   "618d59aa2e650e5c2c25747caa378fadc09dd384",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.clip.html": [
-   "fbf86e11cbfcfa78d57a0c276956c5cf40282bb6",
+   "0fed311856ecaa0dd8594d4020cfa428c9f99f83",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.composite.html": [
-   "e4175312b8e52310756cd1e5ff5aeaa0b35babd0",
+   "dadbe11db44e5b3cf4db254edb7dac972b4380e8",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.floatsource.html": [
-   "689b1f8ae418b1e935417fa87f8819ff31408eeb",
+   "d33c9aaf943b05456557b8ca0f3382eb3206f32a",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.emptysrc.html": [
-   "132e492c9af706ce8298b6ed6e20681a278b445e",
+   "e7d549c4e7d45f9490c28a48fdae8a6a57f9e05e",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.immediate.html": [
-   "1ff5ab2c471814108438f388c6698fe6ed8242fa",
+   "651c688f9af959482875af88c11eea16606ecdbd",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.nosrc.html": [
-   "5067b7a5c812b85f8b386e4666649bd8ab941bdc",
+   "cf39a4a78bd89d8172fdecb738917df74dad5f88",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.reload.html": [
-   "efd41c938a0c3935ee52cae870a8014933164803",
+   "b41b5e391508eb66a032bbb6c8b2dd301692f63f",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.removedsrc.html": [
-   "a744d591d8f37c76779f39922e2b9975853ea4fe",
+   "0ec3a2a987a0ee21a62e09886e68b6e42674b547",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativedest.html": [
-   "2d2c15849a777bfdc0ed12f156e5e921c38d9dd0",
+   "1a83b2fce5766d5b04936cd76e72e33039c10463",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativedir.html": [
-   "a333f8fb9f606872c7bb5cf1e355ecbfd462bac6",
+   "20a8b4b14b64bab9f59417d5dcdd76868db677b4",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativesource.html": [
-   "af377ffdfe799cb964aabd8b1477f48dea91b708",
+   "35b70f45096f504de5037406f5728952a9263d43",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html": [
-   "14e634a627ace361ef769b6666d4e40a78f09534",
+   "636bf72f229c73aa62c6cc16070d82bff90ef6ff",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.nowrap.html": [
-   "8b0fa4890c79630e21eef10982abc3cf7c9d8724",
+   "b44eb2e0423f736ad194be5954244c5dbe92a04d",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.null.html": [
-   "f4ce00e5623657f78d8cb04751e00b28da4f4c8e",
+   "9a74700e159cd7e7f0becb78d636e971af2f4f25",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.path.html": [
-   "2e389ebd4766b810f788f37f8054dbb7e1f219fa",
+   "fcf72bb78385d7a2b176d8702b602139f287cde7",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.self.1.html": [
-   "8f05c1445b8d2688a3e55b8f71c14782be06cc8f",
+   "281907fe8d99f0577ad98a00234386a78ef3d7e9",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.self.2.html": [
-   "4fc1319fc892ca16093077e8b4851756133f356c",
+   "e638719a6d9894722425710853f05f3786fc6984",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.svg.html": [
-   "5935eb8641fedb17b97adadffed71458bef317e9",
+   "7645e325026e4412be68d0652fe37076d2d4c432",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.transform.html": [
-   "ab3c09a22bc326a969216b00659e40378ad4c35f",
+   "b0c5b6e268e637a8c6a2e8175843532cc04c97b4",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.wrongtype.html": [
-   "cd2a7fc5b8e81178d03eb0b9de4db1ed26d09c3a",
+   "5caea5974eac23c9c9986b2d158c7c29129b705a",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.html": [
-   "1621c03c45b18ef7bf695971e2e3f859dd5ae721",
+   "23778452599ba79c522a16873cbd1ef0788477d3",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerosource.html": [
-   "be04a70588cefbadfcf802468ee3f4af1fbe7bb8",
+   "c21bfcf778a0c4285d9fe556ab4fa3fc90d9ccb9",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerosource.image-expected.txt": [
@@ -330656,7 +330699,7 @@
    "support"
   ],
   "2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html": [
-   "cda752c31c2760880372e8154f59f52e6ebd479c",
+   "6cd5bfb4c023950c2140ce1bf616ac1e826beeb0",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/drawimage_canvas.html": [
@@ -330680,7 +330723,7 @@
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/drawimage_svg_image_1.html": [
-   "6208b8dc05629208ee3d68b233e1b6c107d1d12b",
+   "6c1f9ad41484b3abf5a9cedf164608fb2b346b10",
    "testharness"
   ],
   "2dcontext/drawing-images-to-the-canvas/drawimage_svg_image_with_foreign_object_does_not_taint.html": [
@@ -330716,215 +330759,215 @@
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html": [
-   "9ec16ed5b6de5eebc2be54338b0e2f681d82ecf0",
+   "ea90c79903b86cad52c1be9b04dfecea6631c98e",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.clip.html": [
-   "bd35e7f0ceb116da7adf8d2b519cabd692d0f91d",
+   "d38f9cc756bc2da735595d804c544087971636b5",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.html": [
-   "34c64aec9ef473958d2d2d7d21fd3146a4bab943",
+   "85e04b2e7352f6519a6bd92725288c51b4462dec",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.html": [
-   "96830e1ea754ca628b6a3bafa1804696bc574cf9",
+   "38ba043bc94a41fdf4dd54b48223d22703107f03",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.negative.html": [
-   "2d1a0cb05a0de87864d22efd0770ba32ef41bac3",
+   "8fdc46b4e2c0d624381ed5ba3eafff0293ce85de",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.html": [
-   "35a3d79c1c0dff19457bd7819bcd66b91e5a07b3",
+   "7d6e266338d795c97e10e831c692c72151fa2a42",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.path.html": [
-   "c5429c8c2e4cebaec2a3a09562274c3743180fee",
+   "78fecf80f02b1813949c696dafa5a0516cd617ac",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.html": [
-   "384baf9c7a5b5398d288f64c95eff17accdb7148",
+   "ea95d7d05853f597f2bc7cc21bec80f1b58ac6a7",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.transform.html": [
-   "8ff20443c8133561de3935044fe2059a1a1a3c2e",
+   "1c812cd46dc7409c47651b62c442450fcf0ca6da",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.zero.html": [
-   "73805edd6a069edbaf183e04035eacbf82bfd7a1",
+   "ddef5159b28a8e74cd45a211a0a7d281e751d12e",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.basic.html": [
-   "455c4b5b2249276d018b1c598d1646eaaa6e374e",
+   "261401acf5248b60b4ad0d2dcb7ec98c1d473471",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.clip.html": [
-   "efd2d8cbbe4c147abb7ad30f5d268f8a9ea73bb9",
+   "834b26dd7844ecda93c02eed4bf747583a46e069",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.negative.html": [
-   "6e942753937e1c6c0937f22a4e01fb9d793a9f1a",
+   "4ad24feedf4a89956c6452cda97f55547536b847",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html": [
-   "92bb8fbc0572ef0c787e06b9de82e4742c163fd1",
+   "3056d001e5e675826a8d4f012ecbb405fcd9d0f9",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.path.html": [
-   "b018cba4419b963497928f3aa8c15df46a55ac78",
+   "ca67603fe478487d7497eba967c9f866a2da4f3b",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.html": [
-   "be8de26c406d9faa1b92e7760daa3460f50349bc",
+   "12884e0ef4d04bd055fd208f42e35efed610900a",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.transform.html": [
-   "711b6020141d4c1b7b05c43d811796fd15b655c8",
+   "0462d902e32c26cc6d3045f6d2ce5e8dad552f3b",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.zero.html": [
-   "c6ea3ae0299d19dcc7db1d452f3f34c819b84e6a",
+   "0c98d5daf15169ea26f006c75d88c37fe96e8a74",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.html": [
-   "5a3af8b4c5790956147ad0bddd20a2193988a7ae",
+   "68cd703512be43ce1c78712592c7450cf0b66a33",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html": [
-   "6ccb7da44493a8f47704bb2353ba82c18e9d93fe",
+   "baa3f7b3fd8d5cc754a2fad1e88dadafe53c78c8",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.html": [
-   "3e4cf0769b2f860c8f12b539ff0b94da7feffeaa",
+   "80d5f238973618c3c164d097af8218eedb9ceef2",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.html": [
-   "5239a03d45ebfbf04e3f3f5ecd1de1e57649e8dd",
+   "84fcd9064745aad9e3e29fb06ad581d63c490fcb",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.html": [
-   "1973d66253fe9002dfe8b0489a9b174b0141ba67",
+   "0051a433ef146875ec4852a9c869293efec05785",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.html": [
-   "ed4c3edce546dfa580ed36f3aa0e3e6f0bf200b4",
+   "5610c2f596b56065ddfb926089bdcf7d554de461",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.path.html": [
-   "81e7d436254aba97b4debf1c873cb607bd40963f",
+   "15d8b115f0f8cd7e6b395a502004c1e72307ae3d",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.html": [
-   "26aaa0f5d2ec82e200189bab9b08a024c99aeccb",
+   "5c6abfe8dde7b3e39535dea0bda3240eebfab4b6",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.html": [
-   "c9a4a76d90792a2451374f7099b7dab475ffa021",
+   "0e3789efef67da83b139ca98eed3a5ad9c671dab",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.html": [
-   "915c1252fcefac37907ed4ff8105929dcb680b86",
+   "bff540c4c976e035856802638ec37e3e3c7bb7d3",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.html": [
-   "bec7bdd123af0375f5356b437702e11ffca3981c",
+   "f79a62cab615144276fe3e7d26f803d56414947b",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.html": [
-   "44232f5fde1f052d198ed80e3cecfc10ae39f624",
+   "d3d544b8c4dde5bf039354b32a622a88f5f316bd",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.html": [
-   "3d594147843daaf40d2bc330db117c8d95045878",
+   "0ccedc41c2f5ab0e989f9445620d03d905a0d0e2",
    "testharness"
   ],
   "2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.html": [
-   "3e8c7d4bf236592291effa82709bb4b62bf3884e",
+   "be7da322edb49ede27b854bc8531306b10801ea5",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.center.html": [
-   "85e69b06e64abbd457584ab0c0d1ed847228b39e",
+   "c7e5c9e013a1d969bf49eecf12a7b32dce8156d4",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html": [
-   "601b45020eeb14b53c5f063bb1c2d03f910005fa",
+   "202d8847c55901fb34aa37488528e27a1ef1b9a1",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html": [
-   "f0a589a8a28ba526a36cfd63b97c46a44b0bad91",
+   "3502912f144b600dd9d83ea1aec7a5537d04e826",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.left.html": [
-   "219bd89cbf25369daeb04535009c1e2eca694a67",
+   "99b36418ac99e6bbf6b9c9fac4367152563a09b8",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.right.html": [
-   "bbb8d44eaca3f2d21a11b0c252a1197fce48d17a",
+   "aa7ea959f6fb4c4cf38040571a852fce6e225fd8",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html": [
-   "c986dfbba74456c073c844ff14cc75e178c94870",
+   "b2bde1590c04c4581d7ef804b5110e0c35cadad4",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html": [
-   "b087a2f9b71f95a461bafc292a896fe5b50622eb",
+   "69f6a830745ca01db05ede82873beda15100324b",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.basic-manual.html": [
-   "5a4be6d371474e3113a6e927f2f950f31c12031c",
+   "c6090dc4c5492523537d702db30d73f6ce87f498",
    "manual"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.basic.png": [
-   "70d7b046cb226cfcb2bfeebe3477d3b580d8270a",
+   "1e313371d828e9f5edf61480e64ea5c689653fca",
    "support"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html": [
-   "28647ac55aabd21f21341c5a0179eee95b3d52e5",
+   "958652e053a84c3200e9f49d359cbd74543fd3a7",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html": [
-   "c538618c68baf7106498e254159d05530af64f6f",
+   "b272fc75b3e2cf5e53f244e0e5feda87b9126a40",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.html": [
-   "f1212ff9fb0c04db3b8dac48c56ebd7b8d706ae4",
+   "ed48e1905a6026cc2695ce6a1a2e8e013af73d6f",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.large-manual.html": [
-   "5f599c84d2d4cbbf6d7f4090679e45aad15d266e",
+   "b189111097c809e59fc88acf610c9a357824b270",
    "manual"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.large.png": [
-   "70d7b046cb226cfcb2bfeebe3477d3b580d8270a",
+   "1e313371d828e9f5edf61480e64ea5c689653fca",
    "support"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.negative.html": [
-   "a6ec4f290636958f22c9bbc5dc8ee88410a56ce8",
+   "59de438ef748dbd54a572b99ce6af91c86747baa",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.small.html": [
-   "d0364d872297ba20d7a26e9176abe6332ffba7e9",
+   "f96efec711fcc3f5cc391c8c048fd597a371007a",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.zero.html": [
-   "176e43197a8f8aa11f2ccfc4af74db2798140f2c",
+   "8608061c6a984c7d5b434c32b469a0ef12c76ead",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.rtl-manual.html": [
-   "1066b837d42254efeb1c0b1c2d42bcbee19e899b",
+   "1fd67f2096a36e8b6689212c0473960bf4b05803",
    "manual"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.rtl.png": [
-   "70d7b046cb226cfcb2bfeebe3477d3b580d8270a",
+   "1e313371d828e9f5edf61480e64ea5c689653fca",
    "support"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.unaffected.html": [
-   "a7ddee418630a485178f834d9f714db3f82b977c",
+   "da1fab2a11c3b3c4f97c02364948b42ca2af1c25",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.html": [
-   "d3ac5378f1240d54d1f8b56a9a6e1e48998eac64",
+   "d794ef0374c2f2002a25dd79f06c06217f2664fc",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage-expected.txt": [
@@ -330932,91 +330975,91 @@
    "support"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html": [
-   "ae417226102a704667feb2a4d37218012e596eaa",
+   "05b164d48dfe6cc2c0268b361965d815b1184f75",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html": [
-   "987e1e82c4ebf2bef59548c9dccd66a39bf72e6b",
+   "ab1514201e3b32a65774bc13fc331282f71a09b2",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.kern.consistent-manual.html": [
-   "12618f4f6af7162432dbc071dcac97bb0bae399d",
+   "68329639bccd701aa4191d83332fb813a65d31f8",
    "manual"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.basic.html": [
-   "ccf68aff56afa5d825dd6186eb90d233a5604d82",
+   "353896fbd73ce0ffdb7fa52a4807c2d676a35cbb",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html": [
-   "8be967bb12e37b4b0da9600740c050e943751ebd",
+   "9b171022f7577a920ec1e0eb4cf8488d01ccabdc",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.stroke.basic-manual.html": [
-   "f9eac1f62c29d99c897f31620125860f363a3b68",
+   "03285dceca2b93bf1dc1ce41fedd59f73a80b09a",
    "manual"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.stroke.basic.png": [
-   "fb3b5b830d345d2aa858e41673e08f99977baf08",
+   "b04566f5c66e5816afdf094c1441d8a483297420",
    "support"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html": [
-   "1da4d927706b4f074eb912e04bc4f7af23e1e87b",
+   "91622fcd6ce230b1893c239020999e15cfa07252",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html": [
-   "6ab0c387002f6ce9c6397c9f780b57e8df514819",
+   "76fc17a882ff492b29716fcc0ea4230676abc361",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.measure.advances.html": [
-   "1830d1dee05e423b95faf2c52c1ddccf0e4fde8b",
+   "aa6bd84277d8bfd35617765b1b36120ad79263aa",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.measure.baselines.html": [
-   "c3e5f6aa3d01b65696813a3676eddb6c3bdfed05",
+   "58daf4fa2ecfd188efd7ef796229f0b91e2d68f8",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.measure.emHeights.html": [
-   "6c7d5373f61dbcf00fec60e28210ed94583f04bf",
+   "88cb6d914d22d9f51ae95c75b10d0fbdd7af3218",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.html": [
-   "cbe98ba7628673cb4a649a6f4d2b37b97b0e4478",
+   "bee580a95a7ea3c3b4010dd2a37a9854c26ec008",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.basic.html": [
-   "5a5a57adda757c061b4f23850d79b50f21aee53e",
+   "2c0cd57dc4c3d59ae62712b284e8032af2dd98e5",
    "testharness"
   ],
   "2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.empty.html": [
-   "70f0f07a9cf9f0b4596868d397912e7590adc5e7",
+   "c7c7bdb6673bc608f03147eeb628b684ba65ed08",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.default.html": [
-   "a14475d7de55c5011d06f505c91a3a945657d79d",
+   "133fca653f1283937efa5419f3c37e1404289aa8",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.html": [
-   "d8a1d4178cf6c56c80d4cc3fa0960b8ee4114f6e",
+   "643eda64f2dd8fa5c55c5ee540c7311e555ba9b7",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.get.solid.html": [
-   "8fc44b1c863e8c1e6104d85ecb30a91a953bf1ee",
+   "dff9bddba8563b272851a8f8d2af2ea7e452c18d",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.get.transparent.html": [
-   "3775cf3f9137d3329f7c5870f7675122a6cb7110",
+   "3108c97f95762c6912db5056b1eb3ebcb2beeced",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.invalidstring.html": [
-   "eaa50dd02ff047d822200940ebedd74e4c545adc",
+   "fb6e19f28b6ad30932bf17aa5a57999f6d17f7b4",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.invalidtype.html": [
-   "fb778cbfba44ab2c48d75c646337611899471cdf",
+   "b0b9a19207816a600263631c6f9148a75016ebc8",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html": [
-   "3dbda598b639eea70fb3e4d87c9d31921701aab1",
+   "746930711294fe411acb341f3695c08022420f5b",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.png": [
@@ -331024,7 +331067,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html": [
-   "25e98dc794c5707eb87c1741166be5247c4ff2cf",
+   "0076dec51097e780a2670dc546191ecf88da89df",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.png": [
@@ -331032,7 +331075,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html": [
-   "de600d94bd8a0423f4a749ee099885c824032664",
+   "be09c58f9addc6c43636310748ff4034c0c88a97",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.png": [
@@ -331040,7 +331083,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html": [
-   "52d917c6cf78f841742b87a5cefc5f609880aa01",
+   "f6b069e45958fe163a06a3fbb6d2e1b42b4926ba",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.png": [
@@ -331048,7 +331091,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html": [
-   "4f65b3dea2a4d27f8d359de8c1cf38b16c41b69e",
+   "dd4965230d80a97d47ff51da4d94f55a76340366",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.png": [
@@ -331056,7 +331099,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html": [
-   "19aa5974f2ca5384409234c1ec9041163745c273",
+   "877caadd055bafe7ab30e4918ef80ef493799863",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.png": [
@@ -331064,7 +331107,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html": [
-   "d9b6a3c98c3315adfecccf6607897ebdca5f559d",
+   "7ecab3829da5b415c359ad51a695dbb6c1f02cf0",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.png": [
@@ -331072,7 +331115,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html": [
-   "24e2b51830c6113a106535eb92f68f5480638698",
+   "6dd9818e621533356dc7c3e22b1a15a0169f2ee1",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.png": [
@@ -331080,7 +331123,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html": [
-   "9da548f3e72d60c9b51e7b56031ba87caea8077b",
+   "f4b539a98003864cece45509e7dd862526b703bf",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.png": [
@@ -331088,7 +331131,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html": [
-   "65881eeb15fcbae3fda64d7c34cf05bdda5fa4ee",
+   "36281fab34a1071729cdcf3a0955b7fdd82a9bdb",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.png": [
@@ -331096,7 +331139,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html": [
-   "91f5e34595959cffa8212f711c9767a20f680ad2",
+   "bb2da3f38a005ddc5430c5288f04625689e4b8ac",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.png": [
@@ -331104,7 +331147,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html": [
-   "eb6c69526e9df97d1549e4a8f54d9451e42b90ee",
+   "fdab82a2ef825c365ca416a62fe3389bd0cb47a0",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.png": [
@@ -331112,7 +331155,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html": [
-   "ce5bdef7ac35f1d5670339ba18b7a32d53d33384",
+   "dfbf9bbccd8f1fde41f1efbbff1f87b1cec711fc",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.png": [
@@ -331120,7 +331163,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html": [
-   "47b426daf54901f4f6e9c193619b548a341b9e85",
+   "86e781a1778e3a5a5465d37c7705e6351170ece0",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.png": [
@@ -331128,7 +331171,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html": [
-   "6dc5e7aef3f19fae6b2cb5dc6752e51af6df0e2c",
+   "9339ec3267eaae895ce993812ae8d04d68a6e430",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.png": [
@@ -331136,7 +331179,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html": [
-   "a1069fea9fe408cf8b069b018d6dd6bb695af085",
+   "bad415aed1dbc5e1a585dc4acb516c18b92526f2",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.png": [
@@ -331144,7 +331187,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html": [
-   "7d04b1ca552b63bb3ac66225e1f4a8e796c29345",
+   "2dbdcf354b2d7f9631d7a4eab52f7513f84eeb39",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.png": [
@@ -331152,7 +331195,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html": [
-   "0a10c6e61c5c92ba3a91174d7def64e8f98acc1f",
+   "4b4c1aca1c67afb86e90bea7b93612fef76f754e",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.png": [
@@ -331160,7 +331203,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html": [
-   "fd6376e1a2a10f0eb4502d0b4ca6fe759991bef1",
+   "4704c8a378f1ce101bd5dc839f5c01e5deb95364",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.png": [
@@ -331168,7 +331211,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html": [
-   "ec0f62344f08a1475e147f1c0a0f138cb3aa745f",
+   "071477ace52024001a6cde6e52cb93417286f381",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.png": [
@@ -331176,7 +331219,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html": [
-   "980abef36c4bcdcb29c4dc3800908fb2a68730eb",
+   "abe07a9c8878d11186efa22c427be22d71124890",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.png": [
@@ -331184,7 +331227,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html": [
-   "a2543b566ab8e87f9f2163b1396fd591872e87f0",
+   "25d5d05890a439ea8ac5fd385c6447bb9d4678cf",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.png": [
@@ -331192,7 +331235,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html": [
-   "6b310d763ba7e3a8fc6904aa833e08300073ca36",
+   "7fd789ce7795ea4bd00fd05a982be1a2bacc3e26",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.png": [
@@ -331200,7 +331243,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html": [
-   "d38f7e0ac0e24b89640df234d0ba77957924dec0",
+   "410d4ea7efab6cb36fee7020c28456d7fdc3d7a3",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.png": [
@@ -331208,7 +331251,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html": [
-   "83dfb2f86afb179f4bc7218ba7c89be85f765892",
+   "2918ab48ff16170d7b6008bd23fb77d5cf5342c2",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.png": [
@@ -331216,7 +331259,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html": [
-   "390d0bd0fab44ed083ec3851bbffa8f0440a0d96",
+   "51fbc53b3083ce2a79b9533ca8537ca8af368b47",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.png": [
@@ -331224,7 +331267,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html": [
-   "f0fd88ee6c3c5c0e82692498500c04fc891508af",
+   "2a3d527046d101618e709ff19cc50d7c7838a51d",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.png": [
@@ -331232,7 +331275,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html": [
-   "bd3e8edb2f8fbd670827d174def8575990a9d592",
+   "b6cbec2f62b9c99e174618fbe0e37df602aea72a",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.png": [
@@ -331240,7 +331283,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html": [
-   "0287ef693cda3fe5349b278915d1301c7ee89c93",
+   "9fd145a1a191f8c0aad7983a653d3c6ffdfe51e3",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.png": [
@@ -331248,7 +331291,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html": [
-   "09042c8778ed10193333ca4aec04944e16b52c58",
+   "e25a29f7dd2bd76fa2ce7103beda733da4fcf2a0",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.png": [
@@ -331256,19 +331299,19 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.basic.html": [
-   "271adfd8b36061acf95b00b82852cb24984b965f",
+   "6d65c46ccad2783ae5a2d543cad73e007b7a32ce",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.changed.html": [
-   "591b6d2560216d9eec5ca336ffe004454cc35eab",
+   "a959eeec09f89eb4a8a6bb4fecfdf7b8ec25db44",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.notrendered.html": [
-   "3e8f007f9bf04a363b53b7c73217557ae255f303",
+   "899d0d8a94e5be4ce82bc39dfaf308e98e5b14bf",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.removed.html": [
-   "a46e9c975b5a41b41dd6188d32cc43ea77cc3c28",
+   "3cec3c412fe02a37a6c323221073362332b3b708",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.removed.png": [
@@ -331276,7 +331319,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html": [
-   "635a59a72f91101d94287116430cba2ab5375609",
+   "f0779fa05c9479f34b9d712ad104f0e36dfd7c3f",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex3.png": [
@@ -331284,7 +331327,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html": [
-   "8462248e819bcf9a7379ef11e1c03576dc5b1cab",
+   "c41a2b1485057ad437e02d8a392efd2e54cbee47",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex4.png": [
@@ -331292,7 +331335,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html": [
-   "37a4208009abcdf88f4c78ebb0e62dde8c853afe",
+   "7a027e05f5a65205d77219d03ce7d4834ccf3353",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex6.png": [
@@ -331300,7 +331343,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html": [
-   "36ade5748c5cb94e9b18d9810c25b65e4e915f53",
+   "281064900c56833b32562ac35c87cec40ea6dc8a",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex8.png": [
@@ -331308,7 +331351,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html": [
-   "53b1f5d403b4acfc708d51cb2fa90bd831d62d12",
+   "dbef01269c9a65666a872b39a83c9d10c51b637a",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.png": [
@@ -331316,7 +331359,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html": [
-   "39790e979ddc055a95c394164b20fad0a20028fc",
+   "3775336061fab8f71951d49243e16f606a9bf4c0",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.png": [
@@ -331324,7 +331367,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html": [
-   "2befaab2e6d2978706747ccdde456231fb19e1a1",
+   "185063da98cecb87f4073a2da248223424588f8b",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.png": [
@@ -331332,7 +331375,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html": [
-   "9f8e7cac10c1f44879e09d2bffd7b38c18bc34eb",
+   "a89e8504ef6bb13a878b99c47c1cd72ca5b58297",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.png": [
@@ -331340,7 +331383,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html": [
-   "881bc0492b6996d4603b640110d54a4eaef25dd3",
+   "ac2a983215b6549b6c2021151d2b298d6b2a6a93",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.png": [
@@ -331348,7 +331391,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html": [
-   "f2636336c8743984a38feff336eda46ee4c37bac",
+   "27020596c6ac3da277043fe0478293358865316f",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.png": [
@@ -331356,7 +331399,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html": [
-   "a2fce10dc28072e04724f6f9809ed6ae5460e90a",
+   "78a6767f1a868d5c15f7297d942d9c222e37228c",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.png": [
@@ -331364,7 +331407,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html": [
-   "0a245a4df51e0b8f6ccc82fc4206c4932c39ec3a",
+   "214aa3d196adbb45a7244d685e41178e47f5a41f",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.png": [
@@ -331372,7 +331415,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html": [
-   "ed14332f820c416dd19638c3ba3754c185c306d1",
+   "261005ec13382aa704e6666980aa309e47a6c377",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.png": [
@@ -331380,7 +331423,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html": [
-   "a27379c5e81ba629ee33375c654d83838fa48c17",
+   "ee0815fb0e0b9d24226c9d3bfe1c2723bd3845ba",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.png": [
@@ -331388,7 +331431,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html": [
-   "2e835a8b3709aaf9a957161da13db615eab0ad88",
+   "137990b0da0e9035d33b00ea3a8e1ff046b2cc19",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.png": [
@@ -331396,7 +331439,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html": [
-   "a7db6ac10553c3043d6ba6b135848841ae210eec",
+   "8eb458d044297ce8fcdc55775d0ae57edf38d787",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.png": [
@@ -331404,7 +331447,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html": [
-   "13652aab14032d20cba3c5d4e73359b5b0684d96",
+   "8ab6964757e477f7941cf9301e1ba3e2dcbf80df",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.png": [
@@ -331412,7 +331455,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html": [
-   "98f2505a54d7dde4e5611d69e8df299253b5faf9",
+   "bb8808b7a32cdf61af971b8a3f1a2609a399a739",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.png": [
@@ -331420,7 +331463,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html": [
-   "0aa08807a0b809548cb82f55f905824f37ae0247",
+   "454e9638a1ffd68c5f0d76f4924268cbe21c3189",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.png": [
@@ -331428,7 +331471,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html": [
-   "ab5da396ce5d9000a68f2c80083afd8ece7f4c88",
+   "d6e78789889fd311864bf3a9784e249c206ee74f",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.png": [
@@ -331436,7 +331479,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html": [
-   "a64f89303e3f29829122108bc9d4dc4eb50fd48f",
+   "ea32289de002db07a89dd216783c0072e79278eb",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.png": [
@@ -331444,7 +331487,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html": [
-   "60b464a62475943a509e567215a0c27561c352e0",
+   "7b35117fcff920f839cbdd132168d37633027145",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.png": [
@@ -331452,7 +331495,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.html4.html": [
-   "3dd7d37eb9f16f0e0768acc3762c7afb7eb278c1",
+   "ef2f39c3bd0d816a9c88c15dc1cc3d513c8c5a58",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.html4.png": [
@@ -331460,191 +331503,191 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html": [
-   "25bab97b05db598b09029c54b814f70677dc4df3",
+   "21621a09316f5b61d35d98c794828983d146a83f",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html": [
-   "f4a47f5d8aa3b49da003920e2619aeafacbe4c34",
+   "652603eaa4b5fd2fad34a7dfa1041f5e6013f3a1",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html": [
-   "490c66f362e06a8666a39bbcc519ba5370d2849a",
+   "f1dcf84e358eb81aa02237cb5b59480ef3f7205a",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html": [
-   "a3ab91c16a829c4460a94025d9dd7f2bf8137f7c",
+   "ee323400db183f9c3954a8da27c6a0c583adbee6",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html": [
-   "a437cd99cc71e9097481b4c99db4ab5d22e989cf",
+   "3d001a99ea328a421f7859e489d584ec3a9dedf6",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html": [
-   "5f71de33098b1164842d5dc581f694de4eb5b919",
+   "1979adfe674382262038e4664343709485112d9a",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html": [
-   "36c9fd1a6e48baa6e2b14f32464a055afbaa4b46",
+   "5799569035fedff2a1b1a2662b7948482d33c08c",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html": [
-   "049ad397e001c04328960a568b31539334c8eb7b",
+   "55ac79fefadee6af7101f3e93ce22ec3b4d52ce5",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html": [
-   "7a2534ceb29be8bc6ef26197c0398cb76bab9afa",
+   "f0182f4e9777689b8a2235300e25deb88cd6c7b6",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html": [
-   "ca5a591ef6410edbf88efb2b40e746f0148a7b63",
+   "2be16082d87d976875350083fcfd7bc5b32646c3",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html": [
-   "e34ddfdf9afb1c5f681cf77b5d967c99fc853951",
+   "046d6f74785a39f3e73559377354bd8c8930c397",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html": [
-   "682da31d2db6ed930e4cae8eeeaa1340a86dd60f",
+   "c9f5d4546208fd92dd90c45af50cbd1e72cdcbcd",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html": [
-   "75a11dc199f0ef725b15b405623b599bbe2bb0ee",
+   "3c21f531610114833279da8f8860dafee60174da",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html": [
-   "778fa479ce902ab90c96309fe94ca9242fdfe906",
+   "10371d6dfd4ccc96edf051827ad0893bcbd5ec9b",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html": [
-   "14c83a569129f4dfaefa2a496c5bc61f52e41dfc",
+   "bcda228fcbe866e83e662ba523592550fbc82acd",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html": [
-   "9647877b2a0e57f16698c7e436b55dbd8f4c71b3",
+   "9797b7899ded4938643b11dd5dd917c35a46981d",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html": [
-   "36a9489e16b1c5a75482e3d6a4524c504b59ecdb",
+   "28672a73b92dc62243469bb5c9912bfa900a3510",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html": [
-   "5a1758fc5f5c6482ac9677e5beb290b6dbc16bb8",
+   "fd804461b482d51ca6c3fd9a6049286bcb45cc55",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html": [
-   "f1ada9f190fd2b2fb7f0faec1a6410f94bc9883f",
+   "08927a74229abce463c6b42534d498f6db212af3",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html": [
-   "36e312d63bf4161ca2dceed907ac2de8c455359b",
+   "9a9cb2c05ee1c0bd4b4adecdbc0399461033e330",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html": [
-   "19abea32af77ea3c45b492cb9adf928a1b75ee36",
+   "ff0bcfc7efb313d7fea3f86986fbdb961b8e9e06",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html": [
-   "c600b983113783ddc36c3f71bd3be7e998176405",
+   "3f178fc4a7ed493b8bd365e0c3755a08dae957b8",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html": [
-   "cee88055e4e70a7073cf2de94f90faee6b3dcd2e",
+   "63083355952957aba64d1acae710a7ac776c483b",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html": [
-   "e835d2da0617ada11096e26eeff94e36a8793d4b",
+   "9aa9f027f9298a1db1d5bbcd2863a72931e7434c",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html": [
-   "3acee1f3917dd2478e1626b773775b526bcb23d8",
+   "7d36e4ef23164ff15d3832ab68894df2db75b13c",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html": [
-   "c2c34f52461e6843490bc407c810ca4ff7884922",
+   "4537d8f1ce6dd348fc4c9e0192623c8d5ba5a006",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html": [
-   "616639a1ec57b5d4efea92c8c1846d745f243bf0",
+   "0e2b44bae775c90f6d0d80613f8ad8f4ed997b03",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html": [
-   "aaa2a8dc0d3ef2a6d0fab2ddda15c194454cee5c",
+   "42b02d8b96bca23f757839901d7b8130347bf3a6",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html": [
-   "0e3f8514847bdd99af6dd1d9adff7cb3de0c0f05",
+   "7e81dad8eb5ec30c5ad1950dacc7df3863c74b53",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html": [
-   "6343ab12525cae5660a5ecb52c7bc124a6dfb047",
+   "979201474bd3681bd9ae588a8c590809e5f57d4f",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html": [
-   "dbddb0f5593ab614e98a52338cd2db7146d0d477",
+   "20cf579983120506e98a8d3651c0d6025bae4601",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html": [
-   "8a9643f887a769dda9748d49bd3c206e33434e0b",
+   "7d7f1e77dbbebccbc4326067fc7ff8654dbe0965",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html": [
-   "698a6cb9abc1062728f8eed7a25a167bdd6431e6",
+   "450cafb4c86871bd3b0e931b49da8ce56a4c967f",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html": [
-   "45dcfca0c5537dfaf242d9ddd0cbb9b67d0793a4",
+   "6a004312aafa5b4a6c8bfc6dda5e9bf0994c9249",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html": [
-   "a3016b2a11fb99ec9977a9109758be94348779b0",
+   "9b154b0f1bc29c86441ef7d6cf186940450d1de0",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html": [
-   "1d56151b6de3ba2b45ae341e8c6380f0b7847278",
+   "993129e68c82dfa8dfc778e1dc071f4560cc144f",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html": [
-   "e2619ffa8f92c433eb86102e666feb22a815c0d9",
+   "324f4a826592d7513a256735398ce2f331483170",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html": [
-   "f515ff32e05c937a23dae14e58485e7ed6cdee14",
+   "0648cec5372511021074d7b93525eb4a009b7ddd",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html": [
-   "66fb8e13d28e82b49dbf068aae8747c8ba4348f5",
+   "0b0be9d023e83e357a6a9187370e845ee38f4e5d",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html": [
-   "7f9457c8220a615910df8c164864161834ecfcb7",
+   "3f0d0d0b31a9435c656e64179ecb5127818783c8",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html": [
-   "2530569c28d8d3424bf4ed14f275d038d2b9c7ec",
+   "dbdbc05f92fb42a85647d395ffbd7d700108be99",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html": [
-   "1dc343ad188024e02d7d49c5fe19a227fb62e444",
+   "f0b27827f209fffc5776eb7a7e3b81e9d6fb5f65",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html": [
-   "5f5bb7941ae4d4496f11664fececd2e54b0f5a6a",
+   "7ff358763460ea2806fcf788006356b2ce6b8035",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html": [
-   "67ed7f2a226d9d5db6eed53f23c9935e7bb12139",
+   "f44a302a0ab66b30db4054a1b6554370dd005f2b",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html": [
-   "aea9725a2dc8a80117451d1f12ed2e8cb13e94e8",
+   "e3c580c8299da56e6ecfbb436a7e85f9f779dbeb",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html": [
-   "a149ed343a3894f13ed2334344159d252ea9ba41",
+   "c045e2df1dd5b7f6ad227aded461373ba0e6e257",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html": [
-   "807a4961b532874cec669278cdcbb0af05e0c72b",
+   "cb71a4fe512d57e1cc6d7e7b48bad35f8cd1ba6b",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.png": [
@@ -331652,7 +331695,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html": [
-   "46b3b6daa05ea8235c5081f4fee8e2406a6d3933",
+   "84daeea409848e2f2381afb391a564cc3da4daac",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.png": [
@@ -331660,7 +331703,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html": [
-   "75dbe19c6945489c808f6572034ba4455e4495cd",
+   "ae691f9da1bb1ced4dc393b66f0874c33581d418",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.png": [
@@ -331668,7 +331711,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html": [
-   "4888816b66df2f9a088a969e18d98adcbba9d28f",
+   "fda5bf29226099412bec503615fecefc8205c260",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.png": [
@@ -331676,7 +331719,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html": [
-   "3f7a94433cfd5ceeeaeab32b7dee008ad58e50ea",
+   "93f14e4cdf4a5264b9be906c2a4b706f4236aa8e",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.png": [
@@ -331684,7 +331727,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html": [
-   "0d2833cebc1a9a097114a42efe2d76dbfaf90ab8",
+   "64053c895db52480050eb3219b88dd86771094a4",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.png": [
@@ -331692,7 +331735,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html": [
-   "85fc99280f83fc88ebfbdd46e92975d134cf7dbc",
+   "9a54bb7e5101fafe02b0cfe789a37f79f53d5257",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.png": [
@@ -331700,7 +331743,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html": [
-   "295e72b0d2bb2e00049207be5296e586b60f4ebc",
+   "6fc7f21273998e5b072a3f2845210a7c551a4a45",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.png": [
@@ -331708,7 +331751,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html": [
-   "0ec2ea0a18eed7a9c1904d209bb363fcd4534681",
+   "61762f6d7920a89cc95c37893fd7a18ba52c271a",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.png": [
@@ -331716,7 +331759,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html": [
-   "fe352015737c5e80777a7e8b2c4532f57abb01cc",
+   "f171be56c52fc9203ace23010bfa78d41ac73c09",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.png": [
@@ -331724,7 +331767,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html": [
-   "d8856813d9d29b1a0ed91b81755f432a6da8749f",
+   "d05a09e56dd61e843a426454de268fd19221f0b2",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.png": [
@@ -331732,7 +331775,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html": [
-   "98dd9bf877efd281579efec4dc26dfae767b7122",
+   "2018a2bd6b67dd4a359b2ac90dae5db6a98296b2",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.png": [
@@ -331740,7 +331783,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html": [
-   "5cadec16cc0e7dab83a466bcacf5a6fc37087280",
+   "c2f2321a6470e8c7141dd1342f50b3b65c25eb43",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.png": [
@@ -331748,7 +331791,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html": [
-   "63f8c9ea9f9b3957b48b35507e18e98e94344ef9",
+   "0f0bd985c9a14c9cd88fa340b23bf6a5c99ecd3e",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.png": [
@@ -331756,7 +331799,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html": [
-   "0d08a4921ff039c7dab6848f52b70987acf0545e",
+   "ab7e0c00dbc17d78bb664fd2f97d8152b1c61e79",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.png": [
@@ -331764,7 +331807,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html": [
-   "2a9db38ed5c410ec1894bc8fb75eeba810e98431",
+   "c4b0fafc48bb43d6f8c47f4ed8955756dd6f5c83",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.png": [
@@ -331772,7 +331815,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html": [
-   "81bf257cd8bba1c98ee59971871d18ed022e2f2e",
+   "a0bab0ec4b7d2d31fdaaf135aa5c46f97d3363de",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.png": [
@@ -331780,7 +331823,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html": [
-   "82d450c01c20aec9575c8594e4dcd5026105eeec",
+   "1ee9a6e338e04d821867866ff18f608ab2ce48de",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.png": [
@@ -331788,7 +331831,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html": [
-   "c49620f03491821c2af27785ecf4a516160b2b22",
+   "a9a8ed135c485ac042b71df0c0342307f83a9c3d",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.png": [
@@ -331796,7 +331839,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html": [
-   "3a7e3d97ef957fd0b1f5252b9a77610ae2880a3d",
+   "7da174104c5e9b0226120c472e468f24370e0176",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.png": [
@@ -331804,11 +331847,11 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.system.html": [
-   "9bb43c6237ed499b1492b7b670be19d45ac64531",
+   "9846fe7fc96763e4657dbc6a29b12b54da3c2539",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html": [
-   "36cc80437104bed007ad86a4582c8e71a5e6b0ec",
+   "f747c912ed0ac8c8c726d52aad05eedb089b6f1e",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.png": [
@@ -331816,7 +331859,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html": [
-   "66e2825983846b4fc5ab1ef1ff523b942ce83a72",
+   "e61d4fa329b9146ea26579a66b771caac4874b9e",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.png": [
@@ -331824,11 +331867,11 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.empty.html": [
-   "e087f53c348428935bdefa420a972fcdc3ba36d5",
+   "723865a8647de19dee02198bea67e16b31661ba7",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html": [
-   "7bf486da4f366838b82f51be44dbb31dbb1163b0",
+   "16fdddb78e387076f12bd2738396ec58ba1a8235",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.alpha.png": [
@@ -331836,7 +331879,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colour.html": [
-   "a5fd632b50f046d4d8298bbd617561c698f46ff6",
+   "9241b6b2ce06b5f2be22be98b2a61fb19e55913a",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colour.png": [
@@ -331844,7 +331887,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html": [
-   "ad18881da38b61033554cfae27bce15ded2a53ea",
+   "b0dfb3c30f74836af6d7ab15a6e015080b141364",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.png": [
@@ -331852,7 +331895,7 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html": [
-   "b6b8de135942c12b70f5780091ca84e115e2d20a",
+   "1dcc5f4d80cdb981fb233c9f1e91650036308330",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.multiple.png": [
@@ -331860,11 +331903,11 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.outside.html": [
-   "7577c95e34d3b7401f9d41210a437ef15b0304ec",
+   "a581b7fc3ae2f17d02fd886a33ce9dc5ee320b1d",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html": [
-   "ad2152f12d1e93599ad1ac047b6af9d07ccf82fb",
+   "9bbe10cfbef5a00ace67ba3e3cf60c90313e8a88",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.overlap.png": [
@@ -331872,15 +331915,15 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html": [
-   "7f99c1f32c44a0915ef5044d84697614036e8791",
+   "c415f0b4e5a8aa8e53b4eecef7038f6f2197259e",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.solid.html": [
-   "46e53d3264adf169b21f61f45d207940b0d4197e",
+   "2b23d7e19ab87d69c68607cb78cf22caceaa73e8",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html": [
-   "a4c3453cf562a62a55811c993dfa6bb0a8886359",
+   "8b2834bb70c6addad93c3139d2228828daef633d",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.vertical.png": [
@@ -331888,55 +331931,55 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html": [
-   "92777bfef988c3a6d6c894ced7d1620fb5d03447",
+   "8f172ca9f811b51db532aac5267af1fc94594804",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html": [
-   "98efeda7c63972a3af14d8a301f5b5e09ee5c257",
+   "f22a70631bd4c89c120efb3acf28ca814f5f70a7",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillText.html": [
-   "93397b976c5a8a5c72554c4b31d74ebb637381d5",
+   "f1668a1c36e79a60c70ab3f9ba86d935e7ff8a86",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html": [
-   "69e2de6f40b97e011a967e2e5b00bf120a44d1b3",
+   "eea587907bcdc1de3d2ee6691452e1bab1432c6f",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html": [
-   "7eff74d80b380fa531e71fad6589ee666123a81f",
+   "bb7856750ed2d10d1da7a07515090f75377a60c3",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeText.html": [
-   "d384cc01d99b76b2d855e04709c5f23840f3ad78",
+   "f55bf2cac66498379ea4ca20894196bcf4632eae",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.linear.nonfinite.html": [
-   "b60b304385e30b3de17b46dc018ca2f38a71ae07",
+   "546859be21f0bc02631404ec9541ad333ec6bb18",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.1.html": [
-   "3a4d24a3980597135ca29eb0b7479a2bf30bc1f2",
+   "f021d8fcf6faf0627799e459dff3442ef440dfee",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.2.html": [
-   "56957a0a295940c103c205de11f691021ce9ecd1",
+   "fad65d9f4aad7b81fec8c750c957a65bb6d993a7",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.3.html": [
-   "6cc2ead2f5bd5e24945a43052b9c69b1157e118b",
+   "b37fee0c0ec000209f8929abe32fd3a0d90ed001",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.object.compare.html": [
-   "67089a073d6d829cc0e07f0c6b3effdf5a819122",
+   "aef832e17c29625fbc9fdbc78c47e6e5852c6a8d",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html": [
-   "95144c6afdd6651d5ea34d3ad0ba5ea472f1cd06",
+   "a97f83e0b5bb0cae565432de077dd8227bac92ca",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.object.current.html": [
-   "35709cbd1da53b8a67e728df64186759063c0ae8",
+   "0859b95da996a1373a5037a5903cd29a0ca864d9",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.object.current.png": [
@@ -331944,143 +331987,143 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.object.invalidcolour.html": [
-   "7ea349e74bc8075ef3841cac1611b5adf941115a",
+   "73c2bc05d5407eeb907836ea0be3b33293024f98",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.object.invalidoffset.html": [
-   "2dce28b666d89067e9c3db96128bfb650ffd3438",
+   "a165c55c3abb3247f920118d0e5d35458a9efb5f",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.object.return.html": [
-   "bcb4dc7af46744710c071047f8aaaccc9fd19617",
+   "04788defa891bf999f865bda6e0b9741c595b405",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.object.type.html": [
-   "27c91312c6a8f5e0b8b6bcb9c53a6ac53c3321da",
+   "accf1fa1a6ff933f11b4fec0f8f374619f174e27",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.object.update.html": [
-   "8151c42f95442878351788c3d0104621f9e8e069",
+   "366aa44a4e820a52b83e8f952f3d1947ebd36809",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html": [
-   "5bf367ea09fa42b3499405c4b134e5b32729b0fe",
+   "dda2daf90da0aad0c8bca4d3d7fb90dfd47edead",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html": [
-   "6c7dbaa2ab5de872222193ce5cb3d381ced912f8",
+   "d649eb4b3db3363ca6acbb91a9fd3cb61c744ffc",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html": [
-   "362d232935cd1997dd82799bfe69a64b61a3cbec",
+   "bfd370410bbce3a263938ce6a5087f375e8f4db8",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html": [
-   "a2f189d83f946ef6cee13c96486e97ae1e08e54d",
+   "86338087063dbd38bcdac0b2fd1dff88465d5f89",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.front.html": [
-   "3ed6190b24c048f92b1e796392138c85eda97a90",
+   "384008e8159aa0f9ddeb3cda93fd0f142703a00b",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html": [
-   "992c068055cd0fbd0418f4df1d5cf06644146653",
+   "7fa30eb7edf511c127e939248b179de935e4837e",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html": [
-   "cf9bd6d42909cec593292872245108d489a21078",
+   "01bc61e8c65ea71ca4ec055dcbd957aef8ef159e",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.top.html": [
-   "fa60a0cfc14ae161e5bb85f1167a44eaf5822ceb",
+   "cebcb495518ccee1f31bb64ce2aba257071c4904",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.radial.equal.html": [
-   "f96b9761cf23dc45fead4f1fca68130a11304375",
+   "67ef9e2705e00ee1b8d4ac3e2fa5e0c52245fa9c",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside1.html": [
-   "ab656ce2785b87937e43e477e047bda3857bd6a5",
+   "90689668803247af5e419f473996f05d18a2bd89",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside2.html": [
-   "30f4c49b835a04e3098b8a53dc0a78d222475ed1",
+   "59a10d2409f4a2d6325fcbce1d44a1163ac9622c",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside3.html": [
-   "56c12a5b8e3cf6739a9b05f0ade926f02d8722fe",
+   "4b2d9ac44d35287897eb5f5a91a6db15289d8a14",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.radial.negative.html": [
-   "29242165fd940953481e5e7936507b48447ce120",
+   "d02876d42c3c0ff52b284fa15fbad81e250862d8",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.radial.nonfinite.html": [
-   "e12d5142a255383dfc8a6085975198e04acab625",
+   "08f60db93a2af09c1f89348c1f701cc81a2e5068",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside1.html": [
-   "e2c68d66bd02c7f549dc9bfe1c14ee4fc08dfa80",
+   "901b5dc1b270ad170c361a9e0526714e05dd91c6",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside2.html": [
-   "254db4574b138c4ed8059f32d292dde47dcd4ec4",
+   "333c5c0dce40f52a22420f5a8c9939255eb6a509",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside3.html": [
-   "4324bc717ba01f4510ad14ff0018d80c3285527e",
+   "f6428f50e797b8a38e9f3ffe68fd22caed589c9c",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch1.html": [
-   "5e42c4094ac34bda8bb0067632f28c3777d8c343",
+   "e238d173a066d5e210ee745398e73f91dbe0448d",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch2.html": [
-   "37dfd5ea896c0a8e347aafe7c9a740d51f2ebf07",
+   "d99bc29fb9d6785df582718e5e245ef51268ce44",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch3.html": [
-   "e401d19b4f6b78c1f674b3df2d221c8228a781da",
+   "5fa7244003380c8f2702b8427f68f26bf8732109",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.1.html": [
-   "92355825e518191ba090c1d0190c9f5b363819e9",
+   "ba97b8b431357f0eb7053a3342c23d6e0b73885d",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.2.html": [
-   "ce7841f3b0e67a0d42b6593cad0475a9f31a9af1",
+   "c11bcd7d69da7618d8efeecae822cb732fff61e5",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.3.html": [
-   "ee9e6303bc14571a447e46bf6d1ab694d37da76b",
+   "5bc8b3aa8b52c49977e76f7c083dbb25184bb74e",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.animated.gif.html": [
-   "864ef98409f444772c7e9ba7cdac2f7d2a7533d5",
+   "b67329ccd1f150609703d3ea41f45c5cb251a81d",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.basic.canvas.html": [
-   "3bdc679c5f01c91eab359bfea77fb6bfffbc4774",
+   "8e689249852381edf7e06a5ee67e2b7a1427ebe0",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.basic.image.html": [
-   "9ae64e4f5b935487b4ce7c1e085a903f106dec2a",
+   "dc4ac036df2e67540ebfcd7d2f04426cee2d9c18",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.basic.nocontext.html": [
-   "a24958702b1f6b762c2564199291f95faca6f437",
+   "2bf67bba8e692c1d01af5269aa074a43bacb441d",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.basic.type.html": [
-   "07ca3992370a145868a6c6bc862653a92290122f",
+   "4ba42e257240162f04df6cf358b8c1cd4b4a5975",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.html": [
-   "aa393b8f7a31113a9144332d5351032a6bbe8f35",
+   "04615b78988e264e5b49a94fe9109ed5ddc1a32b",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.crosscanvas.html": [
-   "dc80720bb7c63e413c3653e3ba17691f465cf3d8",
+   "979f0becc91b5dd6581f5734c91c509d6955fcb9",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.image.broken-expected.txt": [
@@ -332088,159 +332131,159 @@
    "support"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.image.broken.html": [
-   "31c8e8f2ab05b0014351c592bf3a70df3de563f0",
+   "7040de466e4734690d5899c1e12ade2aa76bb1a6",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.emptysrc.html": [
-   "23f453ac1deae14dcdd5eaa2c86beaf7c19e0d08",
+   "f969834e99844ae96fae1ecd8eb95f058d181b3d",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.immediate.html": [
-   "176cf722ae94cfdebfbfbafba6addedda2ec3d93",
+   "fcafe68ef5a836cc08bc3d9466f5c53b2341c421",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.nosrc.html": [
-   "88b8801b2852076580676930baf69bcee35f44cc",
+   "e71c6b08c16e306a78dd779d74a6ad0cfbf18172",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.reload.html": [
-   "095055c21e0e4b214e128a377b8b9af75de7ed80",
+   "994586af71cba08e2ad0a4709a04e7b3f72578ba",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.removedsrc.html": [
-   "514f0609c9d13f2654b8bbd857f4eaf436c30ac6",
+   "b4fa6b82fc3f7ac20de48985898f78e48315a5ba",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.image.null.html": [
-   "5b8c688175c834e3e34ffa5a944f8c1c10d37e30",
+   "0df01543779b1e68ed3a169a1ec9b7c99a335135",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.image.string.html": [
-   "834d9218752ede2396cd5495d0056a6f2835e021",
+   "896df5038982aad7547d3dac19b2f28bee9bd7b3",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.image.undefined.html": [
-   "24f650d9707a0aa30c17df77d71dbbc9d776aac0",
+   "04a13779ad56f8a0476f22103d3c9a19293543cf",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.modify.canvas1.html": [
-   "f60da5bac058cbf0236d55a72813df501e8d1d8f",
+   "a9aa9d75e74ba52455f0b2f77489ea3578146c4d",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.modify.canvas2.html": [
-   "db7a8b8423e185c0e59448c382e8b67e5d471ca5",
+   "053d9c480f9a3d637b0ac9db65daca0ebae50704",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.modify.image1.html": [
-   "cfc8a965dfce576e060ec92e4c7453a56488a5d1",
+   "081ccba26d3146addc42a398a67b52c35cb55c87",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.modify.image2.html": [
-   "c7f2ee3bff102cb51dc53cfaa177a4e5d4abbd07",
+   "f70e5647339498ad7839cfd49c64a5b2a336ac67",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html": [
-   "431437e5bf19ab9899a42851a5f240251bec9bba",
+   "e2d9c2761e9a03c15616445e76113848845915ec",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html": [
-   "a560fd8dcad8aadbbfc38e9c415f4d723e43766b",
+   "310c85a5e7b47c2c94e78c9213b75da316458465",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html": [
-   "9ae289872387412f5c53fd06409ef30a1d91ae67",
+   "2529ee02b830d244b4889f371fcf91e9af9de05b",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html": [
-   "9c1b5ae6dceb3d758fad18ecf29bd45bd783b7df",
+   "88e370d4556e705745620dbbde141771f0488430",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html": [
-   "3dce7a6862570c33ec733d058ffaf6a6daf82f81",
+   "cfe7082b8ade53175ec64373347f855bfe3c59c6",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html": [
-   "70966e00aa6b32e7a13b074460d74ffb49b6f6d9",
+   "6a81215bf292d539b3e5d598043d95bd9efa6445",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html": [
-   "7d109c55a284a84427af289dcca781ef440fbed3",
+   "a957934afcba89d981bb287b6e8cd0c10229e9c3",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html": [
-   "501fe67e48e605f025a4de2fcfe0d68d579e8558",
+   "c53b47303cf2ad7a3cf244761276ea3670e23b5c",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html": [
-   "4aa75d1557972b71cfad5927d5212a1ef7a9a899",
+   "aed9e2d0fb7078adf4b4d185fcae367d4f80b662",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html": [
-   "0fe8b6a5605c9c5717bb2612f4045b54730ae9e0",
+   "0318bb0a8879ec1337c3e3e576918649640420d4",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html": [
-   "b361c91f233f575d724508f685916a345ac77258",
+   "d765a254c1a14af397da8f45904e7b54b63529f8",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html": [
-   "68d2fe84ee0b2b2cd39d1c71a56490fb7a225195",
+   "09aa8960f63af3baf7c3e054f5202bb30fbe6dce",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html": [
-   "3cec292a4d67ab1c870b9f9b904dd711d2f37bc2",
+   "429f96e34f99fc90eb0c00036ef81916364d0de2",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html": [
-   "1e864a729aefff0726fc9fae9a972f0a2fbb8aed",
+   "4dd93fc16146be3fefc0fafbd484c24566f92d99",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html": [
-   "074c4afa446421cf0b69134e04f9ee7560dc90ec",
+   "da506cf45b2296e7432a9a00f239d1b976cbaaf6",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html": [
-   "0da99d28df1996252c64f2081a9a84dbe12cc824",
+   "26c404c31efe85a3c495d6b0eafc5f8cb6691bc0",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html": [
-   "2f42a4e2ddced79f9626335a8fd04849eeda46b4",
+   "09af744de61d31073c21e74cfbc0a998aa436e9f",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html": [
-   "9ec618a9dc116cc601565e6e0c8f8d939dc3951b",
+   "3df2e50e1dd13b093d9f411ce461060dd1d0a41f",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.repeat.case.html": [
-   "5a4bf344b83d5abb53236231f40a3d4ba771666c",
+   "c7383cca9982324e1a4d386bd71d74758efcc709",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.repeat.empty.html": [
-   "a7190872130f0fd077c46533845a96700f73a146",
+   "1e85a52993676bbf4b551e44cf77c35698adf1d4",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.repeat.null.html": [
-   "25caf6c2eb7df4ef366f7b26660c28199f02b64b",
+   "2ddbcca875596cc2c99543a6765f5c11eeac5413",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.html": [
-   "3713042047114f53cf8717dc8a39dd174a424cd8",
+   "0b92f58007eaa12c4c9c09e604c501d01bdaf2fb",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.repeat.undefined.html": [
-   "74cd84b333b7e0b42fe4da81f6d528c868298198",
+   "c04697ad6cd698c400f4cf548562ef7743b71918",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.html": [
-   "ff4d50a73372585c5b8e271fc5bdc19dea9500ca",
+   "1497870ed5d6d7ca32d31dd13876d2973a19a147",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.html": [
-   "57df03be6db9f6693e1d2f0bacf4d158159bef14",
+   "9b53e46cf2df312952705ae2397c73f97eee24e5",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/2d.strokeStyle.default.html": [
-   "6e07d60860150839f1fb3a54838cb1eec790d03c",
+   "13adceb440654de80b63edaf00e07c4f82c0da48",
    "testharness"
   ],
   "2dcontext/fill-and-stroke-styles/canvas_colorsandstyles_createlineargradient_001.htm": [
@@ -332272,35 +332315,35 @@
    "testharness"
   ],
   "2dcontext/imagebitmap/common.sub.js": [
-   "633c182b82b68da17a0b60cca36330ad2d27a396",
+   "aa1e382a2088fee541a1020a03a4299a3b18d6cd",
    "support"
   ],
   "2dcontext/imagebitmap/createImageBitmap-blob-invalidtype.html": [
-   "9b9669f186dc546036ff9f03aa0cc34316488d21",
+   "498c42725fbff9c5ea01d0064f4aa0579bbc2456",
    "testharness"
   ],
   "2dcontext/imagebitmap/createImageBitmap-bounds.html": [
-   "544bd77b8852a2495595c52a0628d0830214d582",
+   "79f89ac34da6b3ab1d6ba35f2d7dc345d47a2bd8",
    "testharness"
   ],
   "2dcontext/imagebitmap/createImageBitmap-drawImage-closed.html": [
-   "ea65355e58e545481c48cf540f8f090abad5cdf3",
+   "e320c6763feaf3b97b5c8627a7bfcb9079fa517a",
    "testharness"
   ],
   "2dcontext/imagebitmap/createImageBitmap-drawImage.html": [
-   "9146a3704bae56c4a298c271436b734ff299aa6a",
+   "89d9b61fac0f1e9adeea72c5d0ab79801d26e0bc",
    "testharness"
   ],
   "2dcontext/imagebitmap/createImageBitmap-flipY.html": [
-   "0112ac73c8db9b0fa24aadfca8ca1ae71bd2dfc3",
+   "bbc920f1e303ff45e22c4396d098decafffac87b",
    "testharness"
   ],
   "2dcontext/imagebitmap/createImageBitmap-invalid-args.html": [
-   "c64371eaa8c7940a78ff064b5cffac575607d230",
+   "c200ce36f98658ef0dae6f654f892105a7e7aca1",
    "testharness"
   ],
   "2dcontext/imagebitmap/createImageBitmap-origin.sub.html": [
-   "9f19f6ae66b58f93c23ba8aeb095838d9a6cc5c9",
+   "0d903b14b46e94ab9614fa91eb33f536a6bd79ae",
    "testharness"
   ],
   "2dcontext/imagebitmap/createImageBitmap-serializable.html": [
@@ -332312,7 +332355,7 @@
    "testharness"
   ],
   "2dcontext/imagebitmap/createImageBitmap-transfer.html": [
-   "030263472a36c76f7ce15256187a658ed6b77cf7",
+   "580ec8a5ed04d674d5eae4a8f5b74c46e1bae2b2",
    "testharness"
   ],
   "2dcontext/imagebitmap/no-coop-coep.https.window-expected.txt": [
@@ -332344,127 +332387,127 @@
    "support"
   ],
   "2dcontext/line-styles/2d.line.cap.butt.html": [
-   "353676233a210ef3d73e489abc925ee444e21b7d",
+   "f293335331c10d19af7b00cfbf4610a0da00a7ad",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.cap.closed.html": [
-   "f8e233a41013d52932ee9288ce8123f838db3ca8",
+   "131a968b6d6f8a2558b0f52038019d425f9448d3",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.cap.invalid.html": [
-   "1db32a9d6d334b72195c5a687679f443fea0e2b4",
+   "d6b43f1c0e1256d50ca17624b7924c5d35d66805",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.cap.open.html": [
-   "499773085b7146ad07f53b14b85bcbcfd025f032",
+   "30affa082b416330b60e8b4b61da123df5f11db9",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.cap.round.html": [
-   "675d11ce2c99f4e498df9bb74070e3770b30eb61",
+   "55a2bf3dff74ebe82a4397f4843db046e0fadcd3",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.cap.square.html": [
-   "ea1e4d949773f0ba5e91ac7594a5aec54e7b78d8",
+   "03025e3efe051856ee969664f6628b1c912b0938",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.cap.valid.html": [
-   "6ac119d4a25bee2baf5eac64f548b4278ccab03b",
+   "fdde2be2efe64b126980f8064b3f5d58caa41805",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.cross.html": [
-   "61b2125c4014739b1f4d44a3170a203db58329d0",
+   "ffd83b02682b222d3b5140252791542198c55c25",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.defaults.html": [
-   "8b680785d9d0d38b1d9483fe4d008e2eb1ec41fe",
+   "d19934a00bbeb24b8c95a6d517387178806cbf39",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.join.bevel.html": [
-   "72c0186e1dd0953d7df54eff8ed5c29ad70ee82d",
+   "dc7053063aed9f113e2b5a1853f25f8180406f0a",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.join.closed.html": [
-   "1f2bf5cb75d9ac0b289669336b39a3fa9fa19ccb",
+   "bc41a6171a24e27c988c34a119f9a004065d5319",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.join.invalid.html": [
-   "9d54d90b19f914a41587ef92a0a04bf5fc928718",
+   "ceec5f2178202ab762ba80bc39a9dd3cba19daad",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.join.miter.html": [
-   "8a6d4a60ebfbea435b51173e5b538a34a2459d0f",
+   "b2478ea54a23d3f52956bafed984ff3bb02ca20c",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.join.open.html": [
-   "a72291bc3972cc7e775e28e6d857948c2aecbf6a",
+   "0ab297f06f5d84571e915054c4789e6be1dad194",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.join.parallel.html": [
-   "2a8956d7e9f9ea2708a79d2e435742237cae79fa",
+   "8831c938b4d5f2bad404911273347fe54a0628ed",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.join.round.html": [
-   "4a827adcec943015b3db96ecb7ee5d4079c3f78e",
+   "169d6b11b6a8d7736b31d7994eb8fa6d7711adac",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.join.valid.html": [
-   "98fec4cb7bca93cec2112ad660030c78c3b64e95",
+   "04560ef9bc5d3df6113312d63226be63f70da615",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.miter.acute.html": [
-   "f11a32164bdaef6661184b6cdcf7c8ba896bfc01",
+   "d873060af099e85ed58aea075619e8704385a31a",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.miter.exceeded.html": [
-   "1cbcd3cad363d865a7f3038520b4f53230774800",
+   "41e5221a51e1c3e957c2e5dc5ad61c6adf4b3be2",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.miter.invalid.html": [
-   "4f7fd69bcd63bc27d54af96b17fab4ec8214e630",
+   "73574a980932a7be766b163111b60bb6f9757cf8",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.miter.lineedge.html": [
-   "54c2ce53938ccc43a9dbe95b25d1be6064b95a64",
+   "827e3f11b4e3982037892ab925487c72fb24a4fa",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.miter.obtuse.html": [
-   "40ebdd1f8d4557405ab1e4802110a00812c69eac",
+   "7f369057de9b876a0c5cb0fa7597ae3f47bad8f1",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.miter.rightangle.html": [
-   "ebcfb261a5f6cc402459d9743f527436228433de",
+   "07ea96a460323a477a782194bc9a156bb5acf07e",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.miter.valid.html": [
-   "59148aa56568f5d9b1303af9657538e3204fa372",
+   "40157a98b9b8a863a90774265ba42989310098ef",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.miter.within.html": [
-   "5ed57e0cce33a6229bb101cbe4913aea989b588e",
+   "d715e3cb22abbdbc677ba24c96f162edbefba770",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.union.html": [
-   "92fa2f1a2d249ba08e59ddae572c27ae48469a99",
+   "233a77880ec847aeac74cc38d963f43a38aa289d",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.width.basic.html": [
-   "b61baaf24c1a037e482f3d64ee969fdb2ab8c10d",
+   "87cdf6f4dedb23eefe6d61c581131dea55a1cb3f",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.width.invalid.html": [
-   "d5cd3ab0af16c0c289d28a98786f72cf30f6c4bf",
+   "17d33f7be9f9bd2eb19dd262d4bf6d15c11e5a89",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.width.scaledefault.html": [
-   "154d7b58261af895d29c7113cc910aeebe31f514",
+   "4249039837a004d60ca77753d187a2875a5ddccd",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.width.transformed.html": [
-   "903321f44cd394ebf9b1a8d3a26bae84b473e4b1",
+   "c9406096b0e351482c79c55977917b0a72da709c",
    "testharness"
   ],
   "2dcontext/line-styles/2d.line.width.valid.html": [
-   "c89fa56a653cb6c815dd7a42847576ad4dc3e8e4",
+   "c390d3d455e02396fe5bd53017f8931f0b0adbb1",
    "testharness"
   ],
   "2dcontext/line-styles/canvas_linestyles_linecap_001-ref.htm": [
@@ -332484,267 +332527,267 @@
    "support"
   ],
   "2dcontext/line-styles/setLineDash.html": [
-   "06fcada768f9513c42931e8fc7b4a890cd1b53fb",
+   "79d3672fd0ed09f8cbc85b18b250a8e7dbee07be",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.angle.1.html": [
-   "06ac1665d40b7b182621ee8c8e771febe50632e5",
+   "18409a62420d9ba9ec5a109d1c98a78c72a93b62",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.angle.2.html": [
-   "328756cceabdcb73287fee15f372d9040df14a0e",
+   "cb34c310fe64661f0d5935d8d9135fac284fed75",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.angle.3.html": [
-   "a0696d625fde37cba754b9edce9e9c438d134fcb",
+   "e60620ddd6b839b414ab1ba8ce4e6a87a4ec8fa5",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.angle.4.html": [
-   "bad839d80042fbf4602bb9ce92baeb7d6b5c505b",
+   "fa65dedfe9cd22cd7581936a4fee642c6c8db283",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.angle.5.html": [
-   "5a0534452573e1ac403dac15ed1b196bffe71a9b",
+   "a98acd9ad0eec61ea86b868f25cc4f938febad6c",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.angle.6.html": [
-   "3b645cb27739a78374d555611f1cac105f7f9879",
+   "a3a9aa07c10b592b91e355815f173dd5e68e3113",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.default.html": [
-   "3ccfd99148d617c48d0518afd9c2eea4674d8c59",
+   "2d9baa26ecea278e862ee55763e5440c0326d770",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.empty.html": [
-   "fa59b66f50fafbcf36679522e1e44f520f5fef35",
+   "f4a5752f358fbf2dc5fa23da1d567e849ea95927",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.end.html": [
-   "13b1188d17a3cddcae3a582d07e87a642123f9d7",
+   "3a797c689daa24f4dcf42ff6fd4ffd6a85ea032b",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.negative.html": [
-   "c82769046beb8b056f9d50a0e03a5e0d39584556",
+   "7aabd464a9bdd18617bc8814bf14d5d00e5bcbd9",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.nonempty.html": [
-   "ffc0b8c0c2a35bf890260c5a3bf29fe734eb8d8f",
+   "57d2046ff77e64ee2638327260da5c74fa741f59",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.nonfinite.html": [
-   "d8cffe4467c3d9df8c277fa715a9b194c21223db",
+   "95a10fffc680a30b38fab60b57541d174a620e8f",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.scale.1.html": [
-   "fcb2b52ae99de4e5f9134d9b119e40d868e7e12f",
+   "3533c56ec6167065edd7c50659bc22d9eca75e58",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.scale.2.html": [
-   "59d182c92f2fcab18138c09796cb6d8ac2b7ca7f",
+   "fdc3add039d84106d97b0e052c9bfef50f6259de",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.selfintersect.1.html": [
-   "e212b49b45a30c40cb8cf694b274eb5ba37038f5",
+   "a642866ef8f12114d1d55ff36bb9b5e0a810ea6b",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.selfintersect.2.html": [
-   "8bc9fea70f4aba5557848aeca275725de9da29d0",
+   "4a66c2c1cf8dfbcab5b4b0d1e85936aa07ed8918",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.shape.1.html": [
-   "dcaac9bb163a2d29f4540f501a9415eaf0420c99",
+   "630c50bf6db3f5dc03260da5dda649b6faf47299",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.shape.2.html": [
-   "dee4b3841da950a3cb2d3ecd9e46ef3a31cc5797",
+   "3acf48bc1647ba6d0c0434e91267eba437917b59",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.shape.3.html": [
-   "0090411faf0f979bc5ff169351d548cf575f8749",
+   "20518e7aac8643f46709cfb8ed8357ab7a17266c",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.shape.4.html": [
-   "dc12ef6c11664dc6ce1cb37840aa4fdf37f4302e",
+   "151c89c9208f40d6a1deeab64d326ffe795f0f40",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.shape.5.html": [
-   "2a84dde748b249be78c516d560d55f32bfe9feff",
+   "d4fc7c199e772974aaf911ca37fabbee8ab51c9c",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.twopie.1.html": [
-   "25fc393aa9d1636431c3bcdcc2167143ac14000f",
+   "dc2c32e3cb8af9dd4df2cba032ee87b27a3a392e",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.twopie.2.html": [
-   "775a87c223a5c000263cab91cf6fd90264b3cbf4",
+   "d3ff2f610860308ceb3cc4c5f990d6f731e223de",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.twopie.3.html": [
-   "19680022f74e67b7e260e209730ecc0c9f111dbb",
+   "59c84bbad4dd046ed037671aa5a552db26b98135",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.twopie.4.html": [
-   "bddf7fb49b259ca68d71114b9e17346199622be9",
+   "eae2e901fd55b8727310750a9e270ef7960fdc3b",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.zero.1.html": [
-   "e18a84919f41a8555c30900acc8703cd7f0432c4",
+   "f540db32a2aa0b81a4392ec5d805129dea847bbc",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.zero.2.html": [
-   "398a74d2aae9dd67a66688685f9b8c31f6efbe4e",
+   "18dd5ce2fbc6f2be2ddb6ea7ac46fb73cef9c68d",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arc.zeroradius.html": [
-   "af1ccf741294525e915e41ac52a1e416900fd1c5",
+   "09a052bdbc5b2ab4bf677dc8e50f77996fc0db70",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arcTo.coincide.1.html": [
-   "936034e38d994cff8175f80141e85e7302ed8198",
+   "7f51e98e12ed796a9cc03fe4e4d2f36b33c3d4b1",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arcTo.coincide.2.html": [
-   "c64fa4c81a24c4ca4287091ee89cc908c9e1e18c",
+   "4926fa1ff40e7bd52cd9b0034f16287e1fd4f463",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arcTo.collinear.1.html": [
-   "196dbc4459da18871a1fbcfae117017a1708064b",
+   "06c0abd2c4df35e4cf44201f9c6cdd646c0b24e9",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arcTo.collinear.2.html": [
-   "75998b308f44312e1cba491b7c9ca075eb95dc0e",
+   "9abc1a164035b769aa672bb456922ac491268383",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arcTo.collinear.3.html": [
-   "8a0e9a8887b1c457fa23624e6eff314500ce6052",
+   "fd7518a7547d2e1f938c00ad5e7f52b83e0294ec",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arcTo.ensuresubpath.1.html": [
-   "cae097116ab5824d55cc6c1e32434eab4ae053e6",
+   "801d4845fa058acadfd9651432f2187859eae0f5",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arcTo.ensuresubpath.2.html": [
-   "4d25a84f4463764524b7afe04cce2b6a61e0f2b4",
+   "1e4c10372b3df73dda3732304c52d13075f3b1b7",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arcTo.negative.html": [
-   "5aa7baa4c227c4ebfed1655dde8a5b7057dc2898",
+   "0fb3f77a43ef6ff29c5ee65a540e350e78ba088a",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arcTo.nonfinite.html": [
-   "354d62186ed66a727e546f1135429427f8d94985",
+   "af31e42f6226192fff9b4fd7d03d29739d6458ac",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arcTo.scale.html": [
-   "0de2336d7c50f5cf5411ff39609999c4636339bd",
+   "b964d56b4264113c3bc1f8cfc7f2aea22fe36c82",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arcTo.shape.curve1.html": [
-   "fa06b5bd1aa2b924f6fbdfad4f120497e634274d",
+   "e6d575c24a76250f044d2f5247eac7972c1303ac",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arcTo.shape.curve2.html": [
-   "ae0722c54dc3d9fd4761b2d2e16b778acbd7fd4c",
+   "31bd3c2d8d8f274fd42cec9b5bb1b116f62d7d5b",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arcTo.shape.end.html": [
-   "44137138b4c9706181d02407ae4d00d91ed0386e",
+   "a2e733f90ff6692bf77e02b2720837c511f1c192",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arcTo.shape.start.html": [
-   "c7677af8dc0e19dad5fdc300bab5cf4e8f6c3652",
+   "e637ee7068d051df4577f5c5092527e51dc52df6",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arcTo.transformation.html": [
-   "351495c38825ac6c20a18fe3c5df29aafe2b625e",
+   "c5be2b8728eb8c10753333ba201111b5ab7a5c72",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arcTo.zero.1.html": [
-   "fa172b5a9a5065dde060b56bb0cb2e522a656f55",
+   "4efea073923d9f8e4608a9e5aa45b829397eb3b8",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.arcTo.zero.2.html": [
-   "ede4480fd31901581279f40e2d4f4ed4addc5af9",
+   "3cf2d52af1c3bc6127e63d082533e8caa22e88bd",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.beginPath.html": [
-   "86c7b0721c25da17c80a22007c282736e352c957",
+   "beee73e5861f242b811f828707cb7e2a45e17169",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.bezierCurveTo.basic.html": [
-   "2628fee4567014f580d7511509efb4893f88977b",
+   "0fc1e812422f80d8f85480245c26778c01cc5aef",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.html": [
-   "37f3c6a9a9da04b7305de7047452def63f801bc8",
+   "608ca2d33ccd815aa22cd6ab0f7a50cf4a77b054",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.html": [
-   "4fd2a0e3c55a2b47e39160a84262c16f8f15ee90",
+   "73b9104ec4ea06024f3c41900bea57d8dfc55590",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.bezierCurveTo.nonfinite.html": [
-   "28639c657f1d2775872683927c15410e4d519ce9",
+   "a321f38784a1a220df724696e40c27446c4b28de",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.bezierCurveTo.scaled.html": [
-   "6546d5d64898c92473000a32e47467c0997f063c",
+   "c043fd16b275bce4bffb19f3307e58b7e972c3d3",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.bezierCurveTo.shape.html": [
-   "26b502a982ed40fad5907bd6d7bb9f85ddcd0bd7",
+   "6f7769a5afa4184601a91a8c40a9501404cd51d5",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.clip.basic.1.html": [
-   "e15a0e3bb6c0a373fee98b2bbd6daebe9fdd4a04",
+   "8393b50e9d44231260d07fc49e6c738baef4b76e",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.clip.basic.2.html": [
-   "65f9eff737e58d3f5730ea9041556b7c3a857783",
+   "14ed8c754b216b8d4fe96ace745e334ee51f025a",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.clip.empty.html": [
-   "9a437b16e4aa0a1eef15e3c4e383ac783d929d38",
+   "274b413216e9b6e13da20c2de55edc3e090a9990",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.clip.intersect.html": [
-   "3ef64feb36589ca525a70ee1a8a2c3fbae710d8b",
+   "5a0192ae97c93a9eba2fd94f967747e7a836e3a5",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.clip.unaffected.html": [
-   "606c3417444acf5f5ce26a2e6411fccca2b0d4dc",
+   "2d3ac63a4adc8433ada7f5c7a023b8fa1feeb4d0",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.clip.winding.1.html": [
-   "9fe007b4093125adc09452dabe1961976feed400",
+   "96335e97f462964cf690b76191f52205ae7108ba",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.clip.winding.2.html": [
-   "dd9b6ad6cb022888eec48e25adcbdc9bdb200f75",
+   "307c7227e56160a99a343434f66f56e01df62190",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.closePath.empty.html": [
-   "8ee68dc8397e8135deb93a4b2dd95a5996a84a10",
+   "4ba9c6a276b023ce565c0f95435c89bbf64e7dc8",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.closePath.newline.html": [
-   "391451e6f4319c155493edcf705d7cfabcc1644a",
+   "8326ae55b00da58056e6714e8cb6d921fe1275e1",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.closePath.nextpoint.html": [
-   "e98458b183f466d16946e6baf5607ce1309256c9",
+   "25f52ebce94504e13fe056501c6e9aef02529079",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.fill.closed.basic.html": [
-   "b0fbee754513a4cfc418d21bfb943a4dfaa6877f",
+   "5955492278a1fc556dcaa94b7df3560e11a92649",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.fill.closed.unaffected.html": [
-   "a1d11287c6641da0dfbad55a9d66d2ec1acfbfa1",
+   "522cd47cd68936645f0168edcadb78818a8e2223",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.fill.overlap.html": [
-   "d69999c24c3151812887a8a7d778e534cc9e2527",
+   "7575d22d66aa2bb2ec264e6dd6fc165b4673a6f7",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.fill.overlap.png": [
@@ -332752,219 +332795,219 @@
    "support"
   ],
   "2dcontext/path-objects/2d.path.fill.winding.add.html": [
-   "3eaa0f1bf4d5a3cbb1f53eedfd1191ecb1537f2e",
+   "3be1db933eed50ff2d99269228a59b80998e75d4",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.fill.winding.subtract.1.html": [
-   "50a2a1dbb769d5385379a454995a4f9cb7ff91d7",
+   "333a7b5e0628a1ece6204bc470e6e2e662ba8a7d",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.fill.winding.subtract.2.html": [
-   "b9423507c7bf12c26b765e9357b4c8debbd34512",
+   "49bffec2cdd08bf132504203e6eefeb862e31bc8",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.fill.winding.subtract.3.html": [
-   "131672d10189dd58dd7d78583d4971cb70e7be86",
+   "08ca32dcf886821f882d14eb11ed2b642e503aaf",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.initial.html": [
-   "9dadad8009897eb6d718c0a67a06924abb707e07",
+   "360129925631911f42c3364d11753b4df237593a",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.isPointInPath.arc.html": [
-   "2d6cfcce5d101a9265123ec941fd1c8c9b773b8f",
+   "25428635b6b0c2ed3a70dd41e4b08bfebc2ff43f",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.isPointInPath.basic.1.html": [
-   "31818b0ad302f5d29ca8700765aa6c357cbcd9c1",
+   "8e858885640de334793731fce93493c2b4f8483d",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.isPointInPath.basic.2.html": [
-   "138368ec17329d60ccf1d69319951e461b4f544b",
+   "692e5e380272fa0451b64af436f8181bde454db7",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.isPointInPath.bezier.html": [
-   "aa246f63c7e569e165069a5250495995383b9dcc",
+   "a8d031da9e107fda221b0ed4d6d7a5415384bff2",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.isPointInPath.bigarc.html": [
-   "1565aeeba59bf5d8d620826954723ef848c5947e",
+   "56a8091a0e31b934ab54e632e72738d0ecf51dee",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.isPointInPath.edge.html": [
-   "70faf8054c1eff2da8a5da48a61773047fb6a486",
+   "83a17041509defe8b497e833a2f6aa1b3582030f",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.isPointInPath.empty.html": [
-   "b1e4b2dbdbacb1555c3a827dfe3d0b3701fbf1ab",
+   "16dd3fcd9aab1cf890a6fb976d41844e630d01cd",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.isPointInPath.nonfinite.html": [
-   "f70e66288378417587312346b0d26680391e070d",
+   "76452a9d4358ae174658b9fb050b7b19315764f3",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.isPointInPath.outside.html": [
-   "1abe324838ab20169d26619d152a21233d0978d2",
+   "2b786d337bddeca7ddb0cd53bab1a4244cbe4b7f",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.isPointInPath.subpath.html": [
-   "34bd0c7762e5a74d6ed5c75033c9126df668d53f",
+   "7a458821651a6c42c8a393899c556bd8499e4ac2",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.isPointInPath.transform.1.html": [
-   "20777390cf87e91795209af8004d6adbf665cf9e",
+   "63f5c5dcf661d67b61aa47b4b34a872a02b69a13",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.isPointInPath.transform.2.html": [
-   "bde026e4fcfb611a3aacb2a287bbd5530d4d14fe",
+   "aa7c8abe40b45b6111573c4c20811d4987358872",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.isPointInPath.transform.3.html": [
-   "c612aae6090fa7cdf5a506eb77384f20e8f31540",
+   "f41acd8dc0331396f717cbec7cff4ea4142373f4",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.isPointInPath.transform.4.html": [
-   "50fc45d2f47c826242d411d46f0e588da8ac549c",
+   "eaba824ec6162fcef6da14da721ae70d70c22364",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.isPointInPath.unclosed.html": [
-   "a137592532b4c47a078886396ddd40fe449036ae",
+   "cce882ed6f270aa16d1a858d171505eb3a63db4c",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.isPointInPath.winding.html": [
-   "afa83810bfbb810c212a8c4eb0a90b4eac13ac07",
+   "c6588aac956d9c448bdff21ed92e1bb65f546eee",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.lineTo.basic.html": [
-   "8606f8900675819a609485510596c6b59c793587",
+   "c9c3892506ef1e69a41e65e7db15baf5f1b679f0",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.lineTo.ensuresubpath.1.html": [
-   "a4c0efb7e3fcfc56383d2a48e8bdec4a978632b5",
+   "bddf2cf6f9eb043752bd5a3e83c6f2d410891cc1",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.lineTo.ensuresubpath.2.html": [
-   "94e6edddabfe45616e4a14688b3aa992ac19e1e1",
+   "91c1aa7199e73a56ed69d69648e5ac5474a9527c",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.lineTo.nextpoint.html": [
-   "c2032f7c5a528900267ce264b9202c9de2704c86",
+   "298cfbd0fd24b999bf4e7c20eff7c5abf7f4b029",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.lineTo.nonfinite.details.html": [
-   "88886ebe245ed17beddc1b2c9c66c2cc9f169d54",
+   "5cbd995fe4f5b0562e2e5156d3c007ff82b18421",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.lineTo.nonfinite.html": [
-   "52982d2f68d5ac7dcbb431ca7edfe3960bb167c5",
+   "794baae6cef650b9c06a71f32196c9ec416eaa79",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.moveTo.basic.html": [
-   "999518fcedd978737bb5abf7a52793b38b28e8ed",
+   "b621e22ff7203da3f21907fa969c7584e20a5e27",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.moveTo.multiple.html": [
-   "123d39314f3892f7914c2e1c6cf329b6c20977ea",
+   "d32a50c8fb7a1e980556e142c4a34673b06cc3f0",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.moveTo.newsubpath.html": [
-   "caff9f81d4506ade92d46f60a42c8f4d83de18bf",
+   "0cfb6504355ba6a6ad02e20a0887ea90d1364249",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.moveTo.nonfinite.html": [
-   "c531f4d05c9f44916aee7b16959b6fa3cc8eaabd",
+   "33af6c0a1591922204fa49fbb64ee03fb7ab0319",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.quadraticCurveTo.basic.html": [
-   "247b6800590eb87f17b34677fd62bba3c6be147c",
+   "f2f6a1fe75f5d366907fb772aa14197fd0e7d8df",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html": [
-   "ac7bab2122006a57e85e6ad5f0603f264c3ed581",
+   "658b76bbfd7c23845b04dfe4df8777971de9bdc9",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html": [
-   "95951a2ad13c615db30b6246d8b70d858345ccb4",
+   "477e87708a4adf2caa905688dd78119858643d66",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.quadraticCurveTo.nonfinite.html": [
-   "637d10954fdafcf41b4ace5fc8b27ac5cb324fbd",
+   "70bd211ddc7a34d1801947fd8dac3046bf3d8134",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.quadraticCurveTo.scaled.html": [
-   "36801da9408cd68c25bb5e63cf129fe3da3c0ca4",
+   "1a105eca8a07b8a7b18b6a7252a70dc3c17aad9e",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.quadraticCurveTo.shape.html": [
-   "9311fc2a3b0ecc1ce1b17af08011f05c806dd120",
+   "47fc154082d0cd4e73d9705589a33f1a9b3a9ac8",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.rect.basic.html": [
-   "a5a6a733ea3e210215f2bbeeaa013f72fc8039be",
+   "0b51a149bbd2ddb2a4dff1f00e4bef39d546ad0b",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.rect.closed.html": [
-   "98f06480df03f8f9121b924d544ab095263fc01b",
+   "bf0878e9c824723b86befcf733bc9e58fc090909",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.rect.end.1.html": [
-   "4cfe05817b021844d7dba637859bfc9fc00b52df",
+   "67aa50b5bf3aaefda460db8d78c1ae9ae6f4545a",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.rect.end.2.html": [
-   "f961b9c5215fc61e8170860a6745e627db480bc4",
+   "b01287b1c2b21df71292caeb4503a27de79892af",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.rect.negative.html": [
-   "382623a5e268cbc9488c2d0aaa1696329088bcc3",
+   "2661f7c87d27a4fd598b2e0ae724d5e1f2b38fc2",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.rect.newsubpath.html": [
-   "e0e841b8c3d705f1e6a06738d8071394ff816b2f",
+   "5f3512031cb0e3a0878bda120c47867ae92e6293",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.rect.nonfinite.html": [
-   "173fd383f565b123cfa41c44ff52a9906cc06801",
+   "3d771cf4c8f4ae786b9ad44f05bd90b7d807caf6",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.rect.selfintersect.html": [
-   "16be6232b2697af124216b0a75aa035d600b6e80",
+   "cc21531d7cac73a40f47e4b775e8bd5c55b1b6c7",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.rect.winding.html": [
-   "194e5733b513abcd03c6655868d926dd66132960",
+   "1077ebb4e278da1727bc4f2ea2700e9dfee6410a",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.rect.zero.1.html": [
-   "dd4b1a456283482d3d31c1696799ac44bbf09d23",
+   "619c9aac1945b2b076f9657bc579d65d7dd6acd9",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.rect.zero.2.html": [
-   "0bdfe380e4aad2e14a430727b859fd8bd10a5541",
+   "26c5a05b5eb0bfe4996d4aacd9c88b669ad57751",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.rect.zero.3.html": [
-   "67dd2410ba6c7e9a281a8bebf3aeebae193eb423",
+   "403275578fe3cc649ca66c470c236898c0765fcf",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.rect.zero.4.html": [
-   "a74399567fa7c7eab71c9988f3b4295d495a6d9c",
+   "a88c44cbc1d358e0ef00b056ca5d2e0890479503",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.rect.zero.5.html": [
-   "81566fb7f2378b497b34e925e2f6cddcd38e89cd",
+   "1bd1ba248e87ee3a435704b3c2e93e88cc9e308c",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.rect.zero.6.html": [
-   "37b1c524c52a31288b231fd2e160697a13efade5",
+   "537242b6ebea720ed617af07a12e74c9f8944876",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.stroke.empty.html": [
-   "671c4552b091020729e2393be06c599665118921",
+   "209a3903e00bbcbdd539f02c725a06bae0e6f52e",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.stroke.overlap.html": [
-   "8a4d6989e2d85e90f13c262aacc6eb833cbf53e1",
+   "e5864ba0315c51318863db7eedd71a0098feb1bb",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.stroke.overlap.png": [
@@ -332976,7 +333019,7 @@
    "support"
   ],
   "2dcontext/path-objects/2d.path.stroke.prune.arc.html": [
-   "fc4c23ffc3121e22ab7cae2a4f1047d7161c4c8a",
+   "edf6be58e1efab01730e9b68a489ca997ea783b8",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.stroke.prune.closed-expected.txt": [
@@ -332984,11 +333027,11 @@
    "support"
   ],
   "2dcontext/path-objects/2d.path.stroke.prune.closed.html": [
-   "d356c91fa411a02050e07d19c3ead3fe84660bcd",
+   "fb00ed17e378309741e7a4842832fc276010617d",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.stroke.prune.corner.html": [
-   "687777426defaaf510a99ebd54d53e743819e19b",
+   "a759fdadfd7c9c2b1d383f1884bc4e5ab9f8c634",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.stroke.prune.curve-expected.txt": [
@@ -332996,7 +333039,7 @@
    "support"
   ],
   "2dcontext/path-objects/2d.path.stroke.prune.curve.html": [
-   "721cb6eb081f8a26f881baea29c448f5b968ea0d",
+   "441ccd169065aab2f6ef89d79c6f24d7a5ff9a1b",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.stroke.prune.line-expected.txt": [
@@ -333004,7 +333047,7 @@
    "support"
   ],
   "2dcontext/path-objects/2d.path.stroke.prune.line.html": [
-   "aa04d457ec99df987dd139488ec7434674b82798",
+   "b434ec947af578e88a69ce3a55fb63beb81d622e",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.stroke.prune.rect-expected.txt": [
@@ -333012,215 +333055,215 @@
    "support"
   ],
   "2dcontext/path-objects/2d.path.stroke.prune.rect.html": [
-   "45ead6db43cf831a9639c37825f74d6d610c4221",
+   "c5724cae53b7fe7f0304a99e18a732bf063f385c",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.stroke.scale1.html": [
-   "ae63be2073806336203387f05b15aca63ddfced9",
+   "03241159ea586fe07d291b881046c089a7868c60",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.stroke.scale2.html": [
-   "de8dd5e340c42a38ef319b9022c167e3c3c01c92",
+   "e9436acee173403fe27345f03ed0f6945629edf1",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.stroke.skew.html": [
-   "6c6e0a4d7edb0c60989a9272f89c174e9a2c6f5d",
+   "15f500a8ae0b57a9184edf3e055aaf6549d48ced",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.stroke.unaffected.html": [
-   "6980a0cfd807fe5d41647a1f41eaafefb821ef48",
+   "fee0bc341a6df07a32f9ecf6d3980dc5667b1421",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.stroke.union.html": [
-   "bf1f28a5b0976ea0e75de24f72894e220768621d",
+   "220bbd7aab2d62f9a33f803b32d60f4f471c11a7",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.transformation.basic.html": [
-   "52803215320e04cf46132c892564e01095454e42",
+   "670712930470a48ec9bea27ced0ab640bdae0c01",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.transformation.changing.html": [
-   "24c32062d3790b6671e4b277aede626539e5bf41",
+   "24505d15aa4bcfdc6c18d05d73560b4fb6acc05c",
    "testharness"
   ],
   "2dcontext/path-objects/2d.path.transformation.multiple.html": [
-   "5d78d28c9101d1ee538800bc9e07f899fdd48c5c",
+   "085e148148951994f7a0b08952d56337fe25c469",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.create1.basic.html": [
-   "cf236cd3381bd07f8ba17236034fa65b719ccb7d",
+   "7d9d9ee85364bb5ff567afa0d8dbedff7f2cfe13",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.create1.initial.html": [
-   "15f67b72bb900957d23adb3e64c42cdf76f93820",
+   "9ff180b7172a6fa4a2a3d314f9bea2bdefb4036d",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.create1.this.html": [
-   "1b9b2e0952da9dd77a3d781d6a0c9a20480514a0",
+   "b3a3334f7ca9296740b0d4ab51687b632c23175f",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.create1.type.html": [
-   "8884035508df03bedead95aee0d2a41ae0006a6f",
+   "a24ef78678fc2a650c370e8ab9f4385e55f85f03",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.create1.zero.html": [
-   "928c430f8323737aca5fe5067b433fc52a647ab4",
+   "1f7ad7a1ce1b4ac2d72cc42f2133d3ad918f8fea",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.create2.basic.html": [
-   "51d3c13f9f638d08f9f4c133b2545d9f0b662857",
+   "fb0216a5df5f19a56fe5c441456f703cfa5d318a",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.create2.double.html": [
-   "e8edcf76c1c2b6427f3ebe7e82d878e39bd225ca",
+   "38ff227ce2cf86bd3f69d701db4f74e8dfe919f0",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.create2.initial.html": [
-   "a858c2437814c713c30a21b300e2010da7da4be8",
+   "783e579f91c0a1127f79d923bd63109f1d5c1624",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.create2.large.html": [
-   "113a23194019992edbea8e8e0f6fcb6cc37d7fe4",
+   "5fd48db2131d710a63959a653a79457e6e81d846",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.create2.negative.html": [
-   "7a06ed45ceacd27f5cd99beb16002e71ae2f635b",
+   "3c61023a57bab2ecf53b77d6d1b3d109629eee4d",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.create2.nonfinite.html": [
-   "3dabc30a63e9fc1b198c0bc79c4c9a7a2e952953",
+   "2722b30f5e23114e3561a8f68d6e94614a76e47d",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.create2.this.html": [
-   "ff55218cff15ceb36f9b134fc8d4f4af6b6a6cda",
+   "670345eee51ef70e3a631152c6a02df96d8289e1",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.create2.type.html": [
-   "4e7b444cc17ec46a5f9caeecefd6d75e42c29f18",
+   "b1f6bea161bc389abb5f18574444ee14b28e83ca",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.create2.zero.html": [
-   "1c1851b6043956fa04d49a9722404f3b9464ff77",
+   "f93583cf7cdc7df9279c3161e1dfb434f80f6439",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.get.basic.html": [
-   "d8bad1fd5d98d70f948f59f642fe4f586c93bf14",
+   "27354762b1f46a180d6003aff9d21f0c1e59a24e",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.get.clamp.html": [
-   "cc235bac0d121af4efc01e84951a912796ded188",
+   "ad5ecab1a60467c633cb9e380d675d02a50ad75e",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.get.double.html": [
-   "915c3c2cae5a797451c4f8c2be20d9ac5d24d68a",
+   "04f1699a026dc28f74c37ec10374b8707865970f",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.get.length.html": [
-   "8bc30621c7607ef6109cc2c5fd37ba65a94e7dda",
+   "b02d06d927b89f98fd26a542c44e6e6141b997fd",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.get.nonfinite.html": [
-   "176b7d8bb4ff5de5313a7abee8938c66a86e8377",
+   "92623500f4a393ad4486a3fc7307c56c9c5b977b",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.get.nonpremul.html": [
-   "e8bce96f87b5d08062b2f8bc64af8c9c9b5b044c",
+   "72d898c52dbc98d5bc793f225f0c5065995cdc03",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.get.order.alpha.html": [
-   "e2453c49701035d9e09de24992393219b0d79c31",
+   "fa53d6e25c37ba62fc5677288452fa466dd677b0",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.get.order.cols.html": [
-   "123831380def8225d175b2ae55a9256c03db4da9",
+   "b9bdfdd93ad0354d8c7f5c0c7cd712afea66deba",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.get.order.rgb.html": [
-   "37531ecfa2eadc5e5d43d1af7590f452f6cf10d2",
+   "f53ca07f089393ab992c77e41cedf62268a6fb9a",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.get.order.rows.html": [
-   "de77dc6dde99407acddc86261c72f9145e233e63",
+   "b791b730a76078b0e79c1d5f9f68d9080e06a5a5",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.get.range.html": [
-   "5f34e35df24a664a8990273e588168810384737a",
+   "c69c33ed0ff57bd251c1b340020f589ac271d750",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.get.source.negative.html": [
-   "4bab359fb81c7c322c243abf6ae9d0fbccda6c87",
+   "ce632da76fae00932c40ba052110708329fad637",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.get.source.outside.html": [
-   "9950b60fffce45c5f01c3769c4e67494aaa4cc5c",
+   "f9dd0b337e848151d240b85ff3e9c341a47a31ac",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.get.source.size.html": [
-   "0782b115127e4c94c1031f134c18b9a6f878250a",
+   "7e6923d688b60a537078ffe131889c10f294d727",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.get.type.html": [
-   "76f711d583d1ccc3fcca7c4671501001f9354527",
+   "76c6d3565939db330906ddaa20aedbfb4da6b95d",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.get.unaffected.html": [
-   "06afdb9608351d1a4688a1403b2ab31307367e5f",
+   "2e8b4541e148de41a1776745c3be5df31f6f7c7c",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.get.zero.html": [
-   "7f231c50b689841156792e84c080496f06ab4775",
+   "da279aef1e8d7280e04aa1e1e990eabace9dbbe0",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.object.clamp.html": [
-   "61e10eea1dfecf2a21a1a843109779e2aff92eae",
+   "56de5fa9078735d7be17c820820823542b07539d",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.object.ctor.array.bounds.html": [
-   "8a154b4c86f1f9c3e1e4e4eafa345740bd047533",
+   "5ac7af5dd90074e1b47a73046debe90008ee1b4d",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.object.ctor.array.html": [
-   "2340e98ab337df1eb014860fe7b774129857d66e",
+   "3c5fdc8b8cddc7ae935bcac195fe1d3cec39b850",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.object.ctor.size.bounds.html": [
-   "c9bcccc08e85b5f384c8ca2b2d40eef5dba51d94",
+   "4b6735e4f384f4571fbe04a39c50a7aa305c130a",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.object.ctor.size.html": [
-   "67bd87c731ebc0e5c0a3cd5bed752addb392351a",
+   "8479229b9a5ac0d148bad18f86b79ceb887a6601",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.object.nan.html": [
-   "4294b12f66897d00f892ec264ae9fc9f4c812b86",
+   "15a4eacd08aa846d563b25a208c172f0bdb26cf9",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.object.properties.html": [
-   "a9ed94247f9498f6117f07190ae0cfa4614cc81d",
+   "e52b2614369e101936543a678c6fad0d4fb579ad",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.object.readonly.html": [
-   "6f18337332958a4247a2ae8cfa5823baafc5e270",
+   "be2c3ebde677cce14affe79426b302ba1d4be8fe",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.object.round.html": [
-   "7f50a92c6ad139fe4c5347321532d1e455f0997c",
+   "fa3dcba5529025d7f18a15a64109f1c7a21cc3d7",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.object.set.html": [
-   "dd63ceb90ad93e62731dfa5d530ad36557b31a24",
+   "afc57702c90fdd45d033861b39cf8aa54fe692f0",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.object.string.html": [
-   "625b5575094dca8edc32a938f0bd3905398daa2b",
+   "e306fcaed41c98bf2e0b33b14e51208d45545c5c",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.object.undefined.html": [
-   "1abf84330fa7b9bc85f1775bba087c67e07bfa64",
+   "0ea1c4888d710f443fe394fb780512ed430f4f34",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.put.alpha.html": [
-   "9d19471492ccecd99d147b2e5e2617f0b884b355",
+   "e2e3d6bb99c5dd7bf0c296abd43f08ded6d7f5ed",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.put.alpha.png": [
@@ -333228,91 +333271,131 @@
    "support"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.put.basic.html": [
-   "7d7de3cc4fdacb8830cdd61084907a6fbf4c19e1",
+   "6f0df8391465d29adccb4eef0def0b68db54f12f",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.put.clip.html": [
-   "8e8b19a6095608857e4d222cc1687acc32694515",
+   "d26c610fe26b2d99f97848a24144d6597e99011b",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.put.created.html": [
-   "4b1dd11bdb8cf3a3b8278dc437f7085c7f5029ac",
+   "2b9a9ac95dfa775c40b0b6a2ad1cf8812c270c32",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.put.cross.html": [
-   "5fc59090a9a5a2ddb4eb6a139de4c186552147eb",
+   "3c0b2295138a3f4f67f2c8419d466f94df3f93a9",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.put.dirty.negative.html": [
-   "67cf410cc34df50b67e2fc28bcc421630b0c08b3",
+   "c8297aa429b59ded04e6956d660dd3eec7c19399",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.put.dirty.outside.html": [
-   "81dc98ca971f30fce5b56568a1b207bf75a6ca9c",
+   "fe916ed8d7444a47e2887f5ec33f10ddb01171b7",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.put.dirty.rect1.html": [
-   "b94a9f581495613f2b89e869265681ff6dfc6d69",
+   "c68d9f1070517259482b1c5d794db8bd77b095fe",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.put.dirty.rect2.html": [
-   "1fb5c141664790948c11f4cd556cf98f7e24663e",
+   "0829fac51a839163cea2a635876d3c52eb5e5452",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.put.dirty.zero.html": [
-   "726fdb809560ce74493395b4ee57c7ba785dedbf",
+   "72a48cbd80649fd3a1d67920ffbd964818db9f12",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.put.modified.html": [
-   "5815aeb26b6e50e3fada8aefddda538fd706a6b6",
+   "23fec82f3cb2cc3e7865d430fe7892b80741346e",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.put.nonfinite.html": [
-   "861545ff3a863afda2b85b9193470bf18ad1141b",
+   "c4cbb4ab9d5842d1df8bf58fcca3566644d66a0f",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.put.null.html": [
-   "f827babc5a68af3ec2dcecb81873a731743e318c",
+   "851bc0ddc483123ff3d169f4c38f003be8b9a9b8",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.put.path.html": [
-   "7994e8647c9ae81b47aa004f2ad7972d6682cf71",
+   "43b516e42babd84fbb00d31fdb12f6afcc1f06c5",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.put.unaffected.html": [
-   "8eee159958fff9e7f808de5383d657bdabbfb29b",
+   "ac4f4deabc6402d9a68b6d9d0211eff7db4c6ccf",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.put.unchanged.html": [
-   "59e05fbce22477c4298df60f3ec3ba74eca2f29d",
+   "f5d46933fdfadb1359bd782af936fdaa4c32c5c7",
    "testharness"
   ],
   "2dcontext/pixel-manipulation/2d.imageData.put.wrongtype.html": [
-   "085097fd4ec0fd42886dea8a0da30d84deb7d777",
+   "4f3fe49dbfbf7038307ac99a6a2364c4b0f45bf7",
    "testharness"
   ],
+  "2dcontext/resources/canvas-frame.css": [
+   "0c97a680d1846412a69b2ed65bdeb436d01fee2b",
+   "support"
+  ],
+  "2dcontext/resources/canvas-frame.css.headers": [
+   "e13897f157263b83b2d69e3e187cb890ff394f6c",
+   "support"
+  ],
+  "2dcontext/resources/canvas-index.css": [
+   "ef35864bc03faff124dbdcc8ce623217c2cd69a6",
+   "support"
+  ],
+  "2dcontext/resources/canvas-index.css.headers": [
+   "e13897f157263b83b2d69e3e187cb890ff394f6c",
+   "support"
+  ],
+  "2dcontext/resources/canvas-spec.css": [
+   "5882acb68ef3ef7e00cbea39d484c6fd0f1ab2d6",
+   "support"
+  ],
+  "2dcontext/resources/canvas-spec.css.headers": [
+   "e13897f157263b83b2d69e3e187cb890ff394f6c",
+   "support"
+  ],
+  "2dcontext/resources/canvas-tests.css": [
+   "e006e812de4dfb3f1024788e1473a7136d958395",
+   "support"
+  ],
+  "2dcontext/resources/canvas-tests.css.headers": [
+   "e13897f157263b83b2d69e3e187cb890ff394f6c",
+   "support"
+  ],
+  "2dcontext/resources/canvas-tests.js": [
+   "76313bc8fbac27672128b56cb3327feaf95164e4",
+   "support"
+  ],
+  "2dcontext/resources/canvas-tests.js.headers": [
+   "6805c323df5a975231648b830e33ce183c3cbbd3",
+   "support"
+  ],
   "2dcontext/scroll/2d.scrollPathIntoView.basic.html": [
-   "458b9ec6fd6532a1b8ede0104c2c5c66650265e5",
+   "72a14adc8a0ec1c9df90a2e13f7e5ec16aac1c83",
    "testharness"
   ],
   "2dcontext/scroll/2d.scrollPathIntoView.path.html": [
-   "4f1bb37c320370a92e5126418f6fd56abbaddf37",
+   "0cf08b91922dc2ebb36f48949c1e2a66ec651f71",
    "testharness"
   ],
   "2dcontext/scroll/2d.scrollPathIntoView.verticalLR.html": [
-   "fb16433aeaba25f379736090c993a1b4a1ade2d0",
+   "7c08ce27200120d241fcba443b7fffa34468278b",
    "testharness"
   ],
   "2dcontext/scroll/2d.scrollPathIntoView.verticalRL.html": [
-   "a5ac8c2d16d293ae0e3cab645e5f19d8c2589d52",
+   "407f4ad9144a8c555d35df5fb7601c5ffe655a41",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.alpha.1.html": [
-   "d541cd4b8cabe903a304cda2e19c92f54dd467fa",
+   "e2b136ba79281384b4d5908804dc46e2e12e0d03",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.alpha.2.html": [
-   "2176182927add709edc694f985b2e6dda0070104",
+   "844e78de0756f9e66684694f1c2c6ab576f58914",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.alpha.2.png": [
@@ -333320,7 +333403,7 @@
    "support"
   ],
   "2dcontext/shadows/2d.shadow.alpha.3.html": [
-   "970575478b05e97fc334f4991b851bcc82ad4692",
+   "818c3151608f98a03a4aa6bb8e76e54787936895",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.alpha.3.png": [
@@ -333328,7 +333411,7 @@
    "support"
   ],
   "2dcontext/shadows/2d.shadow.alpha.4.html": [
-   "0621af631fcbac066561cc5fc3eb7136c0ecf643",
+   "67edb8ebe93e1ebc4d694b9a46d067a58927dd55",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.alpha.4.png": [
@@ -333336,7 +333419,7 @@
    "support"
   ],
   "2dcontext/shadows/2d.shadow.alpha.5.html": [
-   "95cb2f39930856ae2f18ac8a8f32b9c93a46766a",
+   "3202900d66e7c05ef403943a026d589a9f1876c5",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.alpha.5.png": [
@@ -333344,43 +333427,43 @@
    "support"
   ],
   "2dcontext/shadows/2d.shadow.attributes.shadowBlur.initial.html": [
-   "7b65cac6f4e1b872b1196f1d8306a4b91b99df35",
+   "51ef9b58e286f764ddb2a21c6093503ced812d82",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.attributes.shadowBlur.invalid.html": [
-   "c4bf2ba991c4975cbf2d92ba8ebd520bda9f6f89",
+   "bc5e0188f05fcd7224fe935688b09bc72ad67c23",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.attributes.shadowBlur.valid.html": [
-   "6aa9f9b1ae92cc765f20dde11115365ce80a01a8",
+   "effd708f5e078a2fa3db2a13b3f2341799fdb50c",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.attributes.shadowColor.initial.html": [
-   "3f7471333d6c6d6b55df8adb692e2f7359d52e46",
+   "e9e0d3ba20acdb4a3f02a3269f096e1c86723402",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.attributes.shadowColor.invalid.html": [
-   "5f28ecbae06d761ba4cd55ede7d27b45771305ce",
+   "555ff0b250928f7cc7ed64ecbb6487e69dfb15e0",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.attributes.shadowColor.valid.html": [
-   "02ce65c905d70b6da5222b771a5a9f7bfea61894",
+   "0eecb8335e8def1bf4d6f40844fd10c08ebd0723",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.attributes.shadowOffset.initial.html": [
-   "35f1317f2f510dffdfa82d9bb3a3485dcadf384a",
+   "44674aff43ebc59661e26695367384248a51201b",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.attributes.shadowOffset.invalid.html": [
-   "0b1ef728c4f159c54eaed29a07a1f1b01fced498",
+   "915a45fccdea653b02a423b2e8b0e828dfb46899",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.attributes.shadowOffset.valid.html": [
-   "4133ebb94ebb105a8cb7461c7a03fe293f399deb",
+   "25a448ba0b23669b20b4d9673271ce9955cc6aaa",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.blur.high-manual.html": [
-   "957f5b802d6bf17a8123ee76daf53b6d33ea78d7",
+   "dc8301db39e07f73c4f58e65bc46a7ca106f83bb",
    "manual"
   ],
   "2dcontext/shadows/2d.shadow.blur.high.png": [
@@ -333388,7 +333471,7 @@
    "support"
   ],
   "2dcontext/shadows/2d.shadow.blur.low-manual.html": [
-   "548db5c5ea13d554c9978fdb57589eb7242cb769",
+   "edf98b99c0892a4e38af781c46d65869f5f37fae",
    "manual"
   ],
   "2dcontext/shadows/2d.shadow.blur.low.png": [
@@ -333396,7 +333479,7 @@
    "support"
   ],
   "2dcontext/shadows/2d.shadow.canvas.alpha.html": [
-   "584703dff290177885f5a65da406e0bce953782a",
+   "8477e3f44150d5902b45d19b297a380cd1eddacd",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.canvas.alpha.png": [
@@ -333404,63 +333487,63 @@
    "support"
   ],
   "2dcontext/shadows/2d.shadow.canvas.basic.html": [
-   "824c66894cc6c0f018ca1f880d3fcfd5b2f1603f",
+   "7fdade749aedf0f650667a8ae009470277493816",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.canvas.transparent.1.html": [
-   "13ddd33e151babad8e1d8773fb4562353b13efc2",
+   "87f4450cea620590a8bf7976e3d8fbb6f2a58b58",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.canvas.transparent.2.html": [
-   "e795fa1e2da58ad31eda7491b4bd13a82aaab282",
+   "18e5136c1b0785be448c79e9216602e68c425bcc",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.clip.1.html": [
-   "50fbb8711b159f79999489513d1414102b573e06",
+   "9d1eb5ddfcd6269d29c10801cb323b5a91464d40",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.clip.2.html": [
-   "239b43b98ba7eb4b225242c7c9457620139eb444",
+   "07677a8a90913e199c013ade42112318114c0169",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.clip.3.html": [
-   "6b1bb02fcb5dde9453a40b6a172a7db17858965a",
+   "fcbea794bbe75df5d6454c66486b5e9e55d9bd04",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.composite.1.html": [
-   "e27c1e2c07c78c16e6ec30148d9f26eb39d77237",
+   "40903a790d4d57a208c0ca23e12177bebe39cabc",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.composite.2.html": [
-   "960b44b541963ea2f691822928e0d5cc15aa5421",
+   "91bacc02981f033b7124ba3b7772fbbac1c0cc06",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.composite.3.html": [
-   "feee1ce5e8dd9170ed1f3e3fea33c1adefe549ea",
+   "bcc3bee7c6af0f1da5d512380a7537705f47aaf5",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.enable.blur.html": [
-   "f94f5f69f518ff0613c0604552100437b70737ea",
+   "36658c63917d6d7b49725c28a9973fc1f1b2dda1",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.enable.off.1.html": [
-   "161ec52c4f8d26d05145c04daf8527095cf0e076",
+   "0c0600adb8819705088496d72d4beae86d3fba02",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.enable.off.2.html": [
-   "23bfa752afe2161d49622943f71dedea9d50f384",
+   "1713e4ce5a40d157651b4b5afcdbb7cee5428929",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.enable.x.html": [
-   "b90da98dfab19388f9dfd2edd48614241b966304",
+   "10b4bd7d3628df658533b88248fce5b6711cade6",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.enable.y.html": [
-   "32750e6f869646186701b25e19b50af01132c6dc",
+   "2bca12cbc698fcf583693a1463be1e6689938d3c",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.gradient.alpha.html": [
-   "31c4adc50d2c888e4aa875c254a14116966958ba",
+   "e11a8f2f5319856921b3368dd2d9b85a64213374",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.gradient.alpha.png": [
@@ -333468,19 +333551,19 @@
    "support"
   ],
   "2dcontext/shadows/2d.shadow.gradient.basic.html": [
-   "cdb2232322f49b80583b8780b9b9572321951a5b",
+   "e7b33fadc50c043b37f65b2694b98222d2556c00",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.gradient.transparent.1.html": [
-   "d4a21c6b38541c01be74c97b2ccb43fbaa672dde",
+   "95fe5b0add9e3c672e8664fa498b3a8da5507a9e",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.gradient.transparent.2.html": [
-   "be5d93a5b2332e0e715c9ed168fbfabeb9f98520",
+   "c6e7dca392c54f0385148043ec1972501c22f5a0",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.image.alpha.html": [
-   "9e7a56973069ec2628b53e931fead99994572c6d",
+   "6d30b0957eb9e8ce4315b24fe35755788bc8f92d",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.image.alpha.png": [
@@ -333488,47 +333571,47 @@
    "support"
   ],
   "2dcontext/shadows/2d.shadow.image.basic.html": [
-   "570451ae9df7522bcae7a10946942ef5294ff69e",
+   "50eb781780b71d52a621afcc2e1a9d3892645bf9",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.image.scale.html": [
-   "ded6fc0d6b9a1d4b2ec2c6677d4a3e91633dee84",
+   "e446b51af9753615d2a8299fe031e3484dc52042",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.image.section.html": [
-   "9dc9bca67239ae982499c968640212e5d27e5dbb",
+   "0fbefbb109b5a311977418b1c15b11b0aada79e8",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.image.transparent.1.html": [
-   "13dff1f2d4c4cfffc5010ce573c0e34f87da93ea",
+   "fc3966e01e68bd95c2349289c3437b9f0a945529",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.image.transparent.2.html": [
-   "17a26407d5a53ccf0c2558e45a2ebc2be1425065",
+   "41b32fb65aec7440e9690a9443ec38145d11a6e3",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.offset.negativeX.html": [
-   "da1c39ba0e2bc0bc3a31f1fe6a55de11f3ae5ba1",
+   "8a8a49db9a47baa6ee9c716cc280fc8757e7f5f6",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.offset.negativeY.html": [
-   "0f7a7f0ad3e1cc2ec7f75bf5223eea732f3031b8",
+   "6cde0d2d6575821ca92b04623e357ef023c07eab",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.offset.positiveX.html": [
-   "969d9b43a8d8fbff98adf5d311a35787c90a6d5b",
+   "e1b090c414f84ec4e0b906a8f70e0bd44993ab66",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.offset.positiveY.html": [
-   "c797d709f006a3d31ba8b380ac4d5b1d60ec33db",
+   "23f130be786d2c9211cf7275a679bb59ffcc72e1",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.outside.html": [
-   "ef3492226e6815c86fdee425bc9de596808194da",
+   "5c72f5d1076fa7bda2555926aa9f34a6f13f45ca",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.pattern.alpha.html": [
-   "5fcfcc4b0385eea71f20876d6e040aec5b6e9d77",
+   "fc8ec75d1e9fcade1f43ff5ee92397a190e1e45c",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.pattern.alpha.png": [
@@ -333536,47 +333619,47 @@
    "support"
   ],
   "2dcontext/shadows/2d.shadow.pattern.basic.html": [
-   "38b9a736712297ecea816e006132045ba4dec63c",
+   "d3605a57d7a27aa37b95377295082935b601c1e5",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.pattern.transparent.1.html": [
-   "fcdda5a204490b285b88262dd6233f4caf205f07",
+   "c6a6d937fa5262d306c0bec73ed3b7119dbdcbb1",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.pattern.transparent.2.html": [
-   "3dbb856bf7f26d806a122a03382fb1c17f633737",
+   "bad946e79ff95900fc0355be351bebc902ffccfe",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.stroke.basic.html": [
-   "4e5bd06b2bdcd57c6b752eb3f302c51d16aa475e",
+   "181645b2444e83f03e8fe7a353161c622d12d672",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.stroke.cap.1.html": [
-   "04450b979095992d60d418f4a7f75064e21092fb",
+   "830e71893b6b3b4abbe03aa3d653c1f1f4acc64b",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.stroke.cap.2.html": [
-   "11a7cf3cfe2992fb7ead3f6e659253fe04ba24b8",
+   "82ad8d5de6b262143d5e08d20747eb1c61df5677",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.stroke.join.1.html": [
-   "d204874d70b7b31c5601aa0db06e21433768290e",
+   "2177a298b7cd80d487b0b6638a5e5bf953b1ea7d",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.stroke.join.2.html": [
-   "ccff894fd49b38fa21c5814762501dc4406b9552",
+   "20b2928aae15de4bc4c617331890de7c06bfe967",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.stroke.join.3.html": [
-   "25044ebfcedbb011ce54a1468eb16fd6725b2847",
+   "bcc549a031b7ee2c110e7dd8c87be4e1fd6ca30b",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.transform.1.html": [
-   "03a4ab2e466a6e9c828704b4670339244d7f22c8",
+   "4e02947da24b76ac249410861857cceb0dfb5b68",
    "testharness"
   ],
   "2dcontext/shadows/2d.shadow.transform.2.html": [
-   "8e1ac095b9743428a15d07515600ac1f72c7b3df",
+   "9cec8f705b826869fe52bd2571d99a574797ac3b",
    "testharness"
   ],
   "2dcontext/shadows/canvas_shadows_001.htm": [
@@ -333596,35 +333679,35 @@
    "testharness"
   ],
   "2dcontext/text-styles/2d.text.align.default.html": [
-   "6c3b5016aa32e9735b9b1f34cae1825de0821e6d",
+   "802fe2642432527d553f0b748f06c1f5307635de",
    "testharness"
   ],
   "2dcontext/text-styles/2d.text.align.invalid.html": [
-   "36d3aaaf4ef5ce93b9d51ce4b86a2b5369011024",
+   "e07a6a2c4b79e333e6e67f0c4061630277b9ff91",
    "testharness"
   ],
   "2dcontext/text-styles/2d.text.align.valid.html": [
-   "667f1bb0b69d50421b4601c5a5b904e244aa5b93",
+   "3497c1f0749e7d3fbe207f15f10d470927159447",
    "testharness"
   ],
   "2dcontext/text-styles/2d.text.baseline.default.html": [
-   "b19bcc37e71d108c0234613557ff049f7c1f127d",
+   "2734bd6d231a358648fe6c07ef172c3de9fa5e1b",
    "testharness"
   ],
   "2dcontext/text-styles/2d.text.baseline.invalid.html": [
-   "4cba62a14df3ac3726cccc7d0d4b5d87d58ba851",
+   "2e769d7082105d3695a7ea0c7af3c73bbc920bf4",
    "testharness"
   ],
   "2dcontext/text-styles/2d.text.baseline.valid.html": [
-   "e2a37b4ed09d1ef25118ffa05f78619642a66c95",
+   "4336d10cedb0acd8db9ee7bbf0803b040720ba4b",
    "testharness"
   ],
   "2dcontext/text-styles/2d.text.draw.baseline.alphabetic.html": [
-   "f070d0d5b7f3255802df2932716b40de46ec63e7",
+   "843a02393cccd3b4e9e5b8b5980e5bdc8a90cd39",
    "testharness"
   ],
   "2dcontext/text-styles/2d.text.draw.baseline.bottom.html": [
-   "3cff44d7a0c90c8ae01d367b66cbdc426cf86dde",
+   "4ad9437ab81913206f528a75ab19d42f2bc48897",
    "testharness"
   ],
   "2dcontext/text-styles/2d.text.draw.baseline.hanging-expected.txt": [
@@ -333632,7 +333715,7 @@
    "support"
   ],
   "2dcontext/text-styles/2d.text.draw.baseline.hanging.html": [
-   "58d14940c5dad119843ef494f102d56cea4a2496",
+   "4d1db3be7445a75d1e6bd5f5fe090bd5dd430e12",
    "testharness"
   ],
   "2dcontext/text-styles/2d.text.draw.baseline.ideographic-expected.txt": [
@@ -333640,15 +333723,15 @@
    "support"
   ],
   "2dcontext/text-styles/2d.text.draw.baseline.ideographic.html": [
-   "d2e8857b20f8aeafbc3e846c14533ed7a17b519e",
+   "a24850ade004deec61887b85f826b6f74f16df19",
    "testharness"
   ],
   "2dcontext/text-styles/2d.text.draw.baseline.middle.html": [
-   "b36135f593f7095f93afb2940ca15193790e4ff0",
+   "46195bb67ddece0fba3eece61f3763465d0024e8",
    "testharness"
   ],
   "2dcontext/text-styles/2d.text.draw.baseline.top.html": [
-   "5a5590136ca71585e2867095841329d18196ac8b",
+   "35c7bb5555e8049ae260983c41c3081504f585a1",
    "testharness"
   ],
   "2dcontext/text-styles/2d.text.draw.space.collapse.end-expected.txt": [
@@ -333656,7 +333739,7 @@
    "support"
   ],
   "2dcontext/text-styles/2d.text.draw.space.collapse.end.html": [
-   "dcfb04e68f653e2497ab86e4cdb3f5f496cd00c0",
+   "998f6075f7791b7088a5c4a0ba3abf07a12506e6",
    "testharness"
   ],
   "2dcontext/text-styles/2d.text.draw.space.collapse.other-expected.txt": [
@@ -333664,7 +333747,7 @@
    "support"
   ],
   "2dcontext/text-styles/2d.text.draw.space.collapse.other.html": [
-   "53cf30c4024e68ad7c78df1edfa5739e58b6f6e5",
+   "3557fbe8b42f2aef32beb09f7164fe530eeadf90",
    "testharness"
   ],
   "2dcontext/text-styles/2d.text.draw.space.collapse.space-expected.txt": [
@@ -333672,7 +333755,7 @@
    "support"
   ],
   "2dcontext/text-styles/2d.text.draw.space.collapse.space.html": [
-   "a460f6ef4ff1af3101274b133c1670e7f6429972",
+   "fec44386e1ae351c1a56be40d7688b44fb23f4d1",
    "testharness"
   ],
   "2dcontext/text-styles/2d.text.draw.space.collapse.start-expected.txt": [
@@ -333680,43 +333763,43 @@
    "support"
   ],
   "2dcontext/text-styles/2d.text.draw.space.collapse.start.html": [
-   "3e5b3da6a31343d40d06a6973e18a49250f6167c",
+   "fe16ffdbb9b4b22e00fde2a1a5d6d9677d55d370",
    "testharness"
   ],
   "2dcontext/text-styles/2d.text.font.default.html": [
-   "e7405e350daa6d439915568fcb60d3168b57f56e",
+   "7ce25ff44eb2617cb2f5ffbe45f9fab32ff242f4",
    "testharness"
   ],
   "2dcontext/text-styles/2d.text.font.parse.basic.html": [
-   "b4ae41cbcb72d66460cbc6020d895c60153409f7",
+   "6cf1c640e6323f9ef20270c9ad7ea99277d840cb",
    "testharness"
   ],
   "2dcontext/text-styles/2d.text.font.parse.complex.html": [
-   "51917f361819bf206d13f3deefabaef3ef824ad9",
+   "2f68aec790f6ef2e582dbe5a69a70d19bab5091d",
    "testharness"
   ],
   "2dcontext/text-styles/2d.text.font.parse.invalid.html": [
-   "f65d680b0e9f364e311fe658075bf186f09e37c2",
+   "0cb62e86318bc6cb80f1c417b5fc27e0d180def2",
    "testharness"
   ],
   "2dcontext/text-styles/2d.text.font.parse.size.percentage.default.html": [
-   "21eebde0f4badf196bf2b6a75bd17ff617a534c2",
+   "81ab8eb902fce3630299de3e9484870656937a8e",
    "testharness"
   ],
   "2dcontext/text-styles/2d.text.font.parse.size.percentage.html": [
-   "6a05e48cf4d48c583f3f1a9fc2b140f56a7ed65f",
+   "59a5b2538a3f58c6a9214c28076268efbcd081d2",
    "testharness"
   ],
   "2dcontext/text-styles/2d.text.font.parse.system.html": [
-   "bc86f5c15b916ce8667582bb95aee6944a55efb1",
+   "eebc4f83690d586af7430ac7332bb16cec8c860d",
    "testharness"
   ],
   "2dcontext/text-styles/2d.text.font.parse.tiny.html": [
-   "f668e8a4ccf7529182196faa6333935242b39e06",
+   "21d03ae904dadc4b5d6ce9ac2d5c9c4d8d124748",
    "testharness"
   ],
   "2dcontext/text-styles/2d.text.font.relative_size.html": [
-   "1c0f7bc2b2a10f9a58e175f594c313daccbf574a",
+   "47eb42334f6db42d01d8a1b14cb65328bae249c5",
    "testharness"
   ],
   "2dcontext/text-styles/2d.text.measure.width.space-expected.txt": [
@@ -333724,7 +333807,7 @@
    "support"
   ],
   "2dcontext/text-styles/2d.text.measure.width.space.html": [
-   "82a6118fee94967da02125a01bfd3611eb080eee",
+   "096fef4d34427872ae9f5a5e500b868e800464d5",
    "testharness"
   ],
   "2dcontext/text-styles/canvas_text_font_001-ref.htm": [
@@ -333736,27 +333819,27 @@
    "reftest"
   ],
   "2dcontext/the-canvas-state/2d.state.saverestore.bitmap.html": [
-   "d22720c09d9036682063944d4745ec62fee84aac",
+   "cd0f8217ab0773c37bbb36d4752c3669f71fbeb6",
    "testharness"
   ],
   "2dcontext/the-canvas-state/2d.state.saverestore.clip.html": [
-   "5f4d1ad35b94427c606510bcfb73a330f2c64064",
+   "d74af5c9a57b829c4604fb64648bf5e4c2d791e9",
    "testharness"
   ],
   "2dcontext/the-canvas-state/2d.state.saverestore.fillStyle.html": [
-   "a44f4f96aaaee74040e7dd86561456de2c22ccd7",
+   "6f94176fcd466ee807cfb80631620a963ae6add2",
    "testharness"
   ],
   "2dcontext/the-canvas-state/2d.state.saverestore.font.html": [
-   "287400646b26ff69d2e32d746eda0656dea36ecd",
+   "c6054e8e67712b79f1f21e8c93db120c9c78085d",
    "testharness"
   ],
   "2dcontext/the-canvas-state/2d.state.saverestore.globalAlpha.html": [
-   "27fc1aed884613583208ae48689d1dc11689b15b",
+   "c5bb6e7a6dd8490d2ad4d6a3f2c25a24cd4f71b3",
    "testharness"
   ],
   "2dcontext/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html": [
-   "419a96052dfca2b762cccf8a15ad7d76f3cb3166",
+   "75d7dd95c89df439be7dcce6479ae29ea30d87b5",
    "testharness"
   ],
   "2dcontext/the-canvas-state/2d.state.saverestore.imageSmoothingEnabled.html": [
@@ -333764,67 +333847,67 @@
    "testharness"
   ],
   "2dcontext/the-canvas-state/2d.state.saverestore.lineCap.html": [
-   "cb750219f780b47725397352af690291321f82f8",
+   "2c3c096b9b375a907fbb3e1d8538fd180a6492a2",
    "testharness"
   ],
   "2dcontext/the-canvas-state/2d.state.saverestore.lineJoin.html": [
-   "ff141126533d00f0d67126689c66a56de408638c",
+   "b20f22faad46ff38be20efc571df50fcf20bd3dc",
    "testharness"
   ],
   "2dcontext/the-canvas-state/2d.state.saverestore.lineWidth.html": [
-   "21bb266738fb3393d06c2c48fe2f3bcc20af2cb5",
+   "d9cdb459e073f47cfbeb85f3e406751c01a2a382",
    "testharness"
   ],
   "2dcontext/the-canvas-state/2d.state.saverestore.miterLimit.html": [
-   "f49edced102643c1762b9fd815ebf68cd22d33ca",
+   "20d74771b4356fc46bcaaaa1a5352b86ce953ed8",
    "testharness"
   ],
   "2dcontext/the-canvas-state/2d.state.saverestore.path.html": [
-   "b6f269c32ca445b471e1fb120301c0ea5575cdbb",
+   "79cde1cfee159865ae979fe71192aeb38be2180d",
    "testharness"
   ],
   "2dcontext/the-canvas-state/2d.state.saverestore.shadowBlur.html": [
-   "7f1ce6f9bb9bc90dfc75b565e8978981091e4e15",
+   "29c6b4cce161f16915f480a49db23e31ab6d6e17",
    "testharness"
   ],
   "2dcontext/the-canvas-state/2d.state.saverestore.shadowColor.html": [
-   "95c36dfad429ae7cacf61d374b18f476ba8d3ce9",
+   "36361fcd6f980a4cd2187bc8d875a780a21408dd",
    "testharness"
   ],
   "2dcontext/the-canvas-state/2d.state.saverestore.shadowOffsetX.html": [
-   "363d5cc245fe73e9913acfd0667892f33c60b153",
+   "9f318883b6561c811659c2d0afb9fbf025a4835a",
    "testharness"
   ],
   "2dcontext/the-canvas-state/2d.state.saverestore.shadowOffsetY.html": [
-   "5edb62a7acd7a07f58ca6f7df674a4554afeda5b",
+   "710a5a2b80190a55e68dc9fc255fa04e310e715f",
    "testharness"
   ],
   "2dcontext/the-canvas-state/2d.state.saverestore.stack.html": [
-   "3a5dbea108f3e070627286954968f35ac2560bcd",
+   "ad4611da5d0c5a8f609a38b8366398dd275d05ce",
    "testharness"
   ],
   "2dcontext/the-canvas-state/2d.state.saverestore.stackdepth.html": [
-   "5e6c459f3a797cb90780567b2bfb5632105a2502",
+   "79a6bd366d52ae1d443b7c75df7eaf0a0b9ddc7e",
    "testharness"
   ],
   "2dcontext/the-canvas-state/2d.state.saverestore.strokeStyle.html": [
-   "53a28f55559bc182a18084392de54ac3c261a729",
+   "61872dbc3227f0ef123d51f50a0ad8a471b55565",
    "testharness"
   ],
   "2dcontext/the-canvas-state/2d.state.saverestore.textAlign.html": [
-   "ea1b3f2e210779f4e6cb99e856b484f06340de52",
+   "9e8d7a0d18de46f58c15917f1e1b9e93e394cbe4",
    "testharness"
   ],
   "2dcontext/the-canvas-state/2d.state.saverestore.textBaseline.html": [
-   "22664ef1dc182760528fd01d7d08392ca5da758c",
+   "5ebe64fec4690d1f585aaf461a313aee1e30f963",
    "testharness"
   ],
   "2dcontext/the-canvas-state/2d.state.saverestore.transformation.html": [
-   "744f7ab7f2b8697bc2579a7f9b9150b3adefa203",
+   "cccb07971ea27aaf2fa9ec1e1dc037ac28ca7d0a",
    "testharness"
   ],
   "2dcontext/the-canvas-state/2d.state.saverestore.underflow.html": [
-   "c965b02566c3341c15f6680b7d8cc82c51109a6d",
+   "b35ed373fe242155baadc4854ca9119f53a690ab",
    "testharness"
   ],
   "2dcontext/the-canvas-state/canvas_state_restore_001-ref.htm": [
@@ -333856,7 +333939,7 @@
    "support"
   ],
   "2dcontext/tools/gentestutils.py": [
-   "5c8492e3caeb661aa5ee913950157178c4c534ee",
+   "1f6792d71b6b991d93e09c21783187a6b06a7708",
    "support"
   ],
   "2dcontext/tools/name2dir.yaml": [
@@ -333872,7 +333955,7 @@
    "support"
   ],
   "2dcontext/tools/templates.yaml": [
-   "a67f3aad40cd30bb772335c34833717a87d16b00",
+   "33665af1d3ed020fbe0158fae169e6dcc5f3f951",
    "support"
   ],
   "2dcontext/tools/tests.yaml": [
@@ -333888,91 +333971,91 @@
    "support"
   ],
   "2dcontext/transformations/2d.transformation.order.html": [
-   "8209ad66d42bfeaa51616425d687194f239eb372",
+   "df0ab55f7dc53ee76fee70b00bab17e23f47ce7e",
    "testharness"
   ],
   "2dcontext/transformations/2d.transformation.rotate.direction.html": [
-   "5113fa238274d08a5210580903cf18d358a54763",
+   "cefcbc31c49626313d128e2ec76a857b5200b3fc",
    "testharness"
   ],
   "2dcontext/transformations/2d.transformation.rotate.nonfinite.html": [
-   "1726dcf5b1bcbf3e598a92076f0dfd8520fc8f5c",
+   "87a9c85557593287743b3af16cceb6ee4c22bf9e",
    "testharness"
   ],
   "2dcontext/transformations/2d.transformation.rotate.radians.html": [
-   "8cfeb6fd17019d7eed14d4b7efed726df62aa317",
+   "96546cbd1c3f429649cfe4e98eb1f774c7a9edb4",
    "testharness"
   ],
   "2dcontext/transformations/2d.transformation.rotate.wrap.html": [
-   "fbfba2a291f4b1dd6f8004cbf48f1a7b66fcad4b",
+   "47ca44c0600cf9a428dc435507f67eff18a62c11",
    "testharness"
   ],
   "2dcontext/transformations/2d.transformation.rotate.wrapnegative.html": [
-   "a695e7b397b4636265e9ffae4cc80e8cc31b5e2a",
+   "a4958ac2395829cd6a2bf96ba4bf1d3d9a7dd2ab",
    "testharness"
   ],
   "2dcontext/transformations/2d.transformation.rotate.zero.html": [
-   "cd74260e7567d9ec34d6e232a7d5ffb329f42f76",
+   "ef2251a158c71c1bda26f556301cd26b56948070",
    "testharness"
   ],
   "2dcontext/transformations/2d.transformation.scale.basic.html": [
-   "a083a6514aee07246694dc755ff13f609bb91b86",
+   "5f3fbc5cd8569c93926557113e34f6f23275a34c",
    "testharness"
   ],
   "2dcontext/transformations/2d.transformation.scale.large.html": [
-   "926530d1f7e6e1a0c8d5becbbeef3ff51a724b93",
+   "fc01ce060177b0f9353a9727ef938498b645f41f",
    "testharness"
   ],
   "2dcontext/transformations/2d.transformation.scale.multiple.html": [
-   "9856798be910b93ee84066d188cb0e1a16955d73",
+   "39d7a950a57c3a9feaebd3cc8a25304840a710bb",
    "testharness"
   ],
   "2dcontext/transformations/2d.transformation.scale.negative.html": [
-   "af32851651d2fd3cc27716b9b20f849ac95366e5",
+   "967861d87a08bbcc7b174ac01c78125a66360a91",
    "testharness"
   ],
   "2dcontext/transformations/2d.transformation.scale.nonfinite.html": [
-   "b9788885f0d201e1edaa4629ef8e6f1a9bd3cf61",
+   "a14e505fe74ab2e27bcc329863063050f1f224bb",
    "testharness"
   ],
   "2dcontext/transformations/2d.transformation.scale.zero.html": [
-   "80e79a9882595f243486b8fbf6aaf7eb5376a425",
+   "5addfd3c017fe19a58e9149a2f55ee0a6dfe634f",
    "testharness"
   ],
   "2dcontext/transformations/2d.transformation.setTransform.multiple.html": [
-   "0e126566ecd49d29fa3901b72feca190b40f75f2",
+   "b2a2cdb5d09037e308e6d6e8543a4a414d6cdaa8",
    "testharness"
   ],
   "2dcontext/transformations/2d.transformation.setTransform.nonfinite.html": [
-   "4b5ebd6c7373926ca17aceff8f984c790057ea42",
+   "169d2f9bd75b48531de97cddb01f97981f10bcc0",
    "testharness"
   ],
   "2dcontext/transformations/2d.transformation.setTransform.skewed.html": [
-   "d411e544bbd7a5286216283ff08027fe7d73a347",
+   "caef4df684f5fdbe35fb4c4411f2105dbac81975",
    "testharness"
   ],
   "2dcontext/transformations/2d.transformation.transform.identity.html": [
-   "bf88557b93e59b56529514cc5fe545d7fe468c93",
+   "fe5a3d32185780b041d89d4229e2a7ecdf341bbd",
    "testharness"
   ],
   "2dcontext/transformations/2d.transformation.transform.multiply.html": [
-   "0313602abd8ecb1d757624c7fa44028e4d863cdf",
+   "3973713e53b1507fd150268ada03401fbbeef211",
    "testharness"
   ],
   "2dcontext/transformations/2d.transformation.transform.nonfinite.html": [
-   "1b12766cd741395de115e8de61d3ca04e1afdb73",
+   "311d7902a36f010dd533c60272f6c2ece01bde63",
    "testharness"
   ],
   "2dcontext/transformations/2d.transformation.transform.skewed.html": [
-   "cf723c7c202b64df60547b837b41c678975131b1",
+   "72c6b05eb5a4aa2beb04dae7e231d30ca78b7619",
    "testharness"
   ],
   "2dcontext/transformations/2d.transformation.translate.basic.html": [
-   "0238f8d0b005215a51d3123e6cb7deb33305695b",
+   "dd907f14d6756a17f129d363016102f7b6b35502",
    "testharness"
   ],
   "2dcontext/transformations/2d.transformation.translate.nonfinite.html": [
-   "d0ff4d7487c38c3f37e29aaa23523c95933f5d83",
+   "15a27776641b1828f5abdae8e0a3c66934294546",
    "testharness"
   ],
   "2dcontext/transformations/canvas_transformations_reset_001-ref.html": [
@@ -338819,46 +338902,6 @@
    "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
    "support"
   ],
-  "common/canvas-frame.css": [
-   "0c97a680d1846412a69b2ed65bdeb436d01fee2b",
-   "support"
-  ],
-  "common/canvas-frame.css.headers": [
-   "e13897f157263b83b2d69e3e187cb890ff394f6c",
-   "support"
-  ],
-  "common/canvas-index.css": [
-   "ef35864bc03faff124dbdcc8ce623217c2cd69a6",
-   "support"
-  ],
-  "common/canvas-index.css.headers": [
-   "e13897f157263b83b2d69e3e187cb890ff394f6c",
-   "support"
-  ],
-  "common/canvas-spec.css": [
-   "5882acb68ef3ef7e00cbea39d484c6fd0f1ab2d6",
-   "support"
-  ],
-  "common/canvas-spec.css.headers": [
-   "e13897f157263b83b2d69e3e187cb890ff394f6c",
-   "support"
-  ],
-  "common/canvas-tests.css": [
-   "e006e812de4dfb3f1024788e1473a7136d958395",
-   "support"
-  ],
-  "common/canvas-tests.css.headers": [
-   "e13897f157263b83b2d69e3e187cb890ff394f6c",
-   "support"
-  ],
-  "common/canvas-tests.js": [
-   "2d0397b42d2e74225099155d59d62adff9d74b2d",
-   "support"
-  ],
-  "common/canvas-tests.js.headers": [
-   "6805c323df5a975231648b830e33ce183c3cbbd3",
-   "support"
-  ],
   "common/domain-setter.sub.html": [
    "ad3b9f8b80847ff811aa8f3083dc9c5fcf221f05",
    "support"
@@ -338891,10 +338934,6 @@
    "6805c323df5a975231648b830e33ce183c3cbbd3",
    "support"
   ],
-  "common/namespaces.js": [
-   "741bdc1d88a133d756a73d26d2b823c6f4285bed",
-   "support"
-  ],
   "common/object-association.js": [
    "d58f94b62d652ad2879eb83821ba278b56006f7b",
    "support"
@@ -342391,16 +342430,8 @@
    "8a10e358ef6de72d5476ae8dc8a571482881d7ef",
    "testharness"
   ],
-  "cookie-store/idlharness.tentative.https.html": [
-   "fafe79ad57028a4e6505b8d6e6801a6525a2adf7",
-   "testharness"
-  ],
-  "cookie-store/idlharness_serviceworker.js": [
-   "1b28b2895f186fe79e5b5963c3a8aa2e5a8a7855",
-   "support"
-  ],
-  "cookie-store/idlharness_serviceworker.tentative.https.html": [
-   "845a9fdd7e05cba85bcb3e7714fb4a82cfd0d23c",
+  "cookie-store/idlharness.tentative.https.any.js": [
+   "0c7a5150237910b1af301f91f782f300c713071a",
    "testharness"
   ],
   "cookie-store/no_name_and_no_value.tentative.https.html": [
@@ -342431,6 +342462,10 @@
    "980347f1d185649ad4366f4d86fb03c030baa03f",
    "support"
   ],
+  "cookie-store/resources/empty_sw.js": [
+   "2b0ae226121503789d63d405670becb09e51b833",
+   "support"
+  ],
   "cookie-store/resources/helper_iframe.sub.html": [
    "8e91cb7bed48c44a7b5e0cbe98bd3c198b372269",
    "support"
@@ -452276,31 +452311,31 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/2d.canvas.readonly.html": [
-   "5e1c22d2da7792af0dbd2014aba2a3145ebbe17b",
+   "26c9d87ec678e60ea70f6a0846ac80ca0be2e6ac",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/2d.canvas.reference.html": [
-   "5bdb233f63d6282c18e4b595c3b4ffd0d9095a80",
+   "aeef27debb98346a7bd0262d36331b76524e7958",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/2d.getcontext.exists.html": [
-   "f8b768ad880a36910e2e3019ffe4446411b5d4d2",
+   "b680d6f68a839b1d8e7e3191ce133c06c30006a4",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/2d.getcontext.extraargs.html": [
-   "f58911d0401fe1b0838432ecf06d3b2b8a7937aa",
+   "8a409305c01dfbcad141451eb53ad0ef43a452d1",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/2d.getcontext.shared.html": [
-   "a678a135fda24fb27068078bfb51dcf07583d055",
+   "fc305c73f6e7d4f12bea0940cb958c1e78a57d93",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/2d.getcontext.unique.html": [
-   "d4d4a0d17ca5e73bf68f54d1e753b9b7fca2959b",
+   "b8c54c52d8fca9edfca068bb093d14429a499485",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/2d.scaled-manual.html": [
-   "6ea8ba4b9b70e9a3be1d82f2358e3d37a3cbec06",
+   "9f1a819832fa50dfd032ed5a6ca30aca28ec64aa",
    "manual"
   ],
   "html/semantics/embedded-content/the-canvas-element/2d.scaled.png": [
@@ -452308,59 +452343,59 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/2d.type.exists.html": [
-   "f29f139262371a44c34ce2cf6dc09df26299944a",
+   "84cbb54d1ea64f825bede12416ebc05e3575e084",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/2d.type.extend.html": [
-   "f4dfea879ee8b4b32512e2c55eb5d3f6f517146f",
+   "b088eb184e291799ddea17fdecf462d359e0e6e4",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/2d.type.prototype.html": [
-   "9888d7b6ab6263d05094ccabf29f796628fbc76d",
+   "f7e5cde6b6cdb4fa4067efcb07cabe32e688a3ea",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/2d.type.replace.html": [
-   "1e3337732e40d48560eaa9a9f05c24cb29346da7",
+   "9464cce12423c8cda2529d5525314f8a636c24aa",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/context.arguments.missing.html": [
-   "37ae4e80021857c83d9d4216dcf0ba3b5cdceba9",
+   "f1ef93b93acac6ab975d5363ee216308f90e9476",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/context.casesensitive.html": [
-   "5c64f7a04f1aa89fc98d7d12717a8d0492660dab",
+   "6d6b9b1398fe89c5458b230b53af4110406857d5",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/context.emptystring.html": [
-   "8f8b44a23e9b4b3a1576b95ca7df4e2e5c99b132",
+   "a121664fd6f8756810bf45b7c3b0b88b82854d51",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/context.unrecognised.badname.html": [
-   "75f4427745019fdf16aec5a3984e64d1d1e5a502",
+   "fae79b4a07a340f083fe5a8ec46dbef0cd0a0fc2",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/context.unrecognised.badsuffix.html": [
-   "2f65ae3c8ac3aa44ab5ff6ec170282fcc09acb21",
+   "2b4f2b267c91de05a9e3215a389c5ab1b754c6d1",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/context.unrecognised.nullsuffix.html": [
-   "1607fec86cf9dcccb590f09c669959506dade6be",
+   "ea2e292018c98ab83e34279c6ab2bbe7d056f63e",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/context.unrecognised.unicode.html": [
-   "c4eb943c2422cbc08d9b24f0aab5e97999ff0503",
+   "c62c887e467ce40e327bc3943ae447c46c532b24",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/fallback.basic.html": [
-   "0bae976e8248784838337a5fbb45727e76a0d8c8",
+   "8edb8d3ae8af5174f6e337d98b8c6011eda9ebcd",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/fallback.multiple.html": [
-   "5c89be51975f81b6d665c67eaa4c5e059d2cca89",
+   "b0fab0921334ef39a824c351c7c91801f9eb5bef",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/fallback.nested.html": [
-   "e84739c85e4bc383e155a6c064c7d15dc59ee975",
+   "05093c17f6dff751f7e3f289dc08f2fe4d4d93b3",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/historical.html": [
@@ -452376,7 +452411,7 @@
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/initial.colour.html": [
-   "f680d504c21f0d45fec183eea4f558928a5791f4",
+   "7b73b22b187d0590638912f169539e4c47bcfaba",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/initial.colour.png": [
@@ -452384,15 +452419,15 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/initial.reset.2dstate.html": [
-   "b51253a6eeaecf0a490baa65b561814e3a152ece",
+   "d1ddabce8bba1d9b087d1422fab573e32e148e1e",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/initial.reset.clip.html": [
-   "044ccc583886926c563639947100a051ccd4ffb1",
+   "736d7f54c01ac236faade6f14adc141103cc3cfb",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/initial.reset.different.html": [
-   "0d02f40d6f4218b5f8088fe9df445de67de04cc2",
+   "306c5ff78368d6e8eb802be1438c01c21670c200",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/initial.reset.different.png": [
@@ -452400,11 +452435,11 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/initial.reset.gradient.html": [
-   "a1a8516d3e76dce8391db807c5cda37f9b3d859a",
+   "29aac1745d559e067e16cb783fcfa87e049cefbf",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/initial.reset.path.html": [
-   "ab59ce9a11977a94dd5e161c3d660878ade3b387",
+   "6aa3941f7dcf454b63b62cc91887720ed4ac4503",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/initial.reset.path.png": [
@@ -452412,11 +452447,11 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/initial.reset.pattern.html": [
-   "f569d21f249ea30dcaffce1fba4d4b5b6afd427d",
+   "bbe8b0d758f5180d9575b3f645bb1fabc0ff6725",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/initial.reset.same.html": [
-   "b0bf73f8f2c9ae784aa620811e6d4f504062d2be",
+   "6d557ea52dedeb1e320903911106703608f3ddb1",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/initial.reset.same.png": [
@@ -452424,99 +452459,99 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/initial.reset.transform.html": [
-   "c5a92ca0f004ecb55cf48b72ab58919b1e58e73e",
+   "8f26384591483abcaa78312edf96ef97d5bad0d9",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/security.dataURI.html": [
-   "d130579150d402b91c8dcba2215f29a9a90a8ae1",
+   "16f97c168853e4b80d1038ae138dc589f5c18bc2",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/security.drawImage.canvas.cross.html": [
-   "ab9bc9f3b515e58bfa43b62b108837f9ec24e47e",
+   "2b237544c1913d86e33faec3e18201dd8bce36b1",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/security.drawImage.canvas.redirect.html": [
-   "114b78c56b4fe7a874011719f1b3d8569f92b972",
+   "9daa23bcc205abbc179dcff2332dad1dc3681518",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/security.drawImage.image.cross.html": [
-   "99789f8649a0e46175c0a73e5443bd3847c5a11a",
+   "4cccb91e8eaa6d0310d61ed67e934e79b4992d2c",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/security.drawImage.image.redirect.html": [
-   "29f33d8abce04571db6a163deaa8b3715ec4c9d0",
+   "349a52810e50eb0821f304f5759448949af8f281",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.fillStyle.cross.html": [
-   "aaa541a4f1070f6fce04c0d64678fb0717d26e7e",
+   "70a154fe9c839ef25d20e32ed30b429ad2be3c0c",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.fillStyle.redirect.html": [
-   "2d1b73eaa4fae1431d09798da3c9c3ec5835270d",
+   "4d0be3f84ec2ac18f6ab07dff9916a6572e0d5a9",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.strokeStyle.cross.html": [
-   "114799023fa3d8abfeddfe09376cc4075ef3d53f",
+   "8ec69ae14342947246fd31586e9685a97f4f08f3",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.strokeStyle.redirect.html": [
-   "eb919329bc18a0700c8b559608ad10dd69b4d06d",
+   "bb814e12c8f06088e56882c87ae32a234953457f",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.timing.cross.html": [
-   "338fdceae24aeb4ad49899fd99621f0ad09d0e74",
+   "55bd3fc75aecf9b7c7e1d22ece5368d3062cadff",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.timing.redirect.html": [
-   "806c48518fc679a9bf5d0ea067b05516c9b0330c",
+   "21956ca0d7120f2d7080e61ce7e94d5077cb5049",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/security.pattern.create.cross.html": [
-   "f686036879f9edd754954884349d7cb86269d8b4",
+   "b67d69551566cfb9fd44bcd9bea138d9630d9f4b",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/security.pattern.create.redirect.html": [
-   "2993d07022cfdae7ea7873ae87450c8f857f2777",
+   "db6ffbe0f5055d6689e0cbf0505c601c17855679",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/security.pattern.cross.cross.html": [
-   "16995eb5590c858e408379bd22edec741ec7d0c7",
+   "49d4d70beedd63dc86e140aeecd3fefd7ac383b2",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/security.pattern.cross.redirect.html": [
-   "a65ffb58aade9d962dd0986c62d0e7688dc92317",
+   "7d526ec3949910a9bab7ed3b44bd2d2327c59e18",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/security.pattern.fillStyle.sub.html": [
-   "debe014170dbd452ce994a6286ca11ab0e72adb1",
+   "6695138c57b6556d29fc6070efa5f1542f9fa3c1",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.cross.html": [
-   "cdba44b666c66b5a647c5780a2bfaccf7aa76887",
+   "28910edc431d8558d24882caf521bc9d19cbaaf2",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.redirect.html": [
-   "3f0bbf62609beee70a8a176796efcba14a9a5cc7",
+   "9ed99a7436af492f755de53c78d688a7bc2f1463",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/security.pattern.image.strokeStyle.cross.html": [
-   "51ab8d74b9e4a3e68221dc64becbdf08a331d04b",
+   "77749df2bda0e18c4ccf44b8a2197484b6812789",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/security.pattern.image.strokeStyle.redirect.html": [
-   "70a0267eb14cfe4e36e9d11b5f15b88b831767b1",
+   "c57a93038b6fb2c3408adc8a46b3461b90a229fc",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/security.reset.cross.html": [
-   "6d351925a77eb667d7b05ee614c1ef3ea68fc114",
+   "babde24c16905cfb59baf31e53f76c495343abf7",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/security.reset.redirect.html": [
-   "bca6b86c43efe7a4167db356b4754d091138a98c",
+   "b895f34621162acdd4f1b002b2178d68b7891e82",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.default.html": [
-   "004636d841ffb2e5324d10ff9dd6f663e18a56e3",
+   "7074280c7c508e4647f9b085669da1af5cb2f2f7",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.default.png": [
@@ -452528,15 +452563,15 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.idl.html": [
-   "cd6796e0724bf4152b837712fac1544643535925",
+   "7f1a1930d56acf44c3e0bfa7f8a58edd4c8f39c8",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.idl.set.zero.html": [
-   "a10ac5443c4b91e4241c807363144dc447559463",
+   "6df780ba770236f2375cbde099225f2c87435fa4",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.decimal.html": [
-   "ccf579e05b7266f9b0ab59933964d9eb6c86611d",
+   "1c4fe31917a1108df45885cf7dabb2f0673514b4",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.decimal.png": [
@@ -452544,7 +452579,7 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.em.html": [
-   "84614691a6bba326a7c6cf7dc6cc1ecfb3f67f44",
+   "00a80e58d0f6cf7362bc43beb0d8da9dfff56295",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.em.png": [
@@ -452552,7 +452587,7 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.empty.html": [
-   "04a19b44aeaa6d94c2f3f55c3df009cd4598f15a",
+   "348ef1de6c868a032de85d589356ca49d906bfe4",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.empty.png": [
@@ -452560,7 +452595,7 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.exp.html": [
-   "7a7c72692c60f4ae3adac076b8da86e0489d911a",
+   "f2293d65490ad7e0b005541fcdc4491dd95fcb25",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.exp.png": [
@@ -452568,11 +452603,11 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.hex.html": [
-   "7532d7753570b0a243513e5a691118b990c6164a",
+   "936db0e7b2b99d3141870d63a265cbcaf9b30fc1",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.junk.html": [
-   "8dca5ef3c6b7a8a30c2b65c2cefc38dba4903058",
+   "68b0190481453f593aa3baf822a04950a6f9946c",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.junk.png": [
@@ -452580,7 +452615,7 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.minus.html": [
-   "c901dffc508e6a49cb2c41481b395c5fbfa7d576",
+   "08b23746fd454a5159d6565f79be482c9ea725f9",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.minus.png": [
@@ -452588,7 +452623,7 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.octal.html": [
-   "efdcfeb3afe01646ce190b4d2395d89d505e66a2",
+   "8b039e24bc183c7dbcd94d1a778e55e37bd95310",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.octal.png": [
@@ -452596,7 +452631,7 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.onlyspace.html": [
-   "11948581ec02163df05312fecd407fa00c22d8f3",
+   "e459479e45da268660dd904ee4a3dad8ab661ec8",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.onlyspace.png": [
@@ -452604,7 +452639,7 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.percent.html": [
-   "9073424e282c94e7e3e4f741d47b1c1c8348aad9",
+   "9ded77d472cc937b1cd190d17e62a44c2568d769",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.percent.png": [
@@ -452612,7 +452647,7 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.plus.html": [
-   "816f381d40922ccc1a7f2aa29ef9c46ae58341f0",
+   "d08d68edcb67b039e292bff0f860bec578c95901",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.plus.png": [
@@ -452620,7 +452655,7 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.space.html": [
-   "417674d186ef6588a1077794f1ccb738a488e8df",
+   "c652f58daf7c6f6e303a5fbb3cf9832f59daf55f",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.space.png": [
@@ -452628,7 +452663,7 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.trailingjunk.html": [
-   "76c6db05f6fa66c6250444b9d395dcf396198c4d",
+   "08f0d75db5197d8c17875920ee73a8bb0501eb20",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.trailingjunk.png": [
@@ -452636,7 +452671,7 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.whitespace.html": [
-   "efb263eb8d53b137ae06ce6a26d7d918ed2842d9",
+   "06071198fea7efd09d6b143b2e9531d4a94a0806",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.whitespace.png": [
@@ -452644,11 +452679,11 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.parse.zero.html": [
-   "e42ebeb2424947203cb24aa98481aec97762511b",
+   "6463606e7db640fe4f3dee8df288a225c108493f",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.reflect.setcontent.html": [
-   "e77ca8ee0a872146a44c755602a8292b99854898",
+   "55dbd8669f8f8a609324d75681f1160437a3ddca",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.reflect.setcontent.png": [
@@ -452656,7 +452691,7 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.reflect.setidl.html": [
-   "15228829145f3b1f2632bd5f966a810bf476332f",
+   "d3ea2aa3bfbd2cbdabf161ac9265cfab7d00ee46",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.reflect.setidl.png": [
@@ -452664,11 +452699,11 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.reflect.setidlzero.html": [
-   "2bace5a3331b08a8b3d4183e95a9b14f61347f69",
+   "1a077d5784755d4ab46935294c50f672f8106315",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.removed.html": [
-   "58fb899e02a7145a0d6c5480ed4dceb3b3080617",
+   "b3db3be002261b242cd15cd4e5c0d64b46931d9a",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.removed.png": [
@@ -452680,7 +452715,7 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.decimal.html": [
-   "0f4fb69fa6fa94e0339c707e5a607ac975890306",
+   "fd962a4957309318a03673a4441ea1647158b5c1",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.decimal.png": [
@@ -452688,7 +452723,7 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.em.html": [
-   "5768d1727bd6c17bc87beccf4f82eb68cc01821b",
+   "fe6f15d5fbd0c179c2aef29de3d6ec56e57e99bb",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.em.png": [
@@ -452696,7 +452731,7 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.empty.html": [
-   "65a5bc0d916f8cb67969fcdd1c68950d02d78672",
+   "b8953849f330fecc28ae98e5fee0a2500d0fd5a3",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.empty.png": [
@@ -452704,7 +452739,7 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.exp.html": [
-   "673edad56b86e1e3b620143b399bfa848cd05bbb",
+   "4c4c41c9a10ce4b5006e3b0399cf470739d073ce",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.exp.png": [
@@ -452712,11 +452747,11 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.hex.html": [
-   "e6fde5329a8835670b2d7a3c8e02205c6eab8405",
+   "5376e913a9e9337b3fc498a508dfa8066d42eb36",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.junk.html": [
-   "77b50fd1101b37be785c588870de998de4d6b0b6",
+   "929967990184ba2776c18ef0b896577b6255c02e",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.junk.png": [
@@ -452724,7 +452759,7 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.minus.html": [
-   "2bb09bbf29a59da9c8a76d29d08245bb43ee37ac",
+   "8d0a00f55b986a75c65b46beaeb741acfe275358",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.minus.png": [
@@ -452732,7 +452767,7 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.octal.html": [
-   "a6cb6d37fb7cd4fca095aefebaec455479ca47cf",
+   "66775b847b6cfc8d95873e62c19aa8d0b973e16e",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.octal.png": [
@@ -452740,7 +452775,7 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.onlyspace.html": [
-   "5e2dd0c6cc14e213861137dcd0d0871d0f8da328",
+   "f0bb7788d61b7544f371ad0a50f9635c1ba80e87",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.onlyspace.png": [
@@ -452748,7 +452783,7 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.percent.html": [
-   "2a41c667e8286ebe229517148f4d9535622ca15b",
+   "48f1d7642e9c4fe64f89c9a5975b8fbb7db71c42",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.percent.png": [
@@ -452756,7 +452791,7 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.plus.html": [
-   "f384d82d30a44b2681c390c0c0b8d3e678668690",
+   "7862664ba4f59b49de3db81934a7b43ddb9c5cdb",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.plus.png": [
@@ -452764,7 +452799,7 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.space.html": [
-   "8f858527939c8d60d918b1f2d0cd14de1785f3e2",
+   "a66f783b5c3ab20aad056395c428e7afa8578dfd",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.space.png": [
@@ -452772,7 +452807,7 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.trailingjunk.html": [
-   "f6d06bab0122182f06b04fc0839ce404946960f1",
+   "a1806c551aadc0d9d00ce1f1f09458acdceadc4b",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.trailingjunk.png": [
@@ -452780,7 +452815,7 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.whitespace.html": [
-   "8a01f57ea5de049f9a73c01af3453a34eaf05422",
+   "28a3cdb1e248dc3b12c31d942a98dcb2352ac0fe",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.whitespace.png": [
@@ -452788,11 +452823,11 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.zero.html": [
-   "d1b05ad20965c711ee82a585857c8d0ed7e4b824",
+   "fd699006c023a72fdbbe4c2ae1ed962b3b3d4db1",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.style.html": [
-   "3bab3e79d109fdff3f3c04f2c237036ad463a13e",
+   "04b4731e5b1e46133899529e474efa5d399e286a",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/size.attributes.style.png": [
@@ -452804,7 +452839,7 @@
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toBlob.null.html": [
-   "b66153c3eed07d16dff19211931b6dac81dca483",
+   "188ea80d491fa22cd281d69a245a93a2a07db3dd",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toBlob.png.html": [
@@ -452812,27 +452847,27 @@
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.arguments.1.html": [
-   "969d4f538397b63589c3ef233190db72b97fa0ea",
+   "377a7fd11d0d9339de6673d573681d011eabff80",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.arguments.2.html": [
-   "3789466089366049333dd5eb38863386734d661a",
+   "b43e39df8b10c2d9be012ccc2b86165e66465fed",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.arguments.3.html": [
-   "236aba5ff8a8af188a769ad3b1729de7470751cf",
+   "ec180a41257164c5c21a24eb4eac893e4edad3e8",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.bogustype.html": [
-   "ade95f0ac41519ddbe65446176c42a788452da9c",
+   "fa651752e9e9cc3e1879cfdd44b21b80a5395ff2",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.default.html": [
-   "84f4c9ed4c652df34ff4b2753d512f6c862d842d",
+   "98762cfcaca63f4f7afaf92f1e371e06a9e01878",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.alpha.html": [
-   "80a2fca427d960e9a3aaf0ad1dc69d7807a777bf",
+   "64b29446e2ddc6363b443f7d033cb2f7d8ddf3ba",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.alpha.png": [
@@ -452840,7 +452875,7 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.primarycolours.html": [
-   "a896cbb5cc8160c5ccd959fd9796c55154ef806d",
+   "81ba4d50b4943cf81747b445462ec1f9d5ecbc6f",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.primarycolours.png": [
@@ -452848,7 +452883,7 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.quality.basic.html": [
-   "aad56cdd5c7e578c9f246373a4baa9297216ca05",
+   "f8f00ce415494c77856cd586c823af54c05a1c7f",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.quality.basic.png": [
@@ -452856,31 +452891,31 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.quality.notnumber.html": [
-   "3167e3c095db8a45b45902305316906eb0b9756a",
+   "87099da4d5d5a0c15fbfa11a14eeaaf5c314912f",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.quality.outsiderange.html": [
-   "885dc99b825440a58e475539105172265629f9e5",
+   "f924614925f4958bf5379e781455ea21580884ea",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.jpg.html": [
-   "df12aeebc03df0120b93e2144bab059726285394",
+   "9f8580826eaa3555035b79878e1fe574bf4d4d12",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.lowercase.ascii.html": [
-   "b95c8285b736e4e80886734d8a9f3466184b43ca",
+   "fbb9aed2138017f5da1b1744b216f270b23b6644",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.lowercase.unicode.html": [
-   "ab06d59ec7cb508d3880babb4825cfdaef707ebc",
+   "8dc8f75f3a12bdae0834a6b8a889d840fb72dd6f",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.nocontext.html": [
-   "fb614a39cba3f86113889c864d0086751f0116a0",
+   "6f864ad08f9352b6031ee13c2bd03dd35c6d47de",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.png.complexcolours.html": [
-   "cc067b737a625ede3b92c514cfc9a12f3419e99f",
+   "e04252a3c0d3c990226f0c672d5be624a2704594",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.png.complexcolours.png": [
@@ -452888,11 +452923,11 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.png.html": [
-   "39917eb234fb2e3298cfd11f4a6336647e588ffe",
+   "46dbef92758f32c6d1d544f2b4a49f58b2aa4dff",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.png.primarycolours.html": [
-   "b962821d7711748fc089c8ab16f5933cdeb02517",
+   "f192ababfd8872afab507f31901fd2e8ed5ab1f5",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.png.primarycolours.png": [
@@ -452900,43 +452935,43 @@
    "support"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.unrecognised.html": [
-   "3526cc3a2b3be1805c8623da909c5229f96a9d86",
+   "12e03219f9001a750b668fd70b42021885a34185",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.zeroheight.html": [
-   "04c11321645f978f4fff26a99d6b64fb809c2750",
+   "cda2744030a8f2da389b7547ba7eaef4f62d1ea7",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.zerosize.html": [
-   "7d2913d020eb8be54e6003b7019e969727c7cc4d",
+   "1b0c5de3c6dffd11f2c82119ce82f07323cc9a49",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/toDataURL.zerowidth.html": [
-   "d4020aa51a5d5d2f2ed67b93ff4fd6952b5489d8",
+   "06b24e1bfe5bfc263aa2a9945cb4e67d61972dc5",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/type.delete.html": [
-   "98b67b909bb2fbe8e6d6907643e31ba048f9db0e",
+   "6a35f1fcd6e9a30c69dccf5283b624572e2dfd6a",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/type.exists.html": [
-   "04aa975707a8427b2738a40ca0b042252859fc2c",
+   "fff6b0719d1e52a6c636ead1b117f9aedaf6ab92",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/type.extend.html": [
-   "572273083dca150c6eae34c4f9f7fb61fb1072fe",
+   "fcc49abe317fa1348a12e4573047d7b9c3dc1b34",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/type.name.html": [
-   "a514effaa9cf248e5ea2a153980101ffd7e36d17",
+   "365b1d533f5808194296ac02ebbbf08acc80c0a8",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/type.prototype.html": [
-   "029a9fbbd697267af26675c80bca4c9b7f2e511e",
+   "7427ac5dda778cfafd84964bbf6723bc611c6eb6",
    "testharness"
   ],
   "html/semantics/embedded-content/the-canvas-element/type.replace.html": [
-   "70a08066e3eca7435669ef78325dbe38fe4557c5",
+   "9059140fc3f0bc1bc04232c683f6eceb8c61b709",
    "testharness"
   ],
   "html/semantics/embedded-content/the-embed-element/document-getters-return-null-for-cross-origin.html": [
@@ -468948,2947 +468983,2947 @@
    "support"
   ],
   "offscreen-canvas/compositing/2d.composite.canvas.copy.html": [
-   "bc2ed9cee5efe5dcb9e5079901ec3851a27db610",
+   "2e3d0c998725bde2b28a08c4f547020f9dd9d1c8",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.canvas.copy.worker.js": [
-   "35dd3d9facf9d0788f9ad45ee2d3a5c460fb66b8",
+   "89e2328ae935a982d87270e8638d1876edd4fd23",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.canvas.destination-atop.html": [
-   "c36b232b6dd0090a21231dd82e52bc14c27b53f8",
+   "aaef24f23ba19ba2c2e9830e815021db9251fe5f",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.canvas.destination-atop.worker.js": [
-   "17181cb4224704f16f8f263de713f6fde796c480",
+   "0b1ac5cca6ae1e5ec43441aa1a22cb1c4e0ba4f1",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.canvas.destination-in.html": [
-   "f7249e4042018e22c8876ce19bff1a345be70d20",
+   "b9b2d6bde25f99ccb0a63e337b249a5336d1d301",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.canvas.destination-in.worker.js": [
-   "12504f950a75042192a960226cee516c8c0a6c29",
+   "45ba1a78293358aa885dd54e04f51b2f264cd918",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.canvas.destination-out.html": [
-   "454cf7544ac93cb8aabd9b8152063e904818f58b",
+   "3e20486f5791de3571b638e0bd49ab7d8999887d",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.canvas.destination-out.worker.js": [
-   "ed8835bf6e3b262bb7e32e67cef8c55338a63ad7",
+   "995369115e2b1ff464faf09a9a0bfb98fc22c9ed",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.canvas.destination-over.html": [
-   "872bfe08c8ce29caa88d43ab356b815cd3284279",
+   "abf90de0234106ef0e78725ec4543735be33888d",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.canvas.destination-over.worker.js": [
-   "8d350c5de900e0437bd80288aac444de4c25d378",
+   "df2d2ba93c14e4bf47ec7a56597b56da34d53faf",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.canvas.lighter.html": [
-   "781b6c1deefcb4a2252eee14993333fed72ad0cb",
+   "bceccf77512abd81ff7c556cad8b3893f947e31f",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.canvas.lighter.worker.js": [
-   "060c6a3ffa339b95c584f92f4e4d490df4504d8e",
+   "85d813da363b56e21150f906888eb20e726e669d",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.canvas.source-atop.html": [
-   "22eedc0812033a1ffef1ffea3d7b2fe536565b14",
+   "04c9d002b5d75cbee974f8ea136fc78b55ec5d54",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.canvas.source-atop.worker.js": [
-   "0005bca4c376ad34333fce0e191bfbdb4283b2f4",
+   "97ee55b20fc576226ccfeccbd240b7e319e56788",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.canvas.source-in.html": [
-   "564b864457b123614fd07e83b0adb7afd68982ea",
+   "61c96a3e8a2dccaae2ba1841af8cdc785d6fd786",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.canvas.source-in.worker.js": [
-   "82a508e7525fb3023a01a679738e16c8c5d88601",
+   "4699b7815ecc6da4ad61b6e351187db8aa2e26a3",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.canvas.source-out.html": [
-   "431d6bcf18e28f8419ed26322d84b6460bc745e6",
+   "fe6419237dab6e3f3ced9e4cc16dc06b83e19df2",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.canvas.source-out.worker.js": [
-   "ce16d3bc6a62e095e0a538ddcbfff9f1952525ec",
+   "9e6394d0fc7fe8de002880e9160f0eed07d9741d",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.canvas.source-over.html": [
-   "123aa5e64d6dcc0006de5d465ba5c93344d23fb0",
+   "0a049e262b12c69667869c050abe692f3510664a",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.canvas.source-over.worker.js": [
-   "b5dcfff3cd5589aa5263f655ce6f380c5094318f",
+   "9bde016866d058f45286ecd2a79f6d6e1024f96a",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.canvas.xor.html": [
-   "49ae6c08c68ecc1658a05841ac3102fd415d1cd1",
+   "0b719cea313749efe84e56eb21c312a134d59fbe",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.canvas.xor.worker.js": [
-   "f3d50255ac594f11a6d51aec9e699b9fffc15a2f",
+   "d22235d8c57a84d74914e7e536e6e634b5da21c9",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.clip.copy.html": [
-   "4761b047a68bd5534a01c3edf6a3e3f827599e85",
+   "5c9a8ab52402ad0a2641e81db81e30057259d832",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.clip.copy.worker.js": [
-   "fc4a4cb58d111880d3cd220966d067425f64d949",
+   "ed5c04321b7b4313ecd755f8cf743ab774ef822f",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.clip.destination-atop.html": [
-   "aa863d15c76171e3b0e165d03d5437afcd207ca5",
+   "a709a5f40ae7f7e8f7d4db22a7f67fed4f2d6524",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.clip.destination-atop.worker.js": [
-   "6c5807889ed5c8da002eb51a274f4e216a1183e2",
+   "0889147f69d42fc15c14f39c76f9fa358778be04",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.clip.destination-in.html": [
-   "3bde3ff7c5fd7518fecaffa11076007bf83f69f9",
+   "d15a40c2734dd0a0f4aee7a12952a66ff43798ff",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.clip.destination-in.worker.js": [
-   "bccf3a8869ae0d5050199e51d4d67d57b3c6e566",
+   "ae8ba85cd36d671d7a87c5cbcc6184c08c72b1c7",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.clip.destination-out.html": [
-   "5ded0b361542e1514c7fcd76a97766ef33b276e6",
+   "e4fc3c8c502aa7cefa3335f2642178a099e4c9fb",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.clip.destination-out.worker.js": [
-   "fee113a1c610a29100eb5faaa8bfc4b9cf10861c",
+   "73632f52776dc91212d6510cdfe7a4383348eaae",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.clip.destination-over.html": [
-   "4776e0e2160f420cf5b13bbc0f77628b3ebafc72",
+   "bb344369d6556f74605a6763920d5792a31ef2c6",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.clip.destination-over.worker.js": [
-   "5116844113d3b6719c97b2ec704eb3ab653d86c0",
+   "1c623febc34f6b51d55416992a2f1430ce57428a",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.clip.lighter.html": [
-   "bf1cd8bb1b42f53b3e8c0ba04049c20c7f93cd1a",
+   "5f6ed79c5669ede6c234f1b5213aef659474096f",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.clip.lighter.worker.js": [
-   "e9e9fc9cd638cde9e7e8b9690c485487565cb64e",
+   "1e04a502ecfbea677b4b0cdbaeca1867b0e9e09d",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.clip.source-atop.html": [
-   "3a0f0df5de6c6ad9540c203891286c7706877656",
+   "80bd52258364c0dbba37fb0bc3271f6863272094",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.clip.source-atop.worker.js": [
-   "a6e0fdcf8284b3e36ee260e9c994efc86e585ecb",
+   "f42cd0e3b68eee8a21d81f20acc08d6347fd6dc1",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.clip.source-in.html": [
-   "15e0aee553277fee8980c68bb6208de74b64b11c",
+   "ed7e89a79b13d78aa910ea56a44ede59db5eb036",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.clip.source-in.worker.js": [
-   "6b520c1b39277638ffd8dd0816a48373bd48492b",
+   "b4455821badcdc639ad2380975398b8bfb65d9a8",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.clip.source-out.html": [
-   "97de42d9ba332227f14a94c6a0a3248bfdf467ef",
+   "ff480843f0f1e1565b329fc847c2c115cd9d53b5",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.clip.source-out.worker.js": [
-   "72a8f2911bb7ddc6be9e75505f3956d678ac3b48",
+   "5d51255ac51e827ffb27e3a0c82fa3eb7368d7bb",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.clip.source-over.html": [
-   "9ac231d6a458c9257f2c70aa6378fb525f1df6d1",
+   "08bce563a927ca2737e70614a8d4b26bbc95f51e",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.clip.source-over.worker.js": [
-   "a594626651469a18e68c093736b0dab327599fba",
+   "79b67d899175fcc2907868a86ece619e93ec7d41",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.clip.xor.html": [
-   "fb99584888c137defca9ae80d4466a826a03423e",
+   "6f65ca6f0b84e405535af2da2bb51916cba4c17e",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.clip.xor.worker.js": [
-   "629968029a03e6a84c65e495c208dcf1c0589abb",
+   "8c4f98d2bed31a35360728211a4c7f1669fc9c6d",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.globalAlpha.canvas.html": [
-   "0ccfea9a6ed5de28e690a6cfc8559af92ff0c1f9",
+   "f9263c9ffe891a2e6a49767b612afd2e95c98274",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.globalAlpha.canvas.worker.js": [
-   "ab8a6424acde69af39b532188f61c93aefb429d5",
+   "0e1b75d179273a58266727bc3cff6b3ce04ad6ae",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.globalAlpha.canvascopy.html": [
-   "f797c6376498820289e23ffeffc0280e77d1d2cd",
+   "e14bdd3975458b01d8e721d0d3edba2b96fe8c03",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.globalAlpha.canvascopy.worker.js": [
-   "bc8daaf91adce9e9488b0c95ac66ed103244b7f4",
+   "6c10209288649d5a862cbf5192fff7fb1fc43dcf",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.globalAlpha.canvaspattern.html": [
-   "ea6c5ac2d686b0539b22cc054f4cb33ddfd9b2cd",
+   "b38efda6cba703969ce21e154fbd1fdbc4e587af",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.globalAlpha.canvaspattern.worker.js": [
-   "08b5d6ad9dbdcb4562eef7c53b2f76b1db46f55d",
+   "47229cf99bbe240524f5129fa00eeee9567f8d37",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.globalAlpha.default.html": [
-   "6a15c0c8978809bea10ab77b7a649e94260a1418",
+   "d3d9e49269ca0e1961d10b19314b6f392c0b867b",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.globalAlpha.default.worker.js": [
-   "c961928284e5f41d6c8083ce7c9f6d2de3defc25",
+   "f68310dc1fb1be68f98782886d744732f387428a",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.globalAlpha.fill.html": [
-   "13acdaffff5e3f3887cdd479e571a7928955af3c",
+   "ad9ffcb4391373bffd3f57fb4829336af4d05a55",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.globalAlpha.fill.worker.js": [
-   "d2fbf0827b4b08a31d0b83c270ce6a8cb2596ec1",
+   "e3d15e755cce0d66b33fe92a4eb774d731fcec5c",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.globalAlpha.image.html": [
-   "f24e06a08e4a413c7ba68551dd90699017188f58",
+   "ad1c1dae6f33b30e51a7fa88a2cc6a0ce49f587f",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.globalAlpha.image.worker.js": [
-   "4974687e8d2bb6780a268da76af58ade3ef47936",
+   "a6e2be4522530e52043aa6f7dc188afa6d2fd2e9",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.globalAlpha.imagepattern.html": [
-   "33fa23a8f97bca707b7a45052090175b88b6d366",
+   "283f5831acdb3ece7e7861594e0e65ab15e04106",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.globalAlpha.imagepattern.worker.js": [
-   "d805f69f47cf646caabe44fa921907869cb94674",
+   "ae0547b5ade6a03490d67d4fb70991a5ee4e2c51",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.globalAlpha.invalid.html": [
-   "f422cfea233bf6c27a77214a26ce8971b82de91f",
+   "5ddb6d0caff7f7ef541a035aa112b8d09aa0706b",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.globalAlpha.invalid.worker.js": [
-   "095b9446b7f5a17d67e9dcc0a94fa16364b6437b",
+   "6bfcabb3742e840d66b9c2444c3b896dc309bffb",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.globalAlpha.range.html": [
-   "bde15e2d8c768c76b327a1ee89016fa440d656fc",
+   "957df9b5c1ec5f6aac43aece603371f6f320c332",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.globalAlpha.range.worker.js": [
-   "f38ee56f9a7e9db69a95b9797eb72c2ec818c2e8",
+   "235fb7bd2aa600e2a3d35bdf9fde0e1b42c02a02",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.image.copy.html": [
-   "3001aa1c491b6976f0a522a1dcb5939b7df969ae",
+   "370b31601eb710e4f78128fc4006728136af85fc",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.image.copy.worker.js": [
-   "0476e3a1149c80687990efb4d03dca90bee9207d",
+   "b982ff537aa85170dfb7df171cd2fefa059a8145",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.image.destination-atop.html": [
-   "2b18c36c710ca37efa433702a888114b452cd963",
+   "618a279657a0a0fdc708399907c0827d88058a01",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.image.destination-atop.worker.js": [
-   "b5870047a2b25dfaaa2143dd9591759f6b8f76ff",
+   "e1be28b69bd7a9396263971f3d50df351dcb4702",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.image.destination-in.html": [
-   "cfde801496f4f3770f39fda5a397faf3f97bd5aa",
+   "6f197c961c926e1010a0ea9dc56c98849ddd70db",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.image.destination-in.worker.js": [
-   "eff6475a5dab9e41fd6051d183b260236d3f78f9",
+   "749780e0247a6ef67f8aae02cfbdfb9f3ac14d73",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.image.destination-out.html": [
-   "1f705119adb47dad2f29827727a471313058cb5c",
+   "c39f8c1e3739dbc1c77d7fbd66eb979aeac87328",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.image.destination-out.worker.js": [
-   "fda73d92fc2e8508ba683ca805beacd7fe862bc3",
+   "a68cc6f014f2f3667d202ea923c4eb156fc6d12e",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.image.destination-over.html": [
-   "1b21d2d9f53e82cc937b910de9f1d1360f146937",
+   "41dd506b84421899c347987d4a96ac5711393ab5",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.image.destination-over.worker.js": [
-   "620911dd4f0525ea71aae847453aa1bd8d8f6d9c",
+   "059b61b53e326b8f5d1c23508687737c4777ee83",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.image.lighter.html": [
-   "f898e447624a89434c63167c56b2af742a222f7d",
+   "a9b4aa9e37d5fb7022fdc3794825331e54bc33d5",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.image.lighter.worker.js": [
-   "574de5c34085f842b8ceec877b1d4e9325e45ce3",
+   "10d7df9c69601d8d570fa7f14aaa86a3ea64d26d",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.image.source-atop.html": [
-   "012d8920159560e10a8114b7c3299a80028f6aa7",
+   "9ca0ed6f12e5eb0b0326222407ace630044f0d49",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.image.source-atop.worker.js": [
-   "b159a7d0a5c0d40c53493fb37848aced467c56a1",
+   "b270ccf4f33ea25dda463f2874a298be490dc0fc",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.image.source-in.html": [
-   "f41fc4aa10dc9951064d5bb5d4ce4a4b2b022131",
+   "7b40b06b239b8f9730c8dd1e6b01d8be2c8ddc8b",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.image.source-in.worker.js": [
-   "789fcb9039d8a16a4b2b3e9889b6619deab9130a",
+   "de4ed372db44d774e75fad722fc8ded297182926",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.image.source-out.html": [
-   "91860e7879566f908e6402b2652b26c1617a10c7",
+   "690f922b0f89beb3dedd1ba9215bf05facb52c2f",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.image.source-out.worker.js": [
-   "583d2222e7be8fff52753d6cb4e208232ce71143",
+   "e6316cfc8d2208fed80937ecc8f106df0d32bcfb",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.image.source-over.html": [
-   "b8e52cac0ad10aa30b6927b1bec1a4e275b8510d",
+   "a384d623fa4b1a52eb43427442388c8102ae0adc",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.image.source-over.worker.js": [
-   "b459339e4fd6e21460cecbb61603f6b9c084387f",
+   "0ab6fc00a42f731c3acbfbec40a0170723d191f3",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.image.xor.html": [
-   "d050711da1eeaec7e8e6655a38dadb4bba73b93b",
+   "896061f3b8eb38e9d61829b3656dbf8b70530660",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.image.xor.worker.js": [
-   "bd77785b55880330b6eb3b6bdd2427eeba900798",
+   "717e42e808517dc9d589f3f431d266a53d71af00",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.operation.casesensitive.html": [
-   "7c7016e4de47f16592c1c61b511d79e8e0191398",
+   "f0a2eb6b3a70e33bee086ab14f4569c9ced487c3",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.operation.casesensitive.worker.js": [
-   "091dfd61bbf79b81bef29933242fb3fe7e00eb2f",
+   "32014ffe074d702fba632b39c4a7682c9e050317",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.operation.clear.html": [
-   "cb15204ac61e94e60e900e71a800712c8294dbff",
+   "9c80b14de401834cbc7db5b2c2b60731d86d86a2",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.operation.clear.worker.js": [
-   "1efd1494e608489f4cfe36b70cddbd58987e54c4",
+   "a5a2c51f6cdb699e64e1537844ce07a4feab0500",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.operation.darker.html": [
-   "1f4cfb07a65a085a54da82142ca58914abf6430d",
+   "572178b0018353cfc211e33c95ef8e8d643fae84",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.operation.darker.worker.js": [
-   "2b282f5640a34d44e13710241cf0029d0b0fa700",
+   "64ee8fc062c3ca8d5f58c9afab493084d712d33d",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.operation.default.html": [
-   "b114e149479c4bf9e2003d8ae6b3e3058be03be4",
+   "6bdf2622fb56314b84a1f3e0a57b2ee8f9670c04",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.operation.default.worker.js": [
-   "906f1bb3390ddc842fc0bd558d1edd68ed6884c7",
+   "768e79b8a27dca18fc205e8f40aa0851127c666a",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.operation.get.html": [
-   "e3c8f9ee2fb20db9e59d95d83c51f66d95c9a735",
+   "ec7c85fdddc4cefe4e9a96e7d1f70a5a736d2e85",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.operation.get.worker.js": [
-   "2dd50fa6d975ac5b08dfcd479d2d765d275d3150",
+   "065ce8593302c15e9c161f8f4fca5db94398be8b",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.operation.highlight.html": [
-   "1bfdb3b1657c3cccdc5f4ff308626e44087b6583",
+   "78ca4c87d2d0b6e037afdb23f22ddc520117fd99",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.operation.highlight.worker.js": [
-   "fac64fce135442cb037e0059ebc807369c464ff1",
+   "549cfe1fda670108c1de28ad4f9feeea11a52789",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.operation.nullsuffix.html": [
-   "7e1d65c33b6257c268083822e2edbeca0b61b9db",
+   "5fc50ff4003e0078d738ee26bc3ce8e9a9bebb0c",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.operation.nullsuffix.worker.js": [
-   "831f947741887db841d57654773261a44c1bf594",
+   "f3e4d79107fd848b3b7a8d4fd1d5ffdc9f85ae90",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.operation.over.html": [
-   "71a34454bbf008f953f2f01b25f0a8515b9ab318",
+   "2040c8f645c15adc670433a5932b99367f95dec8",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.operation.over.worker.js": [
-   "89c26345f3c2fbeb0df657b1a895325d8c2ce43f",
+   "f4cceea613ec685bddfe47c9ce0f526aa82ff8f4",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.operation.unrecognised.html": [
-   "36e990ff05d62db1b67f738c8464b08848ec612e",
+   "7d736b9d159deb7eebb377248c1999e9633d356d",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.operation.unrecognised.worker.js": [
-   "5980d166a0eb0f2658159780812924d7eb8a912c",
+   "9b36e731dc474eea7081166322c8014e28ae0b8e",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.solid.copy.html": [
-   "98fd5d224647dfbc8657a4270f5c418d132bc974",
+   "02c34f08d261999e9b1dabdefdb4026055fe7b91",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.solid.copy.worker.js": [
-   "41249671365577d87189844636c6b5962d50d529",
+   "26f7749bbac555cbc5addfab98610e24968be695",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.solid.destination-atop.html": [
-   "a3b645f9d5b47e17793df93756d68ec9d0562b13",
+   "17171240df11bf048ef62c502b44544ee6cc8cf9",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.solid.destination-atop.worker.js": [
-   "bb2bf5a316944d63ee39f37226f95fc2e57ec3ed",
+   "7ca89e4587810606858c2de0f35dafb94654c9aa",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.solid.destination-in.html": [
-   "40dbb4c7f067ad57aa59947b28930fcfb63f931f",
+   "182e2b882a7f818d014a58e6d268ff0c6c11a54b",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.solid.destination-in.worker.js": [
-   "b54208f66ceba5d597ccf842adfe193a0d447d90",
+   "086e51ec1935d99a86c3ff235651194e2f632b2c",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.solid.destination-out.html": [
-   "62171ecac9ece8f0c5b2dc447be1bba09fd34b9d",
+   "90aac468cb1084f0e7bdef57605689f1cba4cc63",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.solid.destination-out.worker.js": [
-   "fbcd75d61a8e365013da470eabfe5bc36f22ef8e",
+   "3ee4417205abc5c10c14737ee46ecdefc54e9c75",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.solid.destination-over.html": [
-   "14669d6ba4b09222e489f8c360017e95e2dea817",
+   "044142b9ad326a38235af65bcb1e2ac1a6b48e37",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.solid.destination-over.worker.js": [
-   "76d0df25834fe2b74a2aa0345cd11af7bc7ce65f",
+   "2a19cf9d933eaaf155d01ea29ea00d84ff50f20b",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.solid.lighter.html": [
-   "af7572a0d95d5aa5215c99a6aab50c8db942f160",
+   "5ea174083ff1e8a988de4959328a23914bae8798",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.solid.lighter.worker.js": [
-   "344a5a3b74bea277fafe6a4711b58abe57ce5447",
+   "73839b745a22e1fed4f1b0de9236fc8a0fdac2bd",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.solid.source-atop.html": [
-   "082d4215a4d1856bb60ea51bbc5fae3e75720789",
+   "734236c993749e497d5ebf208a9e8a15bcf79170",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.solid.source-atop.worker.js": [
-   "c2d0f0e12c3ae0765db0e56435473ed9c5228bf8",
+   "cf7f9944cf77b3c624c49d9c6f1de21b281a910d",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.solid.source-in.html": [
-   "c3552686b32cb1c2fe922e89a6eef83333841325",
+   "19d11b2477b48752cdf526709561b2d943eb6d35",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.solid.source-in.worker.js": [
-   "de94d1eea3e2be667e1cc2426b84391372b3dde7",
+   "32e5295f1132c6f666ba6fe21ea5ce8039a43627",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.solid.source-out.html": [
-   "89fccfebcd7dbeedd707f55244221835617b5e31",
+   "a7bb00e17b54352fd246e3ac49b30ac19c8199d5",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.solid.source-out.worker.js": [
-   "76e6adc174a2de491c4222fcb1bacee1115e4de2",
+   "21d4a1c9e3b03369562c28450f5588d6cbcc1c63",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.solid.source-over.html": [
-   "de2206f54eb36cf77f612a6daa524b4988df0f4e",
+   "5b005ba4e842af0168bb0e0eb4f0ca935ef96546",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.solid.source-over.worker.js": [
-   "edbd628a22c58aa7d5c2aef0aebf9b5a08cb5058",
+   "ea3c26818b136b23156d0bca144337f1e886a67d",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.solid.xor.html": [
-   "8d48ff8dbefedfd32f4ede2eab6e57a1e969cd05",
+   "438fb71767b5425b61eb574b7e17ae545115d0d1",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.solid.xor.worker.js": [
-   "a24595171d9d9db974e78d613850e083aaa62eaa",
+   "c518948cb9056351f076a8300a565596a1f25cf9",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.transparent.copy.html": [
-   "cf256a9d04a70d80d6a459574881b38cb9e6aa04",
+   "b0aacaf2a6b91402a41bd0e58a6053c4c43dedb5",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.transparent.copy.worker.js": [
-   "8fb35ab43c200e23f2cbc1720582074266ee7022",
+   "5d8643ebca36036f509024feef7c1116e2486ed4",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.transparent.destination-atop.html": [
-   "04bfca5e68074d02b7a82d1f1a0f930bb534e9b4",
+   "f8615d4f1aa4a20d30bf1f3cb7bda2eb504b8f7a",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.transparent.destination-atop.worker.js": [
-   "bc036b225ab1ee08cac680a5f1a7e54987d51c7d",
+   "df4180453002a4eb12195dff9f1d21cd9f7a7220",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.transparent.destination-in.html": [
-   "e429c2bdeafb39293a545f314cc641095ebce941",
+   "2b30d98af356667b49f1b4f577e54926b248fe7d",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.transparent.destination-in.worker.js": [
-   "f9ee6d213ab453cc88ffb8d63f6b391279de32f8",
+   "0b78e0c24472aa75bc28b95e8fcd57531ec7563d",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.transparent.destination-out.html": [
-   "a80a3a91728895f274fd3498386e4f20c572e214",
+   "ad90c7b45191844aa4a26b8bb7d026f11838b04b",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.transparent.destination-out.worker.js": [
-   "f61ac0fd7df5d3d0e104a70b199ce797f094bbd3",
+   "a9e240ed0611ec1b8e132a8490178a344446930c",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.transparent.destination-over.html": [
-   "87adccf59a2ddcf60325db5f7e0ec9589cffa04c",
+   "8c2107dd660abfb093378b4bd6f81f2a8df8daa3",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.transparent.destination-over.worker.js": [
-   "1160e73d84496ae094df07d6c89dd8f0f00d2bd8",
+   "a78c609bc985bd6e72cb5f4794864c4fe92a2753",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.transparent.lighter.html": [
-   "9ae5ddeba9bb96b30a59405c7e65408f136ff7b3",
+   "361547109b871191b82ec624542d3bfc057d4b5a",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.transparent.lighter.worker.js": [
-   "8da114c9b2b10c7b029fab9afca23c66c833f8eb",
+   "0eb9cfb88a06518264f6421ce226d88ce8875fde",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.transparent.source-atop.html": [
-   "bdb283cba032b9fc67a5d38868c004b806eea7fe",
+   "575b8602c78e7bc361fbc0fdb81086b85f6d1f52",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.transparent.source-atop.worker.js": [
-   "a03e2e4a3300e510c2c2a76f9271250c9abba62e",
+   "09fb6a36a0898c3e3316ac6c3ccf20e73f128a80",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.transparent.source-in.html": [
-   "3fb830ae564f6dcc6c4f9288fc1a7dea03e37aa5",
+   "1b6f95b0b02ae7fb1774b465bbc0787aad2fd45d",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.transparent.source-in.worker.js": [
-   "f49539b59e1e6fbb33147cf6eab7917f38732e33",
+   "770ed073094d639ebe132523d82da6801f430c8d",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.transparent.source-out.html": [
-   "b3405bb0fad0f2fb79a482034f0660236daf0f77",
+   "093da537fd354900fed09becc11ab453207d854e",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.transparent.source-out.worker.js": [
-   "afa1adf14aa0b57d3cbf07cf85f54aa7e06d9eb1",
+   "781d1cdc39abbbf572c1cd16218c70b3828896a0",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.transparent.source-over.html": [
-   "cc1e95330963ea8831b25fab5d244c33584c0d2b",
+   "20718ca724dcf542cf54408b2f4a6f1cee38f78e",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.transparent.source-over.worker.js": [
-   "8153e176a87a006f2c806d41d55566233881dad8",
+   "6c92de447a0df20bfe690f6ae5df021ee14e712a",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.transparent.xor.html": [
-   "3f98e78a3c68069d6b3b7f7fe27627167c14a0c2",
+   "63202635954c7e3eaa95519ed2ad15150403921e",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.transparent.xor.worker.js": [
-   "58634bd6e8e08fe0d16ecd5fc2f081b28893b0d4",
+   "a489a98edaf55546e397cbeb422dd00f2847c876",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.fill.copy.html": [
-   "49a73820a05192bb541443589e8a102fba4ad124",
+   "6c16912f9b1a75310acae5e26507248c54b74c61",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.fill.copy.worker.js": [
-   "9ecbf5d461ff5556f585eedb6fbf0c43bf41a1f6",
+   "67875330fdf9a5529663a0e510aaad737c598f1c",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-atop.html": [
-   "bf41ce61516ee4002fac494ad763cbfbeb13b53a",
+   "464c6ee4a6ca81bf9f4f273985f6f79e902b5bac",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-atop.worker.js": [
-   "3f1af3d7d5ca6ad062b373fd82f73549faa3d597",
+   "ac4d2a4cc3c751d327aaa34cd587e2b1b2bebfed",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-in.html": [
-   "f267dc71b2898f11d8b1e8a7cc3e5d179890d19f",
+   "02398436fb6d517f9299b059b63bcfa9b4f3d867",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-in.worker.js": [
-   "fe1ae656ba866a982e60202c7ba9a16634f63ae4",
+   "ec494169cfb3159352b67ea86e145388abfdb8ba",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.fill.source-in.html": [
-   "66b0d641969e5241eeda8636a5f9556ee5769a4c",
+   "5f45113bf57b2f26931de78498c0b797cba75c51",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.fill.source-in.worker.js": [
-   "42e1ff037e4f1cfa8d6bedf28b4b686cc9dfcd9b",
+   "37b810f2a18070a9d65c5379a4fed0b3d208aec4",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.fill.source-out.html": [
-   "5c80c3f73f5b0f94b1d2b027e073dbad1c3c80d1",
+   "0f5bb53183ade283f6745985031765e8b2736f04",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.fill.source-out.worker.js": [
-   "6f73870438db1c1c3329d4ea640034ea94303a86",
+   "5d8f45248c26a89bdee17de17d5f17dedffcab9d",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.image.copy.html": [
-   "733a5135877170708ff833383679f23a662d301b",
+   "a4a095c546dede44bbc1d26ee6c6dd8cb224daec",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.image.copy.worker.js": [
-   "7898066df39d053756716b834aafc497963cd3b2",
+   "c6cedfeaef30355e2f6eec0ebbfc12a84e32352c",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.image.destination-atop.html": [
-   "9224e74e0aaed7c5b0ec781f35695b60c822bda8",
+   "3148fad9907be32c7f90324f6c6465afd7aa4239",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.image.destination-atop.worker.js": [
-   "c2799605e016aae50bf45ffccd5cae5a21b8a4c1",
+   "9f2717f8623fc8e09494d1b7e71f7fa9aade861a",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.image.destination-in.html": [
-   "5102b1941dfeb0240559af6a543d52b7f3a5fb4b",
+   "5363cd5215b10594a98e0eb45ad53ce256e08f40",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.image.destination-in.worker.js": [
-   "9a1090da712560f467e2af8f51f980cca87c195a",
+   "72169a005d4c55aafe8957a7c0bd5c96fe52d9ac",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.image.source-in.html": [
-   "0d2a898b10efe7dc963c6baa331d37d081a1bd78",
+   "71650872b981b60b8efdc292f3db6cf4fd7a84e3",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.image.source-in.worker.js": [
-   "03070b4e9935adaeedcd40f9be4779e2443ac2a1",
+   "2d500492125e474b95a9fb5e8182564c1b6d8dc3",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.image.source-out.html": [
-   "265902b3cd68e86f106668658dd4025b4e29c224",
+   "2b57b98c4c18e26e73d30fefa5bf2cf37c4dc95a",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.image.source-out.worker.js": [
-   "41b3fa5763c700838179d1812b97b5b4c44e92fd",
+   "76cd267ddd3436733b60e403a43037f8adebe3e5",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.nocontext.copy.html": [
-   "92422f58f64e8a7d37f5f8e74f77d31083e87ec9",
+   "1abbe1efb7b5e056d2dc45416a002725788afb08",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.nocontext.copy.worker.js": [
-   "75778f44cb7868bd012a45a21c9acd2611a7a584",
+   "aee59d2572e1736e77bf11a8cf28e9629960d264",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-atop.html": [
-   "b058c6fbb478e44bba9c07508d8dd3e184d4b151",
+   "46ce0c0ad0c947e64d2c6403ffbc594eb9e33a1a",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-atop.worker.js": [
-   "0eee51ab0f383a4607d07b73641c857f341dc15d",
+   "3443c1ada8fa21583b93525f1759c1814f71fc08",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-in.html": [
-   "d9b9dc3f640cfc2cec1eaa2d2efda82627c0de33",
+   "edef4bc0f6236f8bc33650b9dfcc3be3f0f3376a",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-in.worker.js": [
-   "83163655a92cf2293e7ca8cacd99ae76d8961e1b",
+   "fde33a5911af952f018811845e5fcefa01c5000e",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-in.html": [
-   "fc52d1094fd66bc34be6fbb3156ca12e1ebd34e8",
+   "3239416ab4c506cdea57f42eab14b545f71bc180",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-in.worker.js": [
-   "cca1b1bd3458aa6238aae06161bd9cdbccf3b19e",
+   "e591afc06fcddee2655efae1723a89f30631c97d",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-out.html": [
-   "b555c653067bf82d2c467d4cf06b4a09db90cc22",
+   "c4e66c0ebef943dc8c7208538951ac7354e68e1a",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-out.worker.js": [
-   "40d7cc85132f546d9826ec109500ca52d88bbd27",
+   "ab4920dc21345a129d937eb38c6cc4a8fc1b81ef",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.pattern.copy.html": [
-   "0a67a45f83fd75f5cd404fb04c33e491d772419c",
+   "62ad916d7589a3276e9c133b76040ab5dc7eb619",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.pattern.copy.worker.js": [
-   "ea4f47fb82326f5bfe82f11c1220561d6c2e11be",
+   "d42495e81770b0d184fc7d579acca9bed43dc89e",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-atop.html": [
-   "0b290d60aacabcf19778a12e7a5eba77929a411e",
+   "364029d6a401862383292033006a9bebb2f6e869",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-atop.worker.js": [
-   "f32811e25bcc2c244fb6d78250864a532d59bc68",
+   "76c2fcac8c4f2a2796f6ca02377629ede73d8d62",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-in.html": [
-   "88ec897a62e5f168cc9a0f5afab9e2b1db888c3c",
+   "b9c4613fa0e7ba6248dd8d09bd671d19b10275db",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-in.worker.js": [
-   "0800f0bf7e5213a98cd98512c3d6534712e8eab4",
+   "476f957fcbf155e32c5fa3a7462b24ea95cd5690",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-in.html": [
-   "78d1fad65a1cfb42517f9afa305dd3505bbe268c",
+   "fef35beb8a347656df7587bd75f81f471f482d7b",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-in.worker.js": [
-   "a34d8f6d6eee3dcea1f4b2e6c10c4e748a6b10d0",
+   "522ce49826442fa5d4d859664a606dadff36b65b",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-out.html": [
-   "47237e3dbc2637171647ea173d251dad3c68bcbc",
+   "2084611137174c0b7863606b775b1714c1570dea",
    "testharness"
   ],
   "offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-out.worker.js": [
-   "bb4514e4e3162872d6afe111078ffac2189f1b5a",
+   "be212173ee4fa6d2ba82532171aed5ec38f8f176",
    "testharness"
   ],
   "offscreen-canvas/conformance-requirements/2d.coordinatespace.html": [
-   "ec24a19c1736cea0a583cad9085c26792589190c",
+   "96387e5a107f3ba39e21c921e38fb44223026419",
    "testharness"
   ],
   "offscreen-canvas/conformance-requirements/2d.coordinatespace.worker.js": [
-   "7cad97b2dfb988f3ce43446c555cce92ebbf5a32",
+   "f4e30956f63f8c7a41e26c5198a872820e145251",
    "testharness"
   ],
   "offscreen-canvas/conformance-requirements/2d.missingargs.html": [
-   "0be8b58b61e33022091b5c63f0cf377db8258b37",
+   "9aa437c0cddcc55819e582307c84b64b44409fd8",
    "testharness"
   ],
   "offscreen-canvas/conformance-requirements/2d.missingargs.worker.js": [
-   "1a9d41e385d5b98d46de7f706b55f25926672033",
+   "8f8d00ee3a530884e6e05baedd498205e7d08ae5",
    "testharness"
   ],
   "offscreen-canvas/conformance-requirements/2d.voidreturn.html": [
-   "42eb98ec1ec56aba196ecc8226e6b05fdf5d7c24",
+   "a90e637d4b2ce8322a89eb3358761126cdb6f4e8",
    "testharness"
   ],
   "offscreen-canvas/conformance-requirements/2d.voidreturn.worker.js": [
-   "0d7da597275d01ae970e99878d95e928c913ef66",
+   "d25b85d3fd3fa412c4805ecb41402941185d15bf",
    "testharness"
   ],
   "offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.html": [
-   "fce08e56a77b0c5bec92dadd168a41579d9c72bf",
+   "8cc765c3cad51ee80ea83d293fee1bd9b6bbd327",
    "testharness"
   ],
   "offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.w.html": [
-   "573236f3ebc3033c747a5b91824ff111c819c617",
+   "71eaa9626ae6fdcb8b06e5e152ec7c4b877da86c",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.3arg.html": [
-   "0e5c204435d3aa0a919df6327249bdc839843055",
+   "97eb5aa17198a4c8b65dd6b094f948c2df1ca527",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.3arg.worker.js": [
-   "08cb353a50d7acf312f6bca5cdb0b98b3467d104",
+   "cb87cac359c56471be3f3baa12a68c73dc1e472d",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.5arg.html": [
-   "33d7d1a27a6d8df39884d3bd0cea971f8a455e0f",
+   "c3f7d89112a90370d994782984b77b6f1065410c",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.5arg.worker.js": [
-   "17e01fad01e9c711496e69bbde1362d01edf3c4a",
+   "b0e69668043956be8266b7fd538cf016a94f4861",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html": [
-   "33733cf9f51270312b2a1640b271b1c7f4a0bb69",
+   "e4fe9b21ae6337b35fc31014df94197e249500c0",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.js": [
-   "53046e22d001ccb6aa8b7bc023d734c6eacc1d4d",
+   "482d06e3668f93166c473f36127c14e89d5ca374",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.html": [
-   "9a7060bf56fd21e1b4ab9a4bb25940eba600ce44",
+   "6d8594580229cd3b531b4956413cc33b9e0d58a1",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.worker.js": [
-   "2a18a9355f5fa32cf409b30d65a6eba287ca87dd",
+   "36141a072778d5f1570dd83bc691d303e3c0eb5a",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.html": [
-   "b8d148fe4111cac0240436b833c3159c40e424bd",
+   "927a5fbef49079588f9bc01e6077d83d51f93b7e",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.worker.js": [
-   "a9f940725ca3a7283f32215c253666cd50609d80",
+   "2d99434b9a1b6a59cc97e93a4967fe3f356b9d46",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html": [
-   "f08ae98fe75793d69d5969c0eb658af215011bbc",
+   "c6b9a1f8033606614a7f958ee5fedf96d93d53e9",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.worker.js": [
-   "0b1885d75d1379c52f1df5c39ef1b66d589fcd74",
+   "1020daa576c5d77b2f5f9d4f8747caa6c9e596c4",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html": [
-   "34746f258b5f3fb7fb7a38f5a459a743730b0525",
+   "4efd2fc6fe3713245c31ea028d251822c0b5bbef",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.worker.js": [
-   "e1fa60dcb212b7cce44bc32646688746b4acb1b3",
+   "0acde77b9cdb1d3b759ccd3c3784adf990433fb7",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.alpha.html": [
-   "a7cd6e128e5d407237ee723de849aac3d0d9ccea",
+   "b4054619324f3d177a12f76a3f673951fa098894",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.alpha.worker.js": [
-   "d71b3d50d56f4a9de9eb4f27e26e74acab8bfef6",
+   "1b3ebbe1831183d919c37bf06ec67662479638df",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html": [
-   "b007a9ac537062153b5988fe10e872b21f75ad4c",
+   "fdae65644dfe2460a266fb52b7621c93fc7f32e1",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.animated.poster.worker.js": [
-   "d328d18d86f29c97f00247b1b2b393209210c54d",
+   "17bf662321dccef30e8ecc1adf5a737e89197178",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.broken.html": [
-   "ce958c758c2070b422898b481537cbd27ef63056",
+   "9193e6db8af5295b50c08e895dbef6bc7a235737",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.broken.worker.js": [
-   "db968175a5e4653421dbaee1b6221df92481afe2",
+   "f3c847f4e7ab93a5b4916628d455ba70b350a4d5",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.canvas.html": [
-   "7b4065b76f7879161d82efad3413fe6731821a69",
+   "81ba371e54fb5f187412f34482b5b0e331b25224",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.canvas.worker.js": [
-   "8af83f21765a4cf7cf28e3c7119b200e387abdc1",
+   "338d8de89920c1c44f60c20ff78a98e8668eeadc",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.clip.html": [
-   "6ded0e393c049471badb9a8974de2b429ebfbf03",
+   "b2f756c5edee7c82a95a96d19ffd21c7b972d92e",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.clip.worker.js": [
-   "f0363c22e7aa27698ba4f2a43bfc6f60a7cc99cd",
+   "026ed8de89c9e9b6c2bc0b980e02951074a64f0d",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.composite.html": [
-   "f548a9cd23e357e848bff230785bb7357bf86940",
+   "09cc0637b0ec8abbd82654f669615fcc02c35091",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.composite.worker.js": [
-   "435c793e4e582338ffbecf7d5dc0b9c5f1aa06f9",
+   "4b882ce36ca05b7b40adeb3f91d73225f4aa4585",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.floatsource.html": [
-   "c39ba6e40003ebfc339523033b479b9df0d92f96",
+   "64748731ad2367ea5370a39b919f88c6c631265f",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.floatsource.worker.js": [
-   "3a90d33f78340a19610a68c0456e3bccbf00f1f1",
+   "0f95f51005962110cc64f3fa06c190a6f4b15302",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedest.html": [
-   "f2a62c2d89557dc6b3fcd2924ae2b407f2a773c2",
+   "6b5d6fa52c8edf34cab00398ed3b3b44dd80bf8e",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedest.worker.js": [
-   "91cf4663b2f63cde0d7c616ef3d9981005a384ce",
+   "8ba67e3a4665f07dc6cbb909d51107dad488c7e6",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedir.html": [
-   "700cbffa766df619179637fd3304c9160862eabb",
+   "fb4c3ae158b99be1d7448067aa0b5fa93092e1b8",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedir.worker.js": [
-   "9d4812bf1696f9f25f83bbc1d4d824e6f40eaf70",
+   "2647ada247cafcba853c7b03cc023808b2dfb1b9",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativesource.html": [
-   "83158cc354afda1b5a2d9de70736ebde10c916bf",
+   "b5d719a31b4d38d4250a48259644471a2356950c",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativesource.worker.js": [
-   "fe0b0c17a75f7ce7200ce682dbfd6f275b86547d",
+   "8d933484b5d2c44fa62b9b11086ca6f5b5ffed5e",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html": [
-   "042fd2432ef5419f23df52be3b4db5b0bf63ef63",
+   "e98657092a94d7ea2d8dd933b0738be9732906bb",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nonfinite.worker.js": [
-   "4ebc761652504e8ed27e562fe9ba1985679036ce",
+   "1d2f114f0f7ba8f35642b27dae37814af2b25357",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nowrap.html": [
-   "bc6e105f42f3cddcaaedef63b30bd3eb6608495a",
+   "515d0de7a11e6de75adcf9d599854acd4470084d",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nowrap.worker.js": [
-   "b014974b64b7dae6444b2629e2b4abb79fbda31a",
+   "c31c1fa00f31e9ade57f315b47c01bad8170acf5",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.null.html": [
-   "612c35b4b1893e8cf040dda115ceec3cb61dcfa7",
+   "8e7ad974d6ed60a2306a567027199735acba0b7e",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.null.worker.js": [
-   "e886a334cc1dc7071d27c4d60da2fa59c91825be",
+   "51297ebc2173916eb541f008c2520c4b86561308",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.path.html": [
-   "623e1f4808651c20cf4b296b60a52b70508a6e96",
+   "cf6594c62f83194ffef48e8a4ff7d0099e648bb4",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.path.worker.js": [
-   "7e4a240cee646ae91a3b3bc3f8f0689fe4d6c655",
+   "12c2ecfac0cadbb24f8b64f2e9dbcefc64d8039f",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.1.html": [
-   "206a73b79fc77281e5144f2a32b4845ea19e26df",
+   "e410e30cafdd62ca917d0fcb93a9f58b33e4d8dc",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.1.worker.js": [
-   "ddd7e18ff22c1aa499549e192608ae4312144e01",
+   "171fededb81a639e48956ce19478170c778ec776",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.2.html": [
-   "2767cfd4afe23d553fe0231f89c49d5cf7817125",
+   "55861656d890b2846cabfa3bcbdf2e4ff66d7023",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.2.worker.js": [
-   "b3c005e2e75a8ab907c29834db19fc865cb87c35",
+   "5711bb7e4ba3bf273634f539c4c58c8ea791aa70",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.svg.html": [
-   "6890f48685f88c230e4dc4cfe3a521785506304d",
+   "bd8146d3f2c45abe35c6c2c18c2778da2be11c37",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.svg.worker.js": [
-   "6860a85256cb7cac696e5f8d736d61837db6404b",
+   "7ff73bfb927a2759d9852c2061338619d8408cee",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.transform.html": [
-   "0ea34eae7bff8c9c973a29903d6cdd22eddffec3",
+   "2c1ca6bdf2bae7fbdcc70dbc504319634b6c6382",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.transform.worker.js": [
-   "41b0d4ce5dc3fcbdd41c05c550ecc8d1fdab4eae",
+   "1ef01a88d3e1b3e124be3a1d1aab9d884f738add",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.wrongtype.html": [
-   "321640f8e7e73f80de29405d392e9660f376e07c",
+   "1a7dd432216586ae14e109804729c1005e9db686",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.wrongtype.worker.js": [
-   "c4f4668857a8bb39d7337dae148dc11f001f318a",
+   "a8b170c3b4412876d3d23619c85e9fc1df70c63f",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.html": [
-   "2f53c5e7e31c79625eb4136357ab0541fd21c7d5",
+   "12bf837407fe981136da8723bfcd6fe3f2a3b7e5",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.worker.js": [
-   "3a17cfe5a3909a97e699b3f9d6799626698f2641",
+   "8d18929a0d7f9287a5a7009cf96ccc46f6fbfe17",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.html": [
-   "9b66bfd8e6c4108e86ea1e955b3f308e953439e6",
+   "137d663aa32a65e805b20815101039d899b408c3",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html": [
-   "f978ac6547b864b8930b9cd2db21fedf1f28458b",
+   "28ded3ad3b4c4f1ac144b1997361341318c7d847",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.js": [
-   "3cc3c72119e75ae9deae5f8f5d22546f590c7e1e",
+   "5c76d552165dcfa14fe29171350e54a6cd925b37",
    "testharness"
   ],
   "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.js": [
-   "0f0ed5d9dd16e4d6d973b8001d2c8498c388c397",
+   "90baefbe1175c6152505d53e74e34ac4e90def3c",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html": [
-   "e5141d69aeb27c2c9fe5d5d3437ff82496666bc5",
+   "e92ac62e80bbbd8123684fe3e1a22d569cfe1235",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.basic.worker.js": [
-   "eb0ae4efe0c7c45370d332be42e0b47c71088bc9",
+   "a456ebb05976a6a487bd7f7b7a7e25d36b32d7c2",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.clip.html": [
-   "25af32dca145c72cb83113ea35cbcfbd1a73f2fa",
+   "653d3918404e7928101bf9ac968d0eca499348b9",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.clip.worker.js": [
-   "ce58871ecfc9c0b9fd10f48bc6de88430deacbf8",
+   "7d03f40ebf06b66ce11b9adb70ca332b8979f36b",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.html": [
-   "19ddabfc932a89f0a72921d9803c4b7e4b74a623",
+   "f5202c715591f9171975ac6b7640784723d1ded1",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.worker.js": [
-   "a29ce44d828468c48fd3574b706d7d97139a92e6",
+   "6593928b6c028286efbb89019c5d7f9a72be51a4",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.html": [
-   "63a9ac352ef5b3034eae5d5152cc06d4087c381a",
+   "803df81b73997978a786c4f53a08fcd3370f9d97",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.worker.js": [
-   "4873b0a35985f2d364fef9c88474946897eff0c4",
+   "efe5d2e499355ce283cc9c1b1fb6984b15fa3b72",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.negative.html": [
-   "064f80544214ae7ec3a8cb684c08d4203e8ce228",
+   "ff69557f9768d576645928d321e19f9ac4fbf324",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.negative.worker.js": [
-   "8dc1cf24f12f62c883586f33bad4ad029d9c4903",
+   "ee6ba9ec6d6a3f617b9adb14368800959dc74bc4",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.html": [
-   "8e3b241a5baf151ce35d0417e566e12d18792766",
+   "ac94d019abb50a5da0011703bc9168e4949b8065",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.worker.js": [
-   "bd512336e00378fdbcd4a4f5f9a04bcf8280eb0e",
+   "aae7f12d2bd3130fb278b72137951b7732e80dee",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.path.html": [
-   "00d2286fb56597042b7e457d1f2aee60b1b1e1db",
+   "0b32f318c6d6061037e021e760c40ef15d556a1f",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.path.worker.js": [
-   "385672d9f29280d3089515ba581dbbcf14c81dc2",
+   "2716cf0e2801c8b48bc383f7ceb55fc530925266",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.html": [
-   "54cbbfb201faf17b3b686762ac5c401a8a2697a8",
+   "5361f4ebd179d4cea9fa9baa5efea82f71e71f2f",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.worker.js": [
-   "86bd149a3f8b80106b03c6fe7631792d40ebb665",
+   "5b6c634f5ed93605a2c8088ea2b02ea6db3190e7",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.transform.html": [
-   "14278ab1a599795cf0fc6bd7b4b3f0275c179582",
+   "fad0e223f8795d0cd0a1f621ccfff54c5f118da6",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.transform.worker.js": [
-   "e5ea33355a858f1922062c52036f4caf69a084c4",
+   "73370d1816b6cb0308bbef75a97b36626a60b10a",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.zero.html": [
-   "d1f95530eb866f4a160349512909a7671e60cdce",
+   "ab0fe73c5280cb7dcb9004861194a6c1f99f0384",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.zero.worker.js": [
-   "00850c6b0f2d45feae55fb4a9262409f4659a6db",
+   "0798b27118fc74f358a31ba08c1881c48111638f",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.basic.html": [
-   "2f6e6d1a9fe7913336f27c665a80b0a146925a7b",
+   "12ae629451d8d30d9150a152c6a18734ffb0377a",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.basic.worker.js": [
-   "805561044ffb6c9c501084aa5772ecf1909cfa4f",
+   "ae7cc6bb0896ba2e31091cb5bdb0d52547504063",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.clip.html": [
-   "ddc625dfbe6e5c4cd7d383343a5fa0ce69dee5f9",
+   "22bbaab8ebf262d8ad0b311a849dbf3f9ded7ea3",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.clip.worker.js": [
-   "740a9de5e208d58c2cec377dacf99319717088cc",
+   "c2128b1d26626ec4fb8044ad78798bd5c9ae2996",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.negative.html": [
-   "ba525ce239c72203aee657aa94259a66074adbc1",
+   "e64eabc80387aa307d66631da8032fccb526cb09",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.negative.worker.js": [
-   "df644d5fb3874afe9963f239a846db6d1f0c5877",
+   "af040f18e1f1d809572e03e60b5b1aec67034b6c",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html": [
-   "7bedee63276087a4f81876b1a1cc8b59702807eb",
+   "13cfb518de385955dfdc3409330bb4a970520ec1",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.worker.js": [
-   "79455b29f615e943e875d9df264a9152e83c18a4",
+   "d12689bc7ef5a5ab004154031d6bbd1322b31dd1",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.path.html": [
-   "ff6530e988514cf85317da7ff9406df750c49a6d",
+   "5f454b467ab580b5268d4b71203024c809f53918",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.path.worker.js": [
-   "7433620ed6172d87114c9e75f8aca8e8e3690e9c",
+   "9fb2852b574594871db0d2eea375df074baf8bdc",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.html": [
-   "1399bbbfb62655c46c4b5bf00945ab1622dda590",
+   "b9a643580ae200755517745605aa2deb8a7de83a",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.worker.js": [
-   "7f056f50d3c172ba22857fb2e049a447a8c423c9",
+   "bd660b507177c31db38371952b58a20caaefe681",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.transform.html": [
-   "21b780a55294d000ca9dc4971a54a2fa6d0dc389",
+   "4ed1b28f62db31e2f377ce78ad6159e2891f2342",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.transform.worker.js": [
-   "d0bfaa9a4bafb782e2e9edebb0a4b2cb8289ca23",
+   "a204b90f3f5fe607e5f7dc15fbf66331c2d500cb",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.zero.html": [
-   "b1309ee1f7ccfa10985b94fe2dfdc2396c4aa3e6",
+   "8bd26d205604b7a983cdd978e6e51cdb8e2fce03",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.zero.worker.js": [
-   "afe3832cc1cfc4eaa813ac0c3e4132f7b3ac3051",
+   "bef6fdb6251305076980df19bd3701eeac02c408",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.html": [
-   "329e298974c20262c4ea7977ad424099e23eb11a",
+   "3a8c38a20054b79a3e5c5d8a1faa8071e7965e7f",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.worker.js": [
-   "13fd2ae9b0a918da23c25c530aeddc69ceafa630",
+   "225788b081a7c183c5bc4c291a6d6ba9c41a8ddb",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html": [
-   "1f1c947d3e92181daa0d7d4a4e4f1e9ec524fe16",
+   "6ad1f1eeac0fe39158dba35f4f3dbc58cf936407",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.worker.js": [
-   "dfb6705c06ab1ccca15b5b79f2f9da563b143d05",
+   "33aad46741a0283ef1966d3715902049db1c8a3c",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.html": [
-   "35e4e0667e1062e796bc8cdf3c2ab5f8773312d5",
+   "40cbbfcf550793e6dfffe931350a5546fcf7f191",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.worker.js": [
-   "f24120034f0f8bc7dff74d94be4338c9cfa75f7b",
+   "cb95672e38f5d255c41a5d0c48327d6fae95fef2",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.html": [
-   "44b8966e42842ee859d30ddb41e0752512ab6a43",
+   "dae7c9dcdb94b7f211861dbdbe23c0a83535e887",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.worker.js": [
-   "93be63c3ebb6c5e914c123107a1cd6fb9dde7b1e",
+   "662f3dd68654fd7bb5fcd18a4b6691ad7340f81c",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.html": [
-   "be5f9aa3c758eadf9a8de0b11d56cb95d87da45f",
+   "a05ef50cf25a79881a62c01db9102d7dae176034",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.worker.js": [
-   "9c83950a9fc1a4f9acf782e8746ed7a38e60ea86",
+   "af12c4a0751849e78ced3686d53c45ec79b629c7",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.html": [
-   "9198365876c9cd9dced8992d8ee3243009e683d5",
+   "db26a95e6e20eb7aadfa3dfd4fab082332e88add",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.worker.js": [
-   "7fb16811a0abe2630b8c2fac63c9b8f222ee7927",
+   "3b622121fe26de64526a6a61c405b08940ea56c5",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.path.html": [
-   "dc49cbfbe69b33bf96e2204765ad4a02f3cf398c",
+   "79c3f79f2fa27f5335c5a9a176c5f281c867472f",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.path.worker.js": [
-   "b5908b1674fb68ce1188beef3debf6e55251357d",
+   "3819965fa9ad6aab4b658cb8b6fb6804e5780c61",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.html": [
-   "a042d94358943e4b5af74d0fbcb3d39462f84ac8",
+   "d02d046c4625b51d5b28988e0e5f66bae3952330",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.worker.js": [
-   "781e0b969c99d5470166c96500983813574f5c1f",
+   "b63ff64cc41d3b5c38bd04373f01fd5f83674e31",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.html": [
-   "ba859b8d83eacbfb0069f9f347bcfacf65258426",
+   "875969ad03412aa5d587f0baea7d2dc6e3957882",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.worker.js": [
-   "85bc6e8b23c90fa0a6591a811fbc3bcf344320e0",
+   "90b6f5040441958259f82fb0dd9ed89d918e8a0e",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.html": [
-   "973b9d1af14bebc812f93cee5bad89a5fce49605",
+   "2c2cf39b1496f2c0eb859b289412240d27c40a36",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.worker.js": [
-   "5d1f4664afcaac92376d9b6ce7f5eeff08c69b3a",
+   "3f2af8c0ffa1efb6ab3230b8d578a08f6335085a",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.html": [
-   "161e240839faace56b6ae7058399ea1d0f8f120d",
+   "cebabdb4f126c8a9690bd2ed85c3c38270b8aeb1",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.worker.js": [
-   "bd7f8520836f50a466b5d906eb22fa0d1523d2d5",
+   "9b5f26ed925a733aa93dabfdee67d7ed75a47fdb",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.html": [
-   "7566ba8482a742e3351c6ee6b9367a400bfb74e9",
+   "6063b14c6b6e77b4fe0b2781c6a6f3363ef279c4",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.worker.js": [
-   "0b73deb276a668d8cfa5003cd88635d6bef2fba8",
+   "aff8dabe7dce8f31b7c273d608d13d46dde2c20c",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.html": [
-   "e40d78d06dfef7d6d4fc954ea85d8455ea7a86f4",
+   "5f169c6e957ec6458e7af5e6b8c83de9dd59090d",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.worker.js": [
-   "e7de7a5dd18c96fa669cf5cfdd45cd76fccba795",
+   "a38d6b8cd9864365c4e54009b2a43027ce13041f",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.html": [
-   "c23f675e825dd4ae56ab3b54d1bd0c36e528abef",
+   "7588fad436e80d4f205a381e4bc0430ff3dba205",
    "testharness"
   ],
   "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.worker.js": [
-   "cb8224ed84882e3b81607814f121a0431c7f68ab",
+   "f2ed55227d8885bfb631e70ac329d6f503959e7e",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.default.html": [
-   "0e011add2d760e305e82ead815e797d5350c3afd",
+   "51cc739b99ca61c82d8fc752125025366879ff3b",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.default.worker.js": [
-   "bd5af5228c1be706c43a0f4e1b39cd297c218d6b",
+   "35f59e21eef663dc9926fb2fd5091ded4030d4e4",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.html": [
-   "d21282a59009eedcb6b54762f8291639f35b2825",
+   "56be1ecc1da993f8b67c1513a77bda28d1162907",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.worker.js": [
-   "6d544f17e227af914556e911042da8b6231ecef2",
+   "40aacb1d42889d2a53e4ed96dd8690dff25ff02d",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.solid.html": [
-   "5da5b9767515584531f3f8f183a4632e364c209a",
+   "719ce0ca7f1993529430188db99305cc735fbf1f",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.solid.worker.js": [
-   "aeea44abd1c8f0ee8b87c11bee4f95d8cb0c698c",
+   "157b41ed8976c4f09e59c25456ea76d407810275",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.transparent.html": [
-   "a390abbb873a0d3d7a4346d37be9938d93e452e1",
+   "0796903fb5bb0f2db2da3f31b49891fd3ccbed28",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.transparent.worker.js": [
-   "3df91dd1a1c5dc1016b360f7bfc08b85fe031534",
+   "0fc8220366782dd8c56e8b0b4a84b81922b8cbe5",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidstring.html": [
-   "8d23262029c8dadf03867dc98afeb05804fe7884",
+   "9c72f979b0b3b21cd255c25ea116ad02bb631c2b",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidstring.worker.js": [
-   "50189bdf68f2dc3f214d458329c5d4a36203997a",
+   "900d6e9371ac1837e8b161274e914b7e31fabe32",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidtype.html": [
-   "3d1043d28d732851dd39db5ddab6fa3ce66f305d",
+   "b1551cdc194ead089793f1bdba17e36c7e98f7ec",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidtype.worker.js": [
-   "422ae3e89b91b4a3d83a2a37953893bb611f568e",
+   "f097053ff66f43b2178f5f373d3ed15636010a75",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html": [
-   "f795694bde97e2984a34400bfb4627f6cbc224e7",
+   "226bb5acfa7ac5349ea7eed8f0509f571364f130",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.worker.js": [
-   "c147905d5f76c6786475e9a37dd9a3dbb1b1e185",
+   "7709d10b04f319ddd2e2e9bb3fdd82f0a0a8e5e2",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html": [
-   "a2c2c70d625904ee1c04f95337ce97504b97baa0",
+   "7c2b4b0399d6ec068ea0204d5c5640c1582cb64a",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.worker.js": [
-   "d7a37d2c03778fe6353b929af17a866fb0757e57",
+   "b5cf874825fccf341bb60223efc1d54f89317b20",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html": [
-   "a0bf4f37d0c3ef31afdde9bb219f0aa019f66852",
+   "69f06197f650e0806fb63fe9e074a2eda7080e65",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.worker.js": [
-   "1709f493da64570dfc694f0360fe9b6ba8ae8f43",
+   "d4f33b586657b21f2adb62627fa99e9f2e5630bb",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html": [
-   "a28f68948d9116a3663538a8a58c7f8561d85c6c",
+   "ae8dece63e4748af7ad70fb6ad37c59383a72902",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.worker.js": [
-   "2935c51f2918b8208b6e53abc06c6b9c6f57ef53",
+   "d96bf205d44d4257fbca6918c04294c4a9c074f5",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html": [
-   "87a0935dab20ed3a5e31194000f1ca94a4407f24",
+   "b520872d083fc733d14bad089c1a19bb79514890",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.worker.js": [
-   "64c81080e3ffaee1bbef2340ef080eb3f50b5d6f",
+   "7efed19208d66934947def17ba4d5ec9beba91b1",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html": [
-   "c18f9d90582e392e4f5303cf348b179b12bfd056",
+   "3e4830e09ec8537f0ab38645eebd615bf6bc6bcd",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.worker.js": [
-   "fe33f4b2bba39c48e9cd29dcfe1fd0f112ddb94f",
+   "a61a59ce262c33207185303ae96bb226927fc9ec",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html": [
-   "3ad95db15574ef8b37fe965e3309da097626e91f",
+   "a4daa6498a75a4fa283125fd508700669ed4246c",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.worker.js": [
-   "21d51d7d7f8681452a15e6219d216efb19c0aa6b",
+   "404f1e4a68b3fc554869171537c69dc0a81f8095",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html": [
-   "9971b225ba1dc9ab16b80fa57e769a0ad5668413",
+   "1f33e5e0c3b0ef685275b981776bc2743cbb24fa",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.worker.js": [
-   "b5bc64c8c8b974608fee36af745900aeda0c90ad",
+   "916d62fc7f8fb950dcced8a1da790901fc14768b",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html": [
-   "0d99d1457eb66e85efeaaf7d6e62297ac4ef9d61",
+   "a470d18c891ea1514cbac897d19b015a50ef35b3",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.worker.js": [
-   "cae19531eb028eeaef787f15b09d8bf543e7a60e",
+   "b285e101d1b737c11e784ae304837eb9cf0482d4",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html": [
-   "7f03f71be6084b3a54cf9d31e35fbc73b2455caf",
+   "bcc26eb4044fc11249bad8a6968d2e340aec51ba",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.worker.js": [
-   "21b44ce7f8c44940e69b162e47c00a010e06703e",
+   "c6e7228718ee8ef36360dcfded04ff65210c41bd",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html": [
-   "014957dee12d1e441af5e5b397b57383b591795d",
+   "bb0ead608a4900eebadf2d0f574aae86ed8ad054",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.worker.js": [
-   "7bf78b9286caa77a2f1598d3b4206148ccebdb93",
+   "df611d2adbfe7029912a5597f3aaf9932028aa3e",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html": [
-   "9fde7bd963d8bbf5e2138b691edec63a9ba307b2",
+   "ec9dce36e628a805c635dff1c5be97e50ba342ce",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.worker.js": [
-   "ff6ab8017615fa618fc13ab21501542e80bdec1f",
+   "246e92edddd3606225a160504152d6dc9102662c",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html": [
-   "56699318a5c186bd2fef32c7e9d3dbf464a708b8",
+   "c6e3fcc79fa66cac03a8088d7c12fd4c70fc7dd0",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.worker.js": [
-   "f3910ef90f4cf54ee47302bcfe76bcc1da04010a",
+   "9e42ad507558aa62e4b6ac37339baea270294df3",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html": [
-   "1e1990f2faee092474a7f1ac1e269fcf9bb3f6c0",
+   "3b9c5f05278b0286de9093ecbfe59bd0518e136f",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.worker.js": [
-   "c9631ec3025c533519e219e6fcdcfacdb3a9a28a",
+   "94fc24e9852fbb25c20b2bc7f55b33d5ce7a10ad",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html": [
-   "0f1b644ea211c605b705f4b5e57481bfc79dd5cc",
+   "86bb08ad0102e3102c63219cf8e982a397bfab0b",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.worker.js": [
-   "c6e4430d9474472ad054f074d3617207d7c65f32",
+   "bc751f74647147290238c85f1787829c32b33940",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html": [
-   "da290762d57ded9a58e9ccceaf774976d123ca28",
+   "f2a833be8dcbfde4a4b781a6454211ece55f33f5",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.worker.js": [
-   "cfeaefd06d71670a5da1bc99e13f16980242258e",
+   "22ffc899204d42e1b7f60a8ec78dabc231f12c3b",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html": [
-   "404277d8a0e47d86ce32aa837c610589f643e107",
+   "84e8b3dcf99a09d9238ef0dfdd6e678bad260f4e",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.worker.js": [
-   "fb3415ad9034e05d1832b7da7c88e6e483c83114",
+   "d5ff3714d4088a145be012a91c1940d342777cc9",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html": [
-   "2bd5a10a97c18e283a4366a56b072a538e699533",
+   "bbb6555a0f73474ba4f9431408b2ddf8bc21383b",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.worker.js": [
-   "1df1c82c8fc1fd80bdab528b7bb433db0d661221",
+   "c81ddae395cfc5f77e967bd9496368f7131a04d6",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html": [
-   "3312d05a426ae948a074ac0edfb23fb00bd5c7e4",
+   "e127bdb13902005fb0d0a5c91f66602ead2a082e",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.worker.js": [
-   "4d1386a59b097f04a26a80e18e6c4a9677308be2",
+   "c09ba56ae1502e6d120e43e5acb677394805cddb",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html": [
-   "716d4f807e95a652c1e375c749cd48b97708ef6b",
+   "37b1eb0454f5245dbd9a159cfcce909145732655",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.worker.js": [
-   "100309e5bc2169d38df942aff4b7a6fa7ae703ca",
+   "8417215005e266d3372d4e8ce4f076895bcc4fc6",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html": [
-   "b0faa05949defbc854b3a398d89aff4f6087fa1c",
+   "46f8d95d4a227228d70a010798927dbb9e076398",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.worker.js": [
-   "6ac47795ed8b8402efbc22b4ccdc81fe225f4126",
+   "9b7cb351cc9217b3474e72c04343e9d33e9c7f93",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html": [
-   "df858019a99ddc0f7aae094e3434cc0ed0d0f01d",
+   "9f7b0c9672a09cb32f6875a5599ca168e8a4c286",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.worker.js": [
-   "acdfb2df4156a3aefba5488192b768607e7d03b8",
+   "bd2350a54123f6d56f9976eb0a1099ac8d98d43e",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html": [
-   "b38903b0b230cd93752fd36cc1674bb0a8cecb9b",
+   "8dea6f6db2f9a2e2bcf6cb8dbce03d447c669c55",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.worker.js": [
-   "7c44ddd21fae769bdc25529fd13e0def5626123f",
+   "9cbb68a649532d88c8a263517405e843ec344cea",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html": [
-   "c54d8dfd0e9270dca8eb20db83249180d9883457",
+   "518240f780da28894025612adef6c652e0241532",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.worker.js": [
-   "21d62f6213236d61aa67cd8c5a2a0ddd32cefb68",
+   "526e2ab81e93703a1d342f27194976a5f5c875d1",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html": [
-   "dbc831db383f7e6ac6173472acbb94487284b554",
+   "21081d86b2ee88e1376cb261dee213d5ebaea01b",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.worker.js": [
-   "cbb680610753970cea0c483500f4fffdc1cb8328",
+   "95feca8ef3b4686ef68d926c38082b5d7cb55a9c",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html": [
-   "c1f9c6baf6bc0e46c9a741be4501e0d7b2b51efb",
+   "69a4ad542fa5edb20f624e603d86246622b26722",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.worker.js": [
-   "ee3a09a8698b72da21765db4b018506bcf894017",
+   "011ed04467a887b3827c5c702d7abf6d7696c868",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html": [
-   "f992663df6a8df4aa664d025f80ce2b307abcc23",
+   "a489c3f1d04491553c2e119de64ecd5a2e2e7308",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.worker.js": [
-   "7b5f3926e41540dfb51492ec4e50a067b595b033",
+   "abd9cf1a8a9e770778ed29bd9bed0065172aa524",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html": [
-   "482c95fefc8cf469a81716e871a32f3c3ad1ace4",
+   "80f25d32cd5d9411b69e4d034eb0e7173d162095",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.worker.js": [
-   "8e029350d388f3cbaa5e8df76f75765e52a716c6",
+   "a6de83e44ce2b98ff3601f68522441b20eaacd47",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html": [
-   "ddfff551d7c5ca9f63c175c609e8b497164f5379",
+   "a54f88492c4484cfff8ffba466122754b09697f7",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.worker.js": [
-   "14d2b3015378ee3e023f0a0fdafff9acff64ff39",
+   "a069b41fbd0def4376a1141a07ec53554788070b",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html": [
-   "339cf5f918b7ef67141e8afe290a26b734413245",
+   "afbe418f9f74a31ad9123dbbfe6d8ca070dea995",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.worker.js": [
-   "016c7cc51a9221709f576c9318a3fc03e395311e",
+   "66df2f9334f60c1be0694752d2204a40a78cb403",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html": [
-   "6637693b410d4263a55c3e94f0fb67c1d5496b9d",
+   "65307cd3385ff9417e53ff830c7307648574cd88",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex3.worker.js": [
-   "8ccfe6d694ef0ef12fe5e1463afaade7d5be412c",
+   "5ca4fe716c510b47ea2fa8496a80de94d1df8fc5",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html": [
-   "403ea903871f3699a8d9368020b28f181051a222",
+   "6546bdd0658d9e494480e5f0f2e4c07a6e0ffd31",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex4.worker.js": [
-   "d8743c30ec2c36382b2d13574e15c71de74a2142",
+   "2a6c368cb9a3ad1a916e17a7c0d733bdf9e56baa",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html": [
-   "c2dbe904b562c8205a3dc93adcd43f5c71abb8e2",
+   "fa2054275306c5f058cc73b3a3b0e134e681f857",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex6.worker.js": [
-   "b6fe583a8799e0caa4470abc29b639d11b88aa4b",
+   "abf4d9fce49f22cc940fd67f3336af97f39b2f67",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html": [
-   "b09096eae0cfc2b94eed4540b4173068b372387e",
+   "b5741203352a3402a0a48881f86609f771ad5adc",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex8.worker.js": [
-   "06b5fd0fbdcaacd62f4edaebb3fe22aa8b90373c",
+   "aef17eeb96428ea13682df54c54d42a7ab0e7b2c",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html": [
-   "f6f99838484ac6386fe0603182e219124ab7a284",
+   "22d2879741f9f9d5b315eb21b64aef9f6d26a569",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.worker.js": [
-   "503f5b658b87e1cc38e119ebdc71e1e422453bb5",
+   "49228a859311ebdea90fe98fdf9efb6f6cde0963",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html": [
-   "7df911580a96d2ef5e6f308152377d1b9118c27c",
+   "22fd3291ae0b64a57e315ee50075f35338947ad1",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.worker.js": [
-   "bb9182a8b887bf23dfcb82863048684208c272e9",
+   "956dccc7c1f6473ec15206ca12ab687049f6f66b",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html": [
-   "e56c95fb276da147d16caf74f6e9ed7c93c65df8",
+   "3e919ae605e0f66cb19f85a1991891cef9ff7acf",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.worker.js": [
-   "0809fd424e14b9da91702c3fc19a6643116ccf9c",
+   "29be2d1732d1196cbd86af6b4bd8925b8bcc758d",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html": [
-   "f23a7705394036603696edc925f578f9c261034b",
+   "8ea7e07896aa85f703f7f2bec8905ddb80a5aa17",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.worker.js": [
-   "ccbc3cda88d28a921fcd5ffff2c8c5d3d5bd7919",
+   "44be41e48eaf0589817bc9e730fa033acd1b16ba",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html": [
-   "0ef8a0a8cdd864d8f9681ef7104f0c79e639f50c",
+   "429c0e6e97527e2cc53b9b79af74272eb3a21c55",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.worker.js": [
-   "42a9f90924e1654798c7907f315eecb4395d80b6",
+   "625579cb7aea561132a6aa2dfe43fa7cb932a98c",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html": [
-   "420b787ec8a1b0f367a4f0a787f92fbc938cac5e",
+   "62b004bf99ffd31e0e36587f5c80a2e3e2009332",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.worker.js": [
-   "9a5368620f992fa8e78ea7d0f03a191371987f01",
+   "1650f4edc0ecfc98381b1dcfde118adf191e26af",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html": [
-   "f586958cddc7fc40a2b1adb244b34f39d53293c8",
+   "e68ba60acb9dd3bfafb27f88e33c75d0925f9ab3",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.worker.js": [
-   "6c598606ef6ad3bc55ea7f30972d4b1b60d3ba20",
+   "6e638a7e5e6ff836360ee9d7e4b9441ebe8849ad",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html": [
-   "92c9c95e23a5606983a216fd33d4a903ad1f8fc7",
+   "0c1f5321491da97c06362ea32a7280992fd9b2ce",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.worker.js": [
-   "7aac1c98e7ddc3fccfbcd159ec2728d833ccf6db",
+   "c4851d64ecf48ed8989a6177e67f2ec13d99d851",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html": [
-   "a6cf15069f7b2d67e82687827d42706b45a8590b",
+   "3cbbad8fc9cd68352b730d20d229111c369e5000",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.worker.js": [
-   "341153b091d134bec85978e010d7941686fdb2bb",
+   "f5e90c2e936b5a3042dbe7097aeb9d33f3d8e61c",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html": [
-   "ac414fd6be081534657a3af7868948621fa5e1c2",
+   "735f6a0b8cbac2c8880df768f74078ce374c2c4b",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.worker.js": [
-   "403962afc64b949416a3f92015d26e59d26c62fe",
+   "583ac2549bc5ff1f747cec6ef78d31e04f60dfa9",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html": [
-   "be595d7a4cc1e453aeef92dd0c020ddde75005d8",
+   "65091f5b9297f54991ee38aff065465cf93bbd65",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.worker.js": [
-   "8185fdd7c90b40e3456cc125c992febc5d791703",
+   "46a98b1cce5b4af6bd9c22d33b6c6aaecf60a108",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html": [
-   "c1d0486dd7e526e489dce7780a317c6fa0baa3f3",
+   "f433c9d8f325c86deffed0f0a5bc6df89e9151f7",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.worker.js": [
-   "91c882ec07e31ad389d1fdae96f602353d4c84e3",
+   "135d692c40090e89a50f0b74b803e571efbb7b91",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html": [
-   "80b0ecf33830d24ca8ee4936e7960f63f9116e7a",
+   "9ca76c5ecc8ef651b366f21eaa9242828499eb67",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.worker.js": [
-   "b031416601fbf74f0f372cf2969d5984984ce57f",
+   "152fa384aff2250e5a8c371ccd42013d8115baba",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html": [
-   "ae4e637a22968f8f14d2ef8f9306a4548572566e",
+   "bc423c2d91a61042fcc56a4b55942f0db683aeb4",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.worker.js": [
-   "671ca1ad390f94fb11849006ac4e9066b05d2386",
+   "1fb26cf5c4ab7cfdbff517a709fd49e475aa0b6b",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html": [
-   "9e35634b537c84abde163ec86545f65130980b81",
+   "659c8e01200ddd275d6498d182172c1c89061c74",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.worker.js": [
-   "a6045c614ab05d496c778e7209c9d5e5b1acebf2",
+   "fd4ac9603899728cb1dd4c20cfd871d736d3fc87",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html": [
-   "858b459c1f563e5e8368ca533658d9fde2ac7e2f",
+   "bfda01c121be2a40c2346beec38100222436b85f",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.worker.js": [
-   "77be7be041be6e98058bffa0b89f413e4c17307b",
+   "730acae40d3f6f847f62a266d4e4a4d09ffe1ba5",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html": [
-   "285108a6e74a636dcab925021e73669645ae293a",
+   "7d3ebb874e104728bc3267794eddc57da98d9e02",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.worker.js": [
-   "d534d4d6c72b4f459c48026cba54a1fd6cffa052",
+   "1a401aa7f86111cef5ff4b904417d595f8395e77",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html": [
-   "8056511b63300b51868cddff1bea3610291ebf62",
+   "e63732896e849f6982993a5b0527d885ee5f8251",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.worker.js": [
-   "32a77d921e236c6550532e8f3f66e92faf6947aa",
+   "c6832d98ce3b91ca1cab9ba6a896e582d6ad0012",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.html4.html": [
-   "f0ea1a733ac8968935bb385b29def3016a168606",
+   "d76252cdae19f972d58574c380b22da27fb4eb22",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.html4.worker.js": [
-   "c954966c38a1450a37ddfd707527d55c63a90992",
+   "ac9b6e162d55c1a1451689d3d673598fa3bdcf80",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html": [
-   "b23a3762ef3cb04f0c4ccd20535dc1bab6650592",
+   "428d440d851f310b76b67bb5d6b76bbab35e3548",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.worker.js": [
-   "27db125448aeeef0a62dfbfd0d500f8144d36554",
+   "0f0132752ba62289855d6bb64ed304c7a7e8a998",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html": [
-   "2227d55fb0ac218bf7ef5cdabcfd02b3acef64e6",
+   "ac2fd719c286609e5d70bdc4c65846a3390134a8",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.worker.js": [
-   "4edbae4d7eda708fc6f4cd46dc009fb2566e4a21",
+   "4355567229ebcc7d2b2c2895c7e210d1f54380d0",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html": [
-   "dc7caad3f7f6399bcc8973498254e5ec6771122c",
+   "85e835de461886631a9327d3cbc83c6346ea8b6b",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.worker.js": [
-   "4744f9e873cf4977688c5a41ce03e896a0cc32c2",
+   "d274b8628f41c8b93d26b7480938cecd6d864b5b",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html": [
-   "affb65e76c17e43af7058fc258a7e1204d56ff3a",
+   "7a73e5c2292bfdbf281aefbd4a1f671a354fa64c",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.worker.js": [
-   "545df307f757948eebb1d14a1aaf38b6cf48b77c",
+   "d57b1961ad2e73db5f1fc95a9b3c2903b088ead0",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html": [
-   "407f6ee2cc2426df48a19d00fa993a3af91439d0",
+   "6d1fecd4e3d153bfab9104c99ad31394dce0e768",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.worker.js": [
-   "960e318414c97374b4e7d1fd87415eab0dcc130d",
+   "ea043e51e014875d0a3197e80fe102ed045d6526",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html": [
-   "319676e21023a45b948f87822f89e7eda9d792c5",
+   "9d8110048c4618c41bfd2cd234b7c7f784af1cc7",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.worker.js": [
-   "0bbf5accd5ec71e583641d38fde55289f1e8a546",
+   "c2c9ea051e4de59477776a5dadfbc901f900ccc0",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html": [
-   "001e1baa62be54d21f1211b0138b28ce12ad0eed",
+   "47f1a229c0e6b1089f6d34639d36db782850ebf5",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.worker.js": [
-   "c1e7c0a56637551dec0b14ee7c5f989a04283958",
+   "3d975770643a0bb6867b9449077ba9cb382a266b",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html": [
-   "4e9e59c0523bc3d5404f396a5914094cba197530",
+   "c9a1d4971543590647b8d27877b77b7dcc9e5d16",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.worker.js": [
-   "bb45213c4fd95d3d38d9c8407b9ace377c105460",
+   "9a6c49f2eee1a28821f58def657ad9a5ed31e676",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html": [
-   "ba0ca5e1bbb93bd984e4de75639c35cdc95bad41",
+   "104f8806db6f4c10babba5430cc2fa1490f1d989",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.worker.js": [
-   "17a8f440566f089c7974a5b5e4e4056c32939fa2",
+   "2899f40c6d506cdebdea93e4bef72e49eb536d8b",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html": [
-   "42354ae8ca67e626c4975bfeae6026fc98174023",
+   "2d96d02245e9b8da7813898fe58eab85ff5f8e58",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.worker.js": [
-   "7f6efc6060e44e299ea91d991ed5dffd06ae950b",
+   "ff388b974ce73850b6c3459d0ccc417f8c2a82e5",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html": [
-   "402e6ad57f0e14e358b1f66769038066a9bafb03",
+   "0ab6881a440b1ab9302db409948d0cd0919411b7",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.worker.js": [
-   "f5d551c041c0e51963d0cd19317896cf0492d2b5",
+   "108e36d4bdf9815b5646f58a1c4d2e288264806a",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html": [
-   "2556a9c9b1ef971bddeb13cae92af48d901fa13c",
+   "1093a5c68eb829b1987059e2d69d56feec0a8d4e",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.worker.js": [
-   "966f465868fd6e093edff67c9569ff9733be2ce5",
+   "8ff720eacc34065436d2d03e4e8f4b1ab50485f9",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html": [
-   "c2fc1ee8f6c2368a7983ffe230414c3a124d8505",
+   "923e8ba4d27336a67c99132ea0bc6dafeefbd102",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.worker.js": [
-   "3a54246c70a10d78b437a297f2aff710e0f4b0e2",
+   "8607b34b217fefda4d88b8cc519da285d60b1db2",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html": [
-   "f842efaf0e6eda24bbecc80bbba1eae283b755a0",
+   "cc6a80adbdcd6052ebbebdf2ea2d94078018f23b",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.worker.js": [
-   "88f7d35465f540ae0b54b716205467fda580e2fc",
+   "6ffe0bdd01ead73c571e9d228825118b69acd3d9",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html": [
-   "22660ca39be26a05c45766f6d5f2316b891e7476",
+   "181e7ba87662f587672bff4118fd4a1e9b28cf59",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.worker.js": [
-   "cd4b4890bd89502158f5a5825ec43f13af606378",
+   "1a6600e436f1314598270ff66bd04390fd0d775d",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html": [
-   "e89a715ea766e705d9060694a54ee80e0a979fc5",
+   "e190de146a5261c305e012655c00cb96b70bfd4f",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.worker.js": [
-   "999e0b599906cb51224036ad7fa8c7d8d7529328",
+   "b691fb55a5f67d3fbb4a25c43f80cf95c32daa12",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html": [
-   "07ee370185139980607c666413b39524d6eedafa",
+   "ceb0af4d3d84329e79ce7636608208432cf3fb33",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.worker.js": [
-   "f595e1080871430431a52ab460c1b1ecfa689d08",
+   "c7c3058986f1e928f42b162b758d3bd60fe9c886",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html": [
-   "330c4bac1749d6c17855ad27965ae9d7d02ea85a",
+   "f8e00c7b541a3f57c56175860fdf2df47bdf329c",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.worker.js": [
-   "6fb16f30dee9a9d4eab420e5289d7fdaadde535c",
+   "9256e7ee48885a035f9409d521163326c1c29cab",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html": [
-   "0a69c2804d4743df75b89ebc129d28134e783ea1",
+   "40cd7fdef09f021deb2672d5cbafe3df9175b851",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.worker.js": [
-   "832f4dea120d343c1a5100456f83b7577ecda84f",
+   "5bbfe6510c5c8164a6a20b5e8718febaff7f132f",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html": [
-   "5565e7002e55307db263b791069f51714ced11a0",
+   "cd896a258a9431ad227292cb21392039b56d92d4",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.worker.js": [
-   "f7a7097acdf093ce8c05f405697ee745a2678581",
+   "a3f98172c8471efdc23d97b97a4d78253e56721c",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html": [
-   "b1e452c22726db7ddd2480a1c11f5d662022641d",
+   "4e340b690b35e3e4407c96f522e6a24189f3ed1d",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.worker.js": [
-   "a931467b7a78ebb5d8b9a77a7b08c071baac11ca",
+   "d1de7c52239d4b68cb9cbae3130b7306644393a7",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html": [
-   "b0954ef1fe0484878f7a53b42731cedac741343a",
+   "842739aff01ff0ea33461d3879f6c6857b4a7547",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.worker.js": [
-   "750548d74e498853de2dc2de7cb80c35a1f34580",
+   "13674bf27df2f0a1f7d8996be9a0e2ae97b46042",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html": [
-   "e53cb87a8bc291b280050892ff52274c377aa2df",
+   "3368ef2ef8de96f374f465f876a6d84db8b738e5",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.worker.js": [
-   "7796a4e99b0e3a55ae1f9418c8a64779b21c8893",
+   "9346d014df3371bfc154478a70ba75d096a13a98",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html": [
-   "a59332f040d2b8c6ac788350abf514e38b8908da",
+   "4c68eb1128ce4059d9d19c3261d0b4736928fe75",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.worker.js": [
-   "2156ef06cc75d24d50a055af4ff817d0b1c490be",
+   "88232771e199d7d60fff15cde1bd7a7552d0f18d",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html": [
-   "fb1548478ea366684ffa38cf9866f7fe0720a730",
+   "9e2a2ff8cf0528dd0234f2e2842fcf184e57c5d9",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.worker.js": [
-   "f1b2a5086fcf35b82f027091a6147c4764bf9cdc",
+   "64ca3fb3f1eb00558919b722bf7396ff20f17862",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html": [
-   "7f50966e0b56782f9c7ad557fb5bb6304f792aab",
+   "87b1c49492dcaeb88f10180be5cd922be1ea8aeb",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.worker.js": [
-   "b09a92dd94ac12dee857ae17e230a1c10f2fbdf3",
+   "8f2688972a6996018219017713aee78521a1a5ce",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html": [
-   "7244cd0e34c0a82f7aba38770c7798391c576050",
+   "c17d8b36ea6f024d2b1de30eb476a717adfe88fd",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.worker.js": [
-   "0b2a0652a3530df4643c93a5fb500bd7d1b81068",
+   "3c3a53986219552dae4928c42b1cd2f6027be573",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html": [
-   "3577666a8c7bc0444ae5ac5ee621269a2de4b12a",
+   "5b49863ae6d4d5cf7b376ac6542685e0fe8623af",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.worker.js": [
-   "f1743472213e80d0389cce0f359640379c80b477",
+   "13a7f67b28f8be379cf6b13e0cb5ff522d9558db",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html": [
-   "a3b907089e262f7c2fc106907944e52fc621dc4f",
+   "e7b19bda497a8dccb7faf4ee0c126b37998e9700",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.worker.js": [
-   "331ec0702330a78ca0310ce84d7195b2172fa57e",
+   "faafa6ca29878fb6ee63a8e82afa474d87e7633d",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html": [
-   "9e80a6223b72eaf87080d161ef20a3d085d3578f",
+   "058f777aec59f2590d61c96f679f1996a8aba4d1",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.worker.js": [
-   "3cad84f77a45dd4ef0e7ff2d2558dec0d3d9af61",
+   "6ef178fe9d596a72dac5ac46d8254975d921d208",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html": [
-   "0904209ce368a73759703d9a1b496c896e89219b",
+   "073bd73565bfb44b5ee45ad7377d48c5811c86f0",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.worker.js": [
-   "011fbe7bd7d5b65ffb232086d769b2f08eb37fdf",
+   "9f8c1059512614d0827bf5cab9eef4739d46db83",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html": [
-   "6e89e9d70076fe08e061a99c2ed5f582ac225a8e",
+   "0a3a777d72575ffa105e988e6708284c6af2194d",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.worker.js": [
-   "9ac75b7dc527b3732f49c75124c06ae3686f8894",
+   "f873d14c42b303055d071a0cc146e9d3b70aa0b9",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html": [
-   "82ca843a42dc54e16a2ee35bc6bd86e88b71f893",
+   "f35b50f997d9012b0c39d8d9c8031d9973edc9aa",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.worker.js": [
-   "5f5126efc142c0bd7d8ce268f887530a0c479066",
+   "85b9415cf694b4fb4a500fd12a144874e15ce8af",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html": [
-   "26bbd26b7d1d392662ddceae36ea990dd7009289",
+   "a49efb342def3e229e07bbba4d9cdb44aab97a6e",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.worker.js": [
-   "70b244089b640a75eaa7a9e99257bc82b2403361",
+   "2e99264ff953056bb6327dbd0a3bf4f988a33a9b",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html": [
-   "d112d5d68114c40247c77fe56019b9d1ef912ffb",
+   "31c3b3b218aedd601db4993c87663fa9e05e5435",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.worker.js": [
-   "1aa0f528434ef27c6d82750298f89437bf47f1a8",
+   "d479378e1b4c9a378e89d07accb2c213346099bb",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html": [
-   "07a0f6cc83bd51e3510bb41961dfbbe42bd60a9e",
+   "7d6d4cc7c4185f7a77e8a2f24e0f9226974b9e5d",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.worker.js": [
-   "abc579a889ae26455df69d2b02c0a144e3e6f2f1",
+   "6c43ce61ecf7d117c733f9aed095db6d8e514e2d",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html": [
-   "a69c30e8764b0645e9dec3bc132b54ede4395c78",
+   "3fa81d55b159bf40b5b392cd6d308f00eb7b9cee",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.worker.js": [
-   "7b2f119d0e7dfeeda8a085e136339cc89a5bc9dd",
+   "2c5a99680bc74a5615d6083ebe3e473faab49c8b",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html": [
-   "3f3ae631192822b0776188ec3efaf37764354e59",
+   "196b1540bdf0efdb39ac0ceea755f6ba329d38e8",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.worker.js": [
-   "a3f9cf144e8ccdd67f1a1a085ea43ba0e7619c57",
+   "0374288d3dfb27d3d177b62f61ad105451564136",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html": [
-   "3ba241bc90855b2b1da2edaa550111551b11a180",
+   "61f61e1f9e5ec85200382b7a513b69136266bd08",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.worker.js": [
-   "c1ef405c6a5bd7c85868a70443abb47e09abe9be",
+   "2b6b77fb77b3f150f7586f76285ea47b46d17378",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html": [
-   "061784f9ea22672562dda48a084a045c8d4794fc",
+   "888cd24d925981c4ee3a880704438dc0cecbac6f",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.worker.js": [
-   "e2c287ebe1ffd3dedc4b71a42ccd915714d66799",
+   "77793f21d5b8e7ebec308edf89a8ac415207ea0a",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html": [
-   "1641667287037c9e9941511ecc84285e4b2addb7",
+   "6f23cd3d537bfeb4536dca7a09ee7e26a9a96cb8",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.worker.js": [
-   "bdb9b6dc7a003244e691d6d32e1568003dd6ca20",
+   "0f384fff9406d48d990a5429dcf0dffc5015f94b",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html": [
-   "bc40569ca4575f5812f03bc0c533ced5af10f3fd",
+   "b5b35153cf00a58165f79d00ae37894291afc778",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.worker.js": [
-   "290f175096d5ce4ae7a5bcb6956735855f92cf8a",
+   "88343536912db2e248f8b2d7b5d2670000772a17",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html": [
-   "eded526dfa48670da44710f9bc92394e11c7f2a0",
+   "a406acee58c8f2a5a3f3659b26ee937919345f37",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.worker.js": [
-   "038b3838ed82090c153999b2303aec6c0925b4d8",
+   "0781729301735062b76dd96cbf5b547d988a254d",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html": [
-   "dec7ace9295747edffa4df6ef85cab737a5b312a",
+   "b7bcd456e52f2d5475be61b79953fefca049f588",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.worker.js": [
-   "9bdf773ca0926e8155dbd32c57da3fc4fe64e709",
+   "20aa6549321f7f2cd46662b65d6fcbf7ba261eaf",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html": [
-   "8b0aee56eab001558a6d6ba6c01e11c42e6d162d",
+   "638159ffb32bc1746a6338350d962a408b1963c3",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.worker.js": [
-   "0db44c388361985b5dc399b116f49811d0501bcd",
+   "d99ab57b524f721e68b652ce3d0d3736b6dd9de5",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html": [
-   "a3d9790a74622828a9536fdf1addd3cd781a0fa5",
+   "3599f0a58e3d49d785170c47c864113893c6a8cf",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.worker.js": [
-   "e8317ecd30a608bfc1507166c0fb5a68c7741256",
+   "2b81e8ee14eeac682da5a51c37e9a0b3fb296b9a",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html": [
-   "5c48aeef73129825964afa3190c6b7eacfcb39b2",
+   "9df6a9b40148cd8b67dbbce49f8b3f96548b5144",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.worker.js": [
-   "b98c41cb31016948bd04eef5e7ea426b56374773",
+   "2bfd49319dac461a0cf660a29c39192b6cb67086",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html": [
-   "3db018c5f08be4662679a6460fe293513069f236",
+   "7e8864cef4c326310adf96405e4ea8e2b0d9facb",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.worker.js": [
-   "de7f906714d1c0581cfcca6db64b1401b93e0481",
+   "d2b25f5e574350478781b7247c065d57f37a61c9",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html": [
-   "bde234837767bcc8e55dd98693fea9c2d5861c35",
+   "9205923db6e49764f9dfb7cc96e3f21e1fef716f",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.worker.js": [
-   "a594da0c17d6a3a13c99ba4c879f17261ad8190d",
+   "50b9eca10c1c836fa59341eee5d7595fc3570908",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html": [
-   "3668053c05663b37edf02074a1a2620601fff29f",
+   "7b79a5a6df228c95ef4b283c2146d61ef2d8ce3b",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.worker.js": [
-   "0dcbcbc8338ed6197a3bdcfcf70d6cdce2f830d2",
+   "4c6bc4b2c51a1967a58f415262aa82fc1244f2de",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html": [
-   "04913c4384ba400cf4715219ce7a452d5f673405",
+   "4f1e0804f7f517f9e3f74c5856649731113f6db8",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.worker.js": [
-   "21ebeff24e8532300530f8328efa95eb828ffe85",
+   "1c32ae4f070e3435d290456a8b216666e357b1da",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html": [
-   "31586c65a57222dadcc9c75a7c4b254e9d7bcd4e",
+   "7684a185d5cec79c873ffeb84c2b4e70dede1ee3",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.worker.js": [
-   "ead4ddd5f9f6b899c91b6043ddc6393363f91481",
+   "d82c64faa7a9a73d5624c3c3836f90e11a353680",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html": [
-   "2821ff2c31ccfb85bcaf81e261559ccb61752c12",
+   "256992b643254850533c8866c5f208f3f7cac778",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.worker.js": [
-   "333fe0fd3044dcbd667f6841c76df83f44e15d68",
+   "b7f79a2d4544ca74d6ea09e4e23887be1fae8b77",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html": [
-   "0fd927bfe8d2163be72d925c4b33879058529971",
+   "c5032d4e2e193081a6dd9aecca025d93450e788c",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.worker.js": [
-   "67513fb524c711ba21812d00b3532bdbfbd28a26",
+   "f3ff4ec5e96b52a5324e4a5a12a9f6498a3aa793",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html": [
-   "6e403249e69a31e9dcde14f3be01b6f0659b4438",
+   "592f798aafb99cbc5fc98b765a7634a771efd16f",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.worker.js": [
-   "561f23228d496e04fe27bdecd7e620a085da6efb",
+   "06df1feea17652ce73a6961933580fedd314a57d",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html": [
-   "c65b44056023229079357892b8095ea04473ae6d",
+   "433559e3b834bf520a06ce905de12e694bb395ef",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.worker.js": [
-   "7d7b27c6b5f5949841c48d312c01a343022511a2",
+   "7fbe239f13708dee59c85043331d0483360dc021",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html": [
-   "5f05f788ff23f5d7a4c3aebea5fc875e40524e38",
+   "6785eeb9c11edde63dc764c8bd5506f98ef2236b",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.worker.js": [
-   "8fa8b51e97a2e60f1133686195f16090ba149aba",
+   "b35e61e8231dee6de0ba2961847b5fd15f16255a",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html": [
-   "8b75a3fa4ee625529aaead8e3b1472b08a644c65",
+   "06e7676cc069c2dd7940c83a63cf30f16031f336",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.worker.js": [
-   "2dbb92859aea354bf3ac06cbc06453efe59b573a",
+   "c764baadc60cbf71aeaf01bf6b3ef0cfcd1d4130",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html": [
-   "c843b9ab1c8eb5b694e91992bc0884848eda2c24",
+   "c30605d1f4e234c9147ba28aecffb0d11ca55e9e",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.worker.js": [
-   "3d8a26a03a399c718db96c5e868371232ee0c1fc",
+   "a100ab7782d9c1c49b5a698cddf81be7528e7722",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html": [
-   "ccd02aecb1f8cc186f2b00afc378d075f241ebd0",
+   "74fa502c7d66ccde08f928126795b614a0d6d9d7",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.worker.js": [
-   "09521661fd983c834c7b9434f4335d8dcc74836a",
+   "ff97e305b912e422cb7fc9718e2894b6baf8f1ae",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html": [
-   "ba577fd9a95291fcd0d1311ee83cac772485b622",
+   "1894270290be0bcf256db6072969853796805334",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.worker.js": [
-   "585e851b033a94ac21b3a6dcea9496482077b00e",
+   "1330db9e2c093b242a6fc1f33963cb9ed0359d41",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html": [
-   "6fb884c14efae830dff523ef8bcb32e7a0b318a6",
+   "fb7e6212bc9534590357d6d3d572614955397e9b",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.worker.js": [
-   "61265402a2a6053b4e7139889f1181e68ff224c5",
+   "58e7f4c7df516fe6348177193c350c8bc7f5bf9d",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html": [
-   "e48a586f213bf82adb0748e04a5ef1b47403fcc6",
+   "81825a3d6d3c5bb622b280698a18a9e71f59429f",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.worker.js": [
-   "db4516adc6555584b709db0ea3364890a21fd12d",
+   "dfda77763c84ad6345bd921742f15c644da31b1d",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html": [
-   "5a48b8d1ad3f2d226bb45ddc597e2fdbd484f2cc",
+   "a300e3a37796a85c1e1f66c63d763f3d56add680",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.worker.js": [
-   "181cc45bdee27651b720bc17450fcf041333463a",
+   "3d2fa4c4b5fb9a5a6264ea27ddf41fb67e8fd3c2",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html": [
-   "e9c9726b769925d1d0f7c6baeb76ad0a8dee266a",
+   "e9d8a1c139a59b5f4d677aff745504a258d99136",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.worker.js": [
-   "71bcb605f6ea825dc9f83683d2ef8b6e000182bb",
+   "47a95b92a179433a6fcadf8eeedd0610e2d585d5",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html": [
-   "dcfec31d54d40844395bc49923857de900e8b4bb",
+   "04742747f724286d19de0c39e063532369a1127e",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.worker.js": [
-   "0ac805440e94069f82421c9c288bf805b5c1ae7d",
+   "e60b819557c647588602fbcbf1f0747e0f3f0da1",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.system.html": [
-   "ce35a742499d1ddca35a3a730b4b01563f34b3ea",
+   "16cc536ee5ecea4ab55548c01ceaec95b11b70cc",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.system.worker.js": [
-   "ab5907deaf70c614cdc95e29485bab2cd8ee2cf8",
+   "2d6e6bd54d77b50a4590b818bd4ac63eb81a3b3b",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html": [
-   "3e7da89db9421811b06b2a3215159f23c4606026",
+   "7b12e22552fde663fc03d2289183c519dd443630",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.worker.js": [
-   "10bb53b5e4da34e25fbb2010a7673ff0a0a85d61",
+   "6f50f04331caabbd5af00a294ad862241fb833d2",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html": [
-   "9dd87625f5bcf7822b36693fb9892be3935bc595",
+   "8b857b9ae1b88e65e26fa587efcc465070a9a797",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.worker.js": [
-   "0dd078467f7fafa139347d578202cf6c9dcef872",
+   "d0e6e3f72bf979aadb0bd3ee689eb56dca9c8019",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.empty.html": [
-   "372055807c12e17b5f4a44cbff5ec02fb4f2f3ba",
+   "f6d79eabdde7af18f0e29c7ea456f28b13b82024",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.empty.worker.js": [
-   "146520e9d70f6343e8e6fa7507af2ac33f029c5b",
+   "890171cfa1813f8cdb5f25ec99084e23dd7344c8",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html": [
-   "696c6e6afb4201e298a1af32ecd1abdc93b4a7dd",
+   "f5af860549939007d9a38d5321242ce91f1854a6",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.alpha.worker.js": [
-   "fe53db220293508e8a35217d424cea33c22430d3",
+   "32d429fd69b9b38f561bc529daa4dadd0fd05e0c",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colour.html": [
-   "a924677855ceb43b25ff95373c1c1e76aab5b5db",
+   "7cb6d0e059af856525e1c668257b8bccde7269e3",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colour.worker.js": [
-   "87cea53d523a848d4efc3201367c788927dd1cb2",
+   "670099805831a8a9c5e1401e96b714c02d92054d",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html": [
-   "19c4e47df542625035e3be80dd7bff81336b85b9",
+   "e091155c7d981e99aa09c75efa4038a7e794e606",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.worker.js": [
-   "34c2d037757d43fc1404bee66d5b978a428860fa",
+   "0bd86f7c1ace2a75779de3b13388af7a4b3bcd94",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html": [
-   "7f5cd7bc2b538fe5b1400db419c9460e01e001e3",
+   "2056b87bd28ad7f8b39f0af693e5e0e1946b0683",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.multiple.worker.js": [
-   "33bdf88b04fcc44dce420c3b8c51e97c74d116b4",
+   "e7a085786193ee1b945c43eb16f619e6d0c9f315",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.outside.html": [
-   "f0fd9afab66bf14cb07b68cc458fb257a35cee92",
+   "cc1aaeff0c8458802aecc73cb3ab0e619355088e",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.outside.worker.js": [
-   "9216d0fc511d7dab6d51caed5c4722bd85575898",
+   "564ca3c5ed9fa71c6d541d69902faad3692628fb",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html": [
-   "945873eea69866c2390a5768926643f65b1140ad",
+   "aa4da5160de8ae68441538f2efbccc905a3d28e3",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap.worker.js": [
-   "bf5a5a559c328fb2c2fa176565f297da4900d098",
+   "4435de765c72822841ea403fba9412a02b5eb60e",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html": [
-   "f20904e248d3b05bac0f643fac8aea492c8b3f27",
+   "7151fcd180bacd3a3b23d71f9954dd82a3b7c9bc",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.worker.js": [
-   "42b84731b27364cc7970ca8536ff3b45ed418cc1",
+   "2463b26b584a9316f647abdb9995bbf98f25b8ac",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.solid.html": [
-   "c585bb0857b0bf4b53be9de6c00726af82287032",
+   "1c1bd39d0f416a1b772325628e52ebab90aceee8",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.solid.worker.js": [
-   "4b500080a73eafeecda5f962f7deedd915813bf6",
+   "de746abf80a3188c0600f6d7eaa5e2a333323457",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html": [
-   "ffdb32de87c05029ce6c039dc68fdf1cda672d7b",
+   "7415e78f510fc78cd9da3fbbf86e4500c7a5ac24",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.vertical.worker.js": [
-   "8212ad82608ed54fe2c1c0e9966f03602030dc22",
+   "01f9a1133bf1ef91c267e1f9ad552cb71a415c84",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html": [
-   "7c8eea808e1e16a7b080f1a0f4d7b58510d618a6",
+   "fc2ab8f8dd9bb47ca7522bd5c6ee6d95ff5c4705",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.worker.js": [
-   "4dbe146238254b947d2fdf9b956f370863eccdee",
+   "2f65344471ae5e4c8e9d83ec7f9d4be398ecf59e",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html": [
-   "5eb37c8699730d0208eb1280774ce356b5a3a7c7",
+   "162b22e9d805141e06ffebc42353d28eaf056eea",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.worker.js": [
-   "935e16a7db9b9fd93a315d973c2e9ac797137ea7",
+   "621317791e928e3673cccbff937f2d07395b2931",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html": [
-   "7215a9554836ffb77a538687d2f722b0712131c4",
+   "5283eb6ff32d95c87aceda705d2ea6b7820df57e",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.worker.js": [
-   "cda4dc46c165c85164dfe6b0b3ffd428e5b1f0a8",
+   "269ec5bacdb467b58101ac4f3b4576a12aebb60c",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html": [
-   "21c94eea7fff282ddb751db9f69deb9596557fb0",
+   "e5d04f5586b09e1348ba95d9ce7d299dcb4341fe",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.worker.js": [
-   "78b8e8f1246523f3e21f898b40de9ef198a4d5b6",
+   "bd4e780c99d78a67c9cf29cf31ec8de14923f0cd",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.nonfinite.html": [
-   "47b1ee5b2fb1de13a34967eb10854df25be4c633",
+   "162dc606c3a844f10ec83599f2e6e1042abc034a",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.nonfinite.worker.js": [
-   "502921f61f0a9545c5ceb9433133482632801384",
+   "248043deea56a7adc82a34d3926458603dcccc3c",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.1.html": [
-   "43b17d6106cca3c3ab302029c9971381e1da59a5",
+   "350d08c9a2ab0cda181347263c851915406c2ee6",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.1.worker.js": [
-   "f775d85095f81838166fddcd426affdb0978a8d3",
+   "7154253b6e69127fbdcc95c7bb82fe5597ab285a",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.2.html": [
-   "44c95e7c052e25ca22b1039b9afda07f58033a91",
+   "c1c42497bb2b3e49398be4a7434eefa0e0f18870",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.2.worker.js": [
-   "bca8df0af4bb7425e7462a5880d5999fd02d61b2",
+   "016dc6d6037e6b820cf25f9508abc9017da36c74",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.3.html": [
-   "963b7eadb11c2aa95c2125d06f156c89949890be",
+   "1938cf4f961b03cc0bafab37732fda730ac211ab",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.3.worker.js": [
-   "6acfd00ef92a192c3be52dfa49750a5bfd8b7d73",
+   "69a97f97ae778752ea35a83ba819e4ab98bfcae8",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.compare.html": [
-   "1aec24c65dbdef4fe99947b4ab4f23f16810fbc2",
+   "ba4df23777983619c8d1b0bdf258f5c9e490d50e",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.compare.worker.js": [
-   "affd64388b80d87e5bed9cf3b5c5073139bff940",
+   "937e1890c517a62c99aa259d352215c20fc9ca12",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html": [
-   "eeb62426d0488597d4f48ce7f54e26bcb5a0d5f3",
+   "9a2fe69006a0c3fba193ecbbd7843a5e92c17190",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.crosscanvas.worker.js": [
-   "9699977a6fe4ba9b11c8a47bb947f07706f2459e",
+   "e111aa99644170e51fdc2a327a640b79b9232cba",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidcolour.html": [
-   "795673bad7d6291700cbded5665ba487a89ec6e3",
+   "63990930bbd0f8428be74cbd2cf1629017e7c9f8",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidcolour.worker.js": [
-   "1fa62f3b17edc44961b4835757237e6ed7881f68",
+   "2483e3f8674e583b4c9e515fa65bbdc4f9775340",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidoffset.html": [
-   "2dd87fb47cf7c0aa71fbacf97a1b0f962f54a559",
+   "813c46cf43ca8b28f6dbd765c58c94a4e2d45ab6",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidoffset.worker.js": [
-   "28f7111579f9f7f6eba800f8cc43e002b637f704",
+   "366cd79346b4d3dd1496e5427652f298f71143e4",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.update.html": [
-   "c7f36a31993a7775c7e4405329d9c1452c59e7ca",
+   "21835db43b1b92febcf334f293b3044b7a6a3017",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.update.worker.js": [
-   "028d9342416814d6c389db613378831d33c4fba4",
+   "61439fbecf5ea4a02af8514addbe9295ec9705d4",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html": [
-   "6819e1601ef92888c98fcc27bf0534707b3a6e46",
+   "c6f7e4ae85145e02e48744e35fa17bf1dda564cf",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.behind.worker.js": [
-   "397ff4ead14236f8a3e0321b3a2c02c0579d307d",
+   "ebd4517fc9d96467507901105de43fb4ac6ed101",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html": [
-   "0c81b81e8422659f0637b30fade4ef0f898fed15",
+   "57de6fca70e169209bb1ad82421ad8587dc02958",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.beside.worker.js": [
-   "145e5119e2e95c68a7a3fe9513ed1df016dfc71c",
+   "5aeb58fbe808158e09aa70842eb39d3d0c8255b1",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html": [
-   "51457750b619cbf487a4e4b80710f817ad65ee22",
+   "e7e1957ac2032097d10dd1db5e5d44bba92de010",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.worker.js": [
-   "daa24b06cd8fae83c9f1e75f8b2a4a125044dace",
+   "9290614e9f058525708992bcf3750fc6e06955ac",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html": [
-   "8f6c3025d9f747fc689fac7a6a1b6d97b4a97ff8",
+   "70a4dd0c4caf7bb95c9b56b0bab9c03c030d3c55",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.worker.js": [
-   "85f249571be720335bb368e1d71582561831842b",
+   "340b87cc7374cb084fe89231a80ecb6abf0e13a9",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.front.html": [
-   "c5b46bef906c73eed77092f440cdf99aae0dbe46",
+   "fd6f2d66b2e2809eacfe30423361dd95efe16a70",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.front.worker.js": [
-   "a7758e9e6b64d0c63e478e754795bb5dd314bfd0",
+   "30addca953315a50a9a6968ce3c63ee603a2ed91",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html": [
-   "a7025577781a850ef68735a759f7d263a6e2803c",
+   "84c95801f37e466af6d8fb54b99c1bbc8a05eabf",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.worker.js": [
-   "41323f632a9bba8fb53378954319f4538881b085",
+   "7e5feae6827743f777110384acb796fda063f079",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html": [
-   "f4f8bb551ddb2464c930a8fe6d4b4cc17308a9e5",
+   "45695ebc7d9a9bff23a0abc248742b34242e9d8f",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.worker.js": [
-   "4a0b9adf4605db813f28f6ffc5464e322f34d255",
+   "90734bccd8dbd36b5cccea4ab10155186f871c1f",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.top.html": [
-   "36f439ea70091f95a563a8a1b64de9827007be6c",
+   "f6dfa64b6c500504d2c60fb7cb9bb469278995d7",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.top.worker.js": [
-   "4275e56f7820d4bf819dcdf3c8b86a281e37beaf",
+   "6221b4fc8ffc30a4b2eb95cc3b3b883f4a3d8e88",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.equal.html": [
-   "9bbf489b80d50565e35b4329583a9f0c43dc2cc3",
+   "9ca390af876bff678a08353c3701058599c3fc37",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.equal.worker.js": [
-   "f5224a32af0948ee6e7d7d12122a5305ba8e8867",
+   "d3113570dcded1c2037cebc4ab1d2f2a4742d140",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside1.html": [
-   "2cdcd8843eb95b87e4434d1678f09fcbaa026eb6",
+   "ea27c0df94435804d9ac76002acdf56719f333fc",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside1.worker.js": [
-   "9a3f95a1f2d39d76c8d103ed885b0fb14438645a",
+   "c7eccfdbaf22de16ad0724d932e1ac05a05e9fa6",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside2.html": [
-   "0a79dbef2dbd79619b34985fa8791f05b4411331",
+   "16d3c9659998eb1341a3fe3ced07823b865efd16",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside2.worker.js": [
-   "4715d4e2bb45d8c63634fdbcfab5e737b4c98c25",
+   "8f2d10087ee4e9d0029c7bbcea9aba1cbe027445",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside3.html": [
-   "25d276edf438920b796cf204c0398b3ef9c18d60",
+   "ea5863e5425f6546d9c97abba8b22eb8c654ed35",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside3.worker.js": [
-   "b1f5530c1464f3f73216a53acc72d1e8e97f0a46",
+   "ae236d34abf200999383e3b849cd465dc555e150",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.negative.html": [
-   "7de3114838c31adc13d9ecc29af7984aec8ed82b",
+   "70b5d19bf123738ba8ade33457b6b0718781a49a",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.negative.worker.js": [
-   "c6a98cacdfe4ed59b8c8cab5a115f526aacccee4",
+   "7a662468be3c8bc641cba50918d39c03299ea827",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.nonfinite.html": [
-   "22dbe277aa3cb4a989a1afd1da2898254191e1e9",
+   "026a4ebfbf582d96ae050184be90b9e97b87d587",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.nonfinite.worker.js": [
-   "bbd2e95a2eefc783d940e00a37b6ad33a2967562",
+   "09458c628daf4f13540efda98c6ef0f220eee713",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside1.html": [
-   "ba0676bb7a975d5f8f4f1c047239a78ac8d01434",
+   "c1b8a784bdac84d92cce487f12912a14f9ac53e8",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside1.worker.js": [
-   "58280a6e45d3a245da141235d18c46517cfb2bb0",
+   "658438fd0dba387864efee35d20604845bef5ca8",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside2.html": [
-   "24c3a739e2445a01e8352731d6f76a7b7d5674b1",
+   "086bce9af93c0376d728a8be501489b2d4fb8709",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside2.worker.js": [
-   "7f1b101bdda5e7363e9b60065ee84d7f74918dec",
+   "11d7cdd5d58a737aa02f3002b9e58775ad05ecbf",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside3.html": [
-   "42589dd1dfcf3bf723072e82a189568f27c4ecdc",
+   "0884d5e2c3df5e9cc0db6935064477d9020c12f0",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside3.worker.js": [
-   "3c41392126cded6e381414a8f8d9e20999af0982",
+   "2bc5d12117a50b20965a3d7c01f56556fbfde169",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch1.html": [
-   "7fc343028fd555c08de3eee4824753204a3fb8f5",
+   "7af332cb22ad08bc7fd53f55235924bdc4dc3c92",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch1.worker.js": [
-   "d176c01393bd3f76607d46ca1dc7c1d7297006fb",
+   "97326018fb62f1d2b3fd7ed111639f9e025e3150",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch2.html": [
-   "1c8597d0c6104e7d4e6c79f00f15e784ba8313e3",
+   "3fea8066889fade6589dcb44ee78761ff0ff9e2f",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch2.worker.js": [
-   "2ffbc757bee8a3efebde41dd26a24a55b3727ce1",
+   "b45aa46ac02597f6e911cc28cb1a39bd229ff1b1",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch3.html": [
-   "1a8a81e0789118fd0aae6fb29d504f153cc52286",
+   "86caf07ae83f7c7f6468a3bd58db615d703ca9ab",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch3.worker.js": [
-   "4ea9b8650ef35fab468e4354def94a6cc1e15846",
+   "92e7f6f1e13066c22f82981f8d267c2161f8470c",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.1.html": [
-   "a3b466f9aec83e452c6e460f05e0342b9fe3487f",
+   "d0bf2dfb8982242e521de6ed98b04b02c7a2a9e0",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.1.worker.js": [
-   "368349187dd8452ee96b8c6694cc5c84d2b2c295",
+   "5bed45d536598e90e40f0697002d0331a1ab1998",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.2.html": [
-   "2ea3d2a0bef15a7dea7b703c09827f35393b2e09",
+   "174d248c170571321b4e63385b40177ece6c8e67",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.2.worker.js": [
-   "1519c33734662b67acc7023ac510cc27092b92b1",
+   "83ac31c83bd44f7ce7de8d576a5f0253d3ac4756",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.3.html": [
-   "eb3f7ba02803666d49a786f0c8fa76eead9dbe64",
+   "546779939236b804a626c5b884197bd833ce578c",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.3.worker.js": [
-   "5239376db4822d963cbada1c04083939c48efc4d",
+   "65446044bd9a07c439a3bfc78a65b44b075e10a4",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.canvas.html": [
-   "b3be4e9816d0949475d96c4e3214a6f201ccae6e",
+   "b0a4e67077d3fe82457746db837c6df88ae7d122",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.canvas.worker.js": [
-   "a9969f6522260c2d95ebd3b087c9ca0c2a3b37da",
+   "86d0a05e5a6bd10f3176befc9d0487c5c7daa730",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.image.html": [
-   "730fb02383c596bfeec652f480e8967ba572818c",
+   "4dd6fb470182141155fb4505f7051784eaa81365",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.image.worker.js": [
-   "2d4dfd8ee6fb660687e6802e6c9bad61d4821674",
+   "fe6af5ded07da673ffd83d94dab5674758639640",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.nocontext.html": [
-   "fcaecbce7607fb5d287bf0303d328f0797f0e2d5",
+   "efe2345a0598584088efb2e91b918bf741329819",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.nocontext.worker.js": [
-   "a5dacef885efb3879dd30eb348401b88087f5c23",
+   "d35d186fef9cc7bbc6890e529ce99ff6741828b0",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.html": [
-   "4652c407ccfd83b546b44f80a0e6fba0ded861a9",
+   "9a91555e36f474fe796b5ac8b222b83824ec74f9",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.worker.js": [
-   "326ce535d45240fbab3ad3ad9a4f5035236dd5b6",
+   "bd8b9b8dc5a4615c7b7cef0c77de873916826bf4",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.crosscanvas.html": [
-   "f7d0c5fdf61df3c7bcff697d51b8deccca2d9edf",
+   "bcf987ffd5f94db189664a890559317935843216",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.crosscanvas.worker.js": [
-   "6d3ba31bace53edbe7194d9db83e9c608d4276bd",
+   "56f5d3de9682796797bf3aee1e1cc403caefd3e1",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.null.html": [
-   "30fd65a26b6fd63689ff3d35b72e9567d2f5169a",
+   "220962579e3009821811653ebc8ebdba84f16d4b",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.null.worker.js": [
-   "454e619a8b061ef67e5a709aed2d9491c13902bd",
+   "a3186103315cc1440c3f2f6617730c79651043e4",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.string.html": [
-   "bcc4ad00cb8c9a21adef5dd1183f1c44db02e2cb",
+   "17a39e55ab3c55b99c6c02e09faf4a46fa119241",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.string.worker.js": [
-   "6d732e7b2007bd565da3d54d4e8d8998c5266100",
+   "a90aed85b7303bcc317adc67f822224d70dac7d1",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.undefined.html": [
-   "f0347ea9732f9cef423753e5f437b94a95a964fb",
+   "5fbae270431b1470455bb6e47fa76680c0f3d89c",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.undefined.worker.js": [
-   "8ed51b6c1bb5f7925bca47d8a391aad5dd109226",
+   "edd855997a3049bc7b501c6c5efbacf3be5acf02",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas1.html": [
-   "23c7e78ad9f370facc48411fe169f3027528e402",
+   "52a3f25c20ed619cef33425275b88ab93132ea05",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas1.worker.js": [
-   "6ca4d6da35a0a878e864d975978713284b078aa8",
+   "81d8635e65e7a5867ca5c4ab947cdaa88fe4f8b3",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas2.html": [
-   "f7488fcca7ec586f7150e73a9939c0d4307fff98",
+   "6311a22d58f3e4ec122df62c54aa90ee066fba0c",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas2.worker.js": [
-   "a872bb8ea2bf7ab641535f1cb3003b0e5bda7682",
+   "b7aa138d0c3f946fdb2ec5f9d69488a622a4287e",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html": [
-   "925e5cb5ea83e55d699542faf8b482f51c7a2693",
+   "7fbac72795768402a143c0b0445ecea8b667c320",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.worker.js": [
-   "9316317d60ac1a4c22ef11e3c2442002334a010f",
+   "318278b5ba5f30f0c501e78fa6ab2e3285696fca",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html": [
-   "2b81da144b3e0b29747c086624e86b955d8393e1",
+   "764ffb8f891dccb5854becfdbae614b826ae34ec",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.worker.js": [
-   "4210eaa4f9f1c049a64ad70a61a4a2652a402d97",
+   "c43d90c57b68b1e7ac8a9e53d809a0ac07832897",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html": [
-   "bdc3ab954f54a6569c7b458b2d7c728f50e5a140",
+   "ed66d9dce1f6973a33450fcb01521014b554ce52",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.worker.js": [
-   "226db04e1c62a1d2469ba7eaf2306239cfdb6b38",
+   "5246a21a13d709e467564987e999b98bdf02896d",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html": [
-   "8c027af2a4cfc5d36fa1d178da155f8d33508653",
+   "64fba24e2d82e8df6d9c84b0ad2a3de1be7326d6",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.worker.js": [
-   "da93c53d2923654835d6496a81e7fc43dd842372",
+   "ab2d34dc3a4a5a1e86ab4f424e66db3bf27973b6",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html": [
-   "916272fcade7893374d26e2f05c42e8b67afb78f",
+   "b118ae25754d74ff08217bd8d7d1d62682d92fd4",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.worker.js": [
-   "d8b59007076401e88702bec8d30b872919f0c0b6",
+   "ee4e62d7074d7c26e95ba48267540a26923a46d7",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html": [
-   "42576fa5f8c587d4d9e996cc879dcdbf151e02e7",
+   "66d01057847a3a83e94d486f871d95acfec0bd77",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.worker.js": [
-   "3a7b8521c1e2c15fbe63c453248b16b876e9479c",
+   "bb51634b9c34f0e83ea8f59c14dc87e7edf7b984",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html": [
-   "0b9bda31b80ac1f0e1c0b3ced07ae8a7a51f4372",
+   "326e6ae25df4dfa373322d53db01c5f317e0d3f4",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.image.worker.js": [
-   "a1fa022c6fda4e9a0060a99a21b411569327db27",
+   "62ec6d050c3c5280dbacb00b5b07db9af7a4a014",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html": [
-   "e2dd06a5b540447d410e077e6c821bd596fe9ba7",
+   "13cb9d0ced670ace72885773fd37e0d8caeb3ef4",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.worker.js": [
-   "062c5956c469ec9dbc13095177d91202e3db8d3f",
+   "4ccd01125f32ff63d478fe940c853c07882c8528",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html": [
-   "b7d9a57a6d7641587878272dbda07ac27bfd661d",
+   "15c9d0ef9340c9e0a0e80608877194a12354a424",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.worker.js": [
-   "9f442a8d51e4bc8dd5b6457f6762fda5885c30d0",
+   "ab1e2f1eabf709d5dd992ec62d17dfd029425ce6",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html": [
-   "ff5b67de77ff55fed93113f0f786fb0b2ab069af",
+   "7cbecfb8c88ee37acad361c95d4a605587b20bf9",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.worker.js": [
-   "5e2f1216c4800cdced9af188997f43230eea44f5",
+   "c6c9adec7761daf17b904244f300582c82fefb1c",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html": [
-   "02c45fd528147282cc57061156d2f7bfdddee519",
+   "e8e61d904a5ebce69b50c479f06923ac5de438e5",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.worker.js": [
-   "622bcecfba5ca070c67e4d91504d4e97a0758ade",
+   "c5049b8183bd0b3ecee8d19c1290ed65c92c9b0a",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html": [
-   "6489e235dcee3b2562000d2ffaf53ca0a86b8c3e",
+   "a2898cd27a6d903345f6eb87841a26f58d1a7a9d",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.worker.js": [
-   "246bccecd8740303092ee05a705de2b1f8e5c4ba",
+   "65d898b6818a237761c5e6860b65f177937df72b",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html": [
-   "13e7b8d30bff30f0652b48e58567952d3fb9a569",
+   "e414aa6dcc1ec05d37b81ad4718b94f8df054a51",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.worker.js": [
-   "aba01182d9d0b0d681b8654baf9ab4db7b9cb4b8",
+   "19b9c27f4f189a96c3dcfc209dd24442c0eaa434",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html": [
-   "1fc2e52184dcb7d7371c1ae3e1102e2ac2dab941",
+   "fd94c1fa7f88ed25ce0d3d5e4bc35c13ebd44250",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.worker.js": [
-   "e4777e05d29263cd41c3e0eb2f8c62df48fe4b79",
+   "eb63bc1439f04e2571b44ffd000d530a9f98f31d",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html": [
-   "c6ec1223cdbefe9c44f4f6500c69fb134de4382b",
+   "ffeccd2564814eeaf8ab221c1499ae39374eb4e6",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.worker.js": [
-   "fc8a4a013c1ff0545fefa8e7abc2a50432e6179d",
+   "af445ade40ef01202c244c7f4b9ae39ea9225ed5",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html": [
-   "f678f1c28ffdcce14b37af4200d3179a92f471d6",
+   "b0dc7df7c592b0e7962fc677c3119a891c325377",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.worker.js": [
-   "40dfda945bef9482f84271e1f26fd38e3b4c99e4",
+   "d1f8b5fa0d67264c3c3b931b03cc84536b2c5b1c",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html": [
-   "6d3e3434d55281102525934a28df7184b143f6b1",
+   "a4f58fb71d9bff2d505aa8637b42168b2fdd8a1c",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.worker.js": [
-   "108c462f6ecb908faf0f7c4f9b85b7a1c27873d2",
+   "359d079c043a8cc7a93de87e6b9b0f89f354f34f",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html": [
-   "5790bdaf7489e2e815cfd993fb3d5ad146f22a7c",
+   "fd8c2be188f287e6908ad53ddc934dba879b03bf",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.worker.js": [
-   "49586743408cfa70bf72b7ca1683c916a26b3c70",
+   "7f73ae25e480e52f1e77c176c6ea5d92b5ae1d01",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.case.html": [
-   "0b082dfa9745da0192321b5704ac82f40028a21a",
+   "59763aa39ea817965a4acf9469051923dbda2918",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.case.worker.js": [
-   "0130fe39be60853a70ee82b908f2258382cb225f",
+   "44838d970c05f21d1e6a00339acf8140f435fa24",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.empty.html": [
-   "009736cc1ef237eaeda9ac286db745bfa2e87c5a",
+   "657221124e25f69c767994ccbfec415ebe43ea9a",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.empty.worker.js": [
-   "8042a3c79e0bc44c6a704901aab47b72f61c767c",
+   "7a387f2a0b7c2bd0b5305951cd28c9f7475372bd",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.null.html": [
-   "7e78ae015aeb587f0b3b5f90140cec4057ac99eb",
+   "e36a278a30866a1038f3a0ca2e06b2d816518519",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.null.worker.js": [
-   "ee623df1f15b0dd4321be066dca016e571c4bcbd",
+   "9c96eaee202b4fa472b1833074ad953fefc37e9f",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.html": [
-   "7f85f3e479cdc40b94e429e32f3b08c767526d1b",
+   "6d5db664c77a7a27866d8ad2ca5f7d8bfa0d9d33",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.worker.js": [
-   "c6ed1417d16a79c8024d4b735a9e2b283bb9e4b7",
+   "18953ea1118321b276cb5a583cadca37cf5842e1",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.undefined.html": [
-   "298ba9976dc18d2d6e5f6695ce43d1770efe6cf4",
+   "656f93ff055bb65e634cfaa7e4cc2b2fb2442a27",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.undefined.worker.js": [
-   "3a275b82633be97f598b31ea682d9dcb521f7b28",
+   "3cd4d8dcb5071e303bcc4eb65196cce898235c8e",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.html": [
-   "79e379ec47568322aa605322687cdc03aff27d4c",
+   "ac3a258641b3fbb7705cfeef3a3b821af2a9492b",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.worker.js": [
-   "08c076b6cfffca993142372e2dd0be9e81c34365",
+   "1481c839f0a03dfad75399e228aa62b496ec78c1",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.html": [
-   "c8f4ccf5f70706513294f330ffbb2c0c358ebac0",
+   "3004efe1ca0d08ac19ab7b0720457d02138f1f03",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.worker.js": [
-   "fc4a45510c7d03e91320d8edec4a9dca6b628f8c",
+   "c55c6212f5f39a261ee49446fe2f7eef0a1a3a48",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.strokeStyle.default.html": [
-   "0697685828e9da6d2dc9a7bc71f78183064073b5",
+   "1c350ba3810497c28f8bbccebf38589a29f2b8da",
    "testharness"
   ],
   "offscreen-canvas/fill-and-stroke-styles/2d.strokeStyle.default.worker.js": [
-   "498f2f99ad914c2afc1b33d8c413df84df7f47e4",
+   "803c7002dc8fe094174cc740f8f86eed35ac0b34",
    "testharness"
   ],
   "offscreen-canvas/filter/offscreencanvas.filter.html": [
@@ -471916,1203 +471951,1203 @@
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.cap.butt.html": [
-   "21ca86b29b527787402f2f25fccd73eedfd20e68",
+   "eb85e108b4cb3018ae1942edfd10e9ee6016f7c5",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.cap.butt.worker.js": [
-   "b9d503c80515a279b58ed5a74f96f88234fdb70b",
+   "82bf9abaaa8d85d7164703edf5ce1dfd43c10854",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.cap.closed.html": [
-   "66b08530f54ef3a069711ca624eac47c26bb28e9",
+   "4124a7e703412b93e79c729ff33a19db8353d40f",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.cap.closed.worker.js": [
-   "f5237d6c2b078631e6c3ed169c5a706b78a45341",
+   "358aacdc499273732f85169c8165dfe7c55f93f4",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.cap.invalid.html": [
-   "cbf7cebc8bfa7068960c8a410c57f3a9b212d707",
+   "5ccad43d42e1e1549626a886b3ffa67cc3ec01f2",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.cap.invalid.worker.js": [
-   "4c3495f277aabe164387d39087063d043b2be584",
+   "274ef707f88b8b14d25649ad530483da476627ba",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.cap.open.html": [
-   "8b7a599c32b162452d65c3c7f5d60697f0bcb9ac",
+   "fdd7c6920a86cd80b61808517a8bb6244894b246",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.cap.open.worker.js": [
-   "b67dc5798bd2d5f77b633d1cd8ac8c4394c4333f",
+   "19a4375b4d6735cd99ce04d58363afc74e891715",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.cap.round.html": [
-   "fb383cba9bdebc03e59faf9f8a78ebc055d4757b",
+   "97ac28e50a7eaf6e77f62907a21abc5477444ec0",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.cap.round.worker.js": [
-   "7592393b3cb75428d331954373803e7e63ddddbf",
+   "dda047cf44c918026c3661f53f03ead5e3b9e4b1",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.cap.square.html": [
-   "ef9646e632804ef0700eb4ef74d1450a217f5103",
+   "6b3b28194a1c02116787b0346426a5d6bb9d8439",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.cap.square.worker.js": [
-   "6e07a801e12e7594839dcab6a68c1c60979da88c",
+   "65031f957463f08eea3e257c651d75201d2f989e",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.cap.valid.html": [
-   "16a4f48d21070fd1bf51210842b3d7527e053900",
+   "9e56b36816fdd0ed8e5d90329e37d454952b5a34",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.cap.valid.worker.js": [
-   "b364f3d1c68e80baf986aa83ca78e3d2201438fb",
+   "3fb104378d6a3409d3c086d76c3caa691b9c168b",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.cross.html": [
-   "31fc3f35009971854b2662982b18c5815487dc62",
+   "264f309e8497d87b832b04315a16a636ebb72a14",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.cross.worker.js": [
-   "b85231e87dae894b149322dd852092feb1a8da70",
+   "599edc45915c634c7c3077b821252e607e3a4f03",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.defaults.html": [
-   "e9fc509b5d8c0110131639c21dacc2626bbfcf4c",
+   "6eaebbcc05dfb9f99c4ef238603efa45c5afbf00",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.defaults.worker.js": [
-   "672bee54eff76e84139d3dac36630892acdca86e",
+   "ce8f4bb73cabab410daace31f63e39e20cd68571",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.join.bevel.html": [
-   "c721d29b9006abcced97bd016ecfc75a70696832",
+   "ebb24aeba14c38ef70b6d543c60534abf8309058",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.join.bevel.worker.js": [
-   "94d9efb72efad63d640aba12a02e081172ee16f7",
+   "ee1e7f3eae216fbf4a4ac39213c6142ed06d8975",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.join.closed.html": [
-   "874ef833ded107c47801784fbf37b259f8920f64",
+   "9c79d92ec26a93f0b2a014aa20ac6c4d87605eb7",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.join.closed.worker.js": [
-   "195f5000268986f3f70ce83dd1eaeeb8e64ce903",
+   "299527e410eb5ed6b0ae2fc389f2fd79d7077085",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.join.invalid.html": [
-   "e1533689519c40da2bdff590e2da2c70c128080a",
+   "6d838d74e2c3b4edc9d27e9cc2f9e169863221cf",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.join.invalid.worker.js": [
-   "1f3fb4ae9cca72ed4d6cf34e17f39d4eb25294f9",
+   "7b55609c5a4a4c8381ac5fd34ebef45aa30faa9a",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.join.miter.html": [
-   "9a463ed7c47d32dc8d1601078fdb8258a34b131c",
+   "12575cdf6beeba0f72ff52ed5708cd7ef5e6b7ca",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.join.miter.worker.js": [
-   "2d432fca99aac3e7af9435e03baf63ae55be89ec",
+   "541481416a86187f8e7b638309a44436edff1aea",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.join.open.html": [
-   "83b55b5116c3fe7474075c477df0e7e08cb342db",
+   "83c3c8d51602bd9a72fdc42e439f82a650cde552",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.join.open.worker.js": [
-   "f8466311e2aaf74aa12efefa726ad3a5b6461f8f",
+   "88c3453cf152e215b3884f3622be58fce2d704c9",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.join.parallel.html": [
-   "52fa3981149dbc79ea971695515c5a5fe38021df",
+   "e84246bca00e69e285e80c02b62cf78565786aa5",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.join.parallel.worker.js": [
-   "e13b32d7561aa1b04d0d5c3096479cfd07e5ecb0",
+   "ef79c187e2baf37a6cf5234a7127fdc2c4bf1b9e",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.join.round.html": [
-   "26ce2d9380291b9f48ecf8daa6e792da194caa9c",
+   "5a4085c92cdd9cada0a6cf539d97817dad673912",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.join.round.worker.js": [
-   "0c5166318ef02aede8091f032e80b39dd232438b",
+   "e7e8f5b0a636bf6d2a689ca666f0fb39a3ef0935",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.join.valid.html": [
-   "16ce035178ea9c345316e8622003f2a1356fecbb",
+   "28b61341bae271c0888d26d3f0f1c0c47b4418ee",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.join.valid.worker.js": [
-   "161803b803448b694f73c88e43ede2ee43d3bcc2",
+   "88c61f0bcff6811e71937e7560764774c1e5f5fd",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.miter.acute.html": [
-   "62de53227f00c19a4bb74cd4bc48c588a027cf5f",
+   "a457458596696a1664b13bdc950b66986d442fde",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.miter.acute.worker.js": [
-   "63f909e565259198ba2ef58707ef2f9c1de46d54",
+   "db332942293325546851364e85913c88f8f925b8",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.miter.exceeded.html": [
-   "f15309b2d0db7517e4750dbfe625461d29ee4534",
+   "c3f94aa13f476de8f7cf06a73da0f0f6ce4b6fc5",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.miter.exceeded.worker.js": [
-   "02b1653fdecb97a8c2f5f8b76263463de4e1186f",
+   "b8c4d737f2ca4ee088d81efe0ef939b47da27175",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.miter.invalid.html": [
-   "e8d8863a9e7a998e2d04dea8d3f2d370613b2ea5",
+   "727ed9bf46b20e12bedb349f60bc0828cddf2ab9",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.miter.invalid.worker.js": [
-   "1628f786d3444ecc866d3a111438d08b84f9c019",
+   "60a62187086be7a32358c5fae0445e72d55c4f7a",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.miter.lineedge.html": [
-   "d6f8a60772069a0537ae9d2dc1a9a400348355df",
+   "8a5d06542c7c5f394d0d3242310f4dc4d4522262",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.miter.lineedge.worker.js": [
-   "a0d1aaac76f537d3428ad62380099a59d1cdb0de",
+   "ce7c35deb9331a15bd3c38e382dc3c0c4f61fad0",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.miter.obtuse.html": [
-   "2e87a8730720b6d3b046b23472f503036e2d74e4",
+   "8205c9d1bb2d0568e5d122b0a079152eb380e078",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.miter.obtuse.worker.js": [
-   "5796352c9b4e5e9e8ee4006a52e5dc2e627ebc2c",
+   "7aeabe5899c90733601115b4146ae5ed4c577751",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.miter.rightangle.html": [
-   "a7121f550dd73e41f1d3fbe341632a5f6f364a30",
+   "2562685830bcf9a867971fc13053ba83ffa64ad1",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.miter.rightangle.worker.js": [
-   "717d7f2307db76afd375532355a763b2ac94b5df",
+   "0e532f68afe6690bc88a5a7f00946cfe8c9c44af",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.miter.valid.html": [
-   "8cd86b847aab04822289f207fdf391e698d4abd0",
+   "f814fa3240f6ab3c9749678a5ea00a694f42a2e7",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.miter.valid.worker.js": [
-   "60af1953be7a7451f0ff90c84a7dacb980675f51",
+   "b6cb6ef83ee821c0c1825e9dae2fd65f287b7a2a",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.miter.within.html": [
-   "12f10b268cbd28df9a01585eeaf35f51ebe13c6d",
+   "ec8128165653fe117a98be0e93d536223b90d5db",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.miter.within.worker.js": [
-   "c2e94635b6e7ffdaa80200da6722d023f235476e",
+   "811b042a8bec5bbaa71ac50662a64d7e7f83da8f",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.union.html": [
-   "626a1a5852e691f404429077f69c1a3b4e9f3f6c",
+   "b7a725c58a856f38bb51c972ac6c90015670f74f",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.union.worker.js": [
-   "e2c66689b84ac4c12a462313f23c40b256f83524",
+   "104c04c3caa4f78f0acd2909e99d5164435cd8e1",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.width.basic.html": [
-   "1dd1bbf7bddd37d1711b28c486df3b2c0180e2c3",
+   "6a733304d2ee70a3c8bb7d2b42969489b3f1ff36",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.width.basic.worker.js": [
-   "e1e8a05d40ed11eaee28faeaa4188676800c31a9",
+   "766da43977b7fed6f5e1b5af704888d41491867f",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.width.invalid.html": [
-   "2f72c8d07ae9245f7de6fd847b39d7d3d3d65ab8",
+   "f2160fa0920baf3607d5553bcf09d1c5aa694090",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.width.invalid.worker.js": [
-   "2c3be82a8e28874614830062815b81856cc9ac6f",
+   "3789b20e0c9417806b0ebf6333ad72a471b40cb2",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.width.scaledefault.html": [
-   "bb4607ffc18f87e6e8d0f5dafc5b99463cdb5cb6",
+   "0767c85619456edc258b6a8b202b621d5711b45c",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.width.scaledefault.worker.js": [
-   "7fedaedae4c7b3fc2d240b30b7bb82f47e463891",
+   "a2891a74e6e4d43e4a6b0d15ddc706d35037b215",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.width.transformed.html": [
-   "72370f59266c3869d0aef2867f43ba4f7d47e3c3",
+   "4553f4b543d336b45c7362b738f23cdae207ecd7",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.width.transformed.worker.js": [
-   "7bd4efbadff9b43c206e01bc6b650c67577d266e",
+   "72e13e257cbf188b139907bb4a830deebb240d0f",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.width.valid.html": [
-   "6cfb199bc5fce0ec15cfa1062e27dffe7d24fb8b",
+   "748aaaa6012c29eb71a891f5bff4bf73e1cbb56e",
    "testharness"
   ],
   "offscreen-canvas/line-styles/2d.line.width.valid.worker.js": [
-   "8e7498ff25fe27e650a7f906863ce46eb6a05e10",
+   "4a8680dbe4f2b15ac0590823a5ba4cf25513b933",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.angle.1.html": [
-   "1a4cfe9cc6684506dbe526eb4df904cce9b1c1dd",
+   "56c147b9de22d21463684a866ea926fa9ab115c0",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.angle.1.worker.js": [
-   "18536c988eb9e14a87205ca55052e67092fcfaa4",
+   "a0ac90e470ede80028d35bafbc48a2fd9a37318d",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.angle.2.html": [
-   "ac1a5a662961b047bebbfe789ab72ce30f4113bc",
+   "3c108aaac24556957dd45c6dc1b1995926cc1dfd",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.angle.2.worker.js": [
-   "7a7def978a6a43d311879b6fcd0dc8fc35f6cede",
+   "eff7e0fe8dd196ecf18097e3d2b53f6479086383",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.angle.3.html": [
-   "06840240780df358b2f6d6aec994e95d745ce435",
+   "31f1c1cb97dde5d2f960a5692c8ab713c2ef1f5e",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.angle.3.worker.js": [
-   "4c4bfa8992ce0ef9054e7c9505ee3c876c370ff4",
+   "1a6354034e6934ba9b456ab8160bd92c6d10d1b4",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.angle.4.html": [
-   "f47669ccf9fab216a52c4b0585d132080092e45f",
+   "052c12163f224840d8bc082dc2e29ccc290917f2",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.angle.4.worker.js": [
-   "675808c9735cab602ecbc16b503c43091e2a8dfd",
+   "1d5b3cad502f7d066e6b47f059ba84878501bde9",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.angle.5.html": [
-   "9020ff19e8c718b29b5b952c17fbdbdc1773e492",
+   "c8c9a8eada5566ffecf5234ad1bde6848c1d3f6b",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.angle.5.worker.js": [
-   "ba5c52198c9ae9bf9f48663a8f1bf24ad9b4fa76",
+   "caed42b22cf003a68a6d3e5e43387ff9a58ae1f7",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.angle.6.html": [
-   "9a9d9dd5cbc9d6748550e56742a290a7800d835f",
+   "52f37a9b76ca5aab366a3ab20aef42d6e8f971f6",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.angle.6.worker.js": [
-   "7201b69dba1cd250fb41394126627e0fe3cf1672",
+   "8e8f6aff5e00babaad441977114898e285c8d3fe",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.default.html": [
-   "077fe888373531cbbce878676ea9cd2b7f70eb21",
+   "ec5f63360443f56cef9193def7c78c6ac75952c8",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.default.worker.js": [
-   "f6db49f0d2d8ba97bb2a923604c5820ef5f2b4af",
+   "48cb110d0671d596bf8861f7bd50b2b910eecf2c",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.empty.html": [
-   "ec669b049e5b526465867d5655d16cc717127c05",
+   "1974a0aed58baf304ff791c704b16b1edf593ac2",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.empty.worker.js": [
-   "f78e4a92a3ac8597b5a088279d4eeedf9c17de27",
+   "70a8aa2219595202cb819bca95bc1ed90fb7c76e",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.end.html": [
-   "649c30436969ef07e6502712e4f6c01f2e9a3fbc",
+   "6d4e8deb44ba3dd11d695e08f2c4d3062d1970ac",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.end.worker.js": [
-   "3782a6d82cfb112503a7500d7a1ebbc17e40dc28",
+   "47c6e4f4fb137baf8cf7eec8ac8d9316357e4e6c",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.negative.html": [
-   "c46d56ce819982056ed2993d970016eab453eff5",
+   "5510124d391b5527eb66971e8cda5d614d2a0bc2",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.negative.worker.js": [
-   "e389aafbf86ae99c1683a47d4564b657dc406832",
+   "7247a42922940e8995bf5c04f5fd605e3cdbd948",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.nonempty.html": [
-   "75c70da426504500655a1367dbf2cd568760bca5",
+   "c6acfa94f7770307c5b4382ac24c74f86ef9d0aa",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.nonempty.worker.js": [
-   "4446654dacc598a7cd7bc2d984517b16d5d1ea22",
+   "64bda0d3d48d2eadcb990e8e1254273763ac65cd",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.nonfinite.html": [
-   "e6743e41fc6cf7f4a5389754186f928b8133d655",
+   "2ed6dcefa8360cb1f6c6482197b16af56a2b878d",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.nonfinite.worker.js": [
-   "6a81cfec503c30d7e83fdd97285048ce51e60ddd",
+   "50bb057f93c11433d1aa9a755c5094ace2f8b869",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.scale.1.html": [
-   "d6dd79309dd211d6ce11d1048bc9c17c69919e1d",
+   "e46c7fa6302724a0818f1f6ce94be1464798a771",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.scale.1.worker.js": [
-   "f35ba459afdf358937520f2585f3445ac74ecbe7",
+   "d2f67d51f040be2356b328c4161e742495135b4e",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.scale.2.html": [
-   "c3dfddef12c44c3f5ff4939de61a7279442aeb35",
+   "57eaffd3db44397d32b08b8c5910ed0a2ec24684",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.scale.2.worker.js": [
-   "4ace0218af73eec8dbca36e366062491d699bc9b",
+   "f99db078a08d8efda83db8ed5f03dea8b0b4f2b7",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.selfintersect.1.html": [
-   "fbab5d11f20cdfe30d2bd9613ad819b580449a6d",
+   "fa22b54e8ebf60a29a581ee84590f180289a9892",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.selfintersect.1.worker.js": [
-   "314835423562c70afbc90336bc82d8a93320eedb",
+   "c252201a221bbd7e746e730dc9142dd534768725",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.selfintersect.2.html": [
-   "e96b8f2bc8bbc18ea982d60770f2d785baeea526",
+   "4f784d009e926e3e30ee0b62b491ef3f4bd48f34",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.selfintersect.2.worker.js": [
-   "bf29cd12ddc532ef4fb52a91abf364246ebefeed",
+   "ece76ae631c0666eda0d35a1f3ae49c4534bbae7",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.shape.1.html": [
-   "8be62a1dba09b3003d7b8ef6064f7504cfcaccb5",
+   "0e093207ad4ba094f1df32708a7a2805c5585d89",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.shape.1.worker.js": [
-   "3be6bc6fd45ea49eb909f6adbd95283c7ceff8f9",
+   "b8cce2e805a8320163a2530eab2aff09118d88ed",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.shape.2.html": [
-   "d9b53d9db77d45dd4def6c1e882b037d9bee180b",
+   "65f08288f26357f182fa316fe677046b037c283f",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.shape.2.worker.js": [
-   "98e7b1ddc5fd708e77dda5815f99fc364412453d",
+   "57101128cdb6558d6842ba32ca05e59adefc88ef",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.shape.3.html": [
-   "03b44d772ac5f2d8f569d066069325ffc19bbb5d",
+   "39964ad38aa66fc0fd0867beb3b6d8af93364ca8",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.shape.3.worker.js": [
-   "1f09f586aeefcf42096feb715b5e4fceb7cd60c2",
+   "865d323e00687096864aa80882e7f39bc37bc977",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.shape.4.html": [
-   "68767de525f8ae9904c3ffd1443c4336d8a49591",
+   "4f4ad644533d6528487b59cb1a471ff469779087",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.shape.4.worker.js": [
-   "d299c5b675ce300c2b67f4b80135388908e01cbf",
+   "4cd21988853457b8db4412c2140d26fd73d94921",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.shape.5.html": [
-   "e6a2aadbc82d6cdccb4b28f5f96c01520f6f62bd",
+   "e0498710ab67280ce86e531dcc653bba96ab30e2",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.shape.5.worker.js": [
-   "21a0ca3c77d9b19cf057dc95a8ef4a6e9cffde8b",
+   "e51809bf974cee9e63d183ad81faa741f9c53b21",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.twopie.1.html": [
-   "5595e3284a6e93006781d253d4b814f6b5cd7aad",
+   "d9ee756d6318f28175640e6ff268f8af3d986f70",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.twopie.1.worker.js": [
-   "552557154a210f4a5e60525b5c0660d924bd07ee",
+   "0d3d5e3ae86dae905f04024e9ad472a07d9a206d",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.twopie.2.html": [
-   "4ea42b2d3ecf0af38502e3811779e41f8b3b857b",
+   "ca156fc830e64c5338476f6342479473856e3d34",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.twopie.2.worker.js": [
-   "d9f41d85da8cba70c657430e647530a7321d1e29",
+   "219a4e5ede934da16059e4a4630b27adc1849689",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.twopie.3.html": [
-   "01bae074db80626100608787787db769ecb01dad",
+   "19fc94193615e505695ea184bd6d149f89cadb93",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.twopie.3.worker.js": [
-   "41c400e7f1312175eaf1bf9e8f8c6796ff394ede",
+   "7eb04e60a440946397a8f982681c989d5d38af2f",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.twopie.4.html": [
-   "9906377045a91f6dde7eda68102f75df62f8d12d",
+   "9e5bd7507d806d7a7b09c93113ccf6bcdb5c741f",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.twopie.4.worker.js": [
-   "241071fd83506045f6e0053938644d0da93ef7ac",
+   "180973aae64fa8dd739596e4d80c7190d4cf36ec",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.zero.1.html": [
-   "60b73e041fd02d322cf903a86ef28ffa3dcc88c6",
+   "38f5634cd7141487d83dee70dc5811f6f1cb0cbf",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.zero.1.worker.js": [
-   "91f15d4e956794ecf551ce37a699a945829816c0",
+   "1e99bfd6adb74060b484aa3a6abef183b66b0f93",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.zero.2.html": [
-   "306e5312807b8e68db73aaaa48a6044bcc10ff4e",
+   "b5bc72d9c1d8598632b3c6b002079e82a041bffc",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.zero.2.worker.js": [
-   "4238b7dac86936b727dc9cbc1b424a80315eb627",
+   "21b1c9b2dd57de11cc8ea463f3be7a3c3d9409e9",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.zeroradius.html": [
-   "ed77c3b7a86f2c7c05ceefaf4cdcff2e7d33ec59",
+   "99ea73b11938942a618139924f0588ee2b3f7ec2",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arc.zeroradius.worker.js": [
-   "fb12a8f438c4d6a674c320a59559f310263366b7",
+   "324c79962c001b8d14fad8d2b7a4f7e0ba501c48",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.coincide.1.html": [
-   "1f73025683b39a0e188bcfb8e0392bf457166d18",
+   "9699be4b4a2eaa5d454513fed1f1c4013021e918",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.coincide.1.worker.js": [
-   "a646c364019e68f22e47aa594e3f16eb703f871f",
+   "a895be35f93059730eaba6bf3b17d7acd741f661",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.coincide.2.html": [
-   "d77d5de62ba2bfbfd2fca375af97d61a5edde765",
+   "65fd0f45015f1f104b9d352d99b52a6d21462973",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.coincide.2.worker.js": [
-   "5459619f342401217e68432d29c3a87384010a27",
+   "8b0a8c68d7ff6192155b148229ea217ef400423d",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.collinear.1.html": [
-   "e1cd1495eca15bbd7c256de73f70048a265c6b90",
+   "9b984b81f7c938b97edbfe137d7549dbf2fc33ee",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.collinear.1.worker.js": [
-   "580cac8dbf1101804707d3cb4cb466cdd2622844",
+   "2423836358cd6488e6cccb5f8a86bb02a709a3fc",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.collinear.2.html": [
-   "1287b57ff8955f1e0f23e641a82e4b2482c311e0",
+   "d23e3376d3ea310cc14ff2056a88461dbc1c2929",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.collinear.2.worker.js": [
-   "ceeae492e0aa416a5ed158f1b30c0b514d3a4d00",
+   "8ec2f81b082c3b0ce1427458d739ff66368e525d",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.collinear.3.html": [
-   "0c56e4dbade7f5be91cd57250db299cd251d9598",
+   "b7d7c750f621b831ab4821a96d97bdbe6ec0921c",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.collinear.3.worker.js": [
-   "536bd0d83637e0862978fffe688ee1f6a50327f4",
+   "971c16cf704fe6cb0a7354f12e3edac735c72f5c",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.1.html": [
-   "8b54906377c403484b1882985fa6837b997ff1b8",
+   "c885ed46e00961ba351d30c43de463b53a11edae",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.1.worker.js": [
-   "cefcf11e8d1e13de81843036f9410945f281df86",
+   "559fcbe37ea94555257f33523ac8d048df783e91",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.2.html": [
-   "8056389a31100857f673da2b1d1ff57c956925a8",
+   "8a153c06cbd080cd09f71b55b7d570afdef881f3",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.2.worker.js": [
-   "d6ab04e1d39ad32aaa1e7af0dcb984e87ae94bba",
+   "38364cbe3414ea9f2dec0a169c54a3ae858cd5a2",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.negative.html": [
-   "d258d0bd6594ac7f73afb7ebbbaedf47a887c2f2",
+   "7536b381cce831ada5f9ba7da35ed117dc9770cc",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.negative.worker.js": [
-   "b95f4c5165afece0ab93d5a48cac04d3957ce614",
+   "47e6ce5de7def1b1b0f58debace3a0dfc9ad51cd",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.nonfinite.html": [
-   "2226f57139ba0258dfb80cda0e45098c008a86d8",
+   "3fcd6dda7639ee005818a2e081bf0cd4135d28f4",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.nonfinite.worker.js": [
-   "c8b007591ce743a68573fcdfb10e9e849f6b6feb",
+   "231df914f695ae67ec3541cbd941863fba710ddc",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.scale.html": [
-   "69490ea5817e2dba9d26765f255e043d16c32e02",
+   "73a127b728b0ebbf3cec8d4d9c7f5d271b73628c",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.scale.worker.js": [
-   "80b3419f20dd1ed8b9a2a176e065b481fde2cae9",
+   "222402f407712bf0fc7cfaeb24ec2b9b5db549c8",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.shape.curve1.html": [
-   "fe944137cb28610d2e26512c52e14c533bbe75fb",
+   "dcd610a1136df379e3825f21c81fd24e877e2e1f",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.shape.curve1.worker.js": [
-   "2e7e3d9c118fa7f61c060f3db0a76cb8598cd8ae",
+   "50c8f79d761b71790932dcf1c7b6e7331badf5e3",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.shape.curve2.html": [
-   "926b043f65193ce48841272a315341815f727bfc",
+   "6b3a9ba0fd6370a0a6962b992b0a85d82c22cc59",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.shape.curve2.worker.js": [
-   "f2fafb064744aad79526e20d7c965cbe835861a5",
+   "f46fe456039038a4324b398282e85e7e79202009",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.shape.end.html": [
-   "a3341c04f1c4c48b15dc8aca56bfd9f6207058e4",
+   "d5e1793c5cd940fe8046fa2b4d6e5fdc8a66c43f",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.shape.end.worker.js": [
-   "5271675319433672525ae9e43db1b6ded989dbb1",
+   "e6685e3d455aac5589de413622b81c69e5f9c726",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.shape.start.html": [
-   "5071526e49c2d52a3ec344f940f1026273b690ca",
+   "6419097c7fdf34e6bbfabd7cf2c572c5d8fd328b",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.shape.start.worker.js": [
-   "84835686d1640c041771fe1606fcaae231195517",
+   "480383287a9fd3f47a814b92b5ed5ff449e403d2",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.transformation.html": [
-   "a6989d0dfec18babd74f10eed2a074954866e13f",
+   "d768d50775105763e0213dc7f881022a806a0b34",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.transformation.worker.js": [
-   "a545bd3d51f43cc03e9ca9b689047154b3eb5100",
+   "909e4a0825df2413be7b063418775613c589577e",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.zero.1.html": [
-   "77f69f5935857747d05791ad4ec9e2d06206f230",
+   "b6079956f40d3cd2d1267dcc7460edef21998224",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.zero.1.worker.js": [
-   "d1d2e87b4ca0e1bd26d82b03f041e14dae1d4f76",
+   "a76f63807769572524c5de3df1135e8b3da6c997",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.zero.2.html": [
-   "debe3d31482c4100a5543fd9bf12b79960bf3cdc",
+   "7fde228c5ff9fa71b5f277e52818d7cebb520b56",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.arcTo.zero.2.worker.js": [
-   "3ff55ce50c97eb334d85b2c9753077e02bcf3e55",
+   "623d98a7e973ec81cb2491dc1b9d2a7d07da22d3",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.beginPath.html": [
-   "46c47d74bdcd58d59a648deb85c264cf7cba39d8",
+   "807d7b236ec58cc7c311dee1c106d2542c23fe95",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.beginPath.worker.js": [
-   "30069e36992dd273e59cc5d0eebd9495bec874d8",
+   "cd19472457fddcc173898e7024e36258947948e8",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.bezierCurveTo.basic.html": [
-   "42f2f046b0e08cc81077c13a87f3efc0d15c4df4",
+   "3c7bc765056bab5badb7a62e4644f85545955c70",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.bezierCurveTo.basic.worker.js": [
-   "57e10844fea45143996c9bb28aa9a5a259e2003d",
+   "e9709d877ce8f4c7143dbd7706dcf3ff6682550a",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.html": [
-   "29ceb0d51891d9ec0c77292b29786e2d79b76460",
+   "b3bf82f2768e16c9fcea48c464c55251cd2ad671",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.worker.js": [
-   "5c9422670468792e50347a87c49bda8ba529bdeb",
+   "293a4a1978b75c09c82c6d11ef374888218e8435",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.html": [
-   "937773b176334b8dd9aae4c3260881ac046f23eb",
+   "825b574835cde2cff192fd99e0210d553a4d5ac2",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.worker.js": [
-   "d441145067065592363da25d767e712d96e7bc70",
+   "5ba0a488b2d9bf7897d0c976069e2bf406bd5439",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.bezierCurveTo.nonfinite.html": [
-   "58de700726e97a51055d7deb9619a31a3b9bbba3",
+   "3bf7e92db7a110a6dfdebbc221b3d98f6e430cbc",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.bezierCurveTo.nonfinite.worker.js": [
-   "6b199dde180c0c8a0b035603a8cc0e11ff57b33a",
+   "594716ea332d74584d74396105ff8caee2bd2c6f",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.bezierCurveTo.scaled.html": [
-   "2e9623584a7404babd9a7ef749c66e8051dd0e0e",
+   "8498357a75549754bb5b588fb900fa64a91aa53f",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.bezierCurveTo.scaled.worker.js": [
-   "7c05de12e6e1b8f19f95604fdd56156ec2999f18",
+   "0092822deea9984627b6b908db0257b78b04fe73",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.bezierCurveTo.shape.html": [
-   "c601b6ba567fbbe719a541ef7d4ced7172bf08a0",
+   "632862f34765b5b686efebcaabbd265aa21f4793",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.bezierCurveTo.shape.worker.js": [
-   "ebdeda14a279d6827af7035380eadd1893914d51",
+   "d3a58859a016a2f6ea7767a392e0dbb033f2458a",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.clip.basic.1.html": [
-   "4d61e3d8e8488e43f319cb4c9fe53d556d8cfcf2",
+   "0e85dccc44a2a82793c84161fe99d96462301f38",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.clip.basic.1.worker.js": [
-   "391d745f65e7e4c5e6d5d9813d46748e532254fe",
+   "9c890f980cc70ed9ecf8c1750c1f0138f8bf0ef1",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.clip.basic.2.html": [
-   "4591f77457e6c35156a9356b967ff3d1d9dace7f",
+   "9f08113e3b9407d9962d1fd50626f2818923682f",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.clip.basic.2.worker.js": [
-   "965a328450fe09f9dcbb726bc1398d5d20bc09db",
+   "40211c98389d7cc9b57694e5de0a94d09611f569",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.clip.empty.html": [
-   "39555a97a7779ef3ae90f216873745879715e72c",
+   "e3c2fa7441ad816f42a5515b3c1628eded3aae47",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.clip.empty.worker.js": [
-   "d22b27ec22cc0577f8f78351737079b37453031a",
+   "ec0a68795b41d820765764a9d9371e9ce82adf04",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.clip.intersect.html": [
-   "d7bc3bd2459db26cda648de23c0182591f8135a1",
+   "0da3e708fcc0b1e68aac91bbe968fa457d3431d2",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.clip.intersect.worker.js": [
-   "6dd021cdfa718fbaf8d1d6914bc91f2ace675856",
+   "87dc1081b38979c374156da902fbcfefcfddb5b7",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.clip.unaffected.html": [
-   "bf5d541835b5537a074b9bb2d202008cb094f762",
+   "56af71667f42af62ae9941a04780b05905788840",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.clip.unaffected.worker.js": [
-   "ce6bbd00e076d3cac9a0470161aed827df6eb8c7",
+   "6f68df5ffca81732860be15cf0fa31df865eb2bd",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.clip.winding.1.html": [
-   "bae8e94cd37c73009d15a19553b21d283ff63640",
+   "0290361979bdfb8b35b4ebde0dca4fe136c8044f",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.clip.winding.1.worker.js": [
-   "5865147c09dda268afcbec287b4daa5caecb6182",
+   "b1c0b0d5e11b9eb1ef01bb45b0e6baac9b189d7f",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.clip.winding.2.html": [
-   "ec2568970cff7555cc215e0c619fccbfae1aff3b",
+   "34d6dd1128e9d643c9f3cef95a6bcc017e9c8b00",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.clip.winding.2.worker.js": [
-   "649c4346ad07fdfa41cd6196315eeb2a859984fd",
+   "4583717c952d30907062546fef6eee56dd9fb719",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.closePath.empty.html": [
-   "8cc5168d35825a2513ca3c1f78bbe40a04e144a4",
+   "6377c26d3ba88855e05fb628360b0c91f784ee50",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.closePath.empty.worker.js": [
-   "be09fff5ebdd1e258a88765de824790e6de3fa62",
+   "86cc8d6dceb47b6b06299f49ddf46b3b475bdfe5",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.closePath.newline.html": [
-   "3f4f1839f7e3d41a79934a4e2d8c737209edd3ff",
+   "c37cce32ce75be704b6e1020d52ac1f810ca22fc",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.closePath.newline.worker.js": [
-   "04f3392e6889f349fa1d8b1aac37024fb89bde98",
+   "5012c5e30d0b1813b9f63f8fbce5a2e246b9b25f",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.closePath.nextpoint.html": [
-   "b30fbd6986260540c4dda72dfa843a1101ea42de",
+   "0fae83d6137f3f2bacc3781732f59ddf58e5d1b9",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.closePath.nextpoint.worker.js": [
-   "f590e76ffd5bed9c760e99137649a2cbf3f4bf00",
+   "1f29f80b867ac3b0617a117ef7048668fee9f082",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.fill.closed.basic.html": [
-   "e13ea6f760e122a707180f949c2ebdd4c089860e",
+   "efc4672f01b03660ce33ee20b6ed9e6c98821669",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.fill.closed.basic.worker.js": [
-   "3d3c3c72326a8440fbecd47c1d588b43fcabb66d",
+   "5393baf5f0d24950de689622d0cf4ae890eb7875",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.fill.closed.unaffected.html": [
-   "7fdbe47a9462d1c5811c540b83f8417a23584d3e",
+   "48cadc50e8bceef258caee773ee5d9d2109b86b8",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.fill.closed.unaffected.worker.js": [
-   "473dad64af3a3533b6e9603284c6a534141e2974",
+   "e3c43751d77105b115fb29dbb5b9ff7af1ddaaef",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.fill.overlap.html": [
-   "b8c6f2ad4a67330dd85b36f1131177fba333ae55",
+   "5cd8e52e7d9edf0271a513704c55d7adeaeb283e",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.fill.overlap.worker.js": [
-   "5e5301b8203ef3c9f20503ec521a1bb421a3c75a",
+   "bad067478bb7520596c261f4484f29989a1147ac",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.fill.winding.add.html": [
-   "d01c5df8f488c54211f11c7ecf4ee6d1530bc995",
+   "e98d10805ccefa03a58e3a31b2371c344b6433e8",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.fill.winding.add.worker.js": [
-   "37df3d5a9a82fbee7ff6cfee1506ac60f98b6948",
+   "aaac3d73a3d1c2e9da818d676df941c04b6b560a",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.fill.winding.subtract.1.html": [
-   "32afbf60327f87b75b3840032bed87ec852cfa13",
+   "a6e93cd61aee979a08d3adab17848f6a46cbbd73",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.fill.winding.subtract.1.worker.js": [
-   "37f6c71171b25d6701c310225a0ede3a6d46eff3",
+   "34f5a1f4d2b201e1c5e2adbf72bb3240f62080a4",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.fill.winding.subtract.2.html": [
-   "3742632f21a6968548ce4dd78b7a2bf280256802",
+   "dfb5c4ff2982db5736a72c489a588110db96079a",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.fill.winding.subtract.2.worker.js": [
-   "864cfd5f3e87b6ca0b66da3cc32b07f3cf74b0dd",
+   "5dda3143c1974820c8b5ee2795998462252bf11a",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.fill.winding.subtract.3.html": [
-   "693806a04d7fd87a17920f8fce3bff7e145f183d",
+   "3e4d65d59c782c70469f3a306f64859ab5102deb",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.fill.winding.subtract.3.worker.js": [
-   "276b0cbc7c393d160081728dc5359c10b3c60ed4",
+   "a502d8de553adc4234f4e964001b4810acc5ae62",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.initial.html": [
-   "d46744d00ec8e0745957e7a8b8d9d27514eeea39",
+   "476b652c35274d4edb62804b213d689a3ba439b0",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.initial.worker.js": [
-   "5856714876ea08a7b49f45dbd9726ada2928114b",
+   "7ecf650f8f8ee01a09a8e31bcef7fc79a3711cac",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.arc.html": [
-   "4558af168b0ad072323b7cbd743ec516b9665322",
+   "e580547d02a467cc33051ab80ceab8c920326a2d",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.arc.worker.js": [
-   "9a6e76e05bb4c62423b51b49790d640f22d57fca",
+   "97286ea37dccce405a8f3499e7b6a3f7f1805476",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.basic.1.html": [
-   "774ef7664f768a54e0552a5f008f08c3efdfa86c",
+   "60862fd505c40b12802940b4ee1ca7dc5f816f03",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.basic.1.worker.js": [
-   "8e2fbee4960e6f6ca438682e276dee68c479c684",
+   "5f9478ab0678a01145296d6f15bc936b06825b73",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.basic.2.html": [
-   "9216c73fd4d661629b24261926eb2b169f9d7e2a",
+   "b019c7435f525677803626f6bbbed8139bd70606",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.basic.2.worker.js": [
-   "b2bf9410ba70ad906239211f5b2e3dae6685828b",
+   "75bc7f044501d20b7c273dab940fc0ddd9c32358",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.bezier.html": [
-   "51901846622c98b14ae1ec0472226ea999bd93e9",
+   "3cb2b6f7165194ac75e6fe9dc233534b3de26418",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.bezier.worker.js": [
-   "5d2f9e0089f2d5009b0c0c4ceb860aad35998747",
+   "b76f8b7d4d964399c90ce6fc4b5b6d88ca135ef6",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.bigarc.html": [
-   "8703eeffe503080096ab044cfcc5316aadf22259",
+   "6eabd0f7274ed2e1875078f08631d4196570939e",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.bigarc.worker.js": [
-   "974ff7592346b95a738b44fad9643f25154264e3",
+   "ce1d67cf453e9ca19afc856c7a3f04efe6c0baa2",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.edge.html": [
-   "6d6d87d001f146c6fc4eae6ec7fb911c167f9c0a",
+   "7daafd5cdd6b46ddc946bd83473b0155a5b30299",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.edge.worker.js": [
-   "8bf9b19b2a17b27340c2028276fda62075f869f7",
+   "3211f833a59570f40717f397f99e0dd132d3a48a",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.empty.html": [
-   "9219d50dd0d8b9f01d9f8de7966eecf5f932abf1",
+   "fac24404e48238be037b2df4f7d6efa9264f63ab",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.empty.worker.js": [
-   "822838400b4611eb96df475e2840b0f6ee366689",
+   "6574b9e8e6ec2a06d5ca3d510ce8c92c222b1cd1",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.nonfinite.html": [
-   "6e6bd2ef36fb809ee57bff067381ab63f62fa116",
+   "2db49e11971ade1372a5c06c0a4d6dafbacf9ffc",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.nonfinite.worker.js": [
-   "91c2d36c5a1c73b376cb9f713546d5214aa9c703",
+   "eb9df1bb9596e7c916884b1f10b4388b158f68a3",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.outside.html": [
-   "c3175989b6d9f008b512f3808d902bb6a884ffc4",
+   "19f8dc0b93ad5f022866304756d678be390004b4",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.outside.worker.js": [
-   "11b81d215caebf85b401c88d07a035df9837576e",
+   "e9c84d8d9c3ac659b8b3beab1bd99031e198b25b",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.subpath.html": [
-   "ddf7b2793f45670f4d00ed4c216741e76238f7df",
+   "11f5c10a5baa123607ad3dc4788eb2b818a510d2",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.subpath.worker.js": [
-   "a453c805db81923335426ab69f8528884b9ff6f3",
+   "a20f470dc7985a349169a43604b56e8bbdce10e8",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.transform.1.html": [
-   "a1e87660db71eddaba5af03314c16345bc1610b2",
+   "5547bc74c3ec7fe01d45065e4d65946718e6af70",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.transform.1.worker.js": [
-   "bebc6d639553d54ab7e6a650422070ca391331e9",
+   "65a12a2d7af2b2e59205b73627b49273bb808116",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.transform.2.html": [
-   "1995295fab2b293a9d2a0a30d5d1c3bd2341cdc0",
+   "741aebf4413c35825bf81aa071541f6537599452",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.transform.2.worker.js": [
-   "a092cb9a673fba3857592b6ec55b62def0cb293a",
+   "0fac30a33ede668b160b2a9152d28fa2219e0a1a",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.transform.3.html": [
-   "b43e1042dd8cf2b158dc4c0148d04ad4ffd4c87b",
+   "37ca18c4b74dddcd6b3e81b67a3494822eaad8ac",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.transform.3.worker.js": [
-   "cd244a68b2d42899f2ee5601fe2955bb0cd31913",
+   "26fa7d350a020e8dc3558268e0fe2d62c15bfd90",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.transform.4.html": [
-   "e79562400b52c1f0757f331a81372c9727237b22",
+   "3303453d0adfc4b116098d9580e954416b97b6b8",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.transform.4.worker.js": [
-   "6ec201361611e1f7c3f82a29662fa16422956c3f",
+   "0ec73147be483e860436ccd5ce0367d66415bd4f",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.unclosed.html": [
-   "f05a39d7ad66ac27ca01516ddba9eb2a8905d310",
+   "08a8ea7b795b1ab5510f65405877680f9f2f27ff",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.unclosed.worker.js": [
-   "316e791b2f444ab1e397a6a19bce3604eb58b0f2",
+   "8e9a83d7a316e3c3f2129c90e0c88e686edc4616",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.winding.html": [
-   "8b0e07f101e8c6bb0e6da8fe7eee37dfdb35a2af",
+   "2b715291780071fdf00a4bf3efdaa5b29913b3c8",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.isPointInPath.winding.worker.js": [
-   "fde0a17edd6d697232d4005b0fcea5ff2eb2e5f6",
+   "37978d4199f05693f88d42a8fa09f747ed7b7bb5",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.lineTo.basic.html": [
-   "fe4ffec3fe84a9139eaf06178b58bed0604159c5",
+   "56eed8ed701fefb6f09ec752fbb820f80786cd63",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.lineTo.basic.worker.js": [
-   "c070975b21d20fb8fb05bc2e595638001b56bdf5",
+   "99499e30fb5a2b998bb94be9950d43ff4f26d32e",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.1.html": [
-   "9216819a54c3efe8700df780340977735f7e3bc1",
+   "96efe4773bdcdd081dc984a7c40cd958eccd8d8d",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.1.worker.js": [
-   "701ffdd41d2309d8ac465ea85060d70f23981088",
+   "c988b989ee223ffcea440f2bf445ae96da45ee5d",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.2.html": [
-   "fb9b04d5a5d339ba92b2d96eadbd8e9bcd22adc1",
+   "5189d6b17dfd22802e1659d9f33fcd148992cbda",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.2.worker.js": [
-   "699e44048cba39f1725b3d47eb5ff138b4889c6c",
+   "e593e8ed0b00512085326254d556dff56159c9e7",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.lineTo.nextpoint.html": [
-   "05768c0cd857fa34b0ffd4e072f4d5e14eca46b1",
+   "4b954ed81b85f94d9b5dca93f3a785709e26da06",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.lineTo.nextpoint.worker.js": [
-   "2262b8bc1025415f33d3fa142d4cc5483acdac03",
+   "d01768b5e421cea27cc260d1a03e1255b0710406",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.details.html": [
-   "4ea2093795414000b9e4c9549b6a5c2ccd09f8ef",
+   "82b0284b612e662c2da4ad382acee5dca590760e",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.details.worker.js": [
-   "13d615306cee94998620edbd12a8119387af92ba",
+   "8190df7b7f575ea23492d84915b68353b2e57c6f",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.html": [
-   "8dd773e82072693353ca483e87dd3a26570a42dd",
+   "45d13e8bb349a70a370e6bb6c3ed84c1eae7458d",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.worker.js": [
-   "4f97b9b2da23da17f4baea3972ef0152e6025b2d",
+   "7f48abc84865cd272298f46b082d7a2e255f1b6b",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.moveTo.basic.html": [
-   "36e14ac114b2654edbabefcafd82295061c0210b",
+   "29c4c7920afa691aa025626c9769ae696d1bc08d",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.moveTo.basic.worker.js": [
-   "d4b928a66c91f7bf88e99103c341881fa05bcd6f",
+   "9d7e6fb821289e14ab1bf6d94ee328eb6eda22df",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.moveTo.multiple.html": [
-   "41f45143869e1af17bd6bf94486fbcf6357694d4",
+   "a3896ab46a9e52c89fb487ae7cd4db117899e75c",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.moveTo.multiple.worker.js": [
-   "7d64884961ae6483a4a69cce4524fe98e421f9c0",
+   "ba3d51b6ae278c3123479b232dba31b3a25ec789",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.moveTo.newsubpath.html": [
-   "390a26154a56758b2b31d3795180227bb29bc8fa",
+   "48bae9b76ee1cd25fd69dc9873832895de63b30e",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.moveTo.newsubpath.worker.js": [
-   "3dac608112054db0b6c1b98a8d46440335a5f936",
+   "afc53642a57b9e41f109c67029dbe2f5a47cc094",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.moveTo.nonfinite.html": [
-   "100259a4a400b3b7b44ca06134c68ecb5acc8846",
+   "ee79f44621e7ada81978ba8c1cfa59e7d4c945d5",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.moveTo.nonfinite.worker.js": [
-   "84d89720767b7776aff36a388f7d3c1cb07f8f32",
+   "6b7283d9437d12dc9a1bde1f20230566ba42b49b",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.quadraticCurveTo.basic.html": [
-   "957b890137ea50fb1b8720524b082867f137ea96",
+   "469ec668cf8e71d5302d97a823982808eee65caa",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.quadraticCurveTo.basic.worker.js": [
-   "d074dfa57c6e47e9f757faa2ac5a7a0a020adb66",
+   "22ff451faa5e746709cebc4dafe2cd4a36e7f4f6",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html": [
-   "8f3c10f90c25a8353c7845005980ea68124cd36a",
+   "3e2155f879a59185e958c93eba33dadb356957b5",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.worker.js": [
-   "67b0bb22289275e7ce3bd8a6d741a5334a48cad1",
+   "af4cf923b156b452e40930498f17a36618a170be",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html": [
-   "0a61ecd83c159485a3b20d16b4de49cb33c21116",
+   "8159f3c60269550f8a9a2c04918c93614c38cb39",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.worker.js": [
-   "a8b87cccc84c18b691ca7c2cde41cf1b584bcecb",
+   "ede934f66ed67cd5b5755d5712ee6270eb808204",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.quadraticCurveTo.nonfinite.html": [
-   "9806ca08c6dd60273a825cb9e55a879ef288f955",
+   "4a5711c51340bd87706ee89dc82f207c492dd1b5",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.quadraticCurveTo.nonfinite.worker.js": [
-   "4841053255560a45a0663f180c3a87c06f867284",
+   "dc267cc580947f1d0974e1c7bc52362941d929ef",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.quadraticCurveTo.scaled.html": [
-   "9d1ec4fd4bcad754f18114c5893cda0f1516dc4f",
+   "6bcd8c678ee7ed58fba5b6d01d94ba2205c1e52f",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.quadraticCurveTo.scaled.worker.js": [
-   "2e4106ed9c79f7bbffe1ba1a4a50e787e8447d50",
+   "6bb0c1af0354026c578c2da2adaa7b562b686c28",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.quadraticCurveTo.shape.html": [
-   "40e454a7e414187c24239ec0834036a47745bf24",
+   "6caaf2a03b8b32d53d32a255d2738301c9336b81",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.quadraticCurveTo.shape.worker.js": [
-   "e8710f9adb0e0e9e52faec9f18e10ab0a1452d7b",
+   "23b5124bd0fa74192ddce9390f91381e335b8997",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.basic.html": [
-   "059668ab9db4c8564ac9d0286b1ca7991b33702f",
+   "e786320d754b54756fe25a9a908188de0d7b3d5a",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.basic.worker.js": [
-   "abcacad5bfb6da4ef3d9bc9f4df223f1c20c69c2",
+   "9aa3af8db7d3968427a132438db9164daad98dfe",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.closed.html": [
-   "943d7c919380b53d6c8d629e157adc0edba11ebd",
+   "85e72a2139d3e344ec6793aed607048971fafb59",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.closed.worker.js": [
-   "9a2b7e5623cba27e2501edb62b35891af05bdf10",
+   "09c942c87a0e6f6fa658247e824a60206991d093",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.end.1.html": [
-   "b44c6a84a31e18c1a7c15e252f43deecf4b06e61",
+   "5317b3b7e869d8bb3738128d0d7dac403eb44846",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.end.1.worker.js": [
-   "72b2d8aff1c55d0f85e8e6c3739f27e7c2789b82",
+   "45e25585b6fe8fb0973b904bef7dc9f179794036",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.end.2.html": [
-   "a48b27d61b9725ba1da5d4e3327788c4c6d8ec21",
+   "25ab2897d3b276c9297edf1d9f8ea901c36e0de4",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.end.2.worker.js": [
-   "a9718745a39009f2e365228bdac3b525b7ada8aa",
+   "925d3510128ad45deb4750c5e39e5123a7ac7fae",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.negative.html": [
-   "55edbabd31eb283275e02ca2cae676340e2decd7",
+   "2b47aa0db829d2fd86e47b9905a8f87a313dddd7",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.negative.worker.js": [
-   "4ee0b730fd2714de085f8ad9dd6d8113e0df8cc5",
+   "88a8acc7ef761592e1a8b4cd164c4cc668966238",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.newsubpath.html": [
-   "982e8b9c1892a2b2025cb3ea74b531acc25080f2",
+   "1c41d98b9be446f35542ce34e0495616ee0ed819",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.newsubpath.worker.js": [
-   "1bacdaad0c65e0a7bd70585c30f309d9f1b69664",
+   "9d3562ce420a17d4a060ebe6ef87a5bdbeb73597",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.nonfinite.html": [
-   "d3c62e5e69203a8a754ca4a2dcdc3a9fe08608a8",
+   "0af2beec57d4ee9adc9940c75d35dbe6370b3689",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.nonfinite.worker.js": [
-   "35582fd664b3e0838b160c7e90a1f55acde618d7",
+   "8533f2577075e1c4485f5e3361af4c6564dfb076",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.selfintersect.html": [
-   "7ca1af59d50b06f6a0a927db9e7267fd22c8cb7e",
+   "4478ecbb7ee9e74e0cca4ac239934d14586e190b",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.selfintersect.worker.js": [
-   "0c261b643d647d475d967c9fa087a260e51d24fc",
+   "50cc700b4af6ccfd3ab25ac7d7a081557cb98216",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.winding.html": [
-   "4532ddb9edf172ad47bedab1b3db166431bc0ae5",
+   "b1ec5e2beb2be10d010cc4f0b2e5654a600002ce",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.winding.worker.js": [
-   "72f3e3a019ef29393eac7f3820d287d94cbce900",
+   "4f37705e96705f61f8d269e4e56378110f216c5a",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.zero.1.html": [
-   "2873a528958f9604a3c33d5cce7fdc1e3dd8b254",
+   "5dc5eb52b3cd7c7285bc3d5ba5c26f4716344aa3",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.zero.1.worker.js": [
-   "7ad6404b1ca956a37355d6c14be956e453dd7a99",
+   "c64d9ef866ab716dd9373d76c08558bae6112dc9",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.zero.2.html": [
-   "0bdead070d31568fe1ab51e939823715fc5fe08a",
+   "83925f67be42c1b82f67e4a21110776b9bc8b890",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.zero.2.worker.js": [
-   "cd43701ab495c0d0a791950cd0b8c6f071595aa5",
+   "698e277f1fc0ec289da028fa1d6860770787524b",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.zero.3.html": [
-   "02a84e3e8400d66069c9f5d514b93f23bc09d394",
+   "ad6d3be7f725726d4efddb09772353f2a958d6c7",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.zero.3.worker.js": [
-   "19176838d52c7a2bb52f89f8dc996842b4d424b1",
+   "021a8d1d17b2a02b32ba018bacf391b570c413d1",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.zero.4.html": [
-   "7c80780588f6f9b1f5d2046274fa09674dc2efa6",
+   "ce2601f282f4c020e44cc1a52467a824719bf25c",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.zero.4.worker.js": [
-   "7c91236c7480843dcff08a30facd5bbf5e67e2d5",
+   "6b8f1cf76b36ca5dac46c3e9e161f0e9141f50a4",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.zero.5.html": [
-   "3fc634577a5af11bc7b28419355ff5bc8beac96b",
+   "ae1c5dcfe4f656a7d00eabe9141df901c8108eef",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.zero.5.worker.js": [
-   "1e839016f2653c4fdec24ec937289752d3397312",
+   "ca87c25992fbe93be94d311f59116e5593c1132a",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.zero.6.html": [
-   "450ef3c36684ec093c5c6c7ca48399a13ed321c5",
+   "625c03bea4eb22359e4d297bf8dfec485c0545c1",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.rect.zero.6.worker.js": [
-   "44bda7ee71f04096e82f8d4ce8c42794ee3946f7",
+   "855d0226bfbdb22d644bfc1bac83d0b1edd96965",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.empty.html": [
-   "14e489abf53272536de02ee212e337b9fb95fe5c",
+   "e16937de52f984920572f1e1c987be325bf283ad",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.empty.worker.js": [
-   "d6db2a01b6d2126dabced8d18ef2ad9d550fefda",
+   "0fcc8dd22dba05a6c3c6bf6c4037f82bb5622b90",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.overlap.html": [
-   "c7277b91cadd950733b9a68bb79f62ca83a0e02f",
+   "50ceecd7e51e85fe2d8b29fd566d4f602ebf7481",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.overlap.worker.js": [
-   "516084791c8765d6acd1c7a9ae819a5ecb73caef",
+   "b70e65be7371e12b462e0620322cde0d628c3dcc",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.prune.arc-expected.txt": [
@@ -473120,11 +473155,11 @@
    "support"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.prune.arc.html": [
-   "065314e82056d9c50ac30c35e4727d6cdacf4207",
+   "76746a9cdca6fe0b9e6d1949ddd52440393d20cb",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.prune.arc.worker.js": [
-   "eba5233522fdd58f61dde839911506093a95a8f0",
+   "40ee31a718c43c80622b4b113709102fcb016e1f",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.prune.closed-expected.txt": [
@@ -473132,19 +473167,19 @@
    "support"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.prune.closed.html": [
-   "7c8ffe127d0a005d5c2da24eed83a8c43cfbad09",
+   "06a173b5b3d971bdc7b4be977412b8bd27821064",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.prune.closed.worker.js": [
-   "8b2e920e7f430b3a3d503fefa4c7ddcfe5622cb9",
+   "27176fa6aba6b7f6fb8a7afd4e40d163f0807b2b",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.prune.corner.html": [
-   "ef0919634b7074a9d65f9921e7a5b979c5e4f788",
+   "b5f5209082d71a81d9f9b06d7e4d029a1206239d",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.prune.corner.worker.js": [
-   "e0b0ad5567e922fac74d9769af9a1ac54d8bf333",
+   "835d36fdf7642a19d8a8425feb00b88443837dc6",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.prune.curve-expected.txt": [
@@ -473152,11 +473187,11 @@
    "support"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.prune.curve.html": [
-   "2f0dd1e658bb85352cfd06bf5b6733c799da3735",
+   "60c13bbca28eb73f41df768f7a274e385ed75782",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.prune.curve.worker.js": [
-   "54d6955c353cd530eb32750957fef39a7d71b93c",
+   "8bc8ec15cdc42f870174f0388495392729ddce85",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.prune.line-expected.txt": [
@@ -473164,11 +473199,11 @@
    "support"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.prune.line.html": [
-   "2a659eabe0aa7afd785dbc2d9c0f006c71c91eae",
+   "c40f61c69edfc3a24bcc232f02895c8ac0fe2ce2",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.prune.line.worker.js": [
-   "8229f3417a2f4b3d5a91807bf9c211ee5bb3d8e8",
+   "d9dc3ac1eac45bf7498d96743841baacb42ab34d",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.prune.rect-expected.txt": [
@@ -473176,131 +473211,131 @@
    "support"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.prune.rect.html": [
-   "b4b4aeb0b653f309e89e6ec03b4f4de0261b4d8c",
+   "74d60f774d26ba3b7d5cf80781b2ff930fc87bb6",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.prune.rect.worker.js": [
-   "e3b2ff8372f3f3fdadfe32b81d014074206a289f",
+   "751589791a1f663e0a66fc041ce9e17080b63c18",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.scale1.html": [
-   "61e9a7ea8212801e24591643d00d7de2a61320d9",
+   "328adf1de76a70fd9b672ed3b15cc69a45b833d9",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.scale1.worker.js": [
-   "e5fc8bcc92385d4234a2b584cd1334649b3832de",
+   "7996b61c3d977c8d8c599af7e6e26711ee8eba60",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.scale2.html": [
-   "0bc4c26d040ab3a66b67b20b124b9fd46c5d60af",
+   "fc49feaffebf506d385253368b2eaa1ae3e61590",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.scale2.worker.js": [
-   "b532fb7a3d8d0f3adc98106f4a873fbbfe001efa",
+   "5d70b6a8a6faf6c5b693768b4b4ab1a66e378ed2",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.skew.html": [
-   "6220e7c54fcc6609255caa37a478250eac5475d4",
+   "cfa6560fba897ea8e84580886f0333bd349fac62",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.skew.worker.js": [
-   "125c70c8edd60b7ff122407e58c6f6bd1cca348f",
+   "2d4e84e1c04842b1b228cb3a81672c5f897dff4b",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.unaffected.html": [
-   "fc2dff941bab20d84739f4390db5b8bfdce6fd95",
+   "3f9f1de61dafc9042d9ea897f9b4f87089e3df3d",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.unaffected.worker.js": [
-   "6c3c16559b86625cb2e5b8281b20c3ef8c47bd7e",
+   "c0444f756af7d4b37db1e30881ac65951dd2d8ce",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.union.html": [
-   "76884ca5467d467e87619aa9c5f1914645a3a402",
+   "fbc65f121241b191a252dbd01f670115e100e330",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.stroke.union.worker.js": [
-   "0594b28cbf682637596fe98c925e5d1a124642a8",
+   "c00ce217170e8df03915a97f377db3a5ced5d8cc",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.transformation.basic.html": [
-   "e7cb8ece4f14278d9445e2a0c34391ecdea09d8f",
+   "e4d9e09e5dcccfd11c3d93d614200f0e10946a7a",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.transformation.basic.worker.js": [
-   "ac9bc1bb16a7a89fe3326da78b8e73b8d1cbfeeb",
+   "ea0b9ae915216a90c874b37e85a3a114a565f56a",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.transformation.changing.html": [
-   "aba546b867e7f95361ae99a2cad9bb0308c1d907",
+   "c0a1ffebe946edb01ecc001d28520dc37c134cdf",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.transformation.changing.worker.js": [
-   "2f8418dbedfea88e87f174dde91a3695f1cc3869",
+   "5eb0d6f717fd84a57378fd0e968ed9c3daa182a0",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.transformation.multiple.html": [
-   "7f38daed8a8915ada9f265fa3c04780a812d8c3d",
+   "3ee6d0c76c65a8ccf91ce7dbb87b28e5bf3628d5",
    "testharness"
   ],
   "offscreen-canvas/path-objects/2d.path.transformation.multiple.worker.js": [
-   "62bde63e915e639739ab2a100752c7d44c116872",
+   "1999c27206d4f2b84667301554f6051d95e2cfb1",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.create1.basic.html": [
-   "8152cfc9732f7c4da59fdaea91d3f745f101ceae",
+   "f2c53c263ed2785c092c573a2ba1e33afdd7811e",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.create1.basic.worker.js": [
-   "250a161f32258dadc498a8249c25de4d34708da2",
+   "40e3da1b6beb619ec663ca2795884634c40b7a29",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.create1.initial.html": [
-   "a385d72e3970c30af9272dc7fbfa34a0abc88159",
+   "0ef6d8ae22b5aec4eee08e39738e7d51ee2497a1",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.create1.initial.worker.js": [
-   "da0543c44952f333d49e15e77aedde651ff4f22a",
+   "68c4a5fe410e10b3344f367deb493a2df8e0bbef",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.create1.zero.html": [
-   "bbcadad31c52b721ff0c2ed19014a8dd0d101708",
+   "1b68df289bc7316abf143672fb20c3ee79d9a4e0",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.create1.zero.worker.js": [
-   "f3bed8488e6c4c84f656cb970210dd405fe37c5f",
+   "b9cb934f2fc82bb6a4a3f09a937d0276d8011a0b",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.create2.basic.html": [
-   "13cb5de4ccd24db88f86693c1a9360412cd0411a",
+   "1048cb167e6b21a60d537181980f80ec0cd3ef38",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.create2.basic.worker.js": [
-   "82190d6cb0b1721b5ce479f39ff6c8d76a303fcf",
+   "3092a3176444a33725f9fe2bea5a5c66d67b293c",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.create2.initial.html": [
-   "e7ced9d21667fc85e363fdd6bacbf0f42f54cfb6",
+   "55e999a9994040cc8ae19306b6ebd4810ac271b8",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.create2.initial.worker.js": [
-   "d3fea24d586e8ca6699ddd43d0f307b3569978c3",
+   "392711c5cd9e158d4274eae59e2c99225feb1988",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.create2.large.html": [
-   "25d49052bb4cadc6bac461a4c063e1f1e2f62b28",
+   "73d39aa7ba501b5c3a8f972b5ae94c3b641aec13",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.create2.large.worker.js": [
-   "d8ae14cf4b2f327c459f073ef064d0c05a2f8656",
+   "6d97898a6d14f3588dcdbdc9106cbcdcee552fea",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.create2.negative.html": [
-   "d5c42efea7bb57f19cf72c060f135da136fe7eaa",
+   "ae862192c238740408c50609885aba90b5d9005f",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.create2.negative.worker.js": [
-   "11f1641ab59d2c758f6b82542ccc679f055e6edb",
+   "c93d1b5b68b4eecca3f97826768387b3dad2f7b2",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.create2.nonfinite-expected.txt": [
@@ -473308,51 +473343,51 @@
    "support"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.create2.nonfinite.html": [
-   "ae36fc72aa488d8c002500da9da129b4bea70ff3",
+   "5f0f19254bd1505e4d2bead3ecc6584e41dbb295",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.create2.nonfinite.worker.js": [
-   "0609d05951d4c4db07eebb3728ca2e74b4cfb604",
+   "4c8da252cb1c791a605cba10d9c3dfb272f376ca",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.create2.round.html": [
-   "2d59eff38b10aeefbd7aaa2c919e6218e0a7b499",
+   "78db73039416555b80d3a339f3f90e18aa112089",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.create2.round.worker.js": [
-   "b0c4a03ccb6f710bc5d77f7c556fc6e522bb0857",
+   "52b7e843d2e49c46d2f7d6b572b2dc3d856b4777",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.create2.zero.html": [
-   "8c88cc9b6fb7ac735af9ad3f9a44e1a4273cb895",
+   "51416182150957a56850cb3f50e00a08b448c5f1",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.create2.zero.worker.js": [
-   "cf54b3c6efb37bca60e45ffc50d74aa52501101b",
+   "16573f1139062fac7033ba2c57706dc95c6b4777",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.basic.html": [
-   "cfb5e3c2ba57c82420cfc0cb69aa52f5fccba3f6",
+   "bf148c945db5a325532480e3b9c971666d81cdd8",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.basic.worker.js": [
-   "6824945d9f83381fd2e27fcd5cf9f3e4bb5baeb0",
+   "27724a2acf4ab554f5eabe3d05a53675b5258c54",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.clamp.html": [
-   "c5e189b7bf58f7457c9b9574f0c729a052b45b29",
+   "861e3659fc330b532558b9070d0380a4e555fae3",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.clamp.worker.js": [
-   "97a2a1477760f3ad8df9e68deade4b2c977940c5",
+   "05d22f25ff806a1ce3cfb4b6f2a15d6ce8516f70",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.length.html": [
-   "c9516d7a735e9f83e03b78438f26aacd2dd9f8f8",
+   "e269cbc0e35902b48bc3d33772a016ab8bbd704c",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.length.worker.js": [
-   "f8a08e28642dd6f05f309a299d2b1fe858202371",
+   "762e23374b5a49ee1062a1b8de116a7f03dc781e",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.nonfinite-expected.txt": [
@@ -473360,83 +473395,83 @@
    "support"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.nonfinite.html": [
-   "ab90a831f9c534ce50f448bd1e92578e6d7088e3",
+   "c688c22e49f55ae173a2bf49fe92cfc904dd2f33",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.nonfinite.worker.js": [
-   "bfd5fb038afdc34e2afdf6324b341b99c9680e24",
+   "bcf2e43b927716acd66f0a0500072530b988e644",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.nonpremul.html": [
-   "473d6f6efaafbfd60688f84591aff1f253273338",
+   "666ef2e857f1dd1f7cf384ecb2052b25ebc1e36c",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.nonpremul.worker.js": [
-   "6d85a5c128eb787fcfc3c2340709354da430d3bc",
+   "5b98dbc5ffd08ffb1d862b03272911d150e6da60",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.order.alpha.html": [
-   "4bf30c08df4d3a39de784299f937aea0b4fdccef",
+   "ff1c66fd3a27f4c336f2ef76baeef5e4893a81b5",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.order.alpha.worker.js": [
-   "611a9c7781fbea2795506f248e0a34b940ca6492",
+   "a3423ee5a8c54b8b575a5fa92874d71d02173946",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.order.cols.html": [
-   "d3abec38a24fadf4f4ff79a3d6ad5675df5cd395",
+   "0706cd5a358f253db159c051a48248752d3cf1d2",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.order.cols.worker.js": [
-   "c3a7d2504644c7c4dba0ee10f2d3b815ac2f76db",
+   "371ea257056fa44aa96c133f87f2b28292819f91",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rgb.html": [
-   "ce81521bccc66ad10f1d64046f54e1b83e2d63bb",
+   "a5c7d866e75dd40d732e39fcf79fd7682fe03f93",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rgb.worker.js": [
-   "654ea19f6dc43eb3837ad572d41f4f1469ddb424",
+   "e31ebc92a58549dd96cdf2a2285296762cf55cf5",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rows.html": [
-   "ba8a740cf49eb9c8df52d548f4ca6022a5c7f211",
+   "5cc141f1323cad329fdd3ac2abcdda7ea2972842",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rows.worker.js": [
-   "9fb23e6a04659749a702650391fbb2d55b38c49e",
+   "a942467ff65a85416a33ce59ca7154a1dd1b3e89",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.range.html": [
-   "9a19b651f7a4efd431433bc05855622b9615d455",
+   "5fb46d0352c8b162c29f0dc683dffd8b49429b41",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.range.worker.js": [
-   "5cac707ac9699b2fb93addc3537650f148557dfa",
+   "f3e93f21becf69bc93b1b8fc70b41b4ea7f4cb4d",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.source.negative.html": [
-   "b6d47a228e786cf6fb1caf53338f8d8bb725f919",
+   "94539ffcb0df8161fe0f92ea5b1c6fad261ea908",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.source.negative.worker.js": [
-   "ed83ee57082dc6e65789899706e4b964a6723d1f",
+   "00f6cc53735bbe5516ecfedfd3c7179ac4fb3a5e",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.source.outside.html": [
-   "0190a1f22c3c5e975c699e00e8e03321d4b89655",
+   "f4205318fea713523624545295a58f3f021c101a",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.source.outside.worker.js": [
-   "0cc5fd4a24e02801e581e5f0bfd9305db2fb2ce2",
+   "568dce03b558da4f98180202cb6dd57cfdf00f87",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.source.size.html": [
-   "e95dd5565ebfc220f84f46816e53a1f9d871f9e3",
+   "f811736f4ccf8b65e288fce9c371885c38d9bd8f",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.source.size.worker.js": [
-   "bb8c105a68583bbe3bff775f4a9c692c09ff16f1",
+   "adf912ba7b67b35555450cad556ef298ecbdfe07",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.tiny-expected.txt": [
@@ -473444,179 +473479,179 @@
    "support"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.tiny.html": [
-   "ac9563b5f31b5de03b49a57ee6dcf0fdf67ccc7f",
+   "3177cd8dc638db41781657e4ed96417c0582600f",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.tiny.worker.js": [
-   "3167e465d69fb7aaa315e3158f1f4a1391541ce4",
+   "791dac61e5c68030d7f11b897114e3a7571ad9b8",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.unaffected.html": [
-   "afd759b5da568982235513814a384e27f3470ff8",
+   "33e65aa8bbf00d79ba1867217efc2cd7ee9b8dc4",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.unaffected.worker.js": [
-   "049042f5d5ff5f66c536caf96f106d919fe46677",
+   "d5cf3c91ef231d21fa8356a22f2ab5312f120575",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.zero.html": [
-   "42d71fc9642792f92f79c5d2c024c485c4b5a1ce",
+   "5890d365a4b94de023869269a2e0d8fd2bfd6a4a",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.get.zero.worker.js": [
-   "5886b88e873b15027d60f7b89d382d4f2ea5ccdd",
+   "0c0441a715c7379140b39de9542683c39aa8f897",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.object.clamp.html": [
-   "b367821c2cec65ef058843dd8a278b17accd8bd3",
+   "be22bae5469fbf2e80f231da9891fae6d59ad88f",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.object.clamp.worker.js": [
-   "00400bf45468a6bc5798eba2bb51a491b74dfe4a",
+   "07fe8981c8092c476cbba6d74f72daaec1abc4c2",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.object.nan.html": [
-   "31224baac9438ab14632e821223c23f863c173d2",
+   "ad05124ddba0510b5a51f0a42ecdb91f0f9e26d8",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.object.nan.worker.js": [
-   "ef665e706ac81fc75ee201114f7ebe24950368bd",
+   "e888386016a645c01443d886c37b518e49bd0d1e",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.object.properties.html": [
-   "04b9b02cefc588fadcbf58cdc1f85ba63de82211",
+   "3b17b93eaa7b184627707a613832ca67a36ae054",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.object.properties.worker.js": [
-   "1094c660fcb2ba7721b1bb4df2aff7f55e78acc1",
+   "38139cf24194325842997075c2431ab14d03b984",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.object.readonly.html": [
-   "7ad3b6b1a7cf98a983a100511a0f76fc6eb1ae13",
+   "9bf9ccb4fa95135d041db79981faa97ef0438add",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.object.readonly.worker.js": [
-   "770df898083ef7782786331d1256ffe40c4f605e",
+   "df4379fe53396d21afb5e1900155da44573f030d",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.object.round.html": [
-   "cbb7519a61a4772935ec5e35ed20bc137f0fd0d2",
+   "cec6ed4aa11e04f0a2b4c3aeb9fca6a726c48a31",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.object.round.worker.js": [
-   "6924e6c114d828a0c550e65adb8c3360bf56c926",
+   "845e32d0bdc61dda092660161751ee5223ffda6b",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.object.set.html": [
-   "f39240e7275b83bec8917f7f40482113156a3cb7",
+   "948586400bf19c605bae7e54445ce8766a3f0991",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.object.set.worker.js": [
-   "6ab6fe16e8df620ff765e6416aee9b46a7de0bcd",
+   "e191464c66f014cb9618c1d12d7dbd872f2b04a0",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.object.string.html": [
-   "7d944d003c1c72bdbf660bea4a141ea0110097d7",
+   "56fae70d4422478fead24e0f84d46c4aaa6d2f10",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.object.string.worker.js": [
-   "41a383952579fd556d140985df2a45f858f46e4d",
+   "933be0fd2d686ca850018fb8e65f5878c552b392",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.object.undefined.html": [
-   "81c2959a0b5ea670254fe6c440bb19be3981985b",
+   "e003c455d5d156db731af243fe3c6d2593e4b250",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.object.undefined.worker.js": [
-   "bcded33dd824771ed9f8fcc48728b8373cae3a2c",
+   "313c5437fcb311fffa5494ba9c6052cd740750be",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.alpha.html": [
-   "5236717e5bc89ac6a803b995edbbc12db96c28f6",
+   "8c980d63b93a641aa964ffe5ed916cf4c3ba2da0",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.alpha.worker.js": [
-   "a1020fd8b8694fd62bec38651705770121687172",
+   "fbfcf0b31cef5cd79c9ecb57241449d5bb2d3908",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.basic.html": [
-   "9123460c23fa284d7023f47b7eebd5ae1bf37ecc",
+   "49dc91805da50f64a93dca59d5fab5407df0cc34",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.basic.worker.js": [
-   "3959348b935af98c55a178871cc909bc0f7ec00f",
+   "b83df3cc03aaa3d77d3fe8e0787458a98cddd8ef",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.clip.html": [
-   "3df65e00530e9a740c5927ba53f4c1bc40c57fdc",
+   "053587101c24e6b33bf469e2192bdee3ff750dc5",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.clip.worker.js": [
-   "e038e41efecca3d6e709a5e1d10f971be55b8056",
+   "99ab50e98bea6a1f82800dbc736d819c65a8c102",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.created.html": [
-   "7f55f1752fca363c5968b33c5470f7ffe68fef64",
+   "4c11fc5e203d3a7623e52b1bd1afb62d87ee7823",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.created.worker.js": [
-   "aede851c487342a5eb8da4f94ed23ee9000c8bf4",
+   "3bc71e9bddbcb146a46dcbb6b192a7761487210f",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.cross.html": [
-   "a7af5f29f6fb86fa1483fe80d05a8bfd9ff291a1",
+   "ca155d3f64ca84117d129c93867f0faf6ef901e4",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.cross.worker.js": [
-   "d81156068a91e00db3344d5f012ee3d4b07378c6",
+   "b3e5b5a1e7f20851b63b032c82d71f1ba35d7123",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.negative.html": [
-   "3b5f437e4416ffd5482966f27622638dcf56f83e",
+   "6617ec41f148286aae34e0216e4054b9c4178d22",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.negative.worker.js": [
-   "460e7977140667f6aabd930bc88587c5269173ce",
+   "3e0b4705d570a6c4ed1957475f65b36751d16a08",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.outside.html": [
-   "1ada85bdec1ba0e787882283567e50a7f65a278d",
+   "29c10946bdd4cecdc28b36eee74423bae817988c",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.outside.worker.js": [
-   "7a194f9c15cd1356b78a04a188c910ff456dfc59",
+   "aaa5e1cab46250a02c89fdfae7776ec11d01099e",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect1.html": [
-   "5e132d693ca8cb2f8b2f17c11e10f97722f84db4",
+   "eec2d5c8a5c2c338c4fc04e7b7be91586671279f",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect1.worker.js": [
-   "7d9ca465f3e1b65262579e2c5d4333fe585d7d8a",
+   "6ee061c2c17913ab14508293a9732b44d0c445a7",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect2.html": [
-   "96056d190836c90b07bf5f4a203ce47b80f200a8",
+   "a26130a13e1b5a92344272472d924fe52f0e29e8",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect2.worker.js": [
-   "524a6d7769d95bf5594aaf248b63d0c781824004",
+   "7111049a7d0d997b27463b955ac5862b813fa74e",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.zero.html": [
-   "c17df92de4b3cdaab87c870d89a18d2ded529206",
+   "9ee0b491c3ae93a90693b973c5b7bad969851885",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.zero.worker.js": [
-   "e9bb4ac60b36b939e34c7b54ae48c3b025c52fa4",
+   "98278b12a2c303a84d24aec7e51c1c1dcfec4041",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.modified.html": [
-   "ddfe634f1b23a029a3bc71407c89090e4deea790",
+   "ff06185ce4dc1562288b99cbedd59cc03ae1a495",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.modified.worker.js": [
-   "d22588dca6a2793a4d714f8d560f082122c6a01e",
+   "ef522744992ebb7370c2fb4c163a491eff7f2bb6",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.nonfinite-expected.txt": [
@@ -473624,659 +473659,659 @@
    "support"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.nonfinite.html": [
-   "d2f174af0bb96c8b1a22d3639b5dac11de2cc899",
+   "75ac0591b908ebd1e094506f04415f92e0b8df18",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.nonfinite.worker.js": [
-   "5ba39d6b28d85797f27fcdec7c11e2b1d8e4b7b0",
+   "81658080747ee3d8d0e41af21ca26da349228c9b",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.null.html": [
-   "a0f70171186b540a8361d70eee1139e9e5c013db",
+   "067b5c297e582c374681344277437949c7cec2c7",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.null.worker.js": [
-   "253508fc91b8afa80c3ac151b935b2dbecdde259",
+   "b558aaab5718c937ff216e1f5e79c1ae0eb6d197",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.path.html": [
-   "47ae20a2996491f54a5178a1496c568ba6d496a5",
+   "62c5047ff5114c80abb3b705b8ead9d5ccaf5104",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.path.worker.js": [
-   "c2ef1451cf918cb2e72c42d36e700e793ad4d89c",
+   "da5d7700b75188e679460d0068e0bb51409da06b",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.unaffected.html": [
-   "3f80709c6a819aac209d2ea4ea0e44c8f26a7811",
+   "b9c269d43e0fd26f8feab02c51462b863c1f7d85",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.unaffected.worker.js": [
-   "23e4cea1eeec254636ba871baf3c362d07f754f9",
+   "15a6ff1e57762ca6afe051fee4fb85dd0b38c718",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.unchanged.html": [
-   "72640bfb2d7801b4fd6386909ca59abba7cb8682",
+   "86d943f9d136227bc85f66cac871a039abc96f8f",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.unchanged.worker.js": [
-   "418e46ccf87d8c99b76a95eb8346d893be52d68e",
+   "091593f6abad99b7d31d7a80c1e62b2b1ae47faf",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.wrongtype.html": [
-   "1a31879f069962518b46ba1acfe2ccebf1790a38",
+   "7d726fb48c606b20f062dc317994528c5d1582fc",
    "testharness"
   ],
   "offscreen-canvas/pixel-manipulation/2d.imageData.put.wrongtype.worker.js": [
-   "18d737c707217aefbca0b8e73365f0773e2bd589",
+   "001a9e719fa7be28069cd03154db191119f1927d",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.alpha.1.html": [
-   "c223e25090a2db5fb58d3d18be89419d2532077a",
+   "fdfaf7568d4a8ed47f27240e4e3b40ca5f36358a",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.alpha.1.worker.js": [
-   "9852033eed70cfac6e4b88c5cba8f66cac7dbbbc",
+   "6ddf9a0d24876d0a9da10e61f476861e7889fdfa",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.alpha.2.html": [
-   "53dd015230c256b2a9382919f2494ffacb7cf0f1",
+   "524f59a7e3da5fea1086644ab5c7dea849e006bc",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.alpha.2.worker.js": [
-   "491397a8a1ab68dea9b7b0eee572201c351c5c32",
+   "e671c1a095b8fd98f377ebec7a9b9a24eb5766f4",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.alpha.3.html": [
-   "5cac64d8dd687a37b39c6f368c5f46cbcb79b8e5",
+   "5a089b9b71ac18c2097bdf3e147032b810f037cf",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.alpha.3.worker.js": [
-   "f30cba2014723a22aca2f420d4eab27de69c3242",
+   "25c8c5acf00c3ae5e554282234fa131c4fb9c586",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.alpha.4.html": [
-   "e7aad4f3e08c4eeef3ad61f2413bb8011b83a2e5",
+   "a8c644adf60421ac20594d86b4352252a1fbfb06",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.alpha.4.worker.js": [
-   "1c1b619ecccb1148f9cd5775f9e7d7f191362c74",
+   "567b6b884fd8df75a92cf904aad4b66e78800fc9",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.alpha.5.html": [
-   "db31f7119ab38a15f21bc469156d097353a50353",
+   "2efd35676d34da5b41e327a08533a1403e0a312c",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.alpha.5.worker.js": [
-   "dd7699fbe219ef936f7d1af6e9b64042d828c54e",
+   "3ebaab64f1ac600df65b562e7d886f6483f3e31b",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.initial.html": [
-   "290ffbbe8f66de54d8ff77665958db3f6636c9d2",
+   "b7169679bb1fa1575f0718b0f34d4bffc4c05293",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.initial.worker.js": [
-   "0406e5f9c7b42d39fe7ebf6d6e56fc317e5f35c5",
+   "d5695c85bb202147182c6a8e32c672764dd46a2b",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.invalid.html": [
-   "108c0d0da4097b6d7ca81cd5e8efaa7750a73188",
+   "4b2115da3b42086f7cdf8e82773ea04c5e273933",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.invalid.worker.js": [
-   "d4e37a1ccda4b19fd5d77b20f7054da3facee1ed",
+   "87362f099b46f742f52c239bbe2a6d53d960d2bc",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.valid.html": [
-   "45a8395c85482a8af2d531f6bf3df9ce24703351",
+   "c00765791a910c4ebd367a6b67d5d290d5676ded",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.valid.worker.js": [
-   "aada60824de00149fa9e08afea0187a9b1f1855a",
+   "71fc28b72f98630885db26bd9e7c83daa11de055",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.initial.html": [
-   "83c7628df99f4fee711029373e4124c1338d7132",
+   "f92379933d11bc35bcad7fa395c796e661c963c1",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.initial.worker.js": [
-   "5e13b9b35757f343da595c70949a6d1485d43d89",
+   "b7d9257a946639abf7fae737ba7ae6bc94c42fc8",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.invalid.html": [
-   "b4d661df8379bcd6434d0797a8313f32e1ef75ed",
+   "704f07c91e83216f90837b0430831d10e2c88d35",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.invalid.worker.js": [
-   "aad23bd79b62b1ec1ccedd86bd224c04bc5d4022",
+   "a7083941aa8f5a85b6516bfb1b8187b33dbb4657",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.valid.html": [
-   "318a4ec88cd4d9332dce0bbcdcb74556d2e7fdfb",
+   "22c9f192a592f00aa58c3d805c1f24e5bb87fef1",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.valid.worker.js": [
-   "b5a711fa9a041e55e7aab8c2ce36a854124704e7",
+   "16cf774ba034171fda6e8a58196d8c676feb74aa",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.initial.html": [
-   "7efd45e08f06d9d58be595fed7ea2f8e6732b842",
+   "a844604b5c8c166b4444bf04f50da812118ebdca",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.initial.worker.js": [
-   "08e2bf409b5e6903d6c6e4847268fe597c01d2e3",
+   "978b234c6f04e0b1f94b86b78d42b850dea8f6a2",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.invalid.html": [
-   "8db0cd556f988c44bd62f4e878e059c42256e8e5",
+   "2599d797aa12e5fb9d1bfb8d37caf888ab9cb1e9",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.invalid.worker.js": [
-   "2b02e946b9f5a46b2250f54953462a6d34ab028f",
+   "3fd10ef1b7d6ceefbb8fda0eaf41962a8777c428",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.valid.html": [
-   "19fde85664ffc0ee4d2f5c32858c1fed357e52f0",
+   "fde6e64a7b46e86070cb63c46a697dcc26d3854e",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.valid.worker.js": [
-   "b6dacb4e16b2a66a2b3d2faddf90e15cf67a0dad",
+   "0956222c4e174936ac9658a499f26d552401c340",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.canvas.alpha.html": [
-   "9f6dafb3df44f0850a9a7c4384971bbd54c1ee80",
+   "7e77dff26ce73a455e7626e30042dd2fb9b1fcc0",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.canvas.alpha.worker.js": [
-   "a0b9eeed71380243a01618ab090a80b32f84ef56",
+   "00a914800b721df2b1f7338ae8a68a40a57dc20f",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.canvas.basic.html": [
-   "c372ef4c108523d4b56b4692886a5877bcedb86e",
+   "25ff73d6412cc0940ec1157998aa7207ddbffb17",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.canvas.basic.worker.js": [
-   "3d95499f39500a74875d6ac2c992520744637e10",
+   "46aab07b92aa19269717d7a8eb10d5a170441f79",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.canvas.transparent.1.html": [
-   "4350516eeefc849a7a2f9d0d1c5c3632cf1e058b",
+   "df6590c8e1917bf4c390ad6753dc4a2c45e082f9",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.canvas.transparent.1.worker.js": [
-   "7ba697b5f4c8c90376946d96f73dc4e8db87f1ea",
+   "6a631f330a62a8b9bbb2990d089d9b570bbbac57",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.canvas.transparent.2.html": [
-   "ded18f76977cbcd574a164321a65f2eda1948e5e",
+   "6f4a8f9909fbd241587e5d08f73f3743c541b7d0",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.canvas.transparent.2.worker.js": [
-   "d91fa1694bf2cf006ce38e28b51df9ba8db859c9",
+   "a9c9a7ac9cc2a0ba9398b7bd36d26b08d05d8135",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.clip.1.html": [
-   "9d5e33a008f109958520d04cf28c4468b877b568",
+   "d452c06ab7000558a0a645617283c9c4ceb2b79c",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.clip.1.worker.js": [
-   "d6a444d57fd156cd0b6b4568cb363b41f1f617d1",
+   "27cb869d2ba3abbce47e6732f5299d0ec17dfc2e",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.clip.2.html": [
-   "586fa9e65e57cff7bad5559da31ac62c5dc9b0fc",
+   "dc2992cf2305ca5d0770b429ff8ac557a1785db2",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.clip.2.worker.js": [
-   "eac6bc31b22d213c131a416c23d37b8e4739cb56",
+   "8ea9e97bd789a2f6c5c5159b08cb2d46e7608d6f",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.clip.3.html": [
-   "77bb41ccc3232d64bcf7c3f10d6562009b22d1eb",
+   "182b93a1721cd6638b0d20c7cd27db21d9beb96b",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.clip.3.worker.js": [
-   "809ee0b1a44522dd99e31a9640d9969c6ae4ac65",
+   "01be0657ff2e44381b1e52ca47819d1842f4a6f4",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.composite.1.html": [
-   "51c458c65e4045aba26be2b4a2984825357ecbd1",
+   "a80ebbdb051bb1ce16d86d5ad7789a2f903bd2d2",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.composite.1.worker.js": [
-   "5c81a2c3498107429a0bc1d7e7b0d2592a043167",
+   "f8c80dcd24214127c09c216b7914f19c28468105",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.composite.2.html": [
-   "a0355c63fa5ac6f300764fc0e3bc2a4da8aa77e6",
+   "d8def5cd7ee0cc0cda0cada8584645c10cd7ddec",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.composite.2.worker.js": [
-   "2ab91b7a7c6d88ab6ff7ae707b79bfab36113474",
+   "2b93baeff70a656dfdf0d2aeb40daa1aa4fc863e",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.composite.3.html": [
-   "4cbf1902d5f22fd51e1214501d9d05633467a834",
+   "d3c68b50374db7a403cd461c281be074683f0e37",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.composite.3.worker.js": [
-   "85730222225a92783dd5e50c26856d18c220579e",
+   "75a5d2745d9998e610d3bcc8a637022ae8d7d94f",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.enable.blur.html": [
-   "e6ad29378800b24c7e63a012297fec5cde05e919",
+   "23a6be1aee24f5f95cd1f4361458b88740309d46",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.enable.blur.worker.js": [
-   "610a38b994d4e484d4efa4bc1ede81c1630f162e",
+   "dc2563ff1f6436aaa06b6453bfc2824f91a3053c",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.enable.off.1.html": [
-   "f8ecf85f1cc296787d5e0322b0100c63f935d051",
+   "b35cd5f1c859d411b14b86475b016e86bb6cdb91",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.enable.off.1.worker.js": [
-   "dad5c0e58b35d8c26183777d9dfdf1bca4cb4867",
+   "878c7da3c3d89dc336025892a1c079e8a5b7c57b",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.enable.off.2.html": [
-   "3a23c8bcfcf655df54e79faaf378a691028019f9",
+   "2825d935236c07f9de79724a381c4f25bea6a953",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.enable.off.2.worker.js": [
-   "371f5822e9c4fe7b5f384ef97779d2aff9fb4a08",
+   "9648af5fdbc80c079a5d957f96c9497439e161d1",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.enable.x.html": [
-   "b2f147b4c6fc78dd9daa7530133346c35e553edb",
+   "a0506f4096be6ed7ee6c2a7f2b5a3bf9892823c4",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.enable.x.worker.js": [
-   "1f70635e20293357de3df3871140695974816e60",
+   "f4912bfd3c5ef744c96d7a6a7bc1b0dc6ac30461",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.enable.y.html": [
-   "a01d61f22f261bd2b55da9a99d3a3e83f52a87b5",
+   "2330635e0cf18497c105abcacf858013056f254a",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.enable.y.worker.js": [
-   "f1d0f27bddf95a268ad6c9a223e6789c1bf1cc7e",
+   "a695b8e6dcbfe0bae9b8d94df0a772602807046a",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.gradient.alpha.html": [
-   "50e781675aa75109dba44e25271bd7a16da9d060",
+   "933de201443d18fbeafd7c536d76e9410dc9726c",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.gradient.alpha.worker.js": [
-   "07c02cd29cd4803f16477471c976524aab0a33d4",
+   "9e8fb64260e76a16205e1fa2bc3c82cf5a6c94a7",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.gradient.basic.html": [
-   "5ff7e66f36cede9580262deb1ee30419769a0ead",
+   "5fa70319f7c9ab1396457b89dc13343894ef6441",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.gradient.basic.worker.js": [
-   "90f24bda1f88762bf6a7b967b15acf44bc287ad4",
+   "9c28e57bb557da8a8a9fa342c27c19400a6fad41",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.gradient.transparent.1.html": [
-   "80b59bace3be404dac18ca824ca98280e80c33e8",
+   "55d362164ada71e9b253792e0faccd19c6d485b7",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.gradient.transparent.1.worker.js": [
-   "9e12ce835103f73706947edb1198cd6d740c86c4",
+   "3f5addc7d6f81478a6bf663bb9138e2f6ed6f547",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.gradient.transparent.2.html": [
-   "7c1f567860a1126cbcd9d093e92bba2b5f147505",
+   "f15bb989e998ea7c4da690fac8f05530e5d6dc16",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.gradient.transparent.2.worker.js": [
-   "08f46fdb49c9c9b99d229084e67ca0c77eee98c1",
+   "e5785b8019b0f634f0580bceef1e4cb9425fec83",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.image.alpha.html": [
-   "86483e390028356b44bb74706b2e1540b25d1dad",
+   "401df16afd1f2475a748e2a581c19886179af754",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.image.alpha.worker.js": [
-   "a624be80ddad25927fcc4bb91047c3d871c8eb1c",
+   "54ffd70218bd6eff70dfb1e63e61d47c93d46e5f",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.image.basic.html": [
-   "5ffd8c6a3019f44bf37beb2f0935ab40f5ef3467",
+   "47a8fee6e150b37a58da24c54a6433fb1108044e",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.image.basic.worker.js": [
-   "0685043ad3f9e7bc965ad11700c975b5c729d569",
+   "0f192f9a3df9a0ad065783ba65694a6a97dc6650",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.image.scale.html": [
-   "d438f3f34865b25dc632536c7583857395f6a666",
+   "b2c02122f7ee00cf8efcb8eec40b947a9eb9882e",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.image.scale.worker.js": [
-   "6f084e9b42a054fb76f64b509b9af7a9697bd4fd",
+   "2b430a02b89f4dcc97dc647167b72012eb1c1093",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.image.section.html": [
-   "1f297601fa3ce3852a03b33d5776ea00e89592a3",
+   "3efd2aadfc5e86b53a8920b1499390e9f7607cb2",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.image.section.worker.js": [
-   "ad923e0f058313a3793b31bdd09cf625e0cad7ef",
+   "73f76e50fb9c2bd10c56ef8affa5b51f680b9c73",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.image.transparent.1.html": [
-   "f2b2899ea429a6b025ad90ed1c19f334f735e015",
+   "18972fdfb0ca80406d984918fee7e5f48b71c71b",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.image.transparent.1.worker.js": [
-   "af2d869f46db2f3e014e68d08adf8cbd51c610d6",
+   "465e78ca800ea69ad5997b2ffcafe38c844fe1c7",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.image.transparent.2.html": [
-   "5b23ddfe88e22652df94a3f34fdcb33bd7136a78",
+   "0ddf21c08042f692c383755ae67f70f86c0897d6",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.image.transparent.2.worker.js": [
-   "0b99f3627e8b82db8c0ebd3fdb8c69288fef7f38",
+   "d64e765eeb033837b3ba4f6e1bf067a9bbd61004",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.offset.negativeX.html": [
-   "8f8fad7be444fd8299fb21794e6619c8ca9c5fa9",
+   "33a675d8890c644333cb5bd7cffed9013bad41d8",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.offset.negativeX.worker.js": [
-   "99081239e32212c930236e3b448c57325411dc51",
+   "0135a7e807ddc01041a4113694a86224060ff306",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.offset.negativeY.html": [
-   "47c391087a3568ceb086fa04f4dac1f9585e9b7c",
+   "3f7063cad8f54e4b55a398c2e40ede309e7cae6e",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.offset.negativeY.worker.js": [
-   "998e4ad16c4c266ba3e634857802533f4cb25fab",
+   "f2553c5d96b79362717708828bc244d0890a13ba",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.offset.positiveX.html": [
-   "d66414b672f71f662eba82000eabbb10c4548f80",
+   "05ff73cdcc962d79bab16895f242d029f1f1f2d5",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.offset.positiveX.worker.js": [
-   "e00379fbe0ab92d9dd1f068a6306d99bd3e8afa4",
+   "0b6fabd7b6f11427507b604928038606d0de8af5",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.offset.positiveY.html": [
-   "6914414e9264af9c09b38a2833b13bcd24812371",
+   "d5857a50b3a54cb48be8538842b2e4673be1c8e5",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.offset.positiveY.worker.js": [
-   "e7df68975fd5737b3c1f75e41ced1039fcb6ddde",
+   "dce9816c61df5c46fd35b1b4e53d0920c14ee98a",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.outside.html": [
-   "664e50938b26b89b92bbe7126185515fff09d59c",
+   "776cbeed4210bbb68e905702556aaf64a6254123",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.outside.worker.js": [
-   "6d23c72c8bbfb1ed27a55342a0f158ee233457f7",
+   "9c389fccf0445dcd3ed155744f910001faa37b87",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.pattern.alpha.html": [
-   "371f32a4fe9ae5ba42d9c078a037bd2b3d418b1f",
+   "6af064409e1bdc7b465eb8a46b4d1852c2f6cb5b",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.pattern.alpha.worker.js": [
-   "636253a7ab5df20e6c521ee73fc8c6e2f7f4f412",
+   "b911bd756b0bdbdb0e8a3870690e2d017aca494c",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.pattern.basic.html": [
-   "cab764857d48a14635200352e2730344015ee150",
+   "ad7fedc386cdd25f9ceac68a51e144f064452c2b",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.pattern.basic.worker.js": [
-   "e8b6033d3908b9eb110312b16289bfc8e2f2feb4",
+   "4166c283d0d6d8029ae3a055bc32b434a4550fd4",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.pattern.transparent.1.html": [
-   "315724a2b0d411dae3374de46b3b0787aaf4cc7d",
+   "348c79b1b33b8c7ae1bcbb3bad20b56d2795e2e6",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.pattern.transparent.1.worker.js": [
-   "34002793153afb5d54ca085ae34c31027dc5da3e",
+   "2ca00dcacbb32f6c95fe043f9173c35886b13b35",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.pattern.transparent.2.html": [
-   "668e07f833b4b9b33bd45eda67058d9efca01148",
+   "2cc6a44bfdda16b6979a704d7429e244764be61f",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.pattern.transparent.2.worker.js": [
-   "157fbe2a8dbc959fc13bfcc4917be2c98c7e75f6",
+   "b0255facb2edb9244d954fdb6b75ca07741e98bb",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.stroke.basic.html": [
-   "be66f3a9a929b883b0c055d7f61ef28800f03da2",
+   "6d71ea25e759ee9fb5c26c0e011861dcbeb3c119",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.stroke.basic.worker.js": [
-   "e16536ded313f6d52baaa6fa2bafda6044e33af4",
+   "72f0f7b991c02432f46bd806d061d2d65f580c53",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.stroke.cap.1.html": [
-   "2c460fd70f592b4f7169ce29727dbf4b87a6fed5",
+   "7a9995d833ebd9c1c18a814c700e17d81525d38e",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.stroke.cap.1.worker.js": [
-   "4c6a1aa4d4d5b27eb60b18b800bae54b27ca127d",
+   "74b1b94f91a1d2f1534c738e6c972a46270babfa",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.stroke.cap.2.html": [
-   "0e78c1ad32a625dbf10d4dbbbeb608f19d164f3a",
+   "4ff35648b02ff52c27f4ef38464a342d7bcc9884",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.stroke.cap.2.worker.js": [
-   "0c3cae105baec83df9cdbb91e78f2f80bba37d06",
+   "ac25dd8cb3522f5272442379ef59716c4ba437b1",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.stroke.join.1.html": [
-   "04a6245686ccd526d8fbed81b240f571cf39e684",
+   "3647a5d4c3a7ea3866016146ad6aa89ac32bb018",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.stroke.join.1.worker.js": [
-   "958372078943bd3396d19769a3cb521a4b489da7",
+   "65816df7e6058d00699cf9085f6a85e8a0a7a29e",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.stroke.join.2.html": [
-   "6629313baf7f64f650bb6cc3a81a8e17b1f552cb",
+   "70c96ced4c16bb3977e0c133e7f153e06ca7603a",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.stroke.join.2.worker.js": [
-   "8b89d7405cd1e51e507bdd8369bce526dcb7008f",
+   "bdcfd09d80cb002b1f5bff1cc16263aae6c66fe7",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.stroke.join.3.html": [
-   "2fe623be5dc040eb9a1d82e7b2e24cfaf34967ff",
+   "93075330364f63d8d07c4d3fb46a70fdb4eb6da4",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.stroke.join.3.worker.js": [
-   "a67d7706cc768aae799a832bc2dffd55d31c0938",
+   "a769515d7bfa8ac57c16820e8d8429015bb7ed4d",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.transform.1.html": [
-   "a879a3b992097f1b0a4df2051d515978db3dfe30",
+   "09809ccb20107f7e086921058a787e92f0b700ab",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.transform.1.worker.js": [
-   "15389352979e3138d500ebd9efcccc9a29397258",
+   "928f53791d9bd08abc9e3cf1b8a2adcc7e05a747",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.transform.2.html": [
-   "d2452b48ea8edb0ea9119345079d252d413cc543",
+   "fb5c3225fca59bdca51e6e376f08ced3b1ceb80c",
    "testharness"
   ],
   "offscreen-canvas/shadows/2d.shadow.transform.2.worker.js": [
-   "bc9c7c8d3b3a780786574cdf118788f70132508d",
+   "9cbd71de5f833c0f61303c1ec473f9939e8fe681",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.align.default.html": [
-   "91f6ed3f6af16849baf79afac1e0cd747551e702",
+   "fc1dcd7adf331ca91845ab1214b4659c42915bab",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.align.default.worker.js": [
-   "7f59ae9b5104257394069bf35b07850b2bf71b1c",
+   "bd0256d51713efbb74ff9912848712a183153a39",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.align.invalid.html": [
-   "bed45de4dbefe9fb87e59f0bc281b080f463d67a",
+   "f1ca61b6b711ce36e389b6dcf82db693c399e477",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.align.invalid.worker.js": [
-   "a2697856cb31d75237bd35337a14b1ec228daac1",
+   "c528e43524bfcba50701e381d76949931511712c",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.align.valid.html": [
-   "d96bdbf023d1045250e94e96f022d3961a4e2c82",
+   "d617ce0ff6ecf19a6fcf97baf899f8391a9a93fc",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.align.valid.worker.js": [
-   "478d4543ae1237b5f753233e06c85c4a1cc56321",
+   "cdef885dcfea1b6c3dfb420963a4849dcd556a81",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.baseline.default.html": [
-   "f2fe11014517d2887a8efdbdca2cae4efea1430a",
+   "a47f5c565242a81706bcf025b2d2b7afe5ecd561",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.baseline.default.worker.js": [
-   "a475fa341f9dc9a4ed4707b17eb118742136f2b0",
+   "8bd65af372e9597cc40d64368b7a4e3e92271b62",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.baseline.invalid.html": [
-   "0ff3b18dd527852db24dee4419b27ad50487c088",
+   "8e4508fd8345b5dd251fd8d3ccc0fc97bab4d091",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.baseline.invalid.worker.js": [
-   "377799b50bffc02068449fc95036696964ada1e0",
+   "82a190360d602633c46399933685a77261b7b0ce",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.baseline.valid.html": [
-   "cd635ec486701444ec7607bb5f6fcdf3d264c6b5",
+   "c9d3bffbea2a2abcbaf04f59521522d372502edb",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.baseline.valid.worker.js": [
-   "1440c38cffc033976dbc93a69223fa0762ca09ef",
+   "2297133e7d8de312ff6a54143521906b4e42385a",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.align.center.html": [
-   "48e0cb36d8bc2351c118769149fadcad9943e008",
+   "c89105373bac2023184c9f3dfff59335ebedbc83",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.align.center.worker.js": [
-   "88d77c1e1892ceec653dc39ff3dd9a81a49c088b",
+   "a548b43afac0c587354620f93f03480630d4a55b",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.align.end.ltr.html": [
-   "6356b3be89f79ca1860c99b44aa632c937cd6fdc",
+   "342276420ca04b4180857581ec24e16c06200164",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.align.end.ltr.worker.js": [
-   "58e6ffae95502d8fcd8d43ead33517c0d6cf5f19",
+   "fb25821f2f9271e34653f3b2a012378cce552031",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.align.end.rtl.html": [
-   "b60a85cbaa37d85e0f09836440355ffa7a4e4ffe",
+   "a759cf717c925cfbdb8f4064d19fb37934fe6985",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.align.end.rtl.worker.js": [
-   "66f03acaa75720232a05aeba5ba13233a274a3ea",
+   "041fae76b25dc553c82c41f6a21a7a3b5a801664",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.align.left.html": [
-   "164b02af434252f0fe29e772c888b25e8f52c0b4",
+   "a46d76b0b21c2d3b0359abda4d4b22389699130b",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.align.left.worker.js": [
-   "725762a8adc8a16cde7f0ed6b33d0ad9039fb7e6",
+   "c474bf10409c35427ad4826ad01522874655fd5c",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.align.right.html": [
-   "5621161d4aab2e32bcb39b4cde7cdf23bd04edf0",
+   "976256e98e0de51b155d0c9ca642b6b97f3d070a",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.align.right.worker.js": [
-   "70a39a3186aaf5145f92e7420b80ef0a15809d17",
+   "fc01a85b1109fe48acb7407593ee039ee626fead",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.align.start.ltr.html": [
-   "130474e7369557d49b29061e86dd7b2b1ecedc88",
+   "8f2cc090d0f6c7cd40f49bf6c9b80a53fd65ea11",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.align.start.ltr.worker.js": [
-   "ebc06542e3167d20384481e15b9c49f9a4793339",
+   "5664436dfb66a2ab4c8c7082ba98506d7db4481a",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.align.start.rtl.html": [
-   "05372ee25ae316ea1c18720d41096435c2d6eb69",
+   "6e4206e5deb5c2f7f33dd0436b2212bcb5748366",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.align.start.rtl.worker.js": [
-   "dc551e4abf2fd2bfa4a4e5b247b9258292b11e84",
+   "3ea6fe9db2a4592a73319271962dd7dfe089878a",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.baseline.alphabetic.html": [
-   "2413fe55ed2f7979f73c4190a97bd57a3893108c",
+   "f95bcd40029ef5ea8994575265ac80f882d44223",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.baseline.alphabetic.worker.js": [
-   "2683272aa677fd2c3c3fb33e6e9ce42ea1eeba70",
+   "8b973e5a2dddbcd2b088665e6a1840ec3f923ed7",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.baseline.bottom.html": [
-   "5fa9418338fb79ba4c5a00d02ac3cdd5744b8b3d",
+   "0c777883439075156bcf11141a1fcf36c9eaf457",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.baseline.bottom.worker.js": [
-   "3ba60c966be6f759641be03c25c259db0964a88a",
+   "3ae948c10563385b28b28b51f737e2efb0fc75bf",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.baseline.hanging.html": [
-   "e3f9cf34df2a470a1c5aa0b74b4fdcda67b93030",
+   "46a40c9ba1e5946c9af7fe704abafc4c96f818af",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.baseline.hanging.worker.js": [
-   "b4773e8ab8d7cf4377ff19d81bfb56092779a689",
+   "a3fcc35f7bb62b57aa50c63f4746fec35a115389",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.baseline.ideographic.html": [
-   "59865c3bcb802b842b140cd9eae2bc884a31dd0a",
+   "3f0934176184909aa5f8887061b0cf45fde042e1",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.baseline.ideographic.worker.js": [
-   "ada7fe9c5b618e32aa1e1c409dba39fb78fc76d9",
+   "5cb8eb0cdda08696d2bf36c1954c039af3e808c2",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.baseline.middle.html": [
-   "71799da7bf34e22beb7dd1938d5c373b00ff645d",
+   "f0407921221f2223809ace49d5e9b8d206ca19ad",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.baseline.middle.worker.js": [
-   "12c768a70ddf07df94d098fb7677cbc77189f374",
+   "0c292040a9efafb6dbb90ee1239e3651e26d2ead",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.baseline.top.html": [
-   "2fcce4ac32fcc4c2498389e48ad6d00287a986d2",
+   "902ed1b3aa61d2372ccc4c7f9655b0bbb953b99e",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.baseline.top.worker.js": [
-   "078255acf6c42982c2027ba0d19f0a591d399271",
+   "a2427ed54e784201efdadba3db1e2679e2d122ed",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.fill.basic-manual.html": [
-   "ed267be901acde339ff846bf611ca650fe63f6f7",
+   "9ca033ee6353d6cac77428d1b38c5453809c4782",
    "manual"
   ],
   "offscreen-canvas/text/2d.text.draw.fill.basic-manual.worker.js": [
-   "bd7f7e2638bd27e74e74247fe9d29cf982a70630",
+   "d86348814c06bb61648ef8780073ffbb39ccb201",
    "manual"
   ],
   "offscreen-canvas/text/2d.text.draw.fill.basic.png": [
@@ -474284,35 +474319,35 @@
    "support"
   ],
   "offscreen-canvas/text/2d.text.draw.fill.maxWidth.NaN.html": [
-   "f66b7357619ec86fe2269f61b1e3e4bbca183af5",
+   "3c7ddaaa418150b6b210268ad114b76160378677",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.fill.maxWidth.NaN.worker.js": [
-   "49a4f6bd5d1ed8b1a93282c54c1e91256ab89adc",
+   "4e67325b0057fe155600674db3f9e00876c672e4",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.fill.maxWidth.bound.html": [
-   "c74895563df6521800a241e8f7107921ed464f39",
+   "ae4b308f21034545d95ba7df8f2c82622cb6f816",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.fill.maxWidth.bound.worker.js": [
-   "fdbab5b986b083e8ad298a9207259270c093804d",
+   "08133467076a881353eba059cc225d2e3eae46fa",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.fill.maxWidth.fontface.html": [
-   "936de46cc59900a8138a200c66937d750bfb1632",
+   "b7d4cd63d4e87f226dcb4a21bdfa296bb19d1346",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.fill.maxWidth.fontface.worker.js": [
-   "3a5b4b742d4ff0c9431eb35daa80ac499830327e",
+   "6e76ff6fd293dee7e207828f209d22d657be89b0",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.fill.maxWidth.large-manual.html": [
-   "e463d4e55204b9040dd1b0714431aa0d4ed462d5",
+   "669df5dafe29271ee7db0fbb6ecd2656e7501e15",
    "manual"
   ],
   "offscreen-canvas/text/2d.text.draw.fill.maxWidth.large-manual.worker.js": [
-   "e99e56eb56665e64f86ee84a0cc0bd99089ea770",
+   "1eac193307963f6ccfdad9fe1b4a8fbe9616e11e",
    "manual"
   ],
   "offscreen-canvas/text/2d.text.draw.fill.maxWidth.large.png": [
@@ -474320,35 +474355,35 @@
    "support"
   ],
   "offscreen-canvas/text/2d.text.draw.fill.maxWidth.negative.html": [
-   "c5947d8882fbb6eeb2add013b88a3e65672b05ba",
+   "fbe920c87c88ed38d15bb2ed7ac96518174e3a89",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.fill.maxWidth.negative.worker.js": [
-   "5302fde8342f5c7bead15abf3412bbfdfb7fbbf2",
+   "fec72292ccffb6ae8a7cbcf6d8d105573c6e1024",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.fill.maxWidth.small.html": [
-   "04cb3edf69efbb8c4f0dfa88c11fd2e0583ec973",
+   "00995e75465e425a494d509da638cf9b7d92a9a4",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.fill.maxWidth.small.worker.js": [
-   "73c492405210a2658ee6ab1284f995c051cea597",
+   "fcb09250f5f9d5a0273dd88433d191b18c6c3bcd",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.fill.maxWidth.zero.html": [
-   "77c9d05d84a4456fafe33b5f0aa8d8cc3d8e66e2",
+   "2dd17d790f20f305100dfc35ddbd7a924ab86f19",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.fill.maxWidth.zero.worker.js": [
-   "d32291775126da6cf33e687f12a3a64e972fe632",
+   "442a921192c5649c586bebd5bec62fe955e27d11",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.fill.rtl-manual.html": [
-   "fa61f29d4d61f36948c19fbb0777eceec6677284",
+   "ddbd1ffb75888063243b0d769df83a0f3d4a3329",
    "manual"
   ],
   "offscreen-canvas/text/2d.text.draw.fill.rtl-manual.worker.js": [
-   "f5bd24718fb3b628d97e4b3e6eac2addd62f0fdb",
+   "c7be4f826ec7d606ccc89fc4e916b141f2557e1e",
    "manual"
   ],
   "offscreen-canvas/text/2d.text.draw.fill.rtl.png": [
@@ -474356,99 +474391,99 @@
    "support"
   ],
   "offscreen-canvas/text/2d.text.draw.fill.unaffected.html": [
-   "5d2ee756de0870be131d29eda7d92685dff14c42",
+   "7c46db0f692be715403dbe791e623a87e6ebf787",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.fill.unaffected.worker.js": [
-   "8be9c0bde334f45e4fe6b99255b898341fab2abe",
+   "bfd182e8b4ae9b39bf36b1d06f14c3a5fd587df2",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.fontface.html": [
-   "f66be6ccf7c75fc9829551a3824c48596bb5a731",
+   "77994dae535084f8ad5e03d37e0fbbbf6a4508d4",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.fontface.notinpage.html": [
-   "5e088c64de816408ceeec5c109dfbfcff9b5c89d",
+   "d2bff84de5d0ffa88547c58920f296c196f34241",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.fontface.notinpage.worker.js": [
-   "66e65408d7a986e070e657f8b3424eff8d033f8d",
+   "bfc6a74dba18198654b4643dd18b1ed03d7f1076",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.fontface.repeat.html": [
-   "922f74e07418d01a5c2f2c2e8e8ed906d2619c1c",
+   "b2a846b61512fffad62a4a7f4b4824e687a31f17",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.fontface.repeat.worker.js": [
-   "c15ee9ad85769a2f32f626aead5cb0810f023ecf",
+   "5e16af795072fe39ce08b7d6633ad0be75fb424d",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.fontface.worker.js": [
-   "13637c7cb1260fe63cfbdf128bb98d9bd66c4df9",
+   "ed9e36ae86a4f5735844959f1da4c5fc4fbbb799",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.kern.consistent-manual.html": [
-   "da70c505df2a2c34b3ab223336b9d495eb61bbcf",
+   "372e61385732b20ba0705d9ac9b5ad19be31ffb8",
    "manual"
   ],
   "offscreen-canvas/text/2d.text.draw.kern.consistent-manual.worker.js": [
-   "46808a8b472620a23b0f37419f7e53fec935f0c4",
+   "8bdb213a12bb2e8025d79e6195decbd8db342183",
    "manual"
   ],
   "offscreen-canvas/text/2d.text.draw.space.basic.html": [
-   "60a388dee2c27081ef4799a679c2527a2077c394",
+   "8d3ecedf94ee5c4f3394ba7e59a2496a1105fb5d",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.space.basic.worker.js": [
-   "3d539e9ea9604686943b30956e01e2660224553b",
+   "1a6c231f2bca5418c8e85b79bea2ce4b8240b46e",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.space.collapse.end.html": [
-   "0d44a0df95f3ee38284c10cfb37fc3298a2640d1",
+   "1b84bf0893b90a8f57cf2ebecb731a7b46da6aa4",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.space.collapse.end.worker.js": [
-   "609bfaecff61f24ff6df2bde689ce40ed900a8e6",
+   "58189f3a771280d561a6e8df65cef56497a696a6",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.space.collapse.nonspace.html": [
-   "a596c51c2b721eb3b8e87730dda59d542d1ac58e",
+   "5e01afbf59de97e32dade96791024ecf16cea001",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.space.collapse.nonspace.worker.js": [
-   "8822dbfac1812bc1fed2eb4bd093f6b54dd87f66",
+   "63e98d4ac8209333e428c4183897ea5927ce6149",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.space.collapse.other.html": [
-   "d7db23cb4eefccef98136ed3287d8c88c143aaf1",
+   "4962f3bc86c4d07634454f1ebfc6bdc5cb545cc6",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.space.collapse.other.worker.js": [
-   "c6602350d8152bc4203659551d552cd1afc56769",
+   "66fe2e76712172c4f4e32f498a3deb73bb2516f7",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.space.collapse.space.html": [
-   "4c1a5a4c852608828f51ae3fae7e1745ef2fa4d4",
+   "a2f788bd64d5db8964ed5bceaa8b28f3ec76db4a",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.space.collapse.space.worker.js": [
-   "98d6924481f38685407d6267c1e263c4ede842bc",
+   "8b002f52955b08d6233fced71d33fc9384db94eb",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.space.collapse.start.html": [
-   "1a73b941d36911d0e30bfa3f8f98b3f7c667d506",
+   "806abc861b8b145f9ce7225cb393d1bc5abb8281",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.space.collapse.start.worker.js": [
-   "eded1a880701405c25123a7aa1396664ade183b8",
+   "076d7e4c577d9636754767083eed9ccb16bdf094",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.stroke.basic-manual.html": [
-   "35cb1a5c8094409eb24965b0f8a5196b66f89b53",
+   "510b385b2c9306b62ac009c46d40b423fd43cf02",
    "manual"
   ],
   "offscreen-canvas/text/2d.text.draw.stroke.basic-manual.worker.js": [
-   "a09a1eaeea5a5eaf8c572ca79ada9436afc5ef1c",
+   "680cf3b18b69e370ba0b5dcad240d1cdb9b46932",
    "manual"
   ],
   "offscreen-canvas/text/2d.text.draw.stroke.basic.png": [
@@ -474456,307 +474491,307 @@
    "support"
   ],
   "offscreen-canvas/text/2d.text.draw.stroke.unaffected.html": [
-   "1cac65cd437df13506d421d8f65332b1a1ed0c52",
+   "e64415496f7e05cf0697602b7dd6c440e8c9295d",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.draw.stroke.unaffected.worker.js": [
-   "7921f8a59005e3b1010f9834eb1d05e5cdb132ab",
+   "90e0feb0ed58dcd86e389e4d28441e81f5b8507d",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.font.default.html": [
-   "736c1ab9e2711a60d434ecf9005119a7757474c7",
+   "19a89d007042be789c3cae791e4483ce83154520",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.font.default.worker.js": [
-   "cad656e25d0fc5d2c1dd72953b14bcecf7d61d22",
+   "94ab1be533a2faf3680908ee79db1e62beb35e50",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.font.parse.basic.html": [
-   "b369e0e39d1f39f23265992401afa3d1d12388a2",
+   "4c61e6e4d21c86393666fc453cde2118ce1db92e",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.font.parse.basic.worker.js": [
-   "2a3d93d7c90ae02fbca148bb3754aa0dcb1abad4",
+   "7179144118569a56297f18fe1dfe532a35c81ba9",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.font.parse.complex.html": [
-   "a45f73729df474acf355b939704ec0f602ef309e",
+   "34d54196653b3e07355b14d356606a1df175140e",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.font.parse.complex.worker.js": [
-   "62cc6ede272998f62110387a60cd3a395fc2a4ce",
+   "958af64768bd2c1a67cff445b152fe4fe0d3823e",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.font.parse.invalid.html": [
-   "bd610ff3348ab80053e47195b1ea81cc663ba987",
+   "6ed7eb14fb578d250800eaf86479c4cb34ece3a1",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.font.parse.invalid.worker.js": [
-   "72815988adebb47cf3f8eec6543229a30a381c61",
+   "9a407c0446f556514e574d1813a2141e3cfbfe4e",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.font.parse.system.html": [
-   "a3dd448aab5deb28f8eca280c0e866c4a5ff1da6",
+   "49adb4c383aaccc81a01c05ced3478f454596dd6",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.font.parse.system.worker.js": [
-   "0b5bcfc26c309ca3aefbeed21f569cb0c7fb75d8",
+   "c05ca6a58facc7a0f7b2fd9eb4cbcadb83197aec",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.font.parse.tiny.html": [
-   "350ad23c15e5569845c0ed92f5ce61072e3cfc98",
+   "0b39dc64036490cf2d3f2ce6751d65a0dd5c9787",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.font.parse.tiny.worker.js": [
-   "11a96dcd745e3c282f352ad44b8485319846eb89",
+   "70c864525fdbfdcf226fdb082067625353aeeac7",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.font.relative_size.html": [
-   "75ce1053ae5c58174d74901488c980fdfdd28c33",
+   "8bd0d6385b6838ff55b6ccb4575bc6bc9a1fe105",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.font.relative_size.worker.js": [
-   "34836a1c4f4d3f8f00a3c5da9c42a480642e3480",
+   "09d06e6c55deb87c5343628e5d2ec9c37b41dbb3",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.measure.actualBoundingBox.html": [
-   "e747d30680318cb8c0a9214219b4eefe9e74cd6c",
+   "e7809e3f6c13e79de0fbf0a13a122a7c07fdd8ef",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.measure.actualBoundingBox.worker.js": [
-   "da6eac509f13e7ce3e6e736b2f661b9c4b7e908f",
+   "0715cdb44be2789c5dec1152a9ca3d61dd01fbba",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.measure.advances.html": [
-   "ce03b2bc432499b5b5bc94ebf7bf0820c256ea4c",
+   "40104882154176e0c1d548e434a9912ac754f26b",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.measure.advances.worker.js": [
-   "ff696f896496e6e80ce9a5d413e5838e4996cca5",
+   "575ddec03d956282796c5277b613bf276230f75d",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.measure.baselines.html": [
-   "7812c4e41ec40b0e67e4e51a7a992ffbfd80aedd",
+   "bdb6d1191395b47326d2000972b1c1ab1da50f54",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.measure.baselines.worker.js": [
-   "721eccfe7bbe8e9ca64c9689648f1403d4e61e89",
+   "04b033e14cd9a305babdc0a315400526fc9ad4c0",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.measure.emHeights.html": [
-   "be8be39a1043c72c806d3340e6ab6d2383464e70",
+   "62258ad713c5097140d1ce48036beb922712261e",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.measure.emHeights.worker.js": [
-   "561bcb8dc2d7dd8f2a1faf66e15ded48527fdd8d",
+   "6f073bd39136755c6fadec2810447059924d532e",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.measure.fontBoundingBox.html": [
-   "91e7f5fdc87a20bea258a983f2d95f027e9f72b7",
+   "6133ec67febee4421987787c3213e9091a543acb",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.measure.fontBoundingBox.worker.js": [
-   "b9038bc31d0e9104808c3508ebabf37fc8cb1be5",
+   "cf64d653b30824a9b919b44ac5efbecdd5acabf6",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.measure.width.basic.html": [
-   "4712c1cdf3dad7d4353d2d3c675969f2c1f92157",
+   "0adef6c557786624c810112de4ad4cc6de555be6",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.measure.width.basic.worker.js": [
-   "b646b789e3dc28912b4444076f4e0fa0fe4ae607",
+   "fef71b34f4eec3db6757a0e1bfc357f3f7cf0cf5",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.measure.width.empty.html": [
-   "1f48f77f3c8b260733d7713367dcd9c6b07f24ec",
+   "24cd14bb20d19df47b6aa10c38ecc1bfb08e57ab",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.measure.width.empty.worker.js": [
-   "35dca25c658325784362f20dbdc4f1d3c84cc0c8",
+   "cecd8ce5bbf0afb743bb21bf6cfb3f1c0d7a904b",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.measure.width.space.html": [
-   "bfe895684f46e922bbb53bc4328f78d48fd0b5e3",
+   "0d0fc3cf2d1c193afea182a35c6a42deba7dc195",
    "testharness"
   ],
   "offscreen-canvas/text/2d.text.measure.width.space.worker.js": [
-   "25b594a1cc662f292f912cee9ba84b5187025a97",
+   "ee7e071bddd79b20173759715ec33e32e0ba21ef",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.bitmap.html": [
-   "a384e56f24843be33e9669f792b3b7ebd3b94d65",
+   "fbc479d40170526b47eceb8f994606f6d1547ae3",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.bitmap.worker.js": [
-   "be240a4ebfe2f4291ecd9eb4c2ae4b09d82d5931",
+   "3c27d46e03af13fc02a8f35e5955e26c6bcc4db6",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.clip.html": [
-   "0b3a7eaf3872c36b5b1811a85a2dcae8a6cf01b5",
+   "7c23f4be83e52b9bcef3fc1c823fb661b96a04ac",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.clip.worker.js": [
-   "cee7df08bdeae2769fb15edd04c8363bacc8972c",
+   "918199bd34153c2488cad97fa81589ce07b2f71d",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.fillStyle.html": [
-   "861312d0f45fd0e577c035f65644e40350948255",
+   "ef10480dc028db7f3058c59643b588bdfa711a56",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.fillStyle.worker.js": [
-   "a722dd041f68c7a08005290d62f93d673ae408ac",
+   "72d324b83aa5dd3604eb7383cc20be19c12f85bc",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.globalAlpha.html": [
-   "a24c3d560fb5fec451ef3f573b070d698c94f36c",
+   "fa0c7d32dbcb9dfe3bc44659aa232ef733c33d9e",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.globalAlpha.worker.js": [
-   "6432783c7dc0cb349f6f4257045f990d6b982379",
+   "fc425e88e912c8ab531d76b59ac0b6874a56e555",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html": [
-   "5c512fbdda05f3e51fcfaa78af6ed84fecf0d713",
+   "47ef7287610c63e60054a112e2cc4d6ac43225a4",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.globalCompositeOperation.worker.js": [
-   "e06c99462bc850e55286defdff67b7eb4f005feb",
+   "04141b96c80c1463e0070815f20795c98df1b2d5",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.lineCap.html": [
-   "a0e2457436a6e952f0e60299683a19a731b67895",
+   "708e059aa21e336341d943f61eca6c4ee582e8f6",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.lineCap.worker.js": [
-   "fa967743a02b7295c9d977a1fea4fd8e4bbf6ee3",
+   "c2deb7acdd848271898e5132fe9a9d9a01b36c31",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.lineJoin.html": [
-   "75c8a94c6071c89fb30d5ec16ef521bda705949f",
+   "0211a88a64d852e22dca8226a61388f6627bce00",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.lineJoin.worker.js": [
-   "1a4a377f504ec3fabc0266b4b884de62eba26a36",
+   "714537e7393a5d665b368c8521f4a5ada0b25ecf",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.lineWidth.html": [
-   "565fc63e38a68d69d99fbe55072d52bbcc303281",
+   "1309111765599178721fef01c90bb5c85bc5d2b8",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.lineWidth.worker.js": [
-   "b04d4bb01b1aa398894d1ec54528d13a3f8232d7",
+   "02bda8ac09b26b1929e4f303292e18514f9c3fdb",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.miterLimit.html": [
-   "2173325e2485375004409a0420bbfdd4929482d3",
+   "d579e74d714341b362f3f7c02036b9ea5bcf5a58",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.miterLimit.worker.js": [
-   "0591a7b597ec793d4d36c798da688770db0e09c1",
+   "608593c8f9d5e587798e978e9aef42affd028647",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.path.html": [
-   "2c48b99ee963ae5524763b24b2b2fea044cc0f85",
+   "702be9518cce1d1cdc9cde7111c97038181f0274",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.path.worker.js": [
-   "83833e595dcc73f3f40313df598401cd1c10379f",
+   "53430287f335bf05cdf0818e9dd983cd73206d9e",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowBlur.html": [
-   "0f4fccc9484f72da2a3e54a9a248b61b196a31b0",
+   "403b0c29c5afab4ba4aaedb835f196b343775ab1",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowBlur.worker.js": [
-   "c24e6438d79329596b4b41fa5dcf7b48f73b5889",
+   "3bfed141f9a6261e188c6f446be319ccb3467c9b",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowColor.html": [
-   "086ba3003e638921e2536a9b4e419d396a931c97",
+   "d62da58a48d1081da52c7cf5bb4e5045eda49b87",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowColor.worker.js": [
-   "94e25bb908a82d0b00720800e676083449e682e9",
+   "ac23acf95ae6596522804e84af47ee47647f472c",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetX.html": [
-   "f211a0348a572f7f317b0febea2db41f3c014099",
+   "4676d35f63379e93d1f7f4098c187be317fc63ce",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetX.worker.js": [
-   "373afa09f61b6a8516bf099755138bdf1b5f4981",
+   "564907760d28e5e5d8456f042010d1c3efae9d95",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetY.html": [
-   "1c1013b88063abf07efbc261fcc5821e73311560",
+   "a0665ada462a118915cd5abab0d83b0fd28cd3fa",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetY.worker.js": [
-   "f883a935f8738bbb6f01ad0fddb13d52ec70be87",
+   "3dcd6324d5258d6956c00b136ab9cdf754122bab",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.stack.html": [
-   "6e74825f66971cb56bcd07c5e3f039a052ad288f",
+   "5bbb3b66cf0c058505668ab866a483564f7d75bf",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.stack.worker.js": [
-   "5a0f74b8ab96c1bdd87d75e5888df67ccb665468",
+   "aa20af37b4b514de7eec7277f1b6570d85b314b2",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.stackdepth.html": [
-   "4097ae9ee0cc2a245713478f087b2556a38a6c17",
+   "591bbd3c1d4e3c695512a2f8962430074825d686",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.stackdepth.worker.js": [
-   "58a28e0ec8858c2fe28b68357307ce92d3f838b1",
+   "abe66e2e426fb602fb92185ccb1861fd0903a4e1",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.strokeStyle.html": [
-   "13c0c9f865c77bbf3773224283da6c96b68cd6ca",
+   "4df4b8b81c8e322fbfd5e1497e5e7969952f8c86",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.strokeStyle.worker.js": [
-   "1f149ed99dc45f80331970f9191ada7692faaa5d",
+   "eaafacf02f62d584d2d6ee947759990b0c35c236",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.transformation.html": [
-   "785c128c249e269cf06a470c48bec7b11ad07f7b",
+   "0d34e61bea88a5373f8113c18f9a12d54d799908",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.transformation.worker.js": [
-   "e5ce45e3cdfee0ff69c3acf0788473befefbfc8a",
+   "f65c59eddf142d3becae1d54596c5414767ff07e",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.underflow.html": [
-   "46aa29e72697d90bacda439c994f74d3539687ec",
+   "ff3994cfb0810f9ac2183966d73ce4897de0e134",
    "testharness"
   ],
   "offscreen-canvas/the-canvas-state/2d.state.saverestore.underflow.worker.js": [
-   "150a31cf052ebd84a6af418378f61d2434786654",
+   "ded24a862bb9ed0ebb9edc82700d7346e3f59999",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/2d.canvas.readonly.html": [
-   "17a986c2333c3ef7fdfd481564c36cda3c1945f2",
+   "33a3c595041142b4de2f06ef75252b084a0e47d0",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/2d.canvas.readonly.worker.js": [
-   "fdd99f86eb7e59037503f33125a1fe2d639077fb",
+   "fc914a4987e96d8ea2dd22a463594010a98431b8",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/2d.canvas.reference.html": [
-   "1db640949b01a4e19ec84bc725edafb682cffdeb",
+   "808371d4b0fb0bc72bf18438f0bdb2c2c350692a",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/2d.canvas.reference.worker.js": [
-   "ff2666bd3da3cf09b5ab6994f094b9d6a0767f0a",
+   "0a9af42ef00823ae8fef344852cb4f073c398161",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/2d.getcontext.exists.html": [
-   "6011f205ed1f15a0d36f0a9343b6aa786ba7021a",
+   "c2848eb9b181a071265b405db997a851afecd863",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/2d.getcontext.exists.worker.js": [
-   "bae8080dd792ac4d6d4beb64bea7db7a65e3c5bf",
+   "4238493f73f71926cc65b7284ebb7e2d83e24131",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/2d.getcontext.extraargs-expected.txt": [
@@ -474764,199 +474799,199 @@
    "support"
   ],
   "offscreen-canvas/the-offscreen-canvas/2d.getcontext.extraargs.html": [
-   "24a68e4914d8c6bd4557f41ba6bc983b01f15848",
+   "f2120ec9d81c045175d3852e18a9bea92a88c5aa",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/2d.getcontext.extraargs.worker.js": [
-   "933aa249d63a7dc4ac9ceb1e1978bde40b106f06",
+   "aa95095203a4d9354669231d3c7d1b4540e23731",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/2d.getcontext.shared.html": [
-   "8a9484724556f9c27b134dd9a4043c048d3583aa",
+   "cdf84a5e56476a0265e2555a2d9d199ab3820b6a",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/2d.getcontext.shared.worker.js": [
-   "c3ec6647da6d9f126f0d1ffcabcba05cb9b15cc5",
+   "22fdda6db51033378a90c13798f76eb4fa76c623",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/2d.getcontext.unique.html": [
-   "8128c6ea9d694d513a26ecc8d87a7332ae9523bc",
+   "83f4bf0ad5a6bdd7aecb026ff228a5f139886caa",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/2d.getcontext.unique.worker.js": [
-   "3e4d6c4732147c8597e21b8e43f056cd255daabf",
+   "99e7de287edec05a4f02bdbc1a5c29ccb487965c",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/context.arguments.missing.html": [
-   "dfb7b3030760ce6e794444184b46502b2721f8ac",
+   "9c73224f0d1a74eca08a40cacc90b814ecf335dd",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/context.arguments.missing.worker.js": [
-   "467b78b0a93ac4a9b31f6b86a3ccaeb67b7d240c",
+   "356333464cdb8ff57b70f34a9042e61b94be9842",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/context.casesensitive.html": [
-   "e579b3a71f809e41019b32289bbf8880e4938b47",
+   "a344c69e11a5efb0d6050866db7e49e46e34f7e4",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/context.casesensitive.worker.js": [
-   "02aa32fa969be4352e74d0f1c4c9b3fe550482cb",
+   "3fcea3a71f8cf4227fc469ae07ff14886d311250",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/context.emptystring.html": [
-   "dc057508c2ca030bb50431a70c538f1d8d8495f6",
+   "4b829c736349610caf0d8268dc6e1a635b283551",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/context.emptystring.worker.js": [
-   "ea308c5519985ee63ea06473537c4ec61995bf79",
+   "bce1106fa25184156505b676230768c9532f8729",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/context.unrecognised.badname.html": [
-   "89c9fa3eb389e3a02cd50f5a8495176f2828446c",
+   "3dc2ad9edddf4b41f12a4cae60e92791a4a6099c",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/context.unrecognised.badname.worker.js": [
-   "87ffdcd273b840b14c35ad7c1beafdf8adae31e7",
+   "e9a961d8e316821b4b9504762e79d131dcab99e3",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/context.unrecognised.badsuffix.html": [
-   "48061561bfdd49e1f252684c793dea04ba147279",
+   "ced3fdee97324f24ca06b823c79620530b5377da",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/context.unrecognised.badsuffix.worker.js": [
-   "13833f9102d981114df5d2ed53489559980f7c90",
+   "f80205b56d7ae888955d9ff8666e1e675248d409",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/context.unrecognised.nullsuffix.html": [
-   "8bf98d41047d32100b9fc2af436afcce1fda66e4",
+   "4df8ea93da2db959fd8ed79fb69f946527a89cec",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/context.unrecognised.nullsuffix.worker.js": [
-   "fc677f83d82b73294bee4a22a2c4b872782926e8",
+   "e241fdef9f8274875376eb9ceee07c7c8b6b72ce",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/context.unrecognised.unicode.html": [
-   "c657c896ee48e5e4baf1426e3ef9df47c147cbf6",
+   "8a542081479a9bfe124798b803ea7b469c74a45f",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/context.unrecognised.unicode.worker.js": [
-   "36befd94a41b208d4d3385cb9883252dcf1793d6",
+   "451c2ea5bd266bd371f7c13ed6a750fbde8c121d",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/initial.colour.html": [
-   "f033e4d2603defb3642deffc95727afe5928eaf6",
+   "5d36c7ef67d9c965c74487beb47fa3a763b674e2",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/initial.colour.worker.js": [
-   "f87861f7f0918d945343460e2eec476ceb1eaa62",
+   "847c3c373793667f2a98d389480d5c013437650c",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/initial.reset.2dstate.html": [
-   "13ef0c140f169d57ddd965079fe95892c7141d10",
+   "8406dbb3d2ffeeef5be77359d7babc86ba038dc2",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/initial.reset.2dstate.worker.js": [
-   "7eab7fbba1ec4a47dd2b74331c43684ea7ba00ab",
+   "37082d270e41c83b1ee86f85d8f883c7c750e2de",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/initial.reset.clip.html": [
-   "076b3e89d151a459f6c03dffa11509ecd517b1f2",
+   "eb25f539e8c43f933059e115adefd0bf8c03e9b0",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/initial.reset.clip.worker.js": [
-   "83a1a68fb1b238bdc1f6efad50f75a9b92fcd589",
+   "a0e284415549011ffeadbc3bb66860aad1b39048",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/initial.reset.different.html": [
-   "3b6ed013ffcc15657f84ecbcf9c2ac958671abbb",
+   "b3eed9e013b1f9609ce8d5f75ce33c832778cf36",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/initial.reset.different.worker.js": [
-   "8bf57849d7821e39e68a15a5f071ff8cf7426057",
+   "3243e93b3798b029c96c593d67d176deb4b4ddde",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/initial.reset.gradient.html": [
-   "b0318901c8800d8c247ca126115cccb4c928d6e0",
+   "97d7654b11a8b8b2bae7607983bf2f4be0f50049",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/initial.reset.gradient.worker.js": [
-   "70a3c99758506c35a0af66505c6e2a8b255f410b",
+   "7ed02a15ecad9473afc5660d3cb59cf7a5649454",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/initial.reset.path.html": [
-   "e4de133884bfee73a1c6c29aad0aa484ffe9a92e",
+   "c767a3cb9726ecd31839228422d7b9f2584db1e1",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/initial.reset.path.worker.js": [
-   "a0510f6fe01cd0c51b31066b8203aee6929dfc9b",
+   "7a75feaa0a526e308215292188ab65bd141561f3",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/initial.reset.pattern.html": [
-   "646b399a825198ea27ed58055a14bd89a4b2edfe",
+   "9ba9f9ed5f66830b148e23b92a374de34dee6db4",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/initial.reset.pattern.worker.js": [
-   "51b1dea97d04a71c0bab6fa63749ce32d71e0a60",
+   "4c94691f509c457626a709bbc110b8977d876a11",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/initial.reset.same.html": [
-   "0a2edf4b6d77e03aae3f9285c4a745010de33379",
+   "ed9260c728bc59d0507b84dd9326810b56c77d1e",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/initial.reset.same.worker.js": [
-   "dedbc551508aa43916d12af5466586b86ce8db8e",
+   "aad9ebfe765fdc7fc43950321101f4df2f0c7786",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/initial.reset.transform.html": [
-   "346283fd139dc264458ca7ab7283e63911b429d4",
+   "8686155d5cf6abd97586b5af9177bbe9813814ea",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/initial.reset.transform.worker.js": [
-   "f2487fbf7b96c244ab579263bd46984a227cf80b",
+   "0022c78ef3f20b0f96d38d8424a772a1e4cad307",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/offscreencanvas.commit.html": [
-   "fd8ea50934cf5d8aaf6aadb03f7eba8d5e005fe1",
+   "cce09760d0c2447c7dbca2a6b36971f8787f2215",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/offscreencanvas.commit.w.html": [
-   "7012097872308ff3e75b197cb657726aabeb42a1",
+   "90de0786e5c60e89cc2f9ef5e2262140b604b197",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/offscreencanvas.constructor.html": [
-   "c13010715e6d09ead2d0cc8e83a42788b8be4b3a",
+   "a1760764dec276555c9125b04778d6a069716aff",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/offscreencanvas.constructor.worker.js": [
-   "7c773e094de449a22c3457e5e2575c53a7e98937",
+   "285e4e1d948764d54fd511b81f2d9dac0ee5b494",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/offscreencanvas.getcontext.html": [
-   "65f6391d3575ce09236e9b09edb056fbe6dd5ccc",
+   "7aaa0e6c36a7a147de60e54124dc15c26fd49273",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/offscreencanvas.getcontext.worker.js": [
-   "008e04e750e90f7bc3c03c38586e9267d18a3cf7",
+   "ced412fb8945d1b17732da0b179897948dc44565",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/offscreencanvas.resize.html": [
-   "5770309925cb29f71de5e4439ede64e2085a9cfc",
+   "0922727c61ea2e152d3b52d381a6adb0bf4a31d1",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfer.to.imagebitmap.html": [
-   "36fef6f498f820ea44c4a0b3ea4d23f8064aea69",
+   "31187c64e3dd656a000075bfdcf5e2030e796a05",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfer.to.imagebitmap.w.html": [
-   "c1faecb853fd89a1b7acbd14d43688e9e2da5be2",
+   "5acad7d0c07a04a3ee1116b4e577d3895076d1c6",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfercontrol.to.offscreen.html": [
-   "2eacf3f2203834736a38fae5db6745434b9ec2c4",
+   "a13e989cfcee7490a9ac2ba91796b5f926e83d41",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfercontrol.to.offscreen.w.html": [
-   "ec8d05a4ba3e77069db133b73c7bdfdd6c466329",
+   "8637c3f71948797858dead08933f6e426801aad8",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/offscreencanvas.transferrable-expected.txt": [
@@ -474964,7 +474999,7 @@
    "support"
   ],
   "offscreen-canvas/the-offscreen-canvas/offscreencanvas.transferrable.html": [
-   "f32309fc1bbd947493b563e11da26db08e81ac4a",
+   "bc2ac3aae05d040a9369a4493e0ba58076968612",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/offscreencanvas.transferrable.w-expected.txt": [
@@ -474972,15 +475007,15 @@
    "support"
   ],
   "offscreen-canvas/the-offscreen-canvas/offscreencanvas.transferrable.w.html": [
-   "813290adad19dd90ece2eb65cc01ad3bbe40743b",
+   "c3f1b11f068c2fc257c426787b1d79084db120bd",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.default.html": [
-   "b5fa3c0f1157e85a32b1f0888f6fc4958522c62a",
+   "bb378f2fd6a07a9d16a1c2e9503ff4edfb2ef2ed",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.default.worker.js": [
-   "70bb3a2c4ce68402c4708ea85981fb4762b49b6e",
+   "ecdc53d495c6b21f9504f677e8f05259cd9995ed",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.idl-expected.txt": [
@@ -474988,27 +475023,27 @@
    "support"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.idl.html": [
-   "c6728cd069f42398d511123b0f9ea99603af676f",
+   "d422aabdbc4496653bb7f8cfc496a46a26b2a7aa",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.idl.set.zero.html": [
-   "34bcef3d294f9c1214f3e8227c84488818f6977e",
+   "3d41dc4ee4a5b6760f22889005bf148a11ff3656",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.idl.set.zero.worker.js": [
-   "d321095b49674b38c4bee31c7dad7ef860cc6fbf",
+   "7482e06d2aec183d7434b66d34508b4c78263e6c",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.idl.worker.js": [
-   "dc79f0175407679b0ddf09a1c9caa4685aa08ea1",
+   "3846d6d1164b959a0cde677e05f889b654339325",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.decimal.html": [
-   "b6ca53426a52bf9d491fbc1f3eb29458595229a3",
+   "e952c73c88ee990247387c25df3ca02fc8033473",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.decimal.worker.js": [
-   "134ee395e4ce01e88d2f4b85e823fb7c298e96a1",
+   "b9d9ff985606a8ba55621dfe4d99e4d03be70b8e",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.em-expected.txt": [
@@ -475016,11 +475051,11 @@
    "support"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.em.html": [
-   "dd248f3a1adae5f2b069fe8dd09442055e3cb6fa",
+   "2c0298620fa4cd6f7264bfdbba256e1436327305",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.em.worker.js": [
-   "753db9a15e114ec57495062ff0ac59481e092810",
+   "2d1a9fca2821c2a4bf5c918bf89adf21ae48d2c6",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.empty-expected.txt": [
@@ -475028,27 +475063,27 @@
    "support"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.empty.html": [
-   "9134ec0a919e7a1164643fc66c5b007e47368418",
+   "1bb5f6849793871771b261b6157962bdf2d8235a",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.empty.worker.js": [
-   "940a89a025503ba898887fde5ebf53e2ef4741bf",
+   "07847d83efa0764d78ea6a9b70d5baedee09344e",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.exp.html": [
-   "0611080578f5ceb8a5f8b800ce28ca7fb6621838",
+   "481bc9f9e7115fbfbf488686713b2612326611a4",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.exp.worker.js": [
-   "17300f556b61de5469a90514f48d1c81eacc6091",
+   "a31a7bfd28dcd923dc76dc4d5e0bf46fc23d8220",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.hex.html": [
-   "fed86d96c5beb680245e06df4d333367c3f21c37",
+   "29f298465ad64e29198ebd639c0a1e8e93ebe5f4",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.hex.worker.js": [
-   "76b9763e714c55adb5456da848052eb27bd595e3",
+   "933d856f8ec445664ed4460aa9f8e912dcf08319",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.junk-expected.txt": [
@@ -475056,11 +475091,11 @@
    "support"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.junk.html": [
-   "6a2988718c8f6de3c09c380c7d3d8c1a9b695755",
+   "6263cf8cb588b4458bcc0258536a6386b43d8656",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.junk.worker.js": [
-   "96301e2e8a6b04c38f50e23345b4567ed75899f7",
+   "ee95f10a5912a3a4ae634968ebb64c987a2df78a",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.minus-expected.txt": [
@@ -475068,19 +475103,19 @@
    "support"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.minus.html": [
-   "c4981aa0ca1c2f5ec1217a87f57c2b00f4c946d2",
+   "d6af82d39dc72fecc69cb3b18056005473bbe9fc",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.minus.worker.js": [
-   "82a4de47d1860857aadea641982159db3ffc7dbe",
+   "bd7a366bbe089c244ff391357f05fab5153ecb65",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.octal.html": [
-   "fd6edd57e48597e1f77a930f5b67f2a27d4912ce",
+   "955d4d22225879c96cca11a62c9edb393db09876",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.octal.worker.js": [
-   "0c3bbc175f004bcdc066aa991a33541c1b667cd2",
+   "bddc3db142cc3f3220ad9c16700938050ce195b8",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.onlyspace-expected.txt": [
@@ -475088,11 +475123,11 @@
    "support"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.onlyspace.html": [
-   "ccfa41df635ec3672502580aaf49e8dbcd1d0bb8",
+   "871e431ce37b6b3bd0b9e1eeb07e3b18fd3d6d49",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.onlyspace.worker.js": [
-   "ec52619cdd52fc12e820effb25b2dfc9e14bd747",
+   "e8c955298910ba1fe844b429223b7544813cc6ba",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.percent-expected.txt": [
@@ -475100,27 +475135,27 @@
    "support"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.percent.html": [
-   "14463560c50b55dac3282a768a49cb9bf625df22",
+   "9c8cca111be44c7e79190f7213cf8e40ce487b2a",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.percent.worker.js": [
-   "83fda7b94a3c34db86da2fae9b8de3dfb56a4fa1",
+   "b48ab71f7600e476593584fc835a67b1d625ec6c",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.plus.html": [
-   "c4bc0299590e52f94e1830fc20bd8cc87029daef",
+   "02d7dc75824b971ce08a53e4be7346e539a6598d",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.plus.worker.js": [
-   "dee10412809ac1aa3ba0f2956b0776d2103a4ee8",
+   "4c6ad634175c781d71f0ffd5dd24b0b62b5fed42",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.space.html": [
-   "1bbfdea3cded68e5fd78b70f94a6a2b5f7b738b4",
+   "9360753adc43ef2ce036a2e71c0ad15728738043",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.space.worker.js": [
-   "a0da9ce8d01a221a1d2418888b699951a05c05b1",
+   "5bdc1a22fddf9a2e6006ebb03c76153e7a5ec36a",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.trailingjunk-expected.txt": [
@@ -475128,51 +475163,51 @@
    "support"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.trailingjunk.html": [
-   "f68e0fa94c4971de4ddd44ebd4c405639957fc33",
+   "21562d2b110739d612ec23d35ef0af5dfdb3d8ef",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.trailingjunk.worker.js": [
-   "8e3fd569f74761acf6f3dec218aa3c7036e389d3",
+   "f983af3a9a1efc636a1fa7f9321762d72f8eb647",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.whitespace.html": [
-   "3046f3d0127f6ed567280d0573719a05651460f2",
+   "c73f616a508bd6148fba3439a68e42ad7bf42786",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.whitespace.worker.js": [
-   "5e5261d607660eabe7ccc6898b1575590e3469c7",
+   "39ccbb5a5d4be9037b53d16e927c9a78687cbf5d",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.zero.html": [
-   "4c358c0bba781a69b34948d3c108958d93f891f3",
+   "b935ff588cd3b6e76f3d5e66da1301eadd1688bf",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.zero.worker.js": [
-   "f3deb485cb483c273acbbe48140b1f163145ebfd",
+   "d7f60d8a780f1b08cbb3a776688fa8440966590b",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidl.html": [
-   "b1fc9b9b8388dfcbb13375e828aa113da9fbb06b",
+   "0395fb360833f8505d56a8935b1a30b4c1d3d5ba",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidl.worker.js": [
-   "eb2a42881183f4b6f1bc2ff6bff4fdad5a70c167",
+   "c9ad17b1883d0a886c29e00b7d52be1152143e9a",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidlzero.html": [
-   "9ffdb6772700653c60d08afc48144e83c1f1e9b8",
+   "9dbdde9b29a5f8a4be0b84f148d6e8768b9678d7",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidlzero.worker.js": [
-   "873fc9422b4b90e0e7620fa40d6699cc7016a0d2",
+   "a5b94006fb7b5da219e021358049deb934a8c4b0",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.large.html": [
-   "a22c17dfc14bca50a02c7819730f702946a356c9",
+   "2531247c40b292c9b6686b1ce84f31ac141aaa2d",
    "testharness"
   ],
   "offscreen-canvas/the-offscreen-canvas/size.large.worker.js": [
-   "797f4ab7a1ddefb4230ea13e04b5ad14777fa1b9",
+   "536d156e4ffccb2580a570c219d904ce987a3ab7",
    "testharness"
   ],
   "offscreen-canvas/tools/META.yml": [
@@ -475192,7 +475227,7 @@
    "support"
   ],
   "offscreen-canvas/tools/templates.yaml": [
-   "1dbcdfb21748f11bffbed44f037c5804aac29642",
+   "838d8f845ecbd3f30109a3e81fe673a02e7bd181",
    "support"
   ],
   "offscreen-canvas/tools/tests2d.yaml": [
@@ -475200,179 +475235,179 @@
    "support"
   ],
   "offscreen-canvas/transformations/2d.transformation.order.html": [
-   "8d01b5aac6fca97021c6394f090377a52b811fca",
+   "8d70442f10814b389c649f49c3f1dc197d254923",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.order.worker.js": [
-   "e6aa169ed85c68cd4a9542b5cccc6ad8f51624d8",
+   "9b47794ab7eb5b4c0c52c75c86d072ad4b2af646",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.rotate.direction.html": [
-   "81dfdadf87613d2b7e2a042b924afbb94e1f03ed",
+   "b4c54d21952af2e79be012d11cfff6225145035f",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.rotate.direction.worker.js": [
-   "328296fce17c2b664e135100f7f59335e4528934",
+   "0488476a18f3b675bf0198547af216ba16ca1959",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.rotate.nonfinite.html": [
-   "fb6a73fbf61079babf3b4d85aafb4f74d3e6feef",
+   "aabe38b17e96e0a759e882c34b6550fa6d6ad9f6",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.rotate.nonfinite.worker.js": [
-   "dbfdfc76c57028e98d69e3c6d13ad28c9c43fef1",
+   "8824c70320dcc2a4642875e86476ae8cca9592b5",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.rotate.radians.html": [
-   "55bc2930981329bd384b4695ccc013a34e62678d",
+   "1feac42cdcd14b7c65103ec4adc8382d44403626",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.rotate.radians.worker.js": [
-   "243ed5e46c1117beaa8b60f4f1bcf37453aa00a6",
+   "efc14c971a564d8683d01d3fd6defe5f72f9a2aa",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.rotate.wrap.html": [
-   "9c1333a3611630301bba4f7e50859739dcfbf251",
+   "bc49fd112110b9c05709be52392c8e329ba2f81b",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.rotate.wrap.worker.js": [
-   "5a7a413a62c472677176f1b9fe68e39942d1fafd",
+   "82d9e301e2ff7b0d3e35309ad954a403d8f34e2d",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.rotate.wrapnegative.html": [
-   "108f6d830786a651d4936c5d855d7e66af06d9f0",
+   "1aa434a39f68689c42be9da8cf1c0a2eeb8e0cf8",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.rotate.wrapnegative.worker.js": [
-   "5d13b3224f8121897594ff6f1b9e457ccf82982f",
+   "1b4dd6b80d0e33e393893c0572be20987409a34a",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.rotate.zero.html": [
-   "1d0a3e4c03cc5555c40a8ca59c4f4f79e944151c",
+   "6ec806d4c4a627dfb4e739a137de5a4084dfd81f",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.rotate.zero.worker.js": [
-   "4b664be80ba50f47afb581ebb7e2813027ade7b4",
+   "353f96925c48224eda64a43ab0655448729acbcf",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.scale.basic.html": [
-   "1f760c1015643265e3985d9a4543b3f43462faf5",
+   "9ab8d14ef03fcb08c5f65d1ae5e8231e6489ca6b",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.scale.basic.worker.js": [
-   "d35a350caacabcb99687291346b227896e097228",
+   "e585f5aeea1f8108d258090b4909b5278fe96fb9",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.scale.large.html": [
-   "5383b54cf807e4ddbc01066f5053c34338e345ce",
+   "62e5d943358328382750f6b99d2990db3b2c27c8",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.scale.large.worker.js": [
-   "a92255420773c8f2edaaa660cdee11109056a46a",
+   "9cba39a0b7c3be77fb975f04a15b2e55af8d5c41",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.scale.multiple.html": [
-   "cea70306f4278391c2b5790d37be50b66ef792ef",
+   "e1a99d94454654b0963d7f857778dff6feb24da5",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.scale.multiple.worker.js": [
-   "1341166a3daf4e859ee413474657ceebcc83f463",
+   "98d8918067c3ca971c1a23245396b306a464bd72",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.scale.negative.html": [
-   "4881383fd8cd1c68a81b2f18a1ba59670d3821b7",
+   "ec478fb4785736c600ad9cc66b1f5f9a318488ec",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.scale.negative.worker.js": [
-   "27d6de0c5304c32dbfb4103ccec017d910c18dd8",
+   "d6555718b5751019ce1fa9321c2737710a3ba884",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.scale.nonfinite.html": [
-   "7ffa30232333e4b857f0298c3246805b4ddafeb2",
+   "20163ce43c7870b3603223a282489c48e8c2cbeb",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.scale.nonfinite.worker.js": [
-   "f89950fe6e12ac163abbf1029689715de4e806a1",
+   "7637082e125b480126d429dfb82f2edb19463798",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.scale.zero.html": [
-   "092ba86d3f9a9dd2259a547ec3522a8ba131b655",
+   "f0e84692cffa737d49b958242e24db0864f82ccf",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.scale.zero.worker.js": [
-   "2559357db0034dbde4b268707fa61074a2cc590f",
+   "377766856319c4c36b4b38655e53044198823eab",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.setTransform.multiple.html": [
-   "666b4c54a32f27dce8178762335915a955bf2a2a",
+   "90d4031e1e2a4907a800a456fe649150f8fee8fc",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.setTransform.multiple.worker.js": [
-   "835301624ae00b17ea5dcd95bcfd2a39707b2dcb",
+   "424785674cdf99ec429a06b29b2fa2676d25a3e6",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.setTransform.nonfinite.html": [
-   "fca5d5df919b7de495f8a0f6f1ef35c5253aaa96",
+   "fa2fcaa913c0e0f99f9bc75525bd06d2c0e78712",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.setTransform.nonfinite.worker.js": [
-   "12cdbca923b1df6c1110a4a5d286d093af819da4",
+   "79c0acfd10df5452b2b964b804a7afc16c60e865",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.setTransform.skewed.html": [
-   "d36502d3d59b30f5f8e76dcf3d7cb375db21b77c",
+   "cf6df8232c7e91210cbab8ff59037bf0d9593b39",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.setTransform.skewed.worker.js": [
-   "6d728bff3880d7b3579b54f454b4f369c633fb90",
+   "96b0e1fe6cb35e97a86f43dc13b93ede493f1afe",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.transform.identity.html": [
-   "b5890c10f2adede8dfacaf9375edc50de2cad5ab",
+   "fb62cda1e4fa1438bc5c0ce5e09fdc658a02a6c8",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.transform.identity.worker.js": [
-   "166fc5b4b84e7c833ca9b78bbce8ebd73344eaa1",
+   "ced3cdbbd0b8564f1ce7847ce14054f64eb8ed14",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.transform.multiply.html": [
-   "1c6d1661db56ae60067ef3652bbb1cba43e59192",
+   "900e2e204f64bcd053e123c554a57af7bfa7154d",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.transform.multiply.worker.js": [
-   "f01d3d992fde5f2e8be90c678d024259f0ffe437",
+   "253e45c0e8b98984d717e084043b3eaa375bc873",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.transform.nonfinite.html": [
-   "2071c73d8f1c6dfd27acbc44db7ee07d73c3df84",
+   "6dcb8aa4c601f7e13d5c5a1a27b32e0b0b79e570",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.transform.nonfinite.worker.js": [
-   "1ee3659628c970e196debd1ba0bb7a3f829b918b",
+   "4b840886f1b59afb0962c8f8eafe8219bebf39f8",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.transform.skewed.html": [
-   "83769e0344663d94f54fb1c664647606f9e96050",
+   "e2892ab9968059e60179ba8f9ef9a844913f5b63",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.transform.skewed.worker.js": [
-   "b8ae83fda7d3dbddad7fd2622656db2ff28f1f73",
+   "d17e1e3726c34095e3c4ca9d553aa4fb89e08c13",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.translate.basic.html": [
-   "2978be814957e1b822ae3663eb8059d3097230ff",
+   "6f7110cb1a93a5ddd7e4a884dfd498d0ab1efa10",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.translate.basic.worker.js": [
-   "e019abb25a5450e4c124cb798fb4b8434cb18d66",
+   "8416af6848148b3b5ebea6c5c83df3055985f92f",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.translate.nonfinite.html": [
-   "0a90f725b34eba528d06fb12c46dee78dc3782e8",
+   "dd6059670cf3d51cfa984abeaff4f4c5e009267e",
    "testharness"
   ],
   "offscreen-canvas/transformations/2d.transformation.translate.nonfinite.worker.js": [
-   "ea26178151fea00af29fa8bc7feb933a3e92471a",
+   "53d01ad83c88ae0f5038718c505a9c37db2451d5",
    "testharness"
   ],
   "orientation-event/META.yml": [
@@ -500696,7 +500731,7 @@
    "support"
   ],
   "tools/requirements_mypy.txt": [
-   "606d801b5fdaef6e4d93167416a2bf82994ecdaf",
+   "50c3d0d92b2213c1960098900f488f09b197905d",
    "support"
   ],
   "tools/runner/css/bootstrap-theme.min.css": [
@@ -504636,7 +504671,7 @@
    "support"
   ],
   "tools/wpt/virtualenv.py": [
-   "a894c9c68d276ee7e621de56b646b25206a17421",
+   "400debc88e46910d2641e728fc4adb86a88568e0",
    "support"
   ],
   "tools/wpt/wpt.py": [
@@ -504688,7 +504723,7 @@
    "support"
   ],
   "tools/wptrunner/requirements_firefox.txt": [
-   "a0826aede8bb4a0477ca4fc20d3d738f0ef80f8e",
+   "2021f550f488860500a053463970350525c15c0c",
    "support"
   ],
   "tools/wptrunner/requirements_ie.txt": [
@@ -504736,7 +504771,7 @@
    "support"
   ],
   "tools/wptrunner/wptrunner/browsers/android_webview.py": [
-   "fdf53f7d6ab91620866915110fea41606739ae32",
+   "dd45c0494b662a2b64709c32f4f45153bf3fc1f7",
    "support"
   ],
   "tools/wptrunner/wptrunner/browsers/base.py": [
@@ -504744,19 +504779,19 @@
    "support"
   ],
   "tools/wptrunner/wptrunner/browsers/chrome.py": [
-   "c9de22038ddcd69daf4b8181dc938444d9266a10",
+   "c71d77251ea1c84b404674ba6010361ae5705767",
    "support"
   ],
   "tools/wptrunner/wptrunner/browsers/chrome_android.py": [
-   "b3e14791c4890647d53e88df7ba1c1006db72ac6",
+   "672287434a0e6fb5c1c0aaef7902c364fce02ed4",
    "support"
   ],
   "tools/wptrunner/wptrunner/browsers/chrome_ios.py": [
-   "6db0188e55ebff8d3a40f9a15dc714419edacbeb",
+   "a0429665c9bc57e27c02ce81a7deb909b8fa00f5",
    "support"
   ],
   "tools/wptrunner/wptrunner/browsers/edge.py": [
-   "18a1ed781189cca23df2a4e1b5b5dca830bd0ea4",
+   "d9d0af115cc9e9c64e927b15cdd291f314b07ae5",
    "support"
   ],
   "tools/wptrunner/wptrunner/browsers/edge_webdriver.py": [
@@ -504764,7 +504799,7 @@
    "support"
   ],
   "tools/wptrunner/wptrunner/browsers/edgechromium.py": [
-   "64850165323e4e3351ddbd2058ba07f79a7a6b28",
+   "63680b6774a27592491e671f53f140b65e17042b",
    "support"
   ],
   "tools/wptrunner/wptrunner/browsers/epiphany.py": [
@@ -504780,15 +504815,15 @@
    "support"
   ],
   "tools/wptrunner/wptrunner/browsers/ie.py": [
-   "78c22b909acf410038ff06769366662ab0c589a0",
+   "635e827c295b5b1192822f51d93a4b09e3764192",
    "support"
   ],
   "tools/wptrunner/wptrunner/browsers/opera.py": [
-   "805fedee636cd22155ed143cf1148f3c2f5d98e7",
+   "55c0509eed92a2abe27cd62ce40d749ddacb6a83",
    "support"
   ],
   "tools/wptrunner/wptrunner/browsers/safari.py": [
-   "dba8432b5a75faf402cf74042b7a59c4b66f814a",
+   "f4fd3313f9fbbc1bf17f870d39506946b9538b67",
    "support"
   ],
   "tools/wptrunner/wptrunner/browsers/sauce.py": [
@@ -504804,7 +504839,7 @@
    "support"
   ],
   "tools/wptrunner/wptrunner/browsers/webkit.py": [
-   "bd444eef1dfcf61247c3322e79cc0b085ac67750",
+   "9cb373e14c98ca4d20457dbcdaad98f0ed6ea4e2",
    "support"
   ],
   "tools/wptrunner/wptrunner/browsers/webkitgtk_minibrowser.py": [
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.copy.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.copy.html
index 5f32421..90e263e6 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.copy.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.copy.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.canvas.copy</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.canvas.copy</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.destination-atop.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.destination-atop.html
index 14261d0..2cda697 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.destination-atop.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.canvas.destination-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.canvas.destination-atop</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.destination-in.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.destination-in.html
index 2320064..77d867f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.destination-in.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.canvas.destination-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.canvas.destination-in</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.destination-out.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.destination-out.html
index 5d392ee..d561fc1 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.destination-out.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.destination-out.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.canvas.destination-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.canvas.destination-out</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.destination-over.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.destination-over.html
index 130cbba..7b1dfda 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.destination-over.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.destination-over.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.canvas.destination-over</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.canvas.destination-over</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.lighter.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.lighter.html
index bab8118..446ad0d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.lighter.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.lighter.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.canvas.lighter</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.canvas.lighter</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.source-atop.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.source-atop.html
index 3d19701..f6b10c5 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.source-atop.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.source-atop.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.canvas.source-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.canvas.source-atop</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.source-in.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.source-in.html
index dfc1a5a..e716920 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.source-in.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.canvas.source-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.canvas.source-in</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.source-out.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.source-out.html
index a4bd322..c9ecd2f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.source-out.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.canvas.source-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.canvas.source-out</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.source-over.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.source-over.html
index ff8dc52..7d971a7 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.source-over.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.source-over.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.canvas.source-over</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.canvas.source-over</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.xor.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.xor.html
index f39a023f..de9fc50 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.xor.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.canvas.xor.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.canvas.xor</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.canvas.xor</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.copy.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.copy.html
index 08096cf1..9eada15 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.copy.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.copy.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.clip.copy</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.clip.copy</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.destination-atop.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.destination-atop.html
index c05cd34b..ad59f96 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.destination-atop.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.clip.destination-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.clip.destination-atop</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.destination-in.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.destination-in.html
index 24aff70..8d7f4776 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.destination-in.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.clip.destination-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.clip.destination-in</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.destination-out.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.destination-out.html
index afeb009..a01fa89 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.destination-out.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.destination-out.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.clip.destination-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.clip.destination-out</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.destination-over.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.destination-over.html
index 7a258836..a030e287 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.destination-over.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.destination-over.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.clip.destination-over</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.clip.destination-over</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.lighter.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.lighter.html
index ffc864b..0629a99 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.lighter.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.lighter.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.clip.lighter</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.clip.lighter</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.source-atop.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.source-atop.html
index 4580b54..5b64911 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.source-atop.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.source-atop.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.clip.source-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.clip.source-atop</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.source-in.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.source-in.html
index 79c4e16..d763cdd 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.source-in.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.clip.source-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.clip.source-in</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.source-out.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.source-out.html
index 5345666..6021ad0 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.source-out.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.clip.source-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.clip.source-out</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.source-over.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.source-over.html
index 98b446a..0e2a7c9 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.source-over.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.source-over.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.clip.source-over</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.clip.source-over</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.xor.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.xor.html
index b6e36bc..3224c03 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.xor.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.clip.xor.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.clip.xor</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.clip.xor</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.canvas.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.canvas.html
index 0b6df49..2ba76ae 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.canvas.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.canvas.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.globalAlpha.canvas</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.globalAlpha.canvas</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.canvascopy.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.canvascopy.html
index e7978c8..3af79e6 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.canvascopy.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.canvascopy.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.globalAlpha.canvascopy</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.globalAlpha.canvascopy</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.canvaspattern.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.canvaspattern.html
index eeb2442..d338115 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.canvaspattern.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.canvaspattern.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.globalAlpha.canvaspattern</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.globalAlpha.canvaspattern</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.default.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.default.html
index f84a340..cb88956 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.default.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.default.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.globalAlpha.default</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.globalAlpha.default</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.fill.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.fill.html
index 591fb6b5..b08b0ba 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.fill.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.fill.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.globalAlpha.fill</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.globalAlpha.fill</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.image.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.image.html
index b796992..9894af2 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.image.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.image.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.globalAlpha.image</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.globalAlpha.image</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.imagepattern.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.imagepattern.html
index ab863395..cba0422 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.imagepattern.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.imagepattern.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.globalAlpha.imagepattern</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.globalAlpha.imagepattern</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.invalid.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.invalid.html
index 980ef838..4fb8b654 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.invalid.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.globalAlpha.invalid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.globalAlpha.invalid</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.range.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.range.html
index 14926e6..bcea6d29 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.range.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.globalAlpha.range.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.globalAlpha.range</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.globalAlpha.range</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.copy.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.copy.html
index 9649234..97a8031a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.copy.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.copy.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.image.copy</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.image.copy</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.destination-atop.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.destination-atop.html
index 221e7b2..a0c531515 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.destination-atop.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.image.destination-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.image.destination-atop</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.destination-in.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.destination-in.html
index b528602..6152178 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.destination-in.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.image.destination-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.image.destination-in</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.destination-out.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.destination-out.html
index 572ad85..21d48d3 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.destination-out.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.destination-out.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.image.destination-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.image.destination-out</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.destination-over.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.destination-over.html
index 16131412..15e327e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.destination-over.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.destination-over.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.image.destination-over</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.image.destination-over</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.lighter.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.lighter.html
index f44d6dc..4571032 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.lighter.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.lighter.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.image.lighter</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.image.lighter</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.source-atop.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.source-atop.html
index 2d3a88a8..5491a54 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.source-atop.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.source-atop.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.image.source-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.image.source-atop</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.source-in.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.source-in.html
index a8c1b58..a5ab329 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.source-in.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.image.source-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.image.source-in</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.source-out.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.source-out.html
index 079d342..6e23dbb 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.source-out.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.image.source-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.image.source-out</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.source-over.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.source-over.html
index bbb00e2..2509f65b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.source-over.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.source-over.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.image.source-over</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.image.source-over</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.xor.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.xor.html
index a38ece5d..95b3c49 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.xor.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.image.xor.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.image.xor</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.image.xor</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.casesensitive.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.casesensitive.html
index 81b7237..c5cc5af 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.casesensitive.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.casesensitive.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.operation.casesensitive</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.operation.casesensitive</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.clear.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.clear.html
index 8f1b834..ddb5f63 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.clear.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.clear.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.operation.clear</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.operation.clear</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.darker.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.darker.html
index ac155ab..f586e0b7 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.darker.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.darker.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.operation.darker</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.operation.darker</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.default.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.default.html
index 165e8b8..f5d4cca 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.default.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.default.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.operation.default</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.operation.default</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.get.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.get.html
index 53762da..4aebe9f9 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.get.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.get.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.operation.get</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.operation.get</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.highlight.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.highlight.html
index 8a3bcf75..bd4c22b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.highlight.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.highlight.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.operation.highlight</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.operation.highlight</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.nullsuffix.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.nullsuffix.html
index aa3f8cc..cbe5c352 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.nullsuffix.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.nullsuffix.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.operation.nullsuffix</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.operation.nullsuffix</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.over.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.over.html
index e9b91e8..de086238 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.over.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.over.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.operation.over</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.operation.over</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.unrecognised.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.unrecognised.html
index ced2acc..6f5b602 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.unrecognised.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.operation.unrecognised.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.operation.unrecognised</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.operation.unrecognised</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.copy.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.copy.html
index 8bf99f3..d88098f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.copy.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.copy.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.solid.copy</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.solid.copy</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.destination-atop.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.destination-atop.html
index 045caaa..eb43f7a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.destination-atop.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.solid.destination-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.solid.destination-atop</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.destination-in.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.destination-in.html
index ec27d60..52709fe 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.destination-in.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.solid.destination-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.solid.destination-in</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.destination-out.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.destination-out.html
index d96ce76c..652ca2f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.destination-out.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.destination-out.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.solid.destination-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.solid.destination-out</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.destination-over.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.destination-over.html
index 08a0238..f1473fe5 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.destination-over.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.destination-over.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.solid.destination-over</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.solid.destination-over</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.lighter.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.lighter.html
index 0ffdcbb0..49afdc4 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.lighter.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.lighter.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.solid.lighter</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.solid.lighter</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.source-atop.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.source-atop.html
index a122e437..27796664 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.source-atop.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.source-atop.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.solid.source-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.solid.source-atop</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.source-in.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.source-in.html
index ae3124f..4411b53 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.source-in.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.solid.source-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.solid.source-in</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.source-out.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.source-out.html
index 8ea1679..f158e8b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.source-out.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.solid.source-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.solid.source-out</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.source-over.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.source-over.html
index e038d55..8d6c399 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.source-over.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.source-over.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.solid.source-over</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.solid.source-over</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.xor.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.xor.html
index a7b4e821..33d6f15 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.xor.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.solid.xor.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.solid.xor</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.solid.xor</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.copy.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.copy.html
index ede88859..e9acf3b3 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.copy.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.copy.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.transparent.copy</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.transparent.copy</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.destination-atop.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.destination-atop.html
index 350fe2b..df14ad9 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.destination-atop.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.transparent.destination-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.transparent.destination-atop</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.destination-in.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.destination-in.html
index b2e907d2..8f8a85a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.destination-in.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.transparent.destination-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.transparent.destination-in</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.destination-out.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.destination-out.html
index aca47b8..7b022d2 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.destination-out.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.destination-out.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.transparent.destination-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.transparent.destination-out</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.destination-over.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.destination-over.html
index 676278d..267eb11 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.destination-over.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.destination-over.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.transparent.destination-over</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.transparent.destination-over</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.lighter.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.lighter.html
index 9aba34c4..21024dd 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.lighter.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.lighter.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.transparent.lighter</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.transparent.lighter</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.source-atop.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.source-atop.html
index 18229d6..81f95fb 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.source-atop.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.source-atop.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.transparent.source-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.transparent.source-atop</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.source-in.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.source-in.html
index 57124d88..7fe80d5 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.source-in.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.transparent.source-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.transparent.source-in</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.source-out.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.source-out.html
index 9b4b9d3..aa3fa67 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.source-out.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.transparent.source-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.transparent.source-out</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.source-over.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.source-over.html
index 6299e8c8..947d6f8 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.source-over.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.source-over.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.transparent.source-over</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.transparent.source-over</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.xor.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.xor.html
index b53d140..95a1a20 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.xor.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.transparent.xor.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.transparent.xor</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.transparent.xor</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.fill.copy.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.fill.copy.html
index 966d726..d66bb5f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.fill.copy.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.fill.copy.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.uncovered.fill.copy</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.uncovered.fill.copy</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.fill.destination-atop.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.fill.destination-atop.html
index 8ffc8db..9b435e9 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.fill.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.fill.destination-atop.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.uncovered.fill.destination-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.uncovered.fill.destination-atop</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.fill.destination-in.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.fill.destination-in.html
index 040fdf3..381970b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.fill.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.fill.destination-in.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.uncovered.fill.destination-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.uncovered.fill.destination-in</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.fill.source-in.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.fill.source-in.html
index 4d64f90..4c20a82 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.fill.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.fill.source-in.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.uncovered.fill.source-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.uncovered.fill.source-in</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.fill.source-out.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.fill.source-out.html
index d1f39ba..2e94fc72 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.fill.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.fill.source-out.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.uncovered.fill.source-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.uncovered.fill.source-out</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.image.copy.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.image.copy.html
index 43e070d..9e035e8 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.image.copy.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.image.copy.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.uncovered.image.copy</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.uncovered.image.copy</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.image.destination-atop.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.image.destination-atop.html
index e59e8aa..6f4cba5 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.image.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.image.destination-atop.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.uncovered.image.destination-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.uncovered.image.destination-atop</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.image.destination-in.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.image.destination-in.html
index 2872fd2..b120876 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.image.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.image.destination-in.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.uncovered.image.destination-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.uncovered.image.destination-in</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.image.source-in.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.image.source-in.html
index 234e924..c079082 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.image.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.image.source-in.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.uncovered.image.source-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.uncovered.image.source-in</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.image.source-out.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.image.source-out.html
index 4ab233a4..c4c1524e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.image.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.image.source-out.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.uncovered.image.source-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.uncovered.image.source-out</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.nocontext.copy.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.nocontext.copy.html
index 68a93669..8d29ae4cbf 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.nocontext.copy.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.nocontext.copy.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.uncovered.nocontext.copy</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.uncovered.nocontext.copy</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.nocontext.destination-atop.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.nocontext.destination-atop.html
index ad11e21..8ff1661 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.nocontext.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.nocontext.destination-atop.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.uncovered.nocontext.destination-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.uncovered.nocontext.destination-atop</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.nocontext.destination-in.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.nocontext.destination-in.html
index 0412a7aa..0208ef6 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.nocontext.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.nocontext.destination-in.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.uncovered.nocontext.destination-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.uncovered.nocontext.destination-in</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.nocontext.source-in.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.nocontext.source-in.html
index d613663..904448de 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.nocontext.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.nocontext.source-in.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.uncovered.nocontext.source-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.uncovered.nocontext.source-in</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.nocontext.source-out.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.nocontext.source-out.html
index be5d6bf..5ef388a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.nocontext.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.nocontext.source-out.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.uncovered.nocontext.source-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.uncovered.nocontext.source-out</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.pattern.copy.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.pattern.copy.html
index 8c38388..5872f52 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.pattern.copy.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.pattern.copy.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.uncovered.pattern.copy</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.uncovered.pattern.copy</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.pattern.destination-atop.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.pattern.destination-atop.html
index 7ad35f4..75dd8a0 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.pattern.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.pattern.destination-atop.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.uncovered.pattern.destination-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.uncovered.pattern.destination-atop</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.pattern.destination-in.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.pattern.destination-in.html
index 085851c..0acf6ae3 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.pattern.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.pattern.destination-in.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.uncovered.pattern.destination-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.uncovered.pattern.destination-in</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.pattern.source-in.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.pattern.source-in.html
index 7e0b879..3c99a68 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.pattern.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.pattern.source-in.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.uncovered.pattern.source-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.uncovered.pattern.source-in</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.pattern.source-out.html b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.pattern.source-out.html
index 0d34f693..b21ab037 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.pattern.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/compositing/2d.composite.uncovered.pattern.source-out.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.composite.uncovered.pattern.source-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.composite.uncovered.pattern.source-out</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/conformance-requirements/2d.coordinatespace-manual.html b/third_party/blink/web_tests/external/wpt/2dcontext/conformance-requirements/2d.coordinatespace-manual.html
index ba925df1..1a6f731 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/conformance-requirements/2d.coordinatespace-manual.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/conformance-requirements/2d.coordinatespace-manual.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.coordinatespace</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.coordinatespace</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/conformance-requirements/2d.missingargs.html b/third_party/blink/web_tests/external/wpt/2dcontext/conformance-requirements/2d.missingargs.html
index de3d920..1056eb07 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/conformance-requirements/2d.missingargs.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/conformance-requirements/2d.missingargs.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.missingargs</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.missingargs</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/conformance-requirements/2d.type.delete.html b/third_party/blink/web_tests/external/wpt/2dcontext/conformance-requirements/2d.type.delete.html
index 4097c35..97f640c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/conformance-requirements/2d.type.delete.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/conformance-requirements/2d.type.delete.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.type.delete</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.type.delete</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/conformance-requirements/2d.voidreturn.html b/third_party/blink/web_tests/external/wpt/2dcontext/conformance-requirements/2d.voidreturn.html
index a1697c6..826cad0 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/conformance-requirements/2d.voidreturn.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/conformance-requirements/2d.voidreturn.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.voidreturn</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.voidreturn</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.3arg.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.3arg.html
index b4fd347..231693ca 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.3arg.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.3arg.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.3arg</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.3arg</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.5arg.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.5arg.html
index b2075a6..ea361b08 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.5arg.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.5arg.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.5arg</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.5arg</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html
index 8ccecae..802f46b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.9arg.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.9arg.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.html
index e71d1ab..1ed326f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.9arg.destpos</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.9arg.destpos</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.html
index a76e0ba..e5e3c116 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.9arg.destsize</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.9arg.destsize</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html
index 34785c75..aea140669 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.9arg.sourcepos</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.9arg.sourcepos</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html
index a640605..f67b6d8 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.9arg.sourcesize</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.9arg.sourcesize</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.alpha.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.alpha.html
index 8056c96..e053c30 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.alpha.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.alpha</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.alpha</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.apng.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.apng.html
index 28281ca..880b74d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.apng.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.apng.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.animated.apng</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.animated.apng</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.gif.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.gif.html
index 041db0e..b6d10eed 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.gif.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.gif.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.animated.gif</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.animated.gif</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html
index b0c76c1..5ff0638 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.animated.poster</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.animated.poster</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.broken.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.broken.html
index f56ece4..df93d83 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.broken.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.broken.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.broken</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.broken</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.canvas.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.canvas.html
index 7ae9614..618d59a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.canvas.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.canvas.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.canvas</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.canvas</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.clip.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.clip.html
index fbf86e1..0fed311 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.clip.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.clip.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.clip</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.clip</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.composite.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.composite.html
index e4175312..dadbe11 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.composite.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.composite.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.composite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.composite</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.floatsource.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.floatsource.html
index 689b1f8..d33c9aa 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.floatsource.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.floatsource.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.floatsource</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.floatsource</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.emptysrc.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.emptysrc.html
index 132e492..e7d549c4 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.emptysrc.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.emptysrc.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.incomplete.emptysrc</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.incomplete.emptysrc</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.immediate.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.immediate.html
index 1ff5ab2..651c688 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.immediate.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.immediate.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.incomplete.immediate</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.incomplete.immediate</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.nosrc.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.nosrc.html
index 5067b7a..cf39a4a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.nosrc.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.nosrc.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.incomplete.nosrc</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.incomplete.nosrc</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.reload.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.reload.html
index efd41c9..b41b5e3 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.reload.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.reload.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.incomplete.reload</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.incomplete.reload</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.removedsrc.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.removedsrc.html
index a744d591..0ec3a2a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.removedsrc.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.removedsrc.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.incomplete.removedsrc</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.incomplete.removedsrc</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativedest.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativedest.html
index 2d2c158..1a83b2fc 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativedest.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativedest.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.negativedest</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.negativedest</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativedir.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativedir.html
index a333f8f..20a8b4b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativedir.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativedir.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.negativedir</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.negativedir</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativesource.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativesource.html
index af377ff..35b70f4 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativesource.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativesource.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.negativesource</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.negativesource</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html
index 14e634a..636bf72 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.nonfinite</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.nowrap.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.nowrap.html
index 8b0fa48..b44eb2e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.nowrap.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.nowrap.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.nowrap</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.nowrap</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.null.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.null.html
index f4ce00e5..9a74700 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.null.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.null.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.null</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.null</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.path.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.path.html
index 2e389eb..fcf72bb 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.path.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.path.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.path</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.path</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.self.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.self.1.html
index 8f05c14..281907f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.self.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.self.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.self.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.self.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.self.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.self.2.html
index 4fc1319..e638719 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.self.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.self.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.self.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.self.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.svg.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.svg.html
index 5935eb8..7645e32 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.svg.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.svg.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.svg</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.svg</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.transform.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.transform.html
index ab3c09a..b0c5b6e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.transform.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.transform.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.transform</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.transform</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.wrongtype.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.wrongtype.html
index cd2a7fc..5caea597 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.wrongtype.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.wrongtype.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.wrongtype</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.wrongtype</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.html
index 1621c03c..237784525 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.zerocanvas</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.zerocanvas</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerosource.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerosource.html
index be04a705..c21bfcf7 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerosource.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerosource.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.zerosource</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.zerosource</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html
index cda752c..6cd5bfb4 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.drawImage.zerosource.image</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.drawImage.zerosource.image</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/drawimage_svg_image_1.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/drawimage_svg_image_1.html
index 6208b8d..6c1f9ad 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/drawimage_svg_image_1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-images-to-the-canvas/drawimage_svg_image_1.html
@@ -3,7 +3,7 @@
 <title>Load a 100x100 image to a SVG image and draw it to a 100x100 canvas.</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 <div id="log"></div>
 <canvas id="dest" height="100" width="100"></canvas>
 <script>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html
index 9ec16ed..ea90c79 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.clearRect.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.clearRect.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.clip.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.clip.html
index bd35e7f..d38f9cc 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.clip.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.clip.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.clearRect.clip</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.clearRect.clip</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.html
index 34c64ae..85e04b2 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.clearRect.globalalpha</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.clearRect.globalalpha</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.html
index 96830e1e..38ba043 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.clearRect.globalcomposite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.clearRect.globalcomposite</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.negative.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.negative.html
index 2d1a0cb..8fdc46b4 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.negative.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.negative.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.clearRect.negative</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.clearRect.negative</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.html
index 35a3d79c..7d6e2663 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.clearRect.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.clearRect.nonfinite</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.path.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.path.html
index c5429c8..78fecf8 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.path.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.path.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.clearRect.path</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.clearRect.path</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.html
index 384baf9..ea95d7d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.clearRect.shadow</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.clearRect.shadow</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.transform.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.transform.html
index 8ff20443..1c812cd4 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.transform.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.transform.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.clearRect.transform</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.clearRect.transform</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.zero.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.zero.html
index 73805ed..ddef515 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.zero.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.zero.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.clearRect.zero</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.clearRect.zero</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.basic.html
index 455c4b5..261401a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillRect.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillRect.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.clip.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.clip.html
index efd2d8c..834b26d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.clip.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.clip.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillRect.clip</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillRect.clip</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.negative.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.negative.html
index 6e942753..4ad24fe 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.negative.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.negative.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillRect.negative</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillRect.negative</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html
index 92bb8fbc..3056d00 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillRect.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillRect.nonfinite</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.path.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.path.html
index b018cba..ca67603 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.path.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.path.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillRect.path</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillRect.path</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.html
index be8de26c..12884e0 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillRect.shadow</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillRect.shadow</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.transform.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.transform.html
index 711b602..0462d90 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.transform.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.transform.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillRect.transform</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillRect.transform</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.zero.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.zero.html
index c6ea3ae..0c98d5da 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.zero.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.zero.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillRect.zero</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillRect.zero</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.html
index 5a3af8b4..68cd703 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.strokeRect.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.strokeRect.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html
index 6ccb7da4..baa3f7b3 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.strokeRect.clip</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.strokeRect.clip</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.html
index 3e4cf07..80d5f238 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.strokeRect.globalalpha</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.strokeRect.globalalpha</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.html
index 5239a03d..84fcd90 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.strokeRect.globalcomposite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.strokeRect.globalcomposite</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.html
index 1973d66..0051a43 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.strokeRect.negative</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.strokeRect.negative</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.html
index ed4c3ed..5610c2f5 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.strokeRect.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.strokeRect.nonfinite</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.path.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.path.html
index 81e7d43..15d8b11 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.path.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.path.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.strokeRect.path</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.strokeRect.path</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.html
index 26aaa0f..5c6abfe 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.strokeRect.shadow</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.strokeRect.shadow</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.html
index c9a4a76..0e3789ef 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.strokeRect.transform</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.strokeRect.transform</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.html
index 915c1252..bff540c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.strokeRect.zero.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.strokeRect.zero.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.html
index bec7bdd..f79a62c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.strokeRect.zero.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.strokeRect.zero.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.html
index 44232f5..d3d544b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.strokeRect.zero.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.strokeRect.zero.3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.html
index 3d59414..0ccedc4 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.strokeRect.zero.4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.strokeRect.zero.4</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.html
index 3e8c7d4b..be7da32 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.strokeRect.zero.5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.strokeRect.zero.5</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.center.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.center.html
index 85e69b0..c7e5c9e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.center.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.center.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.align.center</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html
index 601b450..202d8847 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.align.end.ltr</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html
index f0a589a8..3502912 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.align.end.rtl</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.left.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.left.html
index 219bd89..99b3641 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.left.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.left.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.align.left</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.right.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.right.html
index bbb8d44..aa7ea959 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.right.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.right.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.align.right</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html
index c986dfbb..b2bde15 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.align.start.ltr</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html
index b087a2f9..69f6a830 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.align.start.rtl</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.basic-manual.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.basic-manual.html
index 5a4be6d..c6090dc 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.basic-manual.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.basic-manual.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.fill.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.text.draw.fill.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.basic.png b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.basic.png
index 70d7b04..1e31337 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.basic.png
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.basic.png
Binary files differ
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html
index 28647ac..958652e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.fill.maxWidth.NaN</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.text.draw.fill.maxWidth.NaN</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html
index c538618..b272fc75 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.fill.maxWidth.bound</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.html
index f1212ff9..ed48e19 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.fill.maxWidth.fontface</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.large-manual.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.large-manual.html
index 5f599c8..b1891110 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.large-manual.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.large-manual.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.fill.maxWidth.large</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.text.draw.fill.maxWidth.large</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.large.png b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.large.png
index 70d7b04..1e31337 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.large.png
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.large.png
Binary files differ
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.negative.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.negative.html
index a6ec4f2..59de438 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.negative.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.negative.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.fill.maxWidth.negative</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.text.draw.fill.maxWidth.negative</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.small.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.small.html
index d0364d8..f96efec 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.small.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.small.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.fill.maxWidth.small</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.text.draw.fill.maxWidth.small</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.zero.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.zero.html
index 176e431..8608061 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.zero.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.zero.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.fill.maxWidth.zero</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.text.draw.fill.maxWidth.zero</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.rtl-manual.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.rtl-manual.html
index 1066b83..1fd67f2 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.rtl-manual.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.rtl-manual.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.fill.rtl</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.text.draw.fill.rtl</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.rtl.png b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.rtl.png
index 70d7b04..1e31337 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.rtl.png
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.rtl.png
Binary files differ
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.unaffected.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.unaffected.html
index a7ddee4..da1fab2 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.unaffected.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.unaffected.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.fill.unaffected</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.text.draw.fill.unaffected</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.html
index d3ac537..d794ef0 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.fontface</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html
index ae41722..05b164d4 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.fontface.notinpage</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html
index 987e1e8..ab15142 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.fontface.repeat</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.kern.consistent-manual.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.kern.consistent-manual.html
index 12618f4..6832963 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.kern.consistent-manual.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.kern.consistent-manual.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.kern.consistent</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.text.draw.kern.consistent</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.basic.html
index ccf68af..353896f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.space.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html
index 8be967b..9b17102 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.space.collapse.nonspace</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.stroke.basic-manual.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.stroke.basic-manual.html
index f9eac1f..03285dc 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.stroke.basic-manual.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.stroke.basic-manual.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.stroke.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.text.draw.stroke.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.stroke.basic.png b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.stroke.basic.png
index fb3b5b8..b04566f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.stroke.basic.png
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.stroke.basic.png
Binary files differ
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html
index 1da4d927..91622fc 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.stroke.unaffected</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.text.draw.stroke.unaffected</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html
index 6ab0c38..76fc17a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.measure.actualBoundingBox</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.advances.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.advances.html
index 1830d1de..aa6bd84 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.advances.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.advances.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.measure.advances</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.baselines.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.baselines.html
index c3e5f6a..58daf4fa 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.baselines.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.baselines.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.measure.baselines</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.emHeights.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.emHeights.html
index 6c7d537..88cb6d91 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.emHeights.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.emHeights.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.measure.emHeights</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.html
index cbe98ba..bee580a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.measure.fontBoundingBox</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.basic.html
index 5a5a57ad..2c0cd57 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.measure.width.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.empty.html b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.empty.html
index 70f0f07a..c7c7bdb 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.empty.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.empty.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.measure.width.empty</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.default.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.default.html
index a14475d..133fca6 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.default.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.default.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.default</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.default</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.html
index d8a1d417..643eda64 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.get.semitransparent</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.get.semitransparent</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.get.solid.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.get.solid.html
index 8fc44b1..dff9bdd 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.get.solid.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.get.solid.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.get.solid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.get.solid</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.get.transparent.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.get.transparent.html
index 3775cf3..3108c97 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.get.transparent.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.get.transparent.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.get.transparent</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.get.transparent</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.invalidstring.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.invalidstring.html
index eaa50dd..fb6e19f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.invalidstring.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.invalidstring.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.invalidstring</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.invalidstring</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.invalidtype.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.invalidtype.html
index fb778cbf..b0b9a19 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.invalidtype.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.invalidtype.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.invalidtype</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.invalidtype</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html
index 3dbda59..74693071 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-hsl-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-hsl-1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html
index 25e98dc..0076dec 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-hsl-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-hsl-2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html
index de600d9..be09c58 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-hsl-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-hsl-3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html
index 52d917c6..f6b069e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-hsl-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-hsl-4</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html
index 4f65b3d..dd49652 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-hsl-5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-hsl-5</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html
index 19aa597..877caad 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-hsl-6</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-hsl-6</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html
index d9b6a3c..7ecab382 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-hsl-7</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-hsl-7</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html
index 24e2b51..6dd9818 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-hsl-8</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-hsl-8</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html
index 9da548f..f4b539a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-hsl-9</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-hsl-9</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html
index 65881ee..36281fa 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-hsla-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-hsla-1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html
index 91f5e34..bb2da3f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-hsla-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-hsla-2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html
index eb6c695..fdab82a2 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-hsla-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-hsla-3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html
index ce5bdef7..dfbf9bb 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-hsla-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-hsla-4</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html
index 47b426d..86e781a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-hsla-5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-hsla-5</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html
index 6dc5e7a..9339ec3 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-hsla-6</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-hsla-6</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html
index a1069fe..bad415ae 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-hsla-7</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-hsla-7</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html
index 7d04b1c..2dbdcf3 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-hsla-8</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-hsla-8</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html
index 0a10c6e..4b4c1ac 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-hsla-9</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-hsla-9</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html
index fd6376e..4704c8a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-rgb-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-rgb-1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html
index ec0f6234..071477ac 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-rgb-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-rgb-2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html
index 980abef..abe07a9 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-rgb-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-rgb-3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html
index a2543b56..25d5d05 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-rgb-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-rgb-4</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html
index 6b310d7..7fd789ce 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-rgb-5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-rgb-5</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html
index d38f7e0..410d4ea 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-rgb-6</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-rgb-6</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html
index 83dfb2f8..2918ab48 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-rgba-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-rgba-1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html
index 390d0bd0..51fbc53 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-rgba-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-rgba-2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html
index f0fd88e..2a3d52704 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-rgba-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-rgba-3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html
index bd3e8edb..b6cbec2 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-rgba-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-rgba-4</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html
index 0287ef6..9fd145a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-rgba-5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-rgba-5</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html
index 09042c8..e25a29f7 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.css-color-4-rgba-6</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.css-color-4-rgba-6</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.basic.html
index 271adfd..6d65c46c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.current.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.current.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.changed.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.changed.html
index 591b6d2..a959eeec 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.changed.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.changed.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.current.changed</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.current.changed</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.notrendered.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.notrendered.html
index 3e8f007..899d0d8 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.notrendered.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.notrendered.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.current.notrendered</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.current.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.removed.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.removed.html
index a46e9c9..3cec3c4 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.removed.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.removed.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.current.removed</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.current.removed</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html
index 635a59a..f0779fa 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.hex3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.hex3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html
index 8462248..c41a2b1 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.hex4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.hex4</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html
index 37a4208..7a027e0 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.hex6</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.hex6</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html
index 36ade57..2810649 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.hex8</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.hex8</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html
index 53b1f5d..dbef0126 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.hsl-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.hsl-1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html
index 39790e9..3775336 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.hsl-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.hsl-2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html
index 2befaab2..185063da 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.hsl-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.hsl-3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html
index 9f8e7ca..a89e850 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.hsl-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.hsl-4</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html
index 881bc04..ac2a983 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.hsl-5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.hsl-5</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html
index f263633..2702059 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.hsl-6</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.hsl-6</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html
index a2fce10d..78a6767 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.hsl-clamp-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.hsl-clamp-1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html
index 0a245a4d..214aa3d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.hsl-clamp-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.hsl-clamp-2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html
index ed14332f8..261005e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.hsl-clamp-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.hsl-clamp-3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html
index a27379c..ee0815f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.hsl-clamp-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.hsl-clamp-4</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html
index 2e835a8..137990b0 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.hsla-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.hsla-1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html
index a7db6ac..8eb458d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.hsla-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.hsla-2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html
index 13652aa..8ab6964 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.hsla-clamp-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.hsla-clamp-1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html
index 98f2505a..bb8808b7 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.hsla-clamp-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.hsla-clamp-2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html
index 0aa08807..454e9638 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.hsla-clamp-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.hsla-clamp-3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html
index ab5da396..d6e7878 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.hsla-clamp-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.hsla-clamp-4</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html
index a64f893..ea32289 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.hsla-clamp-5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.hsla-clamp-5</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html
index 60b464a..7b35117f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.hsla-clamp-6</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.hsla-clamp-6</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.html4.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.html4.html
index 3dd7d37e..ef2f39c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.html4.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.html4.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.html4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.html4</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html
index 25bab97b..21621a0 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.css-color-4-hsl-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-hsl-1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html
index f4a47f5..652603e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.css-color-4-hsl-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-hsl-2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html
index 490c66f3..f1dcf84 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.css-color-4-hsl-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-hsl-3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html
index a3ab91c..ee32340 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.css-color-4-hsl-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-hsl-4</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html
index a437cd9..3d001a99 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.css-color-4-hsl-5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-hsl-5</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html
index 5f71de33..1979adf 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.css-color-4-hsla-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-hsla-1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html
index 36c9fd1a..57995690 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.css-color-4-hsla-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-hsla-2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html
index 049ad397..55ac79f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.css-color-4-hsla-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-hsla-3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html
index 7a2534c..f0182f4 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.css-color-4-rgb-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-rgb-1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html
index ca5a591..2be16082 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.css-color-4-rgb-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-rgb-2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html
index e34ddfd..046d6f7 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.css-color-4-rgb-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-rgb-3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html
index 682da31..c9f5d454 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.css-color-4-rgb-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-rgb-4</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html
index 75a11dc..3c21f53 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.css-color-4-rgb-5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-rgb-5</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html
index 778fa47..10371d6 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.css-color-4-rgba-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-rgba-1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html
index 14c83a56..bcda228 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.css-color-4-rgba-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-rgba-2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html
index 9647877b..9797b78 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.css-color-4-rgba-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-rgba-3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html
index 36a9489e..28672a7 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.hex1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.hex1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html
index 5a1758f..fd804461 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.hex2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.hex2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html
index f1ada9f..08927a74 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.hex3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.hex3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html
index 36e312d..9a9cb2c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.hex4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.hex4</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html
index 19abea3..ff0bcfc 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.hex5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.hex5</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html
index c600b98..3f178fc 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.hex6</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.hex6</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html
index cee8805..630833559 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.hex7</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.hex7</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html
index e835d2da..9aa9f027 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.hex8</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.hex8</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html
index 3acee1f..7d36e4e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.hsl-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.hsl-1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html
index c2c34f5..4537d8f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.hsl-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.hsl-2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html
index 616639a..0e2b44ba 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.hsl-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.hsl-3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html
index aaa2a8d..42b02d8 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.hsl-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.hsl-4</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html
index 0e3f851..7e81dad 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.hsl-5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.hsl-5</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html
index 6343ab1..97920147 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.hsl-6</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.hsl-6</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html
index dbddb0f..20cf5799 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.hsla-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.hsla-1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html
index 8a9643f8..7d7f1e7 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.hsla-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.hsla-2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html
index 698a6cb..450cafb4 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.hsla-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.hsla-3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html
index 45dcfca..6a00431 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.name-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.name-1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html
index a3016b2..9b154b0 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.name-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.name-2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html
index 1d56151..993129e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.name-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.name-3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html
index e2619ff..324f4a82 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.name-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.name-4</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html
index f515ff3..0648cec 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.name-5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.name-5</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html
index 66fb8e1..0b0be9d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.rgb-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.rgb-1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html
index 7f9457c..3f0d0d0 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.rgb-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.rgb-2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html
index 2530569..dbdbc05f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.rgb-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.rgb-3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html
index 1dc343a..f0b2782 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.rgba-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.rgba-1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html
index 5f5bb79..7ff35876 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.rgba-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.rgba-2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html
index 67ed7f2..f44a302 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.rgba-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.rgba-3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html
index aea9725a..e3c580c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.rgba-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.rgba-4</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html
index a149ed34..c045e2d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.invalid.rgba-5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.invalid.rgba-5</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html
index 807a496..cb71a4f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.rgb-clamp-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.rgb-clamp-1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html
index 46b3b6d..84daeea4 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.rgb-clamp-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.rgb-clamp-2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html
index 75dbe19..ae691f9d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.rgb-clamp-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.rgb-clamp-3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html
index 4888816..fda5bf2 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.rgb-clamp-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.rgb-clamp-4</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html
index 3f7a944..93f14e4 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.rgb-clamp-5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.rgb-clamp-5</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html
index 0d2833ce..64053c89 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.rgb-eof</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.rgb-eof</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html
index 85fc992..9a54bb7 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.rgb-num</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.rgb-num</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html
index 295e72b..6fc7f21 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.rgb-percent</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.rgb-percent</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html
index 0ec2ea0..61762f6 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.rgba-clamp-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.rgba-clamp-1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html
index fe35201..f171be5 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.rgba-clamp-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.rgba-clamp-2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html
index d885681..d05a09e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.rgba-eof</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.rgba-eof</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html
index 98dd9bf..2018a2b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.rgba-num-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.rgba-num-1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html
index 5cadec1..c2f2321a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.rgba-num-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.rgba-num-2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html
index 63f8c9e..0f0bd985 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.rgba-percent</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.rgba-percent</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html
index 0d08a49..ab7e0c0 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.rgba-solid-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.rgba-solid-1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html
index 2a9db38..c4b0faf 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.rgba-solid-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.rgba-solid-2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html
index 81bf257..a0bab0e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.rgba-solid-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.rgba-solid-3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html
index 82d450c..1ee9a6e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.rgba-solid-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.rgba-solid-4</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html
index c49620f..a9a8ed1 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.svg-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.svg-1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html
index 3a7e3d97..7da17410 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.svg-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.svg-2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.system.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.system.html
index 9bb43c6..9846fe7 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.system.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.system.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.system</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.system</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html
index 36cc8043..f747c91 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.transparent-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.transparent-1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html
index 66e2825..e61d4fa 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.fillStyle.parse.transparent-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.fillStyle.parse.transparent-2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.empty.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.empty.html
index e087f53..723865a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.empty.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.empty.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.empty</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.empty</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html
index 7bf486d..16fdddb7 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.interpolate.alpha</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.interpolate.alpha</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colour.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colour.html
index a5fd632..9241b6b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colour.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colour.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.interpolate.colour</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.interpolate.colour</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html
index ad18881..b0dfb3c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.interpolate.colouralpha</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.interpolate.colouralpha</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html
index b6b8de1..1dcc5f4 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.interpolate.multiple</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.interpolate.multiple</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.outside.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.outside.html
index 7577c95..a581b7fc 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.outside.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.outside.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.interpolate.outside</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.interpolate.outside</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html
index ad2152f..9bbe10c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.interpolate.overlap</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.interpolate.overlap</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html
index 7f99c1f..c415f0b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.interpolate.overlap2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.interpolate.overlap2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.solid.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.solid.html
index 46e53d32..2b23d7e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.solid.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.solid.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.interpolate.solid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.interpolate.solid</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html
index a4c3453c..8b2834b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.interpolate.vertical</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.interpolate.vertical</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html
index 92777bf..8f172ca 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.interpolate.zerosize.fill</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.interpolate.zerosize.fill</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html
index 98efeda..f22a7063 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.interpolate.zerosize.fillRect</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.interpolate.zerosize.fillRect</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillText.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillText.html
index 93397b9..f1668a1 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillText.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillText.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.interpolate.zerosize.fillText</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.interpolate.zerosize.fillText</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html
index 69e2de6..eea5879 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.interpolate.zerosize.stroke</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.interpolate.zerosize.stroke</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html
index 7eff74d..bb78567 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.interpolate.zerosize.strokeRect</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.interpolate.zerosize.strokeRect</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeText.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeText.html
index d384cc0..f55bf2c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeText.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeText.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.interpolate.zerosize.strokeText</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.interpolate.zerosize.strokeText</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.linear.nonfinite.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.linear.nonfinite.html
index b60b304..546859b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.linear.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.linear.nonfinite.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.linear.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.linear.nonfinite</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.1.html
index 3a4d24a3..f021d8fc 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.linear.transform.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.linear.transform.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.2.html
index 56957a0a..fad65d9 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.linear.transform.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.linear.transform.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.3.html
index 6cc2ead..b37fee0 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.linear.transform.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.linear.transform.3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.compare.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.compare.html
index 67089a07..aef832e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.compare.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.compare.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.object.compare</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.object.compare</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html
index 95144c6..a97f83e0 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.object.crosscanvas</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.object.crosscanvas</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.current.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.current.html
index 35709cb..0859b95 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.current.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.current.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.object.current</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.object.current</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.invalidcolour.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.invalidcolour.html
index 7ea349e7..73c2bc05 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.invalidcolour.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.invalidcolour.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.object.invalidcolour</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.object.invalidcolour</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.invalidoffset.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.invalidoffset.html
index 2dce28b6..a165c55c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.invalidoffset.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.invalidoffset.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.object.invalidoffset</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.object.invalidoffset</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.return.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.return.html
index bcb4dc7..04788de 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.return.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.return.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.object.return</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.object.return</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.type.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.type.html
index 27c9131..accf1fa1 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.type.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.type.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.object.type</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.object.type</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.update.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.update.html
index 8151c42..366aa44 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.update.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.object.update.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.object.update</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.object.update</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html
index 5bf367ea..dda2daf 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.radial.cone.behind</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.radial.cone.behind</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html
index 6c7dbaa..d649eb4 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.radial.cone.beside</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.radial.cone.beside</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html
index 362d232..bfd37041 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.radial.cone.bottom</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.radial.cone.bottom</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html
index a2f189d..86338087 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.radial.cone.cylinder</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.radial.cone.cylinder</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.front.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.front.html
index 3ed6190..384008e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.front.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.front.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.radial.cone.front</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.radial.cone.front</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html
index 992c068..7fa30eb 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.radial.cone.shape1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.radial.cone.shape1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html
index cf9bd6d4..01bc61e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.radial.cone.shape2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.radial.cone.shape2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.top.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.top.html
index fa60a0cf..cebcb49 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.top.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.top.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.radial.cone.top</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.radial.cone.top</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.equal.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.equal.html
index f96b976..67ef9e2 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.equal.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.equal.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.radial.equal</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.radial.equal</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside1.html
index ab656ce..9068966 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.radial.inside1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.radial.inside1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside2.html
index 30f4c49..59a10d2 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.radial.inside2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.radial.inside2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside3.html
index 56c12a5b..4b2d9ac 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.radial.inside3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.radial.inside3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.negative.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.negative.html
index 2924216..d02876d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.negative.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.negative.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.radial.negative</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.radial.negative</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.nonfinite.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.nonfinite.html
index e12d514..08f60db 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.nonfinite.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.radial.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.radial.nonfinite</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside1.html
index e2c68d66..901b5dc 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.radial.outside1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.radial.outside1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside2.html
index 254db45..333c5c0 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.radial.outside2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.radial.outside2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside3.html
index 4324bc7..f6428f50 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.radial.outside3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.radial.outside3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch1.html
index 5e42c409..e238d17 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.radial.touch1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.radial.touch1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch2.html
index 37dfd5ea..d99bc29 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.radial.touch2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.radial.touch2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch3.html
index e401d19b..5fa7244 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.radial.touch3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.radial.touch3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.1.html
index 9235582..ba97b8b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.radial.transform.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.radial.transform.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.2.html
index ce7841f..c11bcd7 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.radial.transform.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.radial.transform.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.3.html
index ee9e6303b..5bc8b3a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.gradient.radial.transform.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.gradient.radial.transform.3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.animated.gif.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.animated.gif.html
index 864ef98..b67329c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.animated.gif.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.animated.gif.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.animated.gif</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.animated.gif</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.basic.canvas.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.basic.canvas.html
index 3bdc679..8e68924 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.basic.canvas.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.basic.canvas.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.basic.canvas</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.basic.canvas</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.basic.image.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.basic.image.html
index 9ae64e4f..dc4ac03 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.basic.image.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.basic.image.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.basic.image</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.basic.image</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.basic.nocontext.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.basic.nocontext.html
index a249587..2bf67bba 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.basic.nocontext.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.basic.nocontext.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.basic.nocontext</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.basic.nocontext</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.basic.type.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.basic.type.html
index 07ca399..4ba42e25 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.basic.type.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.basic.type.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.basic.type</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.basic.type</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.html
index aa393b8..04615b7 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.basic.zerocanvas</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.basic.zerocanvas</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.crosscanvas.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.crosscanvas.html
index dc80720b..979f0be 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.crosscanvas.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.crosscanvas.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.crosscanvas</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.crosscanvas</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.broken.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.broken.html
index 31c8e8f..7040de46 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.broken.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.broken.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.image.broken</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.image.broken</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.emptysrc.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.emptysrc.html
index 23f453a..f969834 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.emptysrc.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.emptysrc.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.image.incomplete.emptysrc</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.image.incomplete.emptysrc</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.immediate.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.immediate.html
index 176cf72..fcafe68 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.immediate.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.immediate.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.image.incomplete.immediate</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.image.incomplete.immediate</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.nosrc.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.nosrc.html
index 88b8801b..e71c6b0 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.nosrc.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.nosrc.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.image.incomplete.nosrc</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.image.incomplete.nosrc</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.reload.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.reload.html
index 095055c..994586a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.reload.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.reload.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.image.incomplete.reload</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.image.incomplete.reload</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.removedsrc.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.removedsrc.html
index 514f060..b4fa6b8 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.removedsrc.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.removedsrc.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.image.incomplete.removedsrc</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.image.incomplete.removedsrc</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.null.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.null.html
index 5b8c688..0df0154 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.null.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.null.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.image.null</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.image.null</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.string.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.string.html
index 834d921..896df50 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.string.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.string.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.image.string</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.image.string</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.undefined.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.undefined.html
index 24f650d9..04a1377 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.undefined.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.image.undefined.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.image.undefined</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.image.undefined</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.modify.canvas1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.modify.canvas1.html
index f60da5b..a9aa9d7 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.modify.canvas1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.modify.canvas1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.modify.canvas1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.modify.canvas1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.modify.canvas2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.modify.canvas2.html
index db7a8b84..053d9c48 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.modify.canvas2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.modify.canvas2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.modify.canvas2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.modify.canvas2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.modify.image1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.modify.image1.html
index cfc8a96..081ccba 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.modify.image1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.modify.image1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.modify.image1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.modify.image1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.modify.image2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.modify.image2.html
index c7f2ee3..f70e564 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.modify.image2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.modify.image2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.modify.image2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.modify.image2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html
index 431437e..e2d9c27 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.paint.norepeat.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.paint.norepeat.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html
index a560fd8..310c85a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.paint.norepeat.coord1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.paint.norepeat.coord1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html
index 9ae2898..2529ee0 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.paint.norepeat.coord2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.paint.norepeat.coord2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html
index 9c1b5ae6..88e370d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.paint.norepeat.coord3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.paint.norepeat.coord3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html
index 3dce7a6..cfe7082b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.paint.norepeat.outside</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.paint.norepeat.outside</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html
index 70966e0..6a81215b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.paint.orientation.canvas</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.paint.orientation.canvas</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html
index 7d109c5..a957934 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.paint.orientation.image</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.paint.orientation.image</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html
index 501fe67e..c53b473 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.paint.repeat.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.paint.repeat.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html
index 4aa75d1..aed9e2d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.paint.repeat.coord1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.paint.repeat.coord1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html
index 0fe8b6a5..0318bb0 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.paint.repeat.coord2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.paint.repeat.coord2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html
index b361c91f..d765a254c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.paint.repeat.coord3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.paint.repeat.coord3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html
index 68d2fe84..09aa8960 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.paint.repeat.outside</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.paint.repeat.outside</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html
index 3cec292..429f96e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.paint.repeatx.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.paint.repeatx.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html
index 1e864a7..4dd93fc 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.paint.repeatx.coord1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.paint.repeatx.coord1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html
index 074c4af..da506cf 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.paint.repeatx.outside</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.paint.repeatx.outside</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html
index 0da99d2..26c404c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.paint.repeaty.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.paint.repeaty.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html
index 2f42a4e..09af744d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.paint.repeaty.coord1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.paint.repeaty.coord1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html
index 9ec618a..3df2e50 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.paint.repeaty.outside</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.paint.repeaty.outside</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.case.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.case.html
index 5a4bf34..c7383cca 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.case.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.case.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.repeat.case</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.repeat.case</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.empty.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.empty.html
index a719087..1e85a52 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.empty.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.empty.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.repeat.empty</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.repeat.empty</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.null.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.null.html
index 25caf6c..2ddbcca8 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.null.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.null.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.repeat.null</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.repeat.null</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.html
index 3713042..0b92f58 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.repeat.nullsuffix</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.repeat.nullsuffix</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.undefined.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.undefined.html
index 74cd84b..c04697a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.undefined.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.undefined.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.repeat.undefined</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.repeat.undefined</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.html
index ff4d50a7..1497870e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.repeat.unrecognised</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.repeat.unrecognised</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.html
index 57df03be..9b53e46c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.pattern.repeat.unrecognisednull</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.pattern.repeat.unrecognisednull</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.strokeStyle.default.html b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.strokeStyle.default.html
index 6e07d6086..13adceb4 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.strokeStyle.default.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/fill-and-stroke-styles/2d.strokeStyle.default.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.strokeStyle.default</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.strokeStyle.default</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/common.sub.js b/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/common.sub.js
index 633c182..aa1e382 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/common.sub.js
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/common.sub.js
@@ -97,11 +97,11 @@
 function makeMakeSVGImage(src) {
     return function() {
         return new Promise((resolve, reject) => {
-            var image = document.createElementNS(NAMESPACES.svg, "image");
+            var image = document.createElementNS("http://www.w3.org/2000/svg", "image");
             image.onload = () => resolve(image);
             image.onerror = reject;
             image.setAttribute("externalResourcesRequired", "true");
-            image.setAttributeNS(NAMESPACES.xlink, 'xlink:href', src);
+            image.setAttributeNS("http://www.w3.org/1999/xlink", 'xlink:href', src);
             document.body.appendChild(image);
         });
     }
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-blob-invalidtype.html b/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-blob-invalidtype.html
index 9b9669f1..498c4272 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-blob-invalidtype.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-blob-invalidtype.html
@@ -3,7 +3,7 @@
 <title>createImageBitmap: blob with wrong mime type</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 <script>
 promise_test(t => {
   // Source: https://commons.wikimedia.org/wiki/File:1x1.png (Public Domain)
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-bounds.html b/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-bounds.html
index 544bd77..79f89ac 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-bounds.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-bounds.html
@@ -3,7 +3,7 @@
 <title>createImageBitmap: clipping to the bitmap</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 <script>
 promise_test(function(t) {
     return new Promise(function(resolve, reject) {
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-drawImage-closed.html b/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-drawImage-closed.html
index ea65355..e320c67 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-drawImage-closed.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-drawImage-closed.html
@@ -3,7 +3,7 @@
 <title>attempt to draw a closed ImageBitmap to a 2d canvas throws INVALID_STATE_ERR</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 <script>
 promise_test(function(t) {
     return new Promise(function(resolve, reject) {
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-drawImage.html b/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-drawImage.html
index 9146a370..89d9b61 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-drawImage.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-drawImage.html
@@ -3,11 +3,10 @@
 <title>createImageBitmap + drawImage test</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 <script src="/common/media.js"></script>
-<script src="/common/namespaces.js"></script>
 <script src="common.sub.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body>
 <script>
 function testCanvasDisplayingPattern(canvas, width, height)
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-flipY.html b/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-flipY.html
index 0112ac7..bbc920f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-flipY.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-flipY.html
@@ -3,11 +3,10 @@
 <title>createImageBitmap + drawImage test</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 <script src="/common/media.js"></script>
-<script src="/common/namespaces.js"></script>
 <script src="common.sub.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body>
 <script>
 function testCanvasDisplayingPattern(canvas, width, height, flipped)
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-invalid-args.html b/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-invalid-args.html
index c64371e..c200ce3 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-invalid-args.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-invalid-args.html
@@ -2,7 +2,6 @@
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 <script src="/common/media.js"></script>
-<script src="/common/namespaces.js"></script>
 <script src="common.sub.js"></script>
 <script>
 
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-origin.sub.html b/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-origin.sub.html
index 9f19f6a..0d903b1 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-origin.sub.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-origin.sub.html
@@ -4,8 +4,7 @@
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 <script src="/common/media.js"></script>
-<script src="/common/namespaces.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 <div id=log></div>
 <script>
 
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-transfer.html b/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-transfer.html
index 0302634..580ec8a5 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-transfer.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/imagebitmap/createImageBitmap-transfer.html
@@ -4,7 +4,6 @@
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 <script src="/common/media.js"></script>
-<script src="/common/namespaces.js"></script>
 <script src="common.sub.js"></script>
 <div id=log></div>
 <script>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.butt.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.butt.html
index 3536762..f2933353 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.butt.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.butt.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.cap.butt</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.cap.butt</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.closed.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.closed.html
index f8e233a..131a968 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.closed.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.closed.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.cap.closed</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.cap.closed</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.invalid.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.invalid.html
index 1db32a9..d6b43f1c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.invalid.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.cap.invalid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.cap.invalid</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.open.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.open.html
index 4997730..30affa0 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.open.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.open.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.cap.open</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.cap.open</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.round.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.round.html
index 675d11ce..55a2bf3 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.round.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.round.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.cap.round</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.cap.round</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.square.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.square.html
index ea1e4d9..03025e3 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.square.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.square.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.cap.square</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.cap.square</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.valid.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.valid.html
index 6ac119d..fdde2be2 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.valid.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cap.valid.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.cap.valid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.cap.valid</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cross.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cross.html
index 61b2125..ffd83b0 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cross.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.cross.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.cross</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.cross</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.defaults.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.defaults.html
index 8b680785..d19934a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.defaults.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.defaults.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.defaults</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.defaults</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.bevel.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.bevel.html
index 72c0186e..dc70530 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.bevel.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.bevel.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.join.bevel</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.join.bevel</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.closed.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.closed.html
index 1f2bf5c..bc41a61 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.closed.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.closed.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.join.closed</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.join.closed</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.invalid.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.invalid.html
index 9d54d90..ceec5f21 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.invalid.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.join.invalid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.join.invalid</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.miter.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.miter.html
index 8a6d4a6..b2478ea 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.miter.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.miter.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.join.miter</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.join.miter</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.open.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.open.html
index a72291b..0ab297f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.open.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.open.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.join.open</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.join.open</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.parallel.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.parallel.html
index 2a8956d7..8831c93 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.parallel.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.parallel.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.join.parallel</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.join.parallel</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.round.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.round.html
index 4a827ad..169d6b1 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.round.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.round.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.join.round</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.join.round</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.valid.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.valid.html
index 98fec4c..04560ef9 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.valid.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.join.valid.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.join.valid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.join.valid</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.acute.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.acute.html
index f11a321..d873060a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.acute.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.acute.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.miter.acute</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.miter.acute</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.exceeded.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.exceeded.html
index 1cbcd3c..41e5221 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.exceeded.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.exceeded.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.miter.exceeded</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.miter.exceeded</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.invalid.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.invalid.html
index 4f7fd69b..73574a98 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.invalid.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.miter.invalid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.miter.invalid</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.lineedge.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.lineedge.html
index 54c2ce53..827e3f11 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.lineedge.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.lineedge.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.miter.lineedge</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.miter.lineedge</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.obtuse.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.obtuse.html
index 40ebdd1..7f36905 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.obtuse.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.obtuse.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.miter.obtuse</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.miter.obtuse</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.rightangle.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.rightangle.html
index ebcfb26..07ea96a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.rightangle.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.rightangle.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.miter.rightangle</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.miter.rightangle</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.valid.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.valid.html
index 59148aa5..40157a9 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.valid.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.valid.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.miter.valid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.miter.valid</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.within.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.within.html
index 5ed57e0..d715e3cb 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.within.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.miter.within.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.miter.within</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.miter.within</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.union.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.union.html
index 92fa2f1a..233a7788 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.union.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.union.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.union</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.union</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.width.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.width.basic.html
index b61baaf2..87cdf6f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.width.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.width.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.width.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.width.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.width.invalid.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.width.invalid.html
index d5cd3ab..17d33f7 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.width.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.width.invalid.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.width.invalid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.width.invalid</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.width.scaledefault.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.width.scaledefault.html
index 154d7b58..4249039 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.width.scaledefault.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.width.scaledefault.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.width.scaledefault</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.width.scaledefault</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.width.transformed.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.width.transformed.html
index 903321f4..c9406096 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.width.transformed.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.width.transformed.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.width.transformed</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.width.transformed</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.width.valid.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.width.valid.html
index c89fa56..c390d3d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.width.valid.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/2d.line.width.valid.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.line.width.valid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.line.width.valid</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/setLineDash.html b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/setLineDash.html
index 06fcada..79d3672 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/setLineDash.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/line-styles/setLineDash.html
@@ -3,7 +3,7 @@
 <title>setLineDash</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 <canvas id="canvas"></canvas>
 <script>
 test(function() {
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.angle.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.angle.1.html
index 06ac1665..18409a62 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.angle.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.angle.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.angle.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.angle.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.angle.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.angle.2.html
index 328756c..cb34c310 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.angle.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.angle.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.angle.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.angle.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.angle.3.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.angle.3.html
index a0696d6..e60620d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.angle.3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.angle.3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.angle.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.angle.3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.angle.4.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.angle.4.html
index bad839d..fa65ded 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.angle.4.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.angle.4.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.angle.4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.angle.4</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.angle.5.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.angle.5.html
index 5a05344..a98acd9 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.angle.5.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.angle.5.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.angle.5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.angle.5</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.angle.6.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.angle.6.html
index 3b645cb..a3a9aa07c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.angle.6.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.angle.6.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.angle.6</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.angle.6</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.default.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.default.html
index 3ccfd99..2d9baa2 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.default.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.default.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.default</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.default</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.empty.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.empty.html
index fa59b66..f4a5752 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.empty.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.empty.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.empty</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.empty</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.end.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.end.html
index 13b1188d..3a797c6 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.end.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.end.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.end</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.end</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.negative.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.negative.html
index c827690..7aabd46 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.negative.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.negative.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.negative</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.negative</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.nonempty.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.nonempty.html
index ffc0b8c..57d2046f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.nonempty.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.nonempty.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.nonempty</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.nonempty</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.nonfinite.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.nonfinite.html
index d8cffe4..95a10ff 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.nonfinite.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.nonfinite</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.scale.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.scale.1.html
index fcb2b52..3533c56e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.scale.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.scale.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.scale.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.scale.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.scale.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.scale.2.html
index 59d182c..fdc3add0 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.scale.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.scale.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.scale.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.scale.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.selfintersect.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.selfintersect.1.html
index e212b49..a642866e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.selfintersect.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.selfintersect.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.selfintersect.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.selfintersect.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.selfintersect.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.selfintersect.2.html
index 8bc9fea..4a66c2c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.selfintersect.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.selfintersect.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.selfintersect.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.selfintersect.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.shape.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.shape.1.html
index dcaac9b..630c50bf 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.shape.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.shape.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.shape.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.shape.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.shape.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.shape.2.html
index dee4b38..3acf48b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.shape.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.shape.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.shape.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.shape.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.shape.3.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.shape.3.html
index 0090411f..20518e7 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.shape.3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.shape.3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.shape.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.shape.3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.shape.4.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.shape.4.html
index dc12ef6c..151c89c9 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.shape.4.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.shape.4.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.shape.4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.shape.4</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.shape.5.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.shape.5.html
index 2a84dde..d4fc7c1 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.shape.5.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.shape.5.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.shape.5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.shape.5</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.twopie.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.twopie.1.html
index 25fc393..dc2c32e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.twopie.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.twopie.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.twopie.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.twopie.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.twopie.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.twopie.2.html
index 775a87c..d3ff2f6 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.twopie.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.twopie.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.twopie.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.twopie.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.twopie.3.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.twopie.3.html
index 1968002..59c84bb 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.twopie.3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.twopie.3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.twopie.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.twopie.3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.twopie.4.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.twopie.4.html
index bddf7fb..eae2e90 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.twopie.4.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.twopie.4.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.twopie.4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.twopie.4</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.zero.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.zero.1.html
index e18a849..f540db32 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.zero.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.zero.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.zero.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.zero.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.zero.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.zero.2.html
index 398a74d..18dd5ce 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.zero.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.zero.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.zero.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.zero.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.zeroradius.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.zeroradius.html
index af1ccf7..09a052b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.zeroradius.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arc.zeroradius.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arc.zeroradius</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arc.zeroradius</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.coincide.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.coincide.1.html
index 936034e..7f51e98 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.coincide.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.coincide.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arcTo.coincide.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arcTo.coincide.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.coincide.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.coincide.2.html
index c64fa4c..4926fa1 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.coincide.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.coincide.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arcTo.coincide.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arcTo.coincide.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.collinear.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.collinear.1.html
index 196dbc4..06c0abd 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.collinear.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.collinear.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arcTo.collinear.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arcTo.collinear.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.collinear.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.collinear.2.html
index 75998b3..9abc1a16 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.collinear.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.collinear.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arcTo.collinear.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arcTo.collinear.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.collinear.3.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.collinear.3.html
index 8a0e9a8..fd7518a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.collinear.3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.collinear.3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arcTo.collinear.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arcTo.collinear.3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.ensuresubpath.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.ensuresubpath.1.html
index cae0971..801d4845 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.ensuresubpath.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.ensuresubpath.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arcTo.ensuresubpath.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arcTo.ensuresubpath.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.ensuresubpath.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.ensuresubpath.2.html
index 4d25a84f..1e4c103 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.ensuresubpath.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.ensuresubpath.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arcTo.ensuresubpath.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arcTo.ensuresubpath.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.negative.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.negative.html
index 5aa7baa..0fb3f77a4 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.negative.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.negative.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arcTo.negative</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arcTo.negative</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.nonfinite.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.nonfinite.html
index 354d621..af31e42f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.nonfinite.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arcTo.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arcTo.nonfinite</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.scale.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.scale.html
index 0de2336d..b964d56 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.scale.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.scale.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arcTo.scale</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arcTo.scale</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.shape.curve1.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.shape.curve1.html
index fa06b5bd..e6d575c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.shape.curve1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.shape.curve1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arcTo.shape.curve1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arcTo.shape.curve1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.shape.curve2.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.shape.curve2.html
index ae0722c..31bd3c2 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.shape.curve2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.shape.curve2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arcTo.shape.curve2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arcTo.shape.curve2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.shape.end.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.shape.end.html
index 4413713..a2e733f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.shape.end.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.shape.end.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arcTo.shape.end</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arcTo.shape.end</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.shape.start.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.shape.start.html
index c7677af..e637ee7 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.shape.start.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.shape.start.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arcTo.shape.start</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arcTo.shape.start</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.transformation.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.transformation.html
index 351495c..c5be2b8 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.transformation.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.transformation.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arcTo.transformation</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arcTo.transformation</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.zero.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.zero.1.html
index fa172b5..4efea07 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.zero.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.zero.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arcTo.zero.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arcTo.zero.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.zero.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.zero.2.html
index ede4480..3cf2d52 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.zero.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.arcTo.zero.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.arcTo.zero.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.arcTo.zero.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.beginPath.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.beginPath.html
index 86c7b07..beee73e5 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.beginPath.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.beginPath.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.beginPath</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.beginPath</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.bezierCurveTo.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.bezierCurveTo.basic.html
index 2628fee4..0fc1e81 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.bezierCurveTo.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.bezierCurveTo.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.bezierCurveTo.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.bezierCurveTo.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.html
index 37f3c6a..608ca2d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.bezierCurveTo.ensuresubpath.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.bezierCurveTo.ensuresubpath.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.html
index 4fd2a0e..73b9104 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.bezierCurveTo.ensuresubpath.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.bezierCurveTo.ensuresubpath.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.bezierCurveTo.nonfinite.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.bezierCurveTo.nonfinite.html
index 28639c6..a321f38 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.bezierCurveTo.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.bezierCurveTo.nonfinite.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.bezierCurveTo.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.bezierCurveTo.nonfinite</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.bezierCurveTo.scaled.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.bezierCurveTo.scaled.html
index 6546d5d..c043fd1 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.bezierCurveTo.scaled.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.bezierCurveTo.scaled.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.bezierCurveTo.scaled</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.bezierCurveTo.scaled</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.bezierCurveTo.shape.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.bezierCurveTo.shape.html
index 26b502a9..6f7769a5 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.bezierCurveTo.shape.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.bezierCurveTo.shape.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.bezierCurveTo.shape</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.bezierCurveTo.shape</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.basic.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.basic.1.html
index e15a0e3..8393b50 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.basic.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.basic.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.clip.basic.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.clip.basic.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.basic.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.basic.2.html
index 65f9eff7..14ed8c7 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.basic.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.basic.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.clip.basic.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.clip.basic.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.empty.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.empty.html
index 9a437b1..274b413 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.empty.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.empty.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.clip.empty</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.clip.empty</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.intersect.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.intersect.html
index 3ef64feb..5a0192ae 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.intersect.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.intersect.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.clip.intersect</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.clip.intersect</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.unaffected.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.unaffected.html
index 606c341..2d3ac63 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.unaffected.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.unaffected.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.clip.unaffected</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.clip.unaffected</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.winding.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.winding.1.html
index 9fe007b..96335e97 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.winding.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.winding.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.clip.winding.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.clip.winding.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.winding.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.winding.2.html
index dd9b6ad6..307c722 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.winding.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.clip.winding.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.clip.winding.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.clip.winding.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.closePath.empty.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.closePath.empty.html
index 8ee68dc..4ba9c6a2 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.closePath.empty.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.closePath.empty.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.closePath.empty</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.closePath.empty</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.closePath.newline.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.closePath.newline.html
index 391451e..8326ae5 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.closePath.newline.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.closePath.newline.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.closePath.newline</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.closePath.newline</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.closePath.nextpoint.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.closePath.nextpoint.html
index e98458b..25f52ebce 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.closePath.nextpoint.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.closePath.nextpoint.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.closePath.nextpoint</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.closePath.nextpoint</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.closed.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.closed.basic.html
index b0fbee7..5955492 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.closed.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.closed.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.fill.closed.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.fill.closed.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.closed.unaffected.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.closed.unaffected.html
index a1d1128..522cd47 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.closed.unaffected.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.closed.unaffected.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.fill.closed.unaffected</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.fill.closed.unaffected</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.overlap.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.overlap.html
index d69999c..7575d22 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.overlap.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.overlap.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.fill.overlap</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.fill.overlap</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.winding.add.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.winding.add.html
index 3eaa0f1..3be1db9 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.winding.add.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.winding.add.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.fill.winding.add</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.fill.winding.add</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.winding.subtract.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.winding.subtract.1.html
index 50a2a1db..333a7b5e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.winding.subtract.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.winding.subtract.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.fill.winding.subtract.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.fill.winding.subtract.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.winding.subtract.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.winding.subtract.2.html
index b9423507c..49bffec 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.winding.subtract.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.winding.subtract.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.fill.winding.subtract.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.fill.winding.subtract.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.winding.subtract.3.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.winding.subtract.3.html
index 131672d..08ca32d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.winding.subtract.3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.fill.winding.subtract.3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.fill.winding.subtract.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.fill.winding.subtract.3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.initial.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.initial.html
index 9dadad8..3601299 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.initial.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.initial.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.initial</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.initial</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.arc.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.arc.html
index 2d6cfcc..2542863 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.arc.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.arc.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.isPointInPath.arc</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.isPointInPath.arc</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.basic.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.basic.1.html
index 31818b0..8e85888 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.basic.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.basic.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.isPointInPath.basic.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.isPointInPath.basic.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.basic.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.basic.2.html
index 138368e..692e5e3 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.basic.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.basic.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.isPointInPath.basic.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.isPointInPath.basic.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.bezier.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.bezier.html
index aa246f6..a8d031d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.bezier.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.bezier.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.isPointInPath.bezier</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.isPointInPath.bezier</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.bigarc.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.bigarc.html
index 1565aee..56a8091 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.bigarc.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.bigarc.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.isPointInPath.bigarc</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.isPointInPath.bigarc</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.edge.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.edge.html
index 70faf80..83a17041 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.edge.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.edge.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.isPointInPath.edge</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.isPointInPath.edge</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.empty.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.empty.html
index b1e4b2d..16dd3fcd 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.empty.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.empty.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.isPointInPath.empty</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.isPointInPath.empty</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.nonfinite.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.nonfinite.html
index f70e6628..76452a9 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.nonfinite.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.isPointInPath.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.isPointInPath.nonfinite</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.outside.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.outside.html
index 1abe324..2b786d3 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.outside.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.outside.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.isPointInPath.outside</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.isPointInPath.outside</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.subpath.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.subpath.html
index 34bd0c7..7a45882 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.subpath.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.subpath.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.isPointInPath.subpath</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.isPointInPath.subpath</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.transform.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.transform.1.html
index 2077739..63f5c5dc 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.transform.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.transform.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.isPointInPath.transform.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.isPointInPath.transform.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.transform.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.transform.2.html
index bde026e4..aa7c8ab 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.transform.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.transform.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.isPointInPath.transform.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.isPointInPath.transform.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.transform.3.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.transform.3.html
index c612aae..f41acd8 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.transform.3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.transform.3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.isPointInPath.transform.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.isPointInPath.transform.3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.transform.4.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.transform.4.html
index 50fc45d2..eaba824 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.transform.4.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.transform.4.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.isPointInPath.transform.4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.isPointInPath.transform.4</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.unclosed.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.unclosed.html
index a137592..cce882e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.unclosed.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.unclosed.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.isPointInPath.unclosed</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.isPointInPath.unclosed</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.winding.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.winding.html
index afa8381..c6588aac 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.winding.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.isPointInPath.winding.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.isPointInPath.winding</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.isPointInPath.winding</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.lineTo.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.lineTo.basic.html
index 8606f890..c9c38925 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.lineTo.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.lineTo.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.lineTo.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.lineTo.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.lineTo.ensuresubpath.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.lineTo.ensuresubpath.1.html
index a4c0efb7..bddf2cf 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.lineTo.ensuresubpath.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.lineTo.ensuresubpath.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.lineTo.ensuresubpath.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.lineTo.ensuresubpath.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.lineTo.ensuresubpath.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.lineTo.ensuresubpath.2.html
index 94e6eddda..91c1aa7 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.lineTo.ensuresubpath.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.lineTo.ensuresubpath.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.lineTo.ensuresubpath.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.lineTo.ensuresubpath.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.lineTo.nextpoint.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.lineTo.nextpoint.html
index c2032f7..298cfbd0 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.lineTo.nextpoint.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.lineTo.nextpoint.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.lineTo.nextpoint</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.lineTo.nextpoint</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.lineTo.nonfinite.details.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.lineTo.nonfinite.details.html
index 88886eb..5cbd995 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.lineTo.nonfinite.details.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.lineTo.nonfinite.details.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.lineTo.nonfinite.details</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.lineTo.nonfinite.details</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.lineTo.nonfinite.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.lineTo.nonfinite.html
index 52982d2..794baae6 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.lineTo.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.lineTo.nonfinite.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.lineTo.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.lineTo.nonfinite</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.moveTo.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.moveTo.basic.html
index 999518fc..b621e22 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.moveTo.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.moveTo.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.moveTo.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.moveTo.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.moveTo.multiple.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.moveTo.multiple.html
index 123d393..d32a50c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.moveTo.multiple.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.moveTo.multiple.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.moveTo.multiple</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.moveTo.multiple</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.moveTo.newsubpath.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.moveTo.newsubpath.html
index caff9f8..0cfb650 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.moveTo.newsubpath.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.moveTo.newsubpath.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.moveTo.newsubpath</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.moveTo.newsubpath</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.moveTo.nonfinite.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.moveTo.nonfinite.html
index c531f4d0..33af6c0 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.moveTo.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.moveTo.nonfinite.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.moveTo.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.moveTo.nonfinite</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.quadraticCurveTo.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.quadraticCurveTo.basic.html
index 247b6800..f2f6a1f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.quadraticCurveTo.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.quadraticCurveTo.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.quadraticCurveTo.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.quadraticCurveTo.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html
index ac7bab2..658b76b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.quadraticCurveTo.ensuresubpath.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.quadraticCurveTo.ensuresubpath.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html
index 95951a2..477e877 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.quadraticCurveTo.ensuresubpath.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.quadraticCurveTo.ensuresubpath.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.quadraticCurveTo.nonfinite.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.quadraticCurveTo.nonfinite.html
index 637d1095..70bd211 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.quadraticCurveTo.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.quadraticCurveTo.nonfinite.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.quadraticCurveTo.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.quadraticCurveTo.nonfinite</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.quadraticCurveTo.scaled.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.quadraticCurveTo.scaled.html
index 36801da..1a105ec 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.quadraticCurveTo.scaled.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.quadraticCurveTo.scaled.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.quadraticCurveTo.scaled</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.quadraticCurveTo.scaled</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.quadraticCurveTo.shape.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.quadraticCurveTo.shape.html
index 9311fc2..47fc1540 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.quadraticCurveTo.shape.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.quadraticCurveTo.shape.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.quadraticCurveTo.shape</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.quadraticCurveTo.shape</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.basic.html
index a5a6a733..0b51a14 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.rect.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.rect.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.closed.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.closed.html
index 98f0648..bf0878e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.closed.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.closed.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.rect.closed</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.rect.closed</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.end.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.end.1.html
index 4cfe058..67aa50b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.end.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.end.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.rect.end.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.rect.end.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.end.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.end.2.html
index f961b9c..b01287b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.end.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.end.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.rect.end.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.rect.end.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.negative.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.negative.html
index 382623a..2661f7c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.negative.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.negative.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.rect.negative</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.rect.negative</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.newsubpath.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.newsubpath.html
index e0e841b..5f35120 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.newsubpath.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.newsubpath.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.rect.newsubpath</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.rect.newsubpath</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.nonfinite.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.nonfinite.html
index 173fd38..3d771cf 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.nonfinite.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.rect.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.rect.nonfinite</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.selfintersect.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.selfintersect.html
index 16be6232..cc21531d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.selfintersect.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.selfintersect.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.rect.selfintersect</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.rect.selfintersect</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.winding.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.winding.html
index 194e573..1077ebb 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.winding.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.winding.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.rect.winding</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.rect.winding</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.zero.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.zero.1.html
index dd4b1a4..619c9aa 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.zero.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.zero.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.rect.zero.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.rect.zero.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.zero.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.zero.2.html
index 0bdfe380e..26c5a05 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.zero.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.zero.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.rect.zero.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.rect.zero.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.zero.3.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.zero.3.html
index 67dd241..4032755 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.zero.3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.zero.3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.rect.zero.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.rect.zero.3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.zero.4.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.zero.4.html
index a743995..a88c44c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.zero.4.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.zero.4.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.rect.zero.4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.rect.zero.4</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.zero.5.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.zero.5.html
index 81566fb..1bd1ba2 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.zero.5.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.zero.5.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.rect.zero.5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.rect.zero.5</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.zero.6.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.zero.6.html
index 37b1c52..537242b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.zero.6.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.rect.zero.6.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.rect.zero.6</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.rect.zero.6</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.empty.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.empty.html
index 671c4552..209a390 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.empty.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.empty.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.stroke.empty</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.stroke.empty</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.overlap.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.overlap.html
index 8a4d698..e5864ba 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.overlap.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.overlap.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.stroke.overlap</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.stroke.overlap</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.prune.arc.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.prune.arc.html
index fc4c23ff..edf6be58 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.prune.arc.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.prune.arc.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.stroke.prune.arc</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.stroke.prune.arc</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.prune.closed.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.prune.closed.html
index d356c91..fb00ed1 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.prune.closed.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.prune.closed.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.stroke.prune.closed</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.stroke.prune.closed</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.prune.corner.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.prune.corner.html
index 6877774..a759fda 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.prune.corner.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.prune.corner.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.stroke.prune.corner</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.stroke.prune.corner</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.prune.curve.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.prune.curve.html
index 721cb6e..441ccd16 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.prune.curve.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.prune.curve.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.stroke.prune.curve</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.stroke.prune.curve</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.prune.line.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.prune.line.html
index aa04d45..b434ec94 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.prune.line.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.prune.line.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.stroke.prune.line</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.stroke.prune.line</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.prune.rect.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.prune.rect.html
index 45ead6db..c5724cae 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.prune.rect.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.prune.rect.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.stroke.prune.rect</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.stroke.prune.rect</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.scale1.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.scale1.html
index ae63be2..0324115 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.scale1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.scale1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.stroke.scale1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.stroke.scale1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.scale2.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.scale2.html
index de8dd5e3..e9436ac 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.scale2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.scale2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.stroke.scale2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.stroke.scale2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.skew.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.skew.html
index 6c6e0a4..15f500a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.skew.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.skew.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.stroke.skew</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.stroke.skew</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.unaffected.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.unaffected.html
index 6980a0c..fee0bc34 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.unaffected.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.unaffected.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.stroke.unaffected</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.stroke.unaffected</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.union.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.union.html
index bf1f28a..220bbd7 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.union.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.stroke.union.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.stroke.union</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.stroke.union</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.transformation.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.transformation.basic.html
index 5280321..6707129 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.transformation.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.transformation.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.transformation.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.transformation.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.transformation.changing.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.transformation.changing.html
index 24c3206..24505d15 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.transformation.changing.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.transformation.changing.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.transformation.changing</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.transformation.changing</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.transformation.multiple.html b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.transformation.multiple.html
index 5d78d28c..085e148 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.transformation.multiple.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/path-objects/2d.path.transformation.multiple.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.path.transformation.multiple</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.path.transformation.multiple</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create1.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create1.basic.html
index cf236cd..7d9d9ee 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create1.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create1.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.create1.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.create1.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create1.initial.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create1.initial.html
index 15f67b7..9ff180b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create1.initial.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create1.initial.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.create1.initial</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.create1.initial</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create1.this.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create1.this.html
index 1b9b2e095..b3a3334 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create1.this.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create1.this.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.create1.this</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.create1.this</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create1.type.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create1.type.html
index 8884035..a24ef78 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create1.type.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create1.type.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.create1.type</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.create1.type</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create1.zero.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create1.zero.html
index 928c430..1f7ad7a1c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create1.zero.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create1.zero.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.create1.zero</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.create1.zero</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.basic.html
index 51d3c13f9..fb0216a5 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.create2.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.create2.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.double.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.double.html
index e8edcf7..38ff227 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.double.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.double.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.create2.double</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.create2.double</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.initial.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.initial.html
index a858c24..783e579 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.initial.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.initial.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.create2.initial</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.create2.initial</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.large.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.large.html
index 113a231..5fd48db 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.large.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.large.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.create2.large</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.create2.large</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.negative.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.negative.html
index 7a06ed4..3c61023 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.negative.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.negative.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.create2.negative</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.create2.negative</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.nonfinite.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.nonfinite.html
index 3dabc30..2722b30 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.nonfinite.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.create2.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.create2.nonfinite</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.this.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.this.html
index ff55218..670345e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.this.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.this.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.create2.this</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.create2.this</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.type.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.type.html
index 4e7b444..b1f6bea 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.type.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.type.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.create2.type</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.create2.type</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.zero.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.zero.html
index 1c1851b..f93583c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.zero.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.create2.zero.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.create2.zero</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.create2.zero</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.basic.html
index d8bad1fd..2735476 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.get.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.get.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.clamp.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.clamp.html
index cc235ba..ad5ecab 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.clamp.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.clamp.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.get.clamp</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.get.clamp</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.double.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.double.html
index 915c3c2..04f1699a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.double.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.double.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.get.double</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.get.double</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.length.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.length.html
index 8bc3062..b02d06d9 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.length.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.length.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.get.length</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.get.length</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.nonfinite.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.nonfinite.html
index 176b7d8..9262350 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.nonfinite.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.get.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.get.nonfinite</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.nonpremul.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.nonpremul.html
index e8bce96f..72d898c5 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.nonpremul.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.nonpremul.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.get.nonpremul</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.get.nonpremul</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.order.alpha.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.order.alpha.html
index e2453c4..fa53d6e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.order.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.order.alpha.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.get.order.alpha</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.get.order.alpha</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.order.cols.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.order.cols.html
index 12383138..b9bdfdd 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.order.cols.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.order.cols.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.get.order.cols</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.get.order.cols</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.order.rgb.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.order.rgb.html
index 37531ec..f53ca07f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.order.rgb.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.order.rgb.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.get.order.rgb</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.get.order.rgb</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.order.rows.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.order.rows.html
index de77dc6..b791b73 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.order.rows.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.order.rows.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.get.order.rows</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.get.order.rows</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.range.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.range.html
index 5f34e35d..c69c33e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.range.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.range.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.get.range</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.get.range</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.source.negative.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.source.negative.html
index 4bab359f..ce632da 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.source.negative.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.source.negative.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.get.source.negative</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.get.source.negative</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.source.outside.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.source.outside.html
index 9950b60..f9dd0b33 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.source.outside.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.source.outside.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.get.source.outside</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.get.source.outside</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.source.size.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.source.size.html
index 0782b115..7e6923d6 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.source.size.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.source.size.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.get.source.size</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.get.source.size</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.type.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.type.html
index 76f711d..76c6d356 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.type.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.type.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.get.type</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.get.type</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.unaffected.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.unaffected.html
index 06afdb9..2e8b454 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.unaffected.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.unaffected.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.get.unaffected</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.get.unaffected</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.zero.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.zero.html
index 7f231c50..da279ae 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.zero.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.get.zero.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.get.zero</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.get.zero</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.clamp.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.clamp.html
index 61e10ee..56de5fa9 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.clamp.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.clamp.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.object.clamp</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.object.clamp</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.ctor.array.bounds.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.ctor.array.bounds.html
index 8a154b4..5ac7af5d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.ctor.array.bounds.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.ctor.array.bounds.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.object.ctor.array.bounds</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.object.ctor.array.bounds</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.ctor.array.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.ctor.array.html
index 2340e98..3c5fdc8b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.ctor.array.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.ctor.array.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.object.ctor.array</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.object.ctor.array</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.ctor.size.bounds.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.ctor.size.bounds.html
index c9bcccc0..4b6735e4 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.ctor.size.bounds.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.ctor.size.bounds.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.object.ctor.size.bounds</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.object.ctor.size.bounds</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.ctor.size.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.ctor.size.html
index 67bd87c..8479229 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.ctor.size.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.ctor.size.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.object.ctor.size</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.object.ctor.size</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.nan.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.nan.html
index 4294b12..15a4eac 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.nan.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.nan.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.object.nan</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.object.nan</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.properties.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.properties.html
index a9ed942..e52b2614 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.properties.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.properties.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.object.properties</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.object.properties</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.readonly.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.readonly.html
index 6f18337..be2c3eb 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.readonly.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.readonly.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.object.readonly</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.object.readonly</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.round.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.round.html
index 7f50a92..fa3dcba 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.round.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.round.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.object.round</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.object.round</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.set.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.set.html
index dd63ceb..afc57702 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.set.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.set.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.object.set</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.object.set</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.string.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.string.html
index 625b557..e306fca 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.string.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.string.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.object.string</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.object.string</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.undefined.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.undefined.html
index 1abf843..0ea1c488 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.undefined.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.object.undefined.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.object.undefined</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.object.undefined</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.alpha.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.alpha.html
index 9d19471..e2e3d6b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.alpha.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.put.alpha</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.put.alpha</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.basic.html
index 7d7de3c..6f0df83 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.put.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.put.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.clip.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.clip.html
index 8e8b19a..d26c610 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.clip.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.clip.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.put.clip</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.put.clip</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.created.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.created.html
index 4b1dd11..2b9a9ac 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.created.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.created.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.put.created</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.put.created</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.cross.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.cross.html
index 5fc5909..3c0b2295 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.cross.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.cross.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.put.cross</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.put.cross</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.dirty.negative.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.dirty.negative.html
index 67cf410..c8297aa 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.dirty.negative.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.dirty.negative.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.put.dirty.negative</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.put.dirty.negative</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.dirty.outside.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.dirty.outside.html
index 81dc98c..fe916ed 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.dirty.outside.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.dirty.outside.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.put.dirty.outside</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.put.dirty.outside</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.dirty.rect1.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.dirty.rect1.html
index b94a9f5..c68d9f1 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.dirty.rect1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.dirty.rect1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.put.dirty.rect1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.put.dirty.rect1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.dirty.rect2.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.dirty.rect2.html
index 1fb5c14..0829fac5 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.dirty.rect2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.dirty.rect2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.put.dirty.rect2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.put.dirty.rect2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.dirty.zero.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.dirty.zero.html
index 726fdb8..72a48cbd 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.dirty.zero.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.dirty.zero.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.put.dirty.zero</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.put.dirty.zero</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.modified.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.modified.html
index 5815aeb..23fec82 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.modified.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.modified.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.put.modified</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.put.modified</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.nonfinite.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.nonfinite.html
index 861545f..c4cbb4a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.nonfinite.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.put.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.put.nonfinite</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.null.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.null.html
index f827babc..851bc0d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.null.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.null.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.put.null</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.put.null</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.path.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.path.html
index 7994e864..43b516e4 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.path.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.path.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.put.path</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.put.path</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.unaffected.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.unaffected.html
index 8eee1599..ac4f4dea 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.unaffected.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.unaffected.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.put.unaffected</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.put.unaffected</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.unchanged.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.unchanged.html
index 59e05fb..f5d4693 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.unchanged.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.unchanged.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.put.unchanged</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.put.unchanged</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.wrongtype.html b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.wrongtype.html
index 085097f..4f3fe49 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.wrongtype.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/pixel-manipulation/2d.imageData.put.wrongtype.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.imageData.put.wrongtype</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.imageData.put.wrongtype</h1>
diff --git a/third_party/blink/web_tests/external/wpt/common/canvas-frame.css b/third_party/blink/web_tests/external/wpt/2dcontext/resources/canvas-frame.css
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/common/canvas-frame.css
rename to third_party/blink/web_tests/external/wpt/2dcontext/resources/canvas-frame.css
diff --git a/third_party/blink/web_tests/external/wpt/common/canvas-frame.css.headers b/third_party/blink/web_tests/external/wpt/2dcontext/resources/canvas-frame.css.headers
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/common/canvas-frame.css.headers
rename to third_party/blink/web_tests/external/wpt/2dcontext/resources/canvas-frame.css.headers
diff --git a/third_party/blink/web_tests/external/wpt/common/canvas-index.css b/third_party/blink/web_tests/external/wpt/2dcontext/resources/canvas-index.css
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/common/canvas-index.css
rename to third_party/blink/web_tests/external/wpt/2dcontext/resources/canvas-index.css
diff --git a/third_party/blink/web_tests/external/wpt/common/canvas-index.css.headers b/third_party/blink/web_tests/external/wpt/2dcontext/resources/canvas-index.css.headers
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/common/canvas-index.css.headers
rename to third_party/blink/web_tests/external/wpt/2dcontext/resources/canvas-index.css.headers
diff --git a/third_party/blink/web_tests/external/wpt/common/canvas-spec.css b/third_party/blink/web_tests/external/wpt/2dcontext/resources/canvas-spec.css
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/common/canvas-spec.css
rename to third_party/blink/web_tests/external/wpt/2dcontext/resources/canvas-spec.css
diff --git a/third_party/blink/web_tests/external/wpt/common/canvas-spec.css.headers b/third_party/blink/web_tests/external/wpt/2dcontext/resources/canvas-spec.css.headers
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/common/canvas-spec.css.headers
rename to third_party/blink/web_tests/external/wpt/2dcontext/resources/canvas-spec.css.headers
diff --git a/third_party/blink/web_tests/external/wpt/common/canvas-tests.css b/third_party/blink/web_tests/external/wpt/2dcontext/resources/canvas-tests.css
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/common/canvas-tests.css
rename to third_party/blink/web_tests/external/wpt/2dcontext/resources/canvas-tests.css
diff --git a/third_party/blink/web_tests/external/wpt/common/canvas-tests.css.headers b/third_party/blink/web_tests/external/wpt/2dcontext/resources/canvas-tests.css.headers
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/common/canvas-tests.css.headers
rename to third_party/blink/web_tests/external/wpt/2dcontext/resources/canvas-tests.css.headers
diff --git a/third_party/blink/web_tests/external/wpt/common/canvas-tests.js b/third_party/blink/web_tests/external/wpt/2dcontext/resources/canvas-tests.js
similarity index 96%
rename from third_party/blink/web_tests/external/wpt/common/canvas-tests.js
rename to third_party/blink/web_tests/external/wpt/2dcontext/resources/canvas-tests.js
index 2d0397b4..76313bc8f 100644
--- a/third_party/blink/web_tests/external/wpt/common/canvas-tests.js
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/resources/canvas-tests.js
@@ -128,11 +128,11 @@
       name: "cross-origin SVGImageElement",
       factory: () => {
         return new Promise((resolve, reject) => {
-          const image = document.createElementNS(NAMESPACES.svg, "image");
+          const image = document.createElementNS("http://www.w3.org/2000/svg", "image");
           image.onload = () => resolve(image);
           image.onerror = reject;
           image.setAttribute("externalResourcesRequired", "true");
-          image.setAttributeNS(NAMESPACES.xlink, 'xlink:href', crossOriginUrl + "/images/red.png");
+          image.setAttributeNS("http://www.w3.org/1999/xlink", 'xlink:href', crossOriginUrl + "/images/red.png");
           document.body.appendChild(image);
         });
       },
diff --git a/third_party/blink/web_tests/external/wpt/common/canvas-tests.js.headers b/third_party/blink/web_tests/external/wpt/2dcontext/resources/canvas-tests.js.headers
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/common/canvas-tests.js.headers
rename to third_party/blink/web_tests/external/wpt/2dcontext/resources/canvas-tests.js.headers
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/scroll/2d.scrollPathIntoView.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/scroll/2d.scrollPathIntoView.basic.html
index 458b9ec..72a14ad 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/scroll/2d.scrollPathIntoView.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/scroll/2d.scrollPathIntoView.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.scrollPathIntoView.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.scrollPathIntoView.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/scroll/2d.scrollPathIntoView.path.html b/third_party/blink/web_tests/external/wpt/2dcontext/scroll/2d.scrollPathIntoView.path.html
index 4f1bb37..0cf08b91 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/scroll/2d.scrollPathIntoView.path.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/scroll/2d.scrollPathIntoView.path.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.scrollPathIntoView.path</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.scrollPathIntoView.path</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/scroll/2d.scrollPathIntoView.verticalLR.html b/third_party/blink/web_tests/external/wpt/2dcontext/scroll/2d.scrollPathIntoView.verticalLR.html
index fb16433ae..7c08ce2 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/scroll/2d.scrollPathIntoView.verticalLR.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/scroll/2d.scrollPathIntoView.verticalLR.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.scrollPathIntoView.verticalLR</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.scrollPathIntoView.verticalLR</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/scroll/2d.scrollPathIntoView.verticalRL.html b/third_party/blink/web_tests/external/wpt/2dcontext/scroll/2d.scrollPathIntoView.verticalRL.html
index a5ac8c2..407f4ad9 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/scroll/2d.scrollPathIntoView.verticalRL.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/scroll/2d.scrollPathIntoView.verticalRL.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.scrollPathIntoView.verticalRL</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.scrollPathIntoView.verticalRL</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.alpha.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.alpha.1.html
index d541cd4..e2b136b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.alpha.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.alpha.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.alpha.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.alpha.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.alpha.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.alpha.2.html
index 2176182..844e78d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.alpha.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.alpha.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.alpha.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.alpha.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.alpha.3.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.alpha.3.html
index 9705754..818c315 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.alpha.3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.alpha.3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.alpha.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.alpha.3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.alpha.4.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.alpha.4.html
index 0621af63..67edb8e 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.alpha.4.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.alpha.4.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.alpha.4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.alpha.4</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.alpha.5.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.alpha.5.html
index 95cb2f3..3202900 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.alpha.5.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.alpha.5.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.alpha.5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.alpha.5</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowBlur.initial.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowBlur.initial.html
index 7b65cac..51ef9b5 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowBlur.initial.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowBlur.initial.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.attributes.shadowBlur.initial</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.attributes.shadowBlur.initial</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowBlur.invalid.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowBlur.invalid.html
index c4bf2ba..bc5e018 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowBlur.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowBlur.invalid.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.attributes.shadowBlur.invalid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.attributes.shadowBlur.invalid</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowBlur.valid.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowBlur.valid.html
index 6aa9f9b1..effd708 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowBlur.valid.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowBlur.valid.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.attributes.shadowBlur.valid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.attributes.shadowBlur.valid</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowColor.initial.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowColor.initial.html
index 3f74713..e9e0d3b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowColor.initial.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowColor.initial.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.attributes.shadowColor.initial</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.attributes.shadowColor.initial</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowColor.invalid.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowColor.invalid.html
index 5f28ecb..555ff0b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowColor.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowColor.invalid.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.attributes.shadowColor.invalid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.attributes.shadowColor.invalid</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowColor.valid.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowColor.valid.html
index 02ce65c..0eecb83 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowColor.valid.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowColor.valid.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.attributes.shadowColor.valid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.attributes.shadowColor.valid</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowOffset.initial.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowOffset.initial.html
index 35f1317..44674af 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowOffset.initial.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowOffset.initial.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.attributes.shadowOffset.initial</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.attributes.shadowOffset.initial</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowOffset.invalid.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowOffset.invalid.html
index 0b1ef72..915a45f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowOffset.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowOffset.invalid.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.attributes.shadowOffset.invalid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.attributes.shadowOffset.invalid</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowOffset.valid.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowOffset.valid.html
index 4133ebb9..25a448b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowOffset.valid.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.attributes.shadowOffset.valid.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.attributes.shadowOffset.valid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.attributes.shadowOffset.valid</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.blur.high-manual.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.blur.high-manual.html
index 957f5b80..dc8301db 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.blur.high-manual.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.blur.high-manual.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.blur.high</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.blur.high</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.blur.low-manual.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.blur.low-manual.html
index 548db5c..edf98b9 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.blur.low-manual.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.blur.low-manual.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.blur.low</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.blur.low</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.canvas.alpha.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.canvas.alpha.html
index 584703df..8477e3f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.canvas.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.canvas.alpha.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.canvas.alpha</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.canvas.alpha</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.canvas.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.canvas.basic.html
index 824c6689..7fdade7 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.canvas.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.canvas.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.canvas.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.canvas.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.canvas.transparent.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.canvas.transparent.1.html
index 13ddd33e..87f4450 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.canvas.transparent.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.canvas.transparent.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.canvas.transparent.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.canvas.transparent.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.canvas.transparent.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.canvas.transparent.2.html
index e795fa1..18e5136c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.canvas.transparent.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.canvas.transparent.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.canvas.transparent.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.canvas.transparent.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.clip.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.clip.1.html
index 50fbb87..9d1eb5d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.clip.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.clip.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.clip.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.clip.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.clip.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.clip.2.html
index 239b43b9..07677a8a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.clip.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.clip.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.clip.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.clip.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.clip.3.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.clip.3.html
index 6b1bb02..fcbea794 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.clip.3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.clip.3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.clip.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.clip.3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.composite.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.composite.1.html
index e27c1e2..40903a7 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.composite.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.composite.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.composite.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.composite.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.composite.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.composite.2.html
index 960b44b..91bacc0 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.composite.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.composite.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.composite.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.composite.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.composite.3.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.composite.3.html
index feee1ce..bcc3bee 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.composite.3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.composite.3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.composite.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.composite.3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.enable.blur.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.enable.blur.html
index f94f5f6..36658c63 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.enable.blur.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.enable.blur.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.enable.blur</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.enable.blur</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.enable.off.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.enable.off.1.html
index 161ec52c..0c0600ad 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.enable.off.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.enable.off.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.enable.off.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.enable.off.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.enable.off.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.enable.off.2.html
index 23bfa75..1713e4ce5 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.enable.off.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.enable.off.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.enable.off.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.enable.off.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.enable.x.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.enable.x.html
index b90da98d..10b4bd7d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.enable.x.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.enable.x.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.enable.x</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.enable.x</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.enable.y.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.enable.y.html
index 32750e6..2bca12c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.enable.y.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.enable.y.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.enable.y</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.enable.y</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.gradient.alpha.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.gradient.alpha.html
index 31c4adc..e11a8f2 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.gradient.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.gradient.alpha.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.gradient.alpha</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.gradient.alpha</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.gradient.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.gradient.basic.html
index cdb22323..e7b33fad 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.gradient.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.gradient.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.gradient.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.gradient.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.gradient.transparent.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.gradient.transparent.1.html
index d4a21c6..95fe5b0a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.gradient.transparent.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.gradient.transparent.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.gradient.transparent.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.gradient.transparent.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.gradient.transparent.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.gradient.transparent.2.html
index be5d93a..c6e7dca 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.gradient.transparent.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.gradient.transparent.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.gradient.transparent.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.gradient.transparent.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.image.alpha.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.image.alpha.html
index 9e7a5697..6d30b09 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.image.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.image.alpha.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.image.alpha</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.image.alpha</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.image.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.image.basic.html
index 570451a..50eb781 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.image.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.image.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.image.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.image.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.image.scale.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.image.scale.html
index ded6fc0..e446b51 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.image.scale.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.image.scale.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.image.scale</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.image.scale</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.image.section.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.image.section.html
index 9dc9bca6..0fbefbb 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.image.section.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.image.section.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.image.section</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.image.section</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.image.transparent.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.image.transparent.1.html
index 13dff1f..fc3966e01 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.image.transparent.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.image.transparent.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.image.transparent.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.image.transparent.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.image.transparent.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.image.transparent.2.html
index 17a2640..41b32fb 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.image.transparent.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.image.transparent.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.image.transparent.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.image.transparent.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.offset.negativeX.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.offset.negativeX.html
index da1c39ba..8a8a49d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.offset.negativeX.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.offset.negativeX.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.offset.negativeX</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.offset.negativeX</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.offset.negativeY.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.offset.negativeY.html
index 0f7a7f0..6cde0d2 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.offset.negativeY.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.offset.negativeY.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.offset.negativeY</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.offset.negativeY</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.offset.positiveX.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.offset.positiveX.html
index 969d9b4..e1b090c4 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.offset.positiveX.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.offset.positiveX.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.offset.positiveX</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.offset.positiveX</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.offset.positiveY.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.offset.positiveY.html
index c797d70..23f130b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.offset.positiveY.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.offset.positiveY.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.offset.positiveY</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.offset.positiveY</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.outside.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.outside.html
index ef34922..5c72f5d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.outside.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.outside.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.outside</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.outside</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.pattern.alpha.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.pattern.alpha.html
index 5fcfcc4..fc8ec75 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.pattern.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.pattern.alpha.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.pattern.alpha</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.pattern.alpha</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.pattern.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.pattern.basic.html
index 38b9a7367..d3605a5 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.pattern.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.pattern.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.pattern.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.pattern.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.pattern.transparent.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.pattern.transparent.1.html
index fcdda5a2..c6a6d937 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.pattern.transparent.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.pattern.transparent.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.pattern.transparent.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.pattern.transparent.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.pattern.transparent.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.pattern.transparent.2.html
index 3dbb856b..bad946e7 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.pattern.transparent.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.pattern.transparent.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.pattern.transparent.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.pattern.transparent.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.stroke.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.stroke.basic.html
index 4e5bd06..181645b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.stroke.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.stroke.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.stroke.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.stroke.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.stroke.cap.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.stroke.cap.1.html
index 04450b9..830e718 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.stroke.cap.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.stroke.cap.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.stroke.cap.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.stroke.cap.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.stroke.cap.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.stroke.cap.2.html
index 11a7cf3c..82ad8d5 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.stroke.cap.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.stroke.cap.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.stroke.cap.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.stroke.cap.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.stroke.join.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.stroke.join.1.html
index d204874..2177a29 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.stroke.join.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.stroke.join.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.stroke.join.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.stroke.join.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.stroke.join.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.stroke.join.2.html
index ccff894f..20b2928 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.stroke.join.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.stroke.join.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.stroke.join.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.stroke.join.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.stroke.join.3.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.stroke.join.3.html
index 25044eb..bcc549a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.stroke.join.3.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.stroke.join.3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.stroke.join.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.stroke.join.3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.transform.1.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.transform.1.html
index 03a4ab2e..4e02947 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.transform.1.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.transform.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.transform.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.transform.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.transform.2.html b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.transform.2.html
index 8e1ac09..9cec8f7 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.transform.2.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/shadows/2d.shadow.transform.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.shadow.transform.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.shadow.transform.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.align.default.html b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.align.default.html
index 6c3b501..802fe26 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.align.default.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.align.default.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.align.default</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.text.align.default</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.align.invalid.html b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.align.invalid.html
index 36d3aaaf..e07a6a2c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.align.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.align.invalid.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.align.invalid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.text.align.invalid</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.align.valid.html b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.align.valid.html
index 667f1bb..3497c1f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.align.valid.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.align.valid.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.align.valid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.text.align.valid</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.baseline.default.html b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.baseline.default.html
index b19bcc37..2734bd6 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.baseline.default.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.baseline.default.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.baseline.default</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.text.baseline.default</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.baseline.invalid.html b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.baseline.invalid.html
index 4cba62a..2e769d7 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.baseline.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.baseline.invalid.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.baseline.invalid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.text.baseline.invalid</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.baseline.valid.html b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.baseline.valid.html
index e2a37b4e..4336d10 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.baseline.valid.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.baseline.valid.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.baseline.valid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.text.baseline.valid</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.baseline.alphabetic.html b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.baseline.alphabetic.html
index f070d0d..843a0239 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.baseline.alphabetic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.baseline.alphabetic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.baseline.alphabetic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.baseline.bottom.html b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.baseline.bottom.html
index 3cff44d7..4ad9437 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.baseline.bottom.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.baseline.bottom.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.baseline.bottom</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.baseline.hanging.html b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.baseline.hanging.html
index 58d1494..4d1db3b 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.baseline.hanging.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.baseline.hanging.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.baseline.hanging</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.baseline.ideographic.html b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.baseline.ideographic.html
index d2e8857b20..a24850a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.baseline.ideographic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.baseline.ideographic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.baseline.ideographic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.baseline.middle.html b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.baseline.middle.html
index b36135f5..46195bb 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.baseline.middle.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.baseline.middle.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.baseline.middle</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.baseline.top.html b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.baseline.top.html
index 5a55901..35c7bb555 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.baseline.top.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.baseline.top.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.baseline.top</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.space.collapse.end.html b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.space.collapse.end.html
index dcfb04e6..998f607 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.space.collapse.end.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.space.collapse.end.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.space.collapse.end</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.space.collapse.other.html b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.space.collapse.other.html
index 53cf30c..3557fbe8 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.space.collapse.other.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.space.collapse.other.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.space.collapse.other</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.space.collapse.space.html b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.space.collapse.space.html
index a460f6e..fec4438 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.space.collapse.space.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.space.collapse.space.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.space.collapse.space</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.space.collapse.start.html b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.space.collapse.start.html
index 3e5b3da..fe16ffd 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.space.collapse.start.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.draw.space.collapse.start.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.draw.space.collapse.start</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.default.html b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.default.html
index e7405e35..7ce25ff4 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.default.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.default.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.font.default</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.text.font.default</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.basic.html
index b4ae41c..6cf1c64 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.font.parse.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.text.font.parse.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.complex.html b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.complex.html
index 51917f36..2f68aec 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.complex.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.complex.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.font.parse.complex</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.text.font.parse.complex</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.invalid.html b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.invalid.html
index f65d680..0cb62e8 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.invalid.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.font.parse.invalid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.text.font.parse.invalid</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.size.percentage.default.html b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.size.percentage.default.html
index 21eebde..81ab8eb9 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.size.percentage.default.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.size.percentage.default.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.font.parse.size.percentage.default</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.text.font.parse.size.percentage.default</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.size.percentage.html b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.size.percentage.html
index 6a05e48..59a5b25 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.size.percentage.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.size.percentage.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.font.parse.size.percentage</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.text.font.parse.size.percentage</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.system.html b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.system.html
index bc86f5c1..eebc4f8 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.system.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.system.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.font.parse.system</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.text.font.parse.system</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.tiny.html b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.tiny.html
index f668e8a4..21d03ae9 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.tiny.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.parse.tiny.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.font.parse.tiny</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.text.font.parse.tiny</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.relative_size.html b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.relative_size.html
index 1c0f7bc..47eb423 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.relative_size.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.font.relative_size.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.font.relative_size</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.text.font.relative_size</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.measure.width.space.html b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.measure.width.space.html
index 82a6118..096fef4d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.measure.width.space.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/text-styles/2d.text.measure.width.space.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.text.measure.width.space</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <style>
 @font-face {
   font-family: CanvasTest;
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.bitmap.html b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.bitmap.html
index d22720c0..cd0f8217a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.bitmap.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.bitmap.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.state.saverestore.bitmap</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.state.saverestore.bitmap</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.clip.html b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.clip.html
index 5f4d1ad..d74af5c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.clip.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.clip.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.state.saverestore.clip</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.state.saverestore.clip</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.fillStyle.html b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.fillStyle.html
index a44f4f96..6f94176f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.fillStyle.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.fillStyle.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.state.saverestore.fillStyle</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.state.saverestore.fillStyle</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.font.html b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.font.html
index 2874006..c6054e8 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.font.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.font.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.state.saverestore.font</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.state.saverestore.font</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.globalAlpha.html b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.globalAlpha.html
index 27fc1ae..c5bb6e7a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.globalAlpha.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.globalAlpha.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.state.saverestore.globalAlpha</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.state.saverestore.globalAlpha</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html
index 419a960..75d7dd9 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.state.saverestore.globalCompositeOperation</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.state.saverestore.globalCompositeOperation</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.lineCap.html b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.lineCap.html
index cb75021..2c3c096 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.lineCap.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.lineCap.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.state.saverestore.lineCap</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.state.saverestore.lineCap</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.lineJoin.html b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.lineJoin.html
index ff14112..b20f22f 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.lineJoin.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.lineJoin.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.state.saverestore.lineJoin</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.state.saverestore.lineJoin</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.lineWidth.html b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.lineWidth.html
index 21bb266..d9cdb45 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.lineWidth.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.lineWidth.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.state.saverestore.lineWidth</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.state.saverestore.lineWidth</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.miterLimit.html b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.miterLimit.html
index f49edce..20d7477 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.miterLimit.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.miterLimit.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.state.saverestore.miterLimit</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.state.saverestore.miterLimit</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.path.html b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.path.html
index b6f269c..79cde1c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.path.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.path.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.state.saverestore.path</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.state.saverestore.path</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.shadowBlur.html b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.shadowBlur.html
index 7f1ce6f..29c6b4cc 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.shadowBlur.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.shadowBlur.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.state.saverestore.shadowBlur</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.state.saverestore.shadowBlur</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.shadowColor.html b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.shadowColor.html
index 95c36df..36361fc 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.shadowColor.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.shadowColor.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.state.saverestore.shadowColor</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.state.saverestore.shadowColor</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.shadowOffsetX.html b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.shadowOffsetX.html
index 363d5cc..9f31888 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.shadowOffsetX.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.shadowOffsetX.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.state.saverestore.shadowOffsetX</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.state.saverestore.shadowOffsetX</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.shadowOffsetY.html b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.shadowOffsetY.html
index 5edb62a..710a5a2 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.shadowOffsetY.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.shadowOffsetY.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.state.saverestore.shadowOffsetY</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.state.saverestore.shadowOffsetY</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.stack.html b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.stack.html
index 3a5dbea..ad4611d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.stack.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.stack.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.state.saverestore.stack</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.state.saverestore.stack</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.stackdepth.html b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.stackdepth.html
index 5e6c459f3..79a6bd3 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.stackdepth.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.stackdepth.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.state.saverestore.stackdepth</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.state.saverestore.stackdepth</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.strokeStyle.html b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.strokeStyle.html
index 53a28f5..61872db 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.strokeStyle.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.strokeStyle.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.state.saverestore.strokeStyle</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.state.saverestore.strokeStyle</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.textAlign.html b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.textAlign.html
index ea1b3f2e..9e8d7a0d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.textAlign.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.textAlign.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.state.saverestore.textAlign</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.state.saverestore.textAlign</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.textBaseline.html b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.textBaseline.html
index 22664ef..5ebe64fe 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.textBaseline.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.textBaseline.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.state.saverestore.textBaseline</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.state.saverestore.textBaseline</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.transformation.html b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.transformation.html
index 744f7ab..cccb079 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.transformation.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.transformation.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.state.saverestore.transformation</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.state.saverestore.transformation</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.underflow.html b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.underflow.html
index c965b025..b35ed373 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.underflow.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/the-canvas-state/2d.state.saverestore.underflow.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.state.saverestore.underflow</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.state.saverestore.underflow</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/tools/gentestutils.py b/third_party/blink/web_tests/external/wpt/2dcontext/tools/gentestutils.py
index 5c8492e..1f6792d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/tools/gentestutils.py
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/tools/gentestutils.py
@@ -467,7 +467,7 @@
         # Insert our new stylesheet
         n = doc.getElementsByTagName('head')[0].appendChild(doc.createElement('link'))
         n.setAttribute('rel', 'stylesheet')
-        n.setAttribute('href', '../common/canvas-spec.css')
+        n.setAttribute('href', 'resources/canvas-spec.css')
         n.setAttribute('type', 'text/css')
 
         spec_assertion_patterns = []
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/tools/templates.yaml b/third_party/blink/web_tests/external/wpt/2dcontext/tools/templates.yaml
index a67f3aa..33665af 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/tools/templates.yaml
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/tools/templates.yaml
@@ -88,8 +88,8 @@
     <title>Canvas test: %(name)s</title>
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/canvas-tests.js"></script>
-    <link rel="stylesheet" href="/common/canvas-tests.css">
+    <script src="/2dcontext/resources/canvas-tests.js"></script>
+    <link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
     %(fonts)s<body class="show_output">
 
     <h1>%(name)s</h1>
@@ -252,7 +252,7 @@
 index.w3c.frame: |
     <!DOCTYPE html>
     <title>Canvas tests - %(category)s.*</title>
-    <link rel="stylesheet" href="/common/canvas-frame.css">
+    <link rel="stylesheet" href="/2dcontext/resources/canvas-frame.css">
     <p><a href="index.html">[index]</a>
     <h1>%(backrefs)s.*</h1>
     <p>
@@ -313,7 +313,7 @@
 index.w3c: |
     <!DOCTYPE html>
     <title>Canvas tests - index</title>
-    <link rel="stylesheet" href="/common/canvas-index.css">
+    <link rel="stylesheet" href="/2dcontext/resources/canvas-index.css">
 
     <h1><code>&lt;canvas&gt;</code> tests</h1>
 
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.order.html b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.order.html
index 8209ad6..df0ab55 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.order.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.order.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.transformation.order</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.transformation.order</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.rotate.direction.html b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.rotate.direction.html
index 5113fa23..cefcbc3 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.rotate.direction.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.rotate.direction.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.transformation.rotate.direction</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.transformation.rotate.direction</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.rotate.nonfinite.html b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.rotate.nonfinite.html
index 1726dcf..87a9c85 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.rotate.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.rotate.nonfinite.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.transformation.rotate.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.transformation.rotate.nonfinite</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.rotate.radians.html b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.rotate.radians.html
index 8cfeb6fd..96546cbd 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.rotate.radians.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.rotate.radians.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.transformation.rotate.radians</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.transformation.rotate.radians</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.rotate.wrap.html b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.rotate.wrap.html
index fbfba2a..47ca44c 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.rotate.wrap.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.rotate.wrap.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.transformation.rotate.wrap</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.transformation.rotate.wrap</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.rotate.wrapnegative.html b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.rotate.wrapnegative.html
index a695e7b3..a4958ac 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.rotate.wrapnegative.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.rotate.wrapnegative.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.transformation.rotate.wrapnegative</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.transformation.rotate.wrapnegative</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.rotate.zero.html b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.rotate.zero.html
index cd74260..ef2251a 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.rotate.zero.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.rotate.zero.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.transformation.rotate.zero</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.transformation.rotate.zero</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.scale.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.scale.basic.html
index a083a65..5f3fbc5 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.scale.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.scale.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.transformation.scale.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.transformation.scale.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.scale.large.html b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.scale.large.html
index 926530d..fc01ce06 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.scale.large.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.scale.large.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.transformation.scale.large</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.transformation.scale.large</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.scale.multiple.html b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.scale.multiple.html
index 9856798..39d7a950 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.scale.multiple.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.scale.multiple.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.transformation.scale.multiple</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.transformation.scale.multiple</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.scale.negative.html b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.scale.negative.html
index af328516..967861d 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.scale.negative.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.scale.negative.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.transformation.scale.negative</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.transformation.scale.negative</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.scale.nonfinite.html b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.scale.nonfinite.html
index b978888..a14e505 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.scale.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.scale.nonfinite.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.transformation.scale.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.transformation.scale.nonfinite</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.scale.zero.html b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.scale.zero.html
index 80e79a9..5addfd3 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.scale.zero.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.scale.zero.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.transformation.scale.zero</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.transformation.scale.zero</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.setTransform.multiple.html b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.setTransform.multiple.html
index 0e12656..b2a2cdb 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.setTransform.multiple.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.setTransform.multiple.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.transformation.setTransform.multiple</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.transformation.setTransform.multiple</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.setTransform.nonfinite.html b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.setTransform.nonfinite.html
index 4b5ebd6..169d2f9 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.setTransform.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.setTransform.nonfinite.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.transformation.setTransform.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.transformation.setTransform.nonfinite</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.setTransform.skewed.html b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.setTransform.skewed.html
index d411e54..caef4df 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.setTransform.skewed.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.setTransform.skewed.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.transformation.setTransform.skewed</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.transformation.setTransform.skewed</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.transform.identity.html b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.transform.identity.html
index bf88557..fe5a3d3 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.transform.identity.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.transform.identity.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.transformation.transform.identity</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.transformation.transform.identity</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.transform.multiply.html b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.transform.multiply.html
index 0313602a..3973713 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.transform.multiply.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.transform.multiply.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.transformation.transform.multiply</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.transformation.transform.multiply</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.transform.nonfinite.html b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.transform.nonfinite.html
index 1b12766c..311d790 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.transform.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.transform.nonfinite.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.transformation.transform.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.transformation.transform.nonfinite</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.transform.skewed.html b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.transform.skewed.html
index cf723c7c..72c6b05 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.transform.skewed.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.transform.skewed.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.transformation.transform.skewed</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.transformation.transform.skewed</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.translate.basic.html b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.translate.basic.html
index 0238f8d..dd907f14 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.translate.basic.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.translate.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.transformation.translate.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.transformation.translate.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.translate.nonfinite.html b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.translate.nonfinite.html
index d0ff4d7..15a2777 100644
--- a/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.translate.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/2dcontext/transformations/2d.transformation.translate.nonfinite.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.transformation.translate.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.transformation.translate.nonfinite</h1>
diff --git a/third_party/blink/web_tests/external/wpt/common/namespaces.js b/third_party/blink/web_tests/external/wpt/common/namespaces.js
deleted file mode 100644
index 741bdc1d..0000000
--- a/third_party/blink/web_tests/external/wpt/common/namespaces.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var NAMESPACES = {
-  "svg": "http://www.w3.org/2000/svg",
-  "xlink": "http://www.w3.org/1999/xlink",
-};
diff --git a/third_party/blink/web_tests/external/wpt/cookie-store/idlharness.tentative.https.any.js b/third_party/blink/web_tests/external/wpt/cookie-store/idlharness.tentative.https.any.js
new file mode 100644
index 0000000..0c7a515
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/cookie-store/idlharness.tentative.https.any.js
@@ -0,0 +1,43 @@
+// META: global=!default,serviceworker,window
+// META: timeout=long
+// META: script=/resources/WebIDLParser.js
+// META: script=/resources/idlharness.js
+// META: script=/service-workers/service-worker/resources/test-helpers.sub.js
+'use strict';
+
+// https://wicg.github.io/cookie-store/
+
+idl_test(
+  ['cookie-store'],
+  ['service-workers', 'html', 'dom'],
+  async (idl_array, t) => {
+    const isServiceWorker = 'ServiceWorkerGlobalScope' in self
+      && self instanceof ServiceWorkerGlobalScope;
+
+    if (isServiceWorker) {
+      idl_array.add_objects({
+        ExtendableCookieChangeEvent: [
+            'new ExtendableCookieChangeEvent("cookiechange")'],
+        ServiceWorkerGlobalScope: ['self'],
+      });
+    } else {
+      const registration = await service_worker_unregister_and_register(
+          t, 'resources/empty_sw.js', 'resources/does/not/exist');
+      t.add_cleanup(() => registration.unregister());
+
+      // Global property referenced by idl_array.add_objects().
+      self.registration = registration;
+
+      idl_array.add_objects({
+        CookieChangeEvent: ['new CookieChangeEvent("change")'],
+        Window: ['self'],
+      });
+    }
+
+    idl_array.add_objects({
+      CookieStore: ['self.cookieStore'],
+      CookieStoreManager: ['self.registration.cookies'],
+      ServiceWorkerRegistration: ['self.registration'],
+    });
+  }
+);
diff --git a/third_party/blink/web_tests/external/wpt/cookie-store/idlharness.tentative.https.html b/third_party/blink/web_tests/external/wpt/cookie-store/idlharness.tentative.https.html
deleted file mode 100644
index fafe79a..0000000
--- a/third_party/blink/web_tests/external/wpt/cookie-store/idlharness.tentative.https.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!doctype html>
-<meta charset="utf-8">
-<title>Async Cookies: IDL tests</title>
-<link rel="help" href="https://github.com/WICG/cookie-store"/>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/WebIDLParser.js"></script>
-<script src="/resources/idlharness.js"></script>
-<script>
-'use strict';
-
-idl_test(
-  ['cookie-store'],
-  ['SVG', 'service-workers', 'uievents', 'html', 'dom'],
-  idl_array => {
-    idl_array.add_objects({
-      CookieStore: ['cookieStore'],
-      CookieChangeEvent: ['new CookieChangeEvent("change")'],
-    });
-  }
-);
-</script>
diff --git a/third_party/blink/web_tests/external/wpt/cookie-store/idlharness_serviceworker.js b/third_party/blink/web_tests/external/wpt/cookie-store/idlharness_serviceworker.js
deleted file mode 100644
index 1b28b289..0000000
--- a/third_party/blink/web_tests/external/wpt/cookie-store/idlharness_serviceworker.js
+++ /dev/null
@@ -1,45 +0,0 @@
-self.GLOBAL = {
-  isWindow: function() { return false; },
-  isWorker: function() { return true; },
-};
-importScripts('/resources/testharness.js',
-              '/resources/WebIDLParser.js',
-              '/resources/idlharness.js');
-
-promise_test(async t => {
-  const urls = ['/interfaces/cookie-store.idl'];
-  const [cookie_store] = await Promise.all(
-    urls.map(url => fetch(url).then(response => response.text())));
-
-  const idl_array = new IdlArray();
-
-  idl_array.add_untested_idls(
-    `[Global=Event, Exposed=ServiceWorker]
-     interface Event {};`);
-  idl_array.add_untested_idls(
-    `[Global=ExtendableEvent, Exposed=ServiceWorker]
-     interface ExtendableEvent : Event {};`);
-  idl_array.add_untested_idls('dictionary EventHandler {};');
-  idl_array.add_untested_idls('dictionary EventInit {};');
-  idl_array.add_untested_idls('dictionary ExtendableEventInit {};');
-  idl_array.add_untested_idls(
-    `[Global=EventTarget, Exposed=ServiceWorker]
-     interface EventTarget {};`);
-  idl_array.add_untested_idls(
-    `[Global=ServiceWorker, Exposed=ServiceWorker]
-     interface ServiceWorkerGlobalScope {};`);
-  idl_array.add_untested_idls(
-    `[Global=Window, Exposed=Window]
-     interface Window {};`);
-
-  idl_array.add_idls(cookie_store);
-
-  idl_array.add_objects({
-    CookieStore: ["self.cookieStore"],
-    ExtendableCookieChangeEvent: [
-        "new ExtendableCookieChangeEvent('cookiechange')"],
-  });
-  idl_array.test();
-}, 'Interface test');
-
-done();
diff --git a/third_party/blink/web_tests/external/wpt/cookie-store/idlharness_serviceworker.tentative.https.html b/third_party/blink/web_tests/external/wpt/cookie-store/idlharness_serviceworker.tentative.https.html
deleted file mode 100644
index 845a9fd..0000000
--- a/third_party/blink/web_tests/external/wpt/cookie-store/idlharness_serviceworker.tentative.https.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!doctype html>
-<meta charset="utf-8">
-<title>Async Cookies: ServiceWorker IDL tests</title>
-<link rel="help" href="https://github.com/WICG/cookie-store">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script>
-'use strict';
-
-(async () => {
-  const scope = 'does/not/exist';
-
-  let registration = await navigator.serviceWorker.getRegistration(scope);
-  if (registration)
-    await registration.unregister();
-  registration = await navigator.serviceWorker.register(
-      'idlharness_serviceworker.js', {scope});
-
-  fetch_tests_from_worker(registration.installing);
-})();
-</script>
diff --git a/third_party/blink/web_tests/external/wpt/cookie-store/resources/empty_sw.js b/third_party/blink/web_tests/external/wpt/cookie-store/resources/empty_sw.js
new file mode 100644
index 0000000..2b0ae22
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/cookie-store/resources/empty_sw.js
@@ -0,0 +1 @@
+// Empty service worker 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 5e1c22d2..26c9d87 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
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.canvas.readonly</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.canvas.readonly</h1>
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 5bdb233..aeef27d 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
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.canvas.reference</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.canvas.reference</h1>
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 f8b768ad..b680d6f 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
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.getcontext.exists</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.getcontext.exists</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.extraargs.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.extraargs.html
index f58911d0..8a409305 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.extraargs.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.extraargs.html
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.getcontext.extraargs</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.getcontext.extraargs</h1>
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 a678a135..fc305c7 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
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.getcontext.shared</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.getcontext.shared</h1>
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 d4d4a0d..b8c54c5 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
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.getcontext.unique</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.getcontext.unique</h1>
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 6ea8ba4..9f1a8198 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
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.scaled</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.scaled</h1>
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 f29f139..84cbb54 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
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.type.exists</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.type.exists</h1>
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 f4dfea8..b088eb1 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
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.type.extend</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.type.extend</h1>
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 9888d7b..f7e5cde 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
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.type.prototype</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.type.prototype</h1>
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 1e33377..9464cce 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
@@ -3,8 +3,8 @@
 <title>Canvas test: 2d.type.replace</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>2d.type.replace</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.arguments.missing.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.arguments.missing.html
index 37ae4e8..f1ef93b9 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.arguments.missing.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.arguments.missing.html
@@ -3,8 +3,8 @@
 <title>Canvas test: context.arguments.missing</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>context.arguments.missing</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.casesensitive.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.casesensitive.html
index 5c64f7a..6d6b9b1 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.casesensitive.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.casesensitive.html
@@ -3,8 +3,8 @@
 <title>Canvas test: context.casesensitive</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>context.casesensitive</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.emptystring.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.emptystring.html
index 8f8b44a..a121664 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.emptystring.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.emptystring.html
@@ -3,8 +3,8 @@
 <title>Canvas test: context.emptystring</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>context.emptystring</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.unrecognised.badname.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.unrecognised.badname.html
index 75f4427..fae79b4 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.unrecognised.badname.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.unrecognised.badname.html
@@ -3,8 +3,8 @@
 <title>Canvas test: context.unrecognised.badname</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>context.unrecognised.badname</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.unrecognised.badsuffix.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.unrecognised.badsuffix.html
index 2f65ae3..2b4f2b2 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.unrecognised.badsuffix.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.unrecognised.badsuffix.html
@@ -3,8 +3,8 @@
 <title>Canvas test: context.unrecognised.badsuffix</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>context.unrecognised.badsuffix</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.unrecognised.nullsuffix.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.unrecognised.nullsuffix.html
index 1607fec..ea2e292 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.unrecognised.nullsuffix.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.unrecognised.nullsuffix.html
@@ -3,8 +3,8 @@
 <title>Canvas test: context.unrecognised.nullsuffix</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>context.unrecognised.nullsuffix</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.unrecognised.unicode.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.unrecognised.unicode.html
index c4eb943..c62c887 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.unrecognised.unicode.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/context.unrecognised.unicode.html
@@ -3,8 +3,8 @@
 <title>Canvas test: context.unrecognised.unicode</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>context.unrecognised.unicode</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/fallback.basic.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/fallback.basic.html
index 0bae976..8edb8d3 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/fallback.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/fallback.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: fallback.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>fallback.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/fallback.multiple.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/fallback.multiple.html
index 5c89be51..b0fab09 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/fallback.multiple.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/fallback.multiple.html
@@ -3,8 +3,8 @@
 <title>Canvas test: fallback.multiple</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>fallback.multiple</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/fallback.nested.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/fallback.nested.html
index e84739c8..05093c1 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/fallback.nested.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/fallback.nested.html
@@ -3,8 +3,8 @@
 <title>Canvas test: fallback.nested</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>fallback.nested</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.colour.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.colour.html
index f680d50..7b73b22b 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.colour.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.colour.html
@@ -3,8 +3,8 @@
 <title>Canvas test: initial.colour</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>initial.colour</h1>
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 b51253a..d1ddabc 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
@@ -3,8 +3,8 @@
 <title>Canvas test: initial.reset.2dstate</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>initial.reset.2dstate</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.clip.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.clip.html
index 044ccc58..736d7f5 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.clip.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.clip.html
@@ -3,8 +3,8 @@
 <title>Canvas test: initial.reset.clip</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>initial.reset.clip</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.different.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.different.html
index 0d02f40..306c5ff 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.different.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.different.html
@@ -3,8 +3,8 @@
 <title>Canvas test: initial.reset.different</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>initial.reset.different</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.gradient.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.gradient.html
index a1a8516..29aac1745 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.gradient.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.gradient.html
@@ -3,8 +3,8 @@
 <title>Canvas test: initial.reset.gradient</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>initial.reset.gradient</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.path.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.path.html
index ab59ce9..6aa3941f 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.path.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.path.html
@@ -3,8 +3,8 @@
 <title>Canvas test: initial.reset.path</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>initial.reset.path</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.pattern.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.pattern.html
index f569d21..bbe8b0d 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.pattern.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.pattern.html
@@ -3,8 +3,8 @@
 <title>Canvas test: initial.reset.pattern</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>initial.reset.pattern</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.same.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.same.html
index b0bf73f8..6d557ea5 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.same.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.same.html
@@ -3,8 +3,8 @@
 <title>Canvas test: initial.reset.same</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>initial.reset.same</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.transform.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.transform.html
index c5a92ca..8f26384 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.transform.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/initial.reset.transform.html
@@ -3,8 +3,8 @@
 <title>Canvas test: initial.reset.transform</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>initial.reset.transform</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.dataURI.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.dataURI.html
index d130579..16f97c16 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.dataURI.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.dataURI.html
@@ -3,8 +3,8 @@
 <title>Canvas test: security.dataURI</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>security.dataURI</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.drawImage.canvas.cross.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.drawImage.canvas.cross.html
index ab9bc9f..2b23754 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.drawImage.canvas.cross.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.drawImage.canvas.cross.html
@@ -3,8 +3,8 @@
 <title>Canvas test: security.drawImage.canvas.cross</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>security.drawImage.canvas.cross</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.drawImage.canvas.redirect.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.drawImage.canvas.redirect.html
index 114b78c..9daa23b 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.drawImage.canvas.redirect.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.drawImage.canvas.redirect.html
@@ -3,8 +3,8 @@
 <title>Canvas test: security.drawImage.canvas.redirect</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>security.drawImage.canvas.redirect</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.drawImage.image.cross.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.drawImage.image.cross.html
index 99789f8..4cccb91 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.drawImage.image.cross.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.drawImage.image.cross.html
@@ -3,8 +3,8 @@
 <title>Canvas test: security.drawImage.image.cross</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>security.drawImage.image.cross</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.drawImage.image.redirect.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.drawImage.image.redirect.html
index 29f33d8..349a528 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.drawImage.image.redirect.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.drawImage.image.redirect.html
@@ -3,8 +3,8 @@
 <title>Canvas test: security.drawImage.image.redirect</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>security.drawImage.image.redirect</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.fillStyle.cross.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.fillStyle.cross.html
index aaa541a4..70a154f 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.fillStyle.cross.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.fillStyle.cross.html
@@ -3,8 +3,8 @@
 <title>Canvas test: security.pattern.canvas.fillStyle.cross</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>security.pattern.canvas.fillStyle.cross</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.fillStyle.redirect.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.fillStyle.redirect.html
index 2d1b73e..4d0be3f 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.fillStyle.redirect.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.fillStyle.redirect.html
@@ -3,8 +3,8 @@
 <title>Canvas test: security.pattern.canvas.fillStyle.redirect</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>security.pattern.canvas.fillStyle.redirect</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.strokeStyle.cross.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.strokeStyle.cross.html
index 1147990..8ec69ae 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.strokeStyle.cross.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.strokeStyle.cross.html
@@ -3,8 +3,8 @@
 <title>Canvas test: security.pattern.canvas.strokeStyle.cross</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>security.pattern.canvas.strokeStyle.cross</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.strokeStyle.redirect.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.strokeStyle.redirect.html
index eb91932..bb814e1 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.strokeStyle.redirect.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.strokeStyle.redirect.html
@@ -3,8 +3,8 @@
 <title>Canvas test: security.pattern.canvas.strokeStyle.redirect</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>security.pattern.canvas.strokeStyle.redirect</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.timing.cross.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.timing.cross.html
index 338fdce..55bd3fc7 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.timing.cross.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.timing.cross.html
@@ -3,8 +3,8 @@
 <title>Canvas test: security.pattern.canvas.timing.cross</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>security.pattern.canvas.timing.cross</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.timing.redirect.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.timing.redirect.html
index 806c485..21956ca 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.timing.redirect.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.timing.redirect.html
@@ -3,8 +3,8 @@
 <title>Canvas test: security.pattern.canvas.timing.redirect</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>security.pattern.canvas.timing.redirect</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.create.cross.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.create.cross.html
index f6860368..b67d695 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.create.cross.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.create.cross.html
@@ -3,8 +3,8 @@
 <title>Canvas test: security.pattern.create.cross</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>security.pattern.create.cross</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.create.redirect.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.create.redirect.html
index 2993d07..db6ffbe 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.create.redirect.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.create.redirect.html
@@ -3,8 +3,8 @@
 <title>Canvas test: security.pattern.create.redirect</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>security.pattern.create.redirect</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.cross.cross.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.cross.cross.html
index 16995eb5..49d4d70 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.cross.cross.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.cross.cross.html
@@ -3,8 +3,8 @@
 <title>Canvas test: security.pattern.cross.cross</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>security.pattern.cross.cross</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.cross.redirect.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.cross.redirect.html
index a65ffb5..7d526ec 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.cross.redirect.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.cross.redirect.html
@@ -3,8 +3,8 @@
 <title>Canvas test: security.pattern.cross.redirect</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>security.pattern.cross.redirect</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.fillStyle.sub.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.fillStyle.sub.html
index debe014..6695138c 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.fillStyle.sub.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.fillStyle.sub.html
@@ -4,8 +4,7 @@
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 <script src="/common/media.js"></script>
-<script src="/common/namespaces.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <body>
 <p class="desc">Setting fillStyle to a pattern of an unclean canvas makes the canvas origin-unclean</p>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.cross.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.cross.html
index cdba44b6..28910ed 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.cross.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.cross.html
@@ -3,8 +3,8 @@
 <title>Canvas test: security.pattern.image.fillStyle.cross</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>security.pattern.image.fillStyle.cross</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.redirect.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.redirect.html
index 3f0bbf6..9ed99a7 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.redirect.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.redirect.html
@@ -3,8 +3,8 @@
 <title>Canvas test: security.pattern.image.fillStyle.redirect</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>security.pattern.image.fillStyle.redirect</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.image.strokeStyle.cross.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.image.strokeStyle.cross.html
index 51ab8d7..77749df 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.image.strokeStyle.cross.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.image.strokeStyle.cross.html
@@ -3,8 +3,8 @@
 <title>Canvas test: security.pattern.image.strokeStyle.cross</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>security.pattern.image.strokeStyle.cross</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.image.strokeStyle.redirect.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.image.strokeStyle.redirect.html
index 70a0267..c57a930 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.image.strokeStyle.redirect.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.pattern.image.strokeStyle.redirect.html
@@ -3,8 +3,8 @@
 <title>Canvas test: security.pattern.image.strokeStyle.redirect</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>security.pattern.image.strokeStyle.redirect</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.reset.cross.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.reset.cross.html
index 6d351925..babde24 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.reset.cross.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.reset.cross.html
@@ -3,8 +3,8 @@
 <title>Canvas test: security.reset.cross</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>security.reset.cross</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.reset.redirect.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.reset.redirect.html
index bca6b86..b895f34 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.reset.redirect.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/security.reset.redirect.html
@@ -3,8 +3,8 @@
 <title>Canvas test: security.reset.redirect</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>security.reset.redirect</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.default.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.default.html
index 004636d..7074280 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.default.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.default.html
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.default</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.default</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.idl.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.idl.html
index cd6796e..7f1a193 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.idl.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.idl.html
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.idl</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.idl</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.idl.set.zero.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.idl.set.zero.html
index a10ac54..6df780b 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.idl.set.zero.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.idl.set.zero.html
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.idl.set.zero</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.idl.set.zero</h1>
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 ccf579e..1c4fe31 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.parse.decimal</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.parse.decimal</h1>
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 84614691..00a80e5 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.parse.em</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.parse.em</h1>
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 04a19b4..348ef1d 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.parse.empty</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.parse.empty</h1>
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 7a7c726..f2293d6 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.parse.exp</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.parse.exp</h1>
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 7532d775..936db0e 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.parse.hex</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.parse.hex</h1>
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 8dca5ef..68b01904 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.parse.junk</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.parse.junk</h1>
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 c901dff..08b23746 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.parse.minus</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.parse.minus</h1>
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 efdcfeb..8b039e2 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.parse.octal</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.parse.octal</h1>
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 1194858..e459479 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.parse.onlyspace</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.parse.onlyspace</h1>
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 9073424..9ded77d4 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.parse.percent</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.parse.percent</h1>
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 816f381d..d08d68edc 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.parse.plus</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.parse.plus</h1>
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 417674d..c652f58d 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.parse.space</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.parse.space</h1>
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 76c6db0..08f0d75 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.parse.trailingjunk</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.parse.trailingjunk</h1>
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 efb263eb..0607119 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.parse.whitespace</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.parse.whitespace</h1>
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 e42ebeb..6463606 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.parse.zero</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.parse.zero</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.reflect.setcontent.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.reflect.setcontent.html
index e77ca8ee..55dbd86 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.reflect.setcontent.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.reflect.setcontent.html
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.reflect.setcontent</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.reflect.setcontent</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.reflect.setidl.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.reflect.setidl.html
index 1522882..d3ea2aa 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.reflect.setidl.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.reflect.setidl.html
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.reflect.setidl</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.reflect.setidl</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.reflect.setidlzero.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.reflect.setidlzero.html
index 2bace5a..1a077d5 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.reflect.setidlzero.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.reflect.setidlzero.html
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.reflect.setidlzero</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.reflect.setidlzero</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.removed.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.removed.html
index 58fb899..b3db3be 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.removed.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.removed.html
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.removed</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.removed</h1>
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 0f4fb69f..fd962a4 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.setAttribute.decimal</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.setAttribute.decimal</h1>
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 5768d17..fe6f15d 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.setAttribute.em</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.setAttribute.em</h1>
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 65a5bc0..b895384 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.setAttribute.empty</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.setAttribute.empty</h1>
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 673edad..4c4c41c 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.setAttribute.exp</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.setAttribute.exp</h1>
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 e6fde53..5376e913 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.setAttribute.hex</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.setAttribute.hex</h1>
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 77b50fd..9299679 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.setAttribute.junk</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.setAttribute.junk</h1>
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 2bb09bb..8d0a00f 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.setAttribute.minus</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.setAttribute.minus</h1>
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 a6cb6d3..66775b8 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.setAttribute.octal</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.setAttribute.octal</h1>
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 5e2dd0c..f0bb7788 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.setAttribute.onlyspace</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.setAttribute.onlyspace</h1>
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 2a41c66..48f1d76 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.setAttribute.percent</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.setAttribute.percent</h1>
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 f384d82d..7862664 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.setAttribute.plus</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.setAttribute.plus</h1>
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 8f85852..a66f783 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.setAttribute.space</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.setAttribute.space</h1>
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 f6d06ba..a1806c5 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.setAttribute.trailingjunk</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.setAttribute.trailingjunk</h1>
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 8a01f57..28a3cdb 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.setAttribute.whitespace</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.setAttribute.whitespace</h1>
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 d1b05ad..fd699006 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
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.setAttribute.zero</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.setAttribute.zero</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.style.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.style.html
index 3bab3e79..04b4731 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.style.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/size.attributes.style.html
@@ -3,8 +3,8 @@
 <title>Canvas test: size.attributes.style</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>size.attributes.style</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toBlob.null.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toBlob.null.html
index b66153c..188ea80 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toBlob.null.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toBlob.null.html
@@ -3,8 +3,8 @@
 <title>Canvas test: toBlob.null</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>toBlob.null</h1>
@@ -30,4 +30,4 @@
          assert_false(toBlobCalled, "toBlob callback shouldn't be called synchronously");
     }));
 }, "toBlob with zero dimension returns a null Blob");
-</script>
\ No newline at end of file
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.arguments.1.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.arguments.1.html
index 969d4f5..377a7fd 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.arguments.1.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.arguments.1.html
@@ -3,8 +3,8 @@
 <title>Canvas test: toDataURL.arguments.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>toDataURL.arguments.1</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.arguments.2.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.arguments.2.html
index 3789466..b43e39df 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.arguments.2.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.arguments.2.html
@@ -3,8 +3,8 @@
 <title>Canvas test: toDataURL.arguments.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>toDataURL.arguments.2</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.arguments.3.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.arguments.3.html
index 236aba5..ec180a4 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.arguments.3.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.arguments.3.html
@@ -3,8 +3,8 @@
 <title>Canvas test: toDataURL.arguments.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>toDataURL.arguments.3</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.bogustype.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.bogustype.html
index ade95f0..fa65175 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.bogustype.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.bogustype.html
@@ -3,8 +3,8 @@
 <title>Canvas test: toDataURL.bogustype</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>toDataURL.bogustype</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.default.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.default.html
index 84f4c9e..98762cf 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.default.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.default.html
@@ -3,8 +3,8 @@
 <title>Canvas test: toDataURL.default</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>toDataURL.default</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.alpha.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.alpha.html
index 80a2fca..64b29446 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.alpha.html
@@ -3,8 +3,8 @@
 <title>Canvas test: toDataURL.jpeg.alpha</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>toDataURL.jpeg.alpha</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.primarycolours.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.primarycolours.html
index a896cbb..81ba4d5 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.primarycolours.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.primarycolours.html
@@ -3,8 +3,8 @@
 <title>Canvas test: toDataURL.jpeg.primarycolours</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>toDataURL.jpeg.primarycolours</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.quality.basic.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.quality.basic.html
index aad56cd..f8f00ce 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.quality.basic.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.quality.basic.html
@@ -3,8 +3,8 @@
 <title>Canvas test: toDataURL.jpeg.quality.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>toDataURL.jpeg.quality.basic</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.quality.notnumber.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.quality.notnumber.html
index 3167e3c..87099da 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.quality.notnumber.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.quality.notnumber.html
@@ -3,8 +3,8 @@
 <title>Canvas test: toDataURL.jpeg.quality.notnumber</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>toDataURL.jpeg.quality.notnumber</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.quality.outsiderange.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.quality.outsiderange.html
index 885dc99..f924614 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.quality.outsiderange.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.jpeg.quality.outsiderange.html
@@ -3,8 +3,8 @@
 <title>Canvas test: toDataURL.jpeg.quality.outsiderange</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>toDataURL.jpeg.quality.outsiderange</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.jpg.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.jpg.html
index df12aee..9f858082 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.jpg.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.jpg.html
@@ -3,8 +3,8 @@
 <title>Canvas test: toDataURL.jpg</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>toDataURL.jpg</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.lowercase.ascii.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.lowercase.ascii.html
index b95c828..fbb9aed 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.lowercase.ascii.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.lowercase.ascii.html
@@ -3,8 +3,8 @@
 <title>Canvas test: toDataURL.lowercase.ascii</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>toDataURL.lowercase.ascii</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.lowercase.unicode.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.lowercase.unicode.html
index ab06d59..8dc8f75 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.lowercase.unicode.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.lowercase.unicode.html
@@ -3,8 +3,8 @@
 <title>Canvas test: toDataURL.lowercase.unicode</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>toDataURL.lowercase.unicode</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.nocontext.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.nocontext.html
index fb614a3..6f864ad 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.nocontext.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.nocontext.html
@@ -3,8 +3,8 @@
 <title>Canvas test: toDataURL.nocontext</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>toDataURL.nocontext</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.png.complexcolours.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.png.complexcolours.html
index cc067b7..e04252a 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.png.complexcolours.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.png.complexcolours.html
@@ -3,8 +3,8 @@
 <title>Canvas test: toDataURL.png.complexcolours</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>toDataURL.png.complexcolours</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.png.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.png.html
index 39917eb2..46dbef9 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.png.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.png.html
@@ -3,8 +3,8 @@
 <title>Canvas test: toDataURL.png</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>toDataURL.png</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.png.primarycolours.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.png.primarycolours.html
index b962821..f192aba 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.png.primarycolours.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.png.primarycolours.html
@@ -3,8 +3,8 @@
 <title>Canvas test: toDataURL.png.primarycolours</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>toDataURL.png.primarycolours</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.unrecognised.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.unrecognised.html
index 3526cc3..12e0321 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.unrecognised.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.unrecognised.html
@@ -3,8 +3,8 @@
 <title>Canvas test: toDataURL.unrecognised</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>toDataURL.unrecognised</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.zeroheight.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.zeroheight.html
index 04c1132..cda2744 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.zeroheight.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.zeroheight.html
@@ -3,8 +3,8 @@
 <title>Canvas test: toDataURL.zeroheight</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>toDataURL.zeroheight</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.zerosize.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.zerosize.html
index 7d2913d..1b0c5de 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.zerosize.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.zerosize.html
@@ -3,8 +3,8 @@
 <title>Canvas test: toDataURL.zerosize</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>toDataURL.zerosize</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.zerowidth.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.zerowidth.html
index d4020aa5..06b24e1 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.zerowidth.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toDataURL.zerowidth.html
@@ -3,8 +3,8 @@
 <title>Canvas test: toDataURL.zerowidth</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>toDataURL.zerowidth</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/type.delete.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/type.delete.html
index 98b67b90..6a35f1f 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/type.delete.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/type.delete.html
@@ -3,8 +3,8 @@
 <title>Canvas test: type.delete</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>type.delete</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/type.exists.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/type.exists.html
index 04aa975..fff6b071 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/type.exists.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/type.exists.html
@@ -3,8 +3,8 @@
 <title>Canvas test: type.exists</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>type.exists</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/type.extend.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/type.extend.html
index 5722730..fcc49ab 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/type.extend.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/type.extend.html
@@ -3,8 +3,8 @@
 <title>Canvas test: type.extend</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>type.extend</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/type.name.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/type.name.html
index a514eff..365b1d53 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/type.name.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/type.name.html
@@ -3,8 +3,8 @@
 <title>Canvas test: type.name</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>type.name</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/type.prototype.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/type.prototype.html
index 029a9fb..7427ac5 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/type.prototype.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/type.prototype.html
@@ -3,8 +3,8 @@
 <title>Canvas test: type.prototype</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>type.prototype</h1>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/type.replace.html b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/type.replace.html
index 70a0806..9059140 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/type.replace.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/type.replace.html
@@ -3,8 +3,8 @@
 <title>Canvas test: type.replace</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
-<link rel="stylesheet" href="/common/canvas-tests.css">
+<script src="/2dcontext/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/2dcontext/resources/canvas-tests.css">
 <body class="show_output">
 
 <h1>type.replace</h1>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.copy.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.copy.html
index bc2ed9ce..2e3d0c9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.copy.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.copy.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.canvas.copy</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.canvas.copy</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.copy.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.copy.worker.js
index 35dd3d9..89e2328 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.copy.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.copy.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-atop.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-atop.html
index c36b232..aaef24f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-atop.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.canvas.destination-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.canvas.destination-atop</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-atop.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-atop.worker.js
index 17181cb..0b1ac5c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-atop.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-in.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-in.html
index f7249e4..b9b2d6bd 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-in.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.canvas.destination-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.canvas.destination-in</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-in.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-in.worker.js
index 12504f9..45ba1a7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-in.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-out.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-out.html
index 454cf75..3e20486 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-out.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-out.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.canvas.destination-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.canvas.destination-out</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-out.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-out.worker.js
index ed8835b..99536911 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-out.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-over.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-over.html
index 872bfe0..abf90de 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-over.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-over.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.canvas.destination-over</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.canvas.destination-over</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-over.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-over.worker.js
index 8d350c5..df2d2ba9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-over.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.destination-over.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.lighter.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.lighter.html
index 781b6c1..bceccf77 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.lighter.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.lighter.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.canvas.lighter</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.canvas.lighter</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.lighter.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.lighter.worker.js
index 060c6a3..85d813da 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.lighter.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.lighter.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-atop.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-atop.html
index 22eedc0..04c9d00 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-atop.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-atop.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.canvas.source-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.canvas.source-atop</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-atop.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-atop.worker.js
index 0005bca..97ee55b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-atop.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-in.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-in.html
index 564b864..61c96a3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-in.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.canvas.source-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.canvas.source-in</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-in.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-in.worker.js
index 82a508e7..4699b78 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-in.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-out.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-out.html
index 431d6bc..fe64192 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-out.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.canvas.source-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.canvas.source-out</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-out.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-out.worker.js
index ce16d3b..9e6394d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-out.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-over.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-over.html
index 123aa5e..0a049e2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-over.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-over.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.canvas.source-over</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.canvas.source-over</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-over.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-over.worker.js
index b5dcfff..9bde016 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-over.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.source-over.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.xor.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.xor.html
index 49ae6c08..0b719cea31 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.xor.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.xor.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.canvas.xor</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.canvas.xor</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.xor.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.xor.worker.js
index f3d5025..d22235d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.xor.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.canvas.xor.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.copy.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.copy.html
index 4761b04..5c9a8ab5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.copy.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.copy.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.clip.copy</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.clip.copy</h1>
 <p class="desc">fill() does not affect pixels outside the clip region.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.copy.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.copy.worker.js
index fc4a4cb..ed5c043 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.copy.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.copy.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fill() does not affect pixels outside the clip region.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-atop.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-atop.html
index aa863d1..a709a5f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-atop.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.clip.destination-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.clip.destination-atop</h1>
 <p class="desc">fill() does not affect pixels outside the clip region.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-atop.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-atop.worker.js
index 6c58078..0889147 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-atop.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fill() does not affect pixels outside the clip region.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-in.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-in.html
index 3bde3ff7..d15a40c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-in.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.clip.destination-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.clip.destination-in</h1>
 <p class="desc">fill() does not affect pixels outside the clip region.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-in.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-in.worker.js
index bccf3a88..ae8ba85 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-in.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fill() does not affect pixels outside the clip region.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-out.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-out.html
index 5ded0b3..e4fc3c8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-out.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-out.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.clip.destination-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.clip.destination-out</h1>
 <p class="desc">fill() does not affect pixels outside the clip region.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-out.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-out.worker.js
index fee113a..73632f52 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-out.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fill() does not affect pixels outside the clip region.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-over.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-over.html
index 4776e0e..bb344369 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-over.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-over.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.clip.destination-over</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.clip.destination-over</h1>
 <p class="desc">fill() does not affect pixels outside the clip region.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-over.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-over.worker.js
index 51168441..1c623fe 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-over.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.destination-over.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fill() does not affect pixels outside the clip region.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.lighter.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.lighter.html
index bf1cd8b..5f6ed79 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.lighter.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.lighter.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.clip.lighter</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.clip.lighter</h1>
 <p class="desc">fill() does not affect pixels outside the clip region.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.lighter.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.lighter.worker.js
index e9e9fc9..1e04a50 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.lighter.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.lighter.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fill() does not affect pixels outside the clip region.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-atop.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-atop.html
index 3a0f0df..80bd5225 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-atop.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-atop.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.clip.source-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.clip.source-atop</h1>
 <p class="desc">fill() does not affect pixels outside the clip region.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-atop.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-atop.worker.js
index a6e0fdc..f42cd0e3b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-atop.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fill() does not affect pixels outside the clip region.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-in.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-in.html
index 15e0aee..ed7e89a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-in.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.clip.source-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.clip.source-in</h1>
 <p class="desc">fill() does not affect pixels outside the clip region.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-in.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-in.worker.js
index 6b520c1..b445582 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-in.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fill() does not affect pixels outside the clip region.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-out.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-out.html
index 97de42d9..ff48084 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-out.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.clip.source-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.clip.source-out</h1>
 <p class="desc">fill() does not affect pixels outside the clip region.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-out.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-out.worker.js
index 72a8f29..5d51255 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-out.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fill() does not affect pixels outside the clip region.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-over.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-over.html
index 9ac231d..08bce56 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-over.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-over.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.clip.source-over</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.clip.source-over</h1>
 <p class="desc">fill() does not affect pixels outside the clip region.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-over.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-over.worker.js
index a594626..79b67d8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-over.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.source-over.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fill() does not affect pixels outside the clip region.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.xor.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.xor.html
index fb995848..6f65ca6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.xor.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.xor.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.clip.xor</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.clip.xor</h1>
 <p class="desc">fill() does not affect pixels outside the clip region.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.xor.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.xor.worker.js
index 6299680..8c4f98d2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.xor.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.clip.xor.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fill() does not affect pixels outside the clip region.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.canvas.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.canvas.html
index 0ccfea9a..f9263c9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.canvas.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.canvas.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.globalAlpha.canvas</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.globalAlpha.canvas</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.canvas.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.canvas.worker.js
index ab8a6424..0e1b75d1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.canvas.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.canvas.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.canvascopy.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.canvascopy.html
index f797c63..e14bdd3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.canvascopy.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.canvascopy.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.globalAlpha.canvascopy</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.globalAlpha.canvascopy</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.canvascopy.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.canvascopy.worker.js
index bc8daaf..6c10209 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.canvascopy.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.canvascopy.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.canvaspattern.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.canvaspattern.html
index ea6c5ac..b38efda 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.canvaspattern.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.canvaspattern.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.globalAlpha.canvaspattern</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.globalAlpha.canvaspattern</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.canvaspattern.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.canvaspattern.worker.js
index 08b5d6ad9..47229cf9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.canvaspattern.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.canvaspattern.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.default.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.default.html
index 6a15c0c8..d3d9e49 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.default.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.default.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.globalAlpha.default</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.globalAlpha.default</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.default.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.default.worker.js
index c961928..f68310d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.default.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.default.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.fill.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.fill.html
index 13acdaf..ad9ffcb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.fill.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.fill.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.globalAlpha.fill</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.globalAlpha.fill</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.fill.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.fill.worker.js
index d2fbf082..e3d15e7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.fill.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.fill.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.image.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.image.html
index f24e06a0..ad1c1dae 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.image.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.image.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.globalAlpha.image</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.globalAlpha.image</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.image.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.image.worker.js
index 4974687..a6e2be45 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.image.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.image.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.imagepattern.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.imagepattern.html
index 33fa23a8..283f583 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.imagepattern.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.imagepattern.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.globalAlpha.imagepattern</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.globalAlpha.imagepattern</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.imagepattern.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.imagepattern.worker.js
index d805f69f..ae0547b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.imagepattern.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.imagepattern.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.invalid.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.invalid.html
index f422cfe..5ddb6d0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.invalid.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.globalAlpha.invalid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.globalAlpha.invalid</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.invalid.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.invalid.worker.js
index 095b9446..6bfcabb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.invalid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.invalid.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.range.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.range.html
index bde15e2..957df9b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.range.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.range.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.globalAlpha.range</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.globalAlpha.range</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.range.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.range.worker.js
index f38ee56..235fb7b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.range.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.globalAlpha.range.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.copy.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.copy.html
index 3001aa1c..370b316 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.copy.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.copy.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.image.copy</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.image.copy</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.copy.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.copy.worker.js
index 0476e3a..b982ff5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.copy.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.copy.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-atop.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-atop.html
index 2b18c36..618a279 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-atop.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.image.destination-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.image.destination-atop</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-atop.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-atop.worker.js
index b587004..e1be28b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-atop.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-in.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-in.html
index cfde801..6f197c96 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-in.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.image.destination-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.image.destination-in</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-in.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-in.worker.js
index eff6475a..749780e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-in.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-out.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-out.html
index 1f70511..c39f8c1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-out.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-out.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.image.destination-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.image.destination-out</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-out.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-out.worker.js
index fda73d92..a68cc6f0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-out.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-over.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-over.html
index 1b21d2d..41dd506b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-over.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-over.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.image.destination-over</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.image.destination-over</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-over.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-over.worker.js
index 620911d..059b61b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-over.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.destination-over.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.lighter.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.lighter.html
index f898e44..a9b4aa9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.lighter.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.lighter.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.image.lighter</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.image.lighter</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.lighter.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.lighter.worker.js
index 574de5c..10d7df9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.lighter.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.lighter.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-atop.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-atop.html
index 012d892..9ca0ed6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-atop.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-atop.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.image.source-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.image.source-atop</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-atop.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-atop.worker.js
index b159a7d..b270ccf 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-atop.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-in.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-in.html
index f41fc4a..7b40b06 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-in.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.image.source-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.image.source-in</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-in.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-in.worker.js
index 789fcb90..de4ed37 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-in.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-out.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-out.html
index 91860e7..690f922 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-out.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.image.source-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.image.source-out</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-out.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-out.worker.js
index 583d222..e6316cfc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-out.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-over.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-over.html
index b8e52ca..a384d623 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-over.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-over.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.image.source-over</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.image.source-over</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-over.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-over.worker.js
index b459339..0ab6fc0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-over.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.source-over.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.xor.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.xor.html
index d050711d..896061f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.xor.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.xor.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.image.xor</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.image.xor</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.xor.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.xor.worker.js
index bd77785b..717e42e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.xor.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.image.xor.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.casesensitive.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.casesensitive.html
index 7c7016e..f0a2eb6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.casesensitive.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.casesensitive.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.operation.casesensitive</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.operation.casesensitive</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.casesensitive.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.casesensitive.worker.js
index 091dfd6..32014ff 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.casesensitive.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.casesensitive.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.clear.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.clear.html
index cb15204..9c80b14 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.clear.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.clear.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.operation.clear</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.operation.clear</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.clear.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.clear.worker.js
index 1efd149..a5a2c51 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.clear.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.clear.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.darker.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.darker.html
index 1f4cfb0..572178b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.darker.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.darker.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.operation.darker</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.operation.darker</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.darker.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.darker.worker.js
index 2b282f5..64ee8fc0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.darker.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.darker.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.default.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.default.html
index b114e14..6bdf2622 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.default.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.default.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.operation.default</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.operation.default</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.default.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.default.worker.js
index 906f1bb..768e79b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.default.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.default.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.get.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.get.html
index e3c8f9e..ec7c85f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.get.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.get.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.operation.get</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.operation.get</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.get.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.get.worker.js
index 2dd50fa..065ce859 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.get.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.get.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.highlight.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.highlight.html
index 1bfdb3b..78ca4c8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.highlight.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.highlight.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.operation.highlight</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.operation.highlight</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.highlight.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.highlight.worker.js
index fac64fc..549cfe1f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.highlight.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.highlight.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.nullsuffix.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.nullsuffix.html
index 7e1d65c..5fc50ff 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.nullsuffix.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.nullsuffix.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.operation.nullsuffix</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.operation.nullsuffix</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.nullsuffix.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.nullsuffix.worker.js
index 831f947..f3e4d791 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.nullsuffix.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.nullsuffix.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.over.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.over.html
index 71a3445..2040c8f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.over.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.over.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.operation.over</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.operation.over</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.over.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.over.worker.js
index 89c2634..f4cceea61 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.over.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.over.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.unrecognised.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.unrecognised.html
index 36e990f..7d736b9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.unrecognised.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.unrecognised.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.operation.unrecognised</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.operation.unrecognised</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.unrecognised.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.unrecognised.worker.js
index 5980d16..9b36e73 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.unrecognised.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.operation.unrecognised.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.copy.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.copy.html
index 98fd5d224..02c34f0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.copy.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.copy.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.solid.copy</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.solid.copy</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.copy.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.copy.worker.js
index 41249671..26f7749 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.copy.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.copy.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-atop.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-atop.html
index a3b645f..1717124 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-atop.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.solid.destination-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.solid.destination-atop</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-atop.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-atop.worker.js
index bb2bf5a31..7ca89e4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-atop.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-in.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-in.html
index 40dbb4c..182e2b88 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-in.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.solid.destination-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.solid.destination-in</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-in.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-in.worker.js
index b54208f..086e51e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-in.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-out.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-out.html
index 62171eca..90aac46 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-out.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-out.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.solid.destination-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.solid.destination-out</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-out.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-out.worker.js
index fbcd75d..3ee4417 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-out.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-over.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-over.html
index 14669d6b..044142b9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-over.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-over.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.solid.destination-over</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.solid.destination-over</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-over.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-over.worker.js
index 76d0df25..2a19cf9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-over.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.destination-over.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.lighter.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.lighter.html
index af7572a..5ea1740 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.lighter.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.lighter.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.solid.lighter</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.solid.lighter</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.lighter.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.lighter.worker.js
index 344a5a3..73839b7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.lighter.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.lighter.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-atop.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-atop.html
index 082d4215..734236c9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-atop.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-atop.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.solid.source-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.solid.source-atop</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-atop.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-atop.worker.js
index c2d0f0e..cf7f994 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-atop.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-in.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-in.html
index c355268..19d11b2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-in.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.solid.source-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.solid.source-in</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-in.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-in.worker.js
index de94d1e..32e5295 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-in.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-out.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-out.html
index 89fccfe..a7bb00e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-out.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.solid.source-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.solid.source-out</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-out.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-out.worker.js
index 76e6adc..21d4a1c9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-out.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-over.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-over.html
index de2206f..5b005ba 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-over.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-over.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.solid.source-over</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.solid.source-over</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-over.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-over.worker.js
index edbd628a..ea3c268 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-over.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.source-over.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.xor.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.xor.html
index 8d48ff8..438fb71 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.xor.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.xor.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.solid.xor</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.solid.xor</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.xor.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.xor.worker.js
index a2459517..c518948c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.xor.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.solid.xor.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.copy.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.copy.html
index cf256a9..b0aacaf2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.copy.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.copy.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.transparent.copy</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.transparent.copy</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.copy.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.copy.worker.js
index 8fb35ab4..5d8643e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.copy.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.copy.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-atop.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-atop.html
index 04bfca5e..f8615d4f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-atop.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.transparent.destination-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.transparent.destination-atop</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-atop.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-atop.worker.js
index bc036b2..df418045 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-atop.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-in.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-in.html
index e429c2bd..2b30d98a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-in.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.transparent.destination-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.transparent.destination-in</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-in.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-in.worker.js
index f9ee6d2..0b78e0c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-in.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-out.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-out.html
index a80a3a9..ad90c7b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-out.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-out.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.transparent.destination-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.transparent.destination-out</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-out.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-out.worker.js
index f61ac0f..a9e240e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-out.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-over.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-over.html
index 87adccf..8c2107dd 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-over.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-over.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.transparent.destination-over</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.transparent.destination-over</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-over.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-over.worker.js
index 1160e73d..a78c609 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-over.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.destination-over.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.lighter.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.lighter.html
index 9ae5ddeb..3615471 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.lighter.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.lighter.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.transparent.lighter</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.transparent.lighter</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.lighter.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.lighter.worker.js
index 8da114c..0eb9cfb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.lighter.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.lighter.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-atop.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-atop.html
index bdb283c..575b860 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-atop.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-atop.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.transparent.source-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.transparent.source-atop</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-atop.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-atop.worker.js
index a03e2e4..09fb6a3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-atop.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-in.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-in.html
index 3fb830a..1b6f95b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-in.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.transparent.source-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.transparent.source-in</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-in.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-in.worker.js
index f49539b..770ed07 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-in.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-out.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-out.html
index b3405bb..093da537 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-out.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.transparent.source-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.transparent.source-out</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-out.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-out.worker.js
index afa1adf..781d1cd 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-out.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-over.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-over.html
index cc1e9533..20718ca 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-over.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-over.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.transparent.source-over</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.transparent.source-over</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-over.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-over.worker.js
index 8153e17..6c92de4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-over.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.source-over.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.xor.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.xor.html
index 3f98e78a..6320263 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.xor.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.xor.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.transparent.xor</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.transparent.xor</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.xor.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.xor.worker.js
index 58634bd..a489a98 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.xor.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.transparent.xor.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.copy.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.copy.html
index 49a7382..6c16912 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.copy.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.copy.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.uncovered.fill.copy</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.uncovered.fill.copy</h1>
 <p class="desc">fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.copy.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.copy.worker.js
index 9ecbf5d..6787533 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.copy.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.copy.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 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.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-atop.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-atop.html
index bf41ce6..464c6ee 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-atop.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.uncovered.fill.destination-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.uncovered.fill.destination-atop</h1>
 <p class="desc">fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-atop.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-atop.worker.js
index 3f1af3d..ac4d2a4c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-atop.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 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.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-in.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-in.html
index f267dc71..0239843 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-in.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.uncovered.fill.destination-in</h1>
 <p class="desc">fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-in.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-in.worker.js
index fe1ae65..ec49416 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-in.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 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.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-in.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-in.html
index 66b0d64..5f45113 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-in.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.uncovered.fill.source-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.uncovered.fill.source-in</h1>
 <p class="desc">fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-in.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-in.worker.js
index 42e1ff03..37b810f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-in.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 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.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-out.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-out.html
index 5c80c3f..0f5bb531 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-out.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.uncovered.fill.source-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.uncovered.fill.source-out</h1>
 <p class="desc">fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-out.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-out.worker.js
index 6f738704..5d8f452 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-out.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 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.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.copy.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.copy.html
index 733a513..a4a095c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.copy.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.copy.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.uncovered.image.copy</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.uncovered.image.copy</h1>
 <p class="desc">drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.copy.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.copy.worker.js
index 7898066..c6cedfe 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.copy.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.copy.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 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.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-atop.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-atop.html
index 9224e74..3148fad 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-atop.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.uncovered.image.destination-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.uncovered.image.destination-atop</h1>
 <p class="desc">drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-atop.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-atop.worker.js
index c279960..9f2717f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-atop.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 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.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-in.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-in.html
index 5102b19..5363cd5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-in.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.uncovered.image.destination-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.uncovered.image.destination-in</h1>
 <p class="desc">drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-in.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-in.worker.js
index 9a1090d..72169a0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-in.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 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.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.source-in.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.source-in.html
index 0d2a898..7165087 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.source-in.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.uncovered.image.source-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.uncovered.image.source-in</h1>
 <p class="desc">drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.source-in.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.source-in.worker.js
index 03070b4..2d5004921 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.source-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.source-in.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 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.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.source-out.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.source-out.html
index 265902b..2b57b98 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.source-out.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.uncovered.image.source-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.uncovered.image.source-out</h1>
 <p class="desc">drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.source-out.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.source-out.worker.js
index 41b3fa5..76cd267 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.source-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.image.source-out.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 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.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.copy.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.copy.html
index 92422f5..1abbe1e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.copy.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.copy.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.uncovered.nocontext.copy</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.uncovered.nocontext.copy</h1>
 <p class="desc">drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.copy.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.copy.worker.js
index 75778f4..aee59d25 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.copy.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.copy.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 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.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-atop.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-atop.html
index b058c6fb..46ce0c0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-atop.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.uncovered.nocontext.destination-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.uncovered.nocontext.destination-atop</h1>
 <p class="desc">drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-atop.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-atop.worker.js
index 0eee51a..3443c1a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-atop.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 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.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-in.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-in.html
index d9b9dc3..edef4bc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-in.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.uncovered.nocontext.destination-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.uncovered.nocontext.destination-in</h1>
 <p class="desc">drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-in.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-in.worker.js
index 8316365..fde33a5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-in.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 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.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-in.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-in.html
index fc52d10..3239416 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-in.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.uncovered.nocontext.source-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.uncovered.nocontext.source-in</h1>
 <p class="desc">drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-in.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-in.worker.js
index cca1b1b..e591afc0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-in.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 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.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-out.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-out.html
index b555c65..c4e66c0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-out.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.uncovered.nocontext.source-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.uncovered.nocontext.source-out</h1>
 <p class="desc">drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-out.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-out.worker.js
index 40d7cc8..ab4920dc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-out.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 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.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.copy.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.copy.html
index 0a67a45..62ad916 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.copy.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.copy.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.uncovered.pattern.copy</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.uncovered.pattern.copy</h1>
 <p class="desc">Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.copy.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.copy.worker.js
index ea4f47fb..d42495e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.copy.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.copy.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 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.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-atop.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-atop.html
index 0b290d6..364029d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-atop.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-atop.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.uncovered.pattern.destination-atop</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.uncovered.pattern.destination-atop</h1>
 <p class="desc">Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-atop.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-atop.worker.js
index f32811e2..76c2fca 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-atop.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-atop.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 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.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-in.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-in.html
index 88ec897a..b9c4613f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-in.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-in.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.uncovered.pattern.destination-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.uncovered.pattern.destination-in</h1>
 <p class="desc">Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-in.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-in.worker.js
index 0800f0b..476f957 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-in.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 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.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-in.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-in.html
index 78d1fad..fef35be 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-in.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-in.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.uncovered.pattern.source-in</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.uncovered.pattern.source-in</h1>
 <p class="desc">Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-in.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-in.worker.js
index a34d8f6d..522ce498 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-in.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-in.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 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.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-out.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-out.html
index 47237e3..2084611 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-out.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-out.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.composite.uncovered.pattern.source-out</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.composite.uncovered.pattern.source-out</h1>
 <p class="desc">Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-out.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-out.worker.js
index bb4514e..be21217 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-out.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-out.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 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.");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/conformance-requirements/2d.coordinatespace.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/conformance-requirements/2d.coordinatespace.html
index ec24a19c..96387e5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/conformance-requirements/2d.coordinatespace.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/conformance-requirements/2d.coordinatespace.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.coordinatespace</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.coordinatespace</h1>
 <p class="desc">Coordinate space goes from top-left to bottom-right</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/conformance-requirements/2d.coordinatespace.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/conformance-requirements/2d.coordinatespace.worker.js
index 7cad97b..f4e3095 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/conformance-requirements/2d.coordinatespace.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/conformance-requirements/2d.coordinatespace.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">This should not be upside down.
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Coordinate space goes from top-left to bottom-right");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/conformance-requirements/2d.missingargs.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/conformance-requirements/2d.missingargs.html
index 0be8b58b..9aa437c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/conformance-requirements/2d.missingargs.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/conformance-requirements/2d.missingargs.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.missingargs</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.missingargs</h1>
 <p class="desc">Missing arguments cause TypeError</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/conformance-requirements/2d.missingargs.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/conformance-requirements/2d.missingargs.worker.js
index 1a9d41e..8f8d00e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/conformance-requirements/2d.missingargs.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/conformance-requirements/2d.missingargs.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Missing arguments cause TypeError");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/conformance-requirements/2d.voidreturn.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/conformance-requirements/2d.voidreturn.html
index 42eb98ec..a90e637 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/conformance-requirements/2d.voidreturn.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/conformance-requirements/2d.voidreturn.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.voidreturn</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.voidreturn</h1>
 <p class="desc">void methods return undefined</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/conformance-requirements/2d.voidreturn.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/conformance-requirements/2d.voidreturn.worker.js
index 0d7da59..d25b85d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/conformance-requirements/2d.voidreturn.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/conformance-requirements/2d.voidreturn.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("void methods return undefined");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.html
index fce08e5..8cc765c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 <link rel="help" href="https://html.spec.whatwg.org/#dom-offscreencanvas-converttoblob">
 <script id="myWorker" type="text/worker">
 self.onmessage = function(e) {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.w.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.w.html
index 573236f3..71eaa96 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.w.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.w.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 <link rel="help" href="https://html.spec.whatwg.org/#dom-offscreencanvas-converttoblob">
 <script id="myWorker" type="text/worker">
 function drawCanvas(ctx)
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.3arg.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.3arg.html
index 0e5c204..97eb5aa 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.3arg.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.3arg.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.3arg</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.3arg.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.3arg.worker.js
index 08cb353..cb87cac 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.3arg.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.3arg.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.5arg.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.5arg.html
index 33d7d1a..c3f7d89 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.5arg.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.5arg.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.5arg</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.5arg.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.5arg.worker.js
index 17e01fa..b0e6966 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.5arg.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.5arg.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html
index 33733cf9..e4fe9b2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.9arg.basic</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.js
index 53046e2..482d06e3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.html
index 9a7060b..6d859458 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.9arg.destpos</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.worker.js
index 2a18a935..36141a07 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.html
index b8d148f..927a5fbe 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.9arg.destsize</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.worker.js
index a9f9407..2d99434 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html
index f08ae98..c6b9a1f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.9arg.sourcepos</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.worker.js
index 0b1885d..1020daa 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html
index 34746f25..4efd2fc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.9arg.sourcesize</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.worker.js
index e1fa60d..0acde77 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.alpha.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.alpha.html
index a7cd6e1..b405461 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.alpha.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.alpha</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.alpha.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.alpha.worker.js
index d71b3d50..1b3ebbe 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.alpha.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.alpha.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html
index b007a9ac..fdae656 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.animated.poster</h1>
 <p class="desc">drawImage() of an APNG draws the poster frame</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.animated.poster.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.animated.poster.worker.js
index d328d18d..17bf6623 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.animated.poster.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.animated.poster.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("drawImage() of an APNG draws the poster frame");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.broken.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.broken.html
index ce958c7..9193e6d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.broken.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.broken.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.broken</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.broken.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.broken.worker.js
index db96817..f3c847f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.broken.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.broken.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.canvas.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.canvas.html
index 7b4065b..81ba371 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.canvas.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.canvas.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.canvas</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.canvas.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.canvas.worker.js
index 8af83f2..338d8de 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.canvas.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.canvas.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.clip.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.clip.html
index 6ded0e3..b2f756c5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.clip.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.clip.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.clip</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.clip.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.clip.worker.js
index f0363c22..026ed8de 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.clip.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.clip.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.composite.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.composite.html
index f548a9c..09cc063 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.composite.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.composite.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.composite</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.composite.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.composite.worker.js
index 435c793..4b882ce3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.composite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.composite.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.floatsource.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.floatsource.html
index c39ba6e..6474873 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.floatsource.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.floatsource.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.floatsource</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.floatsource.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.floatsource.worker.js
index 3a90d33..0f95f51 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.floatsource.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.floatsource.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedest.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedest.html
index f2a62c2d..6b5d6fa 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedest.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedest.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.negativedest</h1>
 <p class="desc">Negative destination width/height represents the correct rectangle</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedest.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedest.worker.js
index 91cf466..8ba67e3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedest.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedest.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Negative destination width/height represents the correct rectangle");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedir.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedir.html
index 700cbffa..fb4c3ae15 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedir.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedir.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.negativedir</h1>
 <p class="desc">Negative dimensions do not affect the direction of the image</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedir.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedir.worker.js
index 9d4812b..2647ada2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedir.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedir.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Negative dimensions do not affect the direction of the image");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativesource.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativesource.html
index 83158cc..b5d719a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativesource.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativesource.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.negativesource</h1>
 <p class="desc">Negative source width/height represents the correct rectangle</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativesource.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativesource.worker.js
index fe0b0c17..8d93348 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativesource.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativesource.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Negative source width/height represents the correct rectangle");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html
index 042fd243..e986570 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.nonfinite</h1>
 <p class="desc">drawImage() with Infinity/NaN is ignored</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nonfinite.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nonfinite.worker.js
index 4ebc761..1d2f114 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nonfinite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nonfinite.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("drawImage() with Infinity/NaN is ignored");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nowrap.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nowrap.html
index bc6e105..515d0de 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nowrap.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nowrap.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.nowrap</h1>
 <p class="desc">Stretched images do not get pixels wrapping around the edges</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nowrap.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nowrap.worker.js
index b014974b..c31c1fa 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nowrap.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nowrap.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Stretched images do not get pixels wrapping around the edges");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.null.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.null.html
index 612c35b4..8e7ad97 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.null.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.null.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.null</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.null.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.null.worker.js
index e886a33..51297eb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.null.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.null.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.path.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.path.html
index 623e1f48..cf6594c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.path.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.path.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.path</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.path.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.path.worker.js
index 7e4a240..12c2ecfac 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.path.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.path.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.1.html
index 206a73b..e410e30 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.1.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.self.1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.1.worker.js
index ddd7e18..171feded 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.2.html
index 2767cfd..5586165 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.2.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.self.2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.2.worker.js
index b3c005e..5711bb7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.svg.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.svg.html
index 6890f486..bd8146d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.svg.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.svg.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.svg</h1>
 <p class="desc">drawImage() of an SVG image</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.svg.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.svg.worker.js
index 6860a85..7ff73bf 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.svg.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.svg.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("drawImage() of an SVG image");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.transform.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.transform.html
index 0ea34ea..2c1ca6b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.transform.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.transform.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.transform</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.transform.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.transform.worker.js
index 41b0d4c..1ef01a8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.transform.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.transform.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.wrongtype.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.wrongtype.html
index 321640f8..1a7dd43 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.wrongtype.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.wrongtype.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.wrongtype</h1>
 <p class="desc">Incorrect image types in drawImage do not match any defined overloads, so WebIDL throws a TypeError</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.wrongtype.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.wrongtype.worker.js
index c4f4668..a8b170c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.wrongtype.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.wrongtype.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Incorrect image types in drawImage do not match any defined overloads, so WebIDL throws a TypeError");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.html
index 2f53c5e..12bf837 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.zerocanvas</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.worker.js
index 3a17cfe..8d18929 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.html
index 9b66bfd..137d663 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.zerosource</h1>
 <p class="desc">drawImage with zero-sized source rectangle throws INDEX_SIZE_ERR</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html
index f978ac6..28ded3a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html
@@ -4,7 +4,7 @@
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.drawImage.zerosource.image</h1>
 <p class="desc">drawImage with zero-sized source rectangle from image throws INDEX_SIZE_ERR</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.js
index 3cc3c72..5c76d55 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("drawImage with zero-sized source rectangle from image throws INDEX_SIZE_ERR");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.js
index 0f0ed5d..90baefb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("drawImage with zero-sized source rectangle throws INDEX_SIZE_ERR");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html
index e5141d6..e92ac62 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.clearRect.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.clearRect.basic</h1>
 <p class="desc">clearRect clears to transparent black</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.basic.worker.js
index eb0ae4e..a456ebb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("clearRect clears to transparent black");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.clip.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.clip.html
index 25af32dca..653d391 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.clip.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.clip.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.clearRect.clip</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.clearRect.clip</h1>
 <p class="desc">clearRect is affected by clipping regions</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.clip.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.clip.worker.js
index ce58871..7d03f40 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.clip.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.clip.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("clearRect is affected by clipping regions");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.html
index 19ddabf..f5202c7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.clearRect.globalalpha</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.clearRect.globalalpha</h1>
 <p class="desc">clearRect is not affected by globalAlpha</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.worker.js
index a29ce44..6593928 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("clearRect is not affected by globalAlpha");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.html
index 63a9ac3..803df81 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.clearRect.globalcomposite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.clearRect.globalcomposite</h1>
 <p class="desc">clearRect is not affected by globalCompositeOperation</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.worker.js
index 4873b0a3..efe5d2e4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("clearRect is not affected by globalCompositeOperation");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.negative.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.negative.html
index 064f805..ff69557f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.negative.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.negative.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.clearRect.negative</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.clearRect.negative</h1>
 <p class="desc">clearRect of negative sizes works</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.negative.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.negative.worker.js
index 8dc1cf2..ee6ba9e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.negative.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.negative.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("clearRect of negative sizes works");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.html
index 8e3b241..ac94d01 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.clearRect.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.clearRect.nonfinite</h1>
 <p class="desc">clearRect() with Infinity/NaN is ignored</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.worker.js
index bd51233..aae7f12 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("clearRect() with Infinity/NaN is ignored");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.path.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.path.html
index 00d2286f..0b32f31 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.path.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.path.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.clearRect.path</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.clearRect.path</h1>
 <p class="desc">clearRect does not affect the current path</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.path.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.path.worker.js
index 385672d..2716cf0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.path.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.path.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("clearRect does not affect the current path");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.html
index 54cbbfb..5361f4e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.clearRect.shadow</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.clearRect.shadow</h1>
 <p class="desc">clearRect does not draw shadows</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.worker.js
index 86bd149..5b6c634 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("clearRect does not draw shadows");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.transform.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.transform.html
index 14278ab1..fad0e22 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.transform.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.transform.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.clearRect.transform</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.clearRect.transform</h1>
 <p class="desc">clearRect is affected by transforms</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.transform.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.transform.worker.js
index e5ea333..73370d1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.transform.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.transform.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("clearRect is affected by transforms");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.zero.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.zero.html
index d1f95530..ab0fe73c5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.zero.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.zero.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.clearRect.zero</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.clearRect.zero</h1>
 <p class="desc">clearRect of zero pixels has no effect</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.zero.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.zero.worker.js
index 00850c6..0798b27 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.zero.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.zero.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("clearRect of zero pixels has no effect");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.basic.html
index 2f6e6d1..12ae6294 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillRect.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillRect.basic</h1>
 <p class="desc">fillRect works</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.basic.worker.js
index 805561044..ae7cc6b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fillRect works");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.clip.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.clip.html
index ddc625d..22bbaab8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.clip.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.clip.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillRect.clip</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillRect.clip</h1>
 <p class="desc">fillRect is affected by clipping regions</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.clip.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.clip.worker.js
index 740a9de..c2128b1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.clip.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.clip.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fillRect is affected by clipping regions");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.negative.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.negative.html
index ba525ce2..e64eabc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.negative.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.negative.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillRect.negative</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillRect.negative</h1>
 <p class="desc">fillRect of negative sizes works</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.negative.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.negative.worker.js
index df644d5f..af040f1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.negative.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.negative.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fillRect of negative sizes works");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html
index 7bedee6..13cfb51 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillRect.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillRect.nonfinite</h1>
 <p class="desc">fillRect() with Infinity/NaN is ignored</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.worker.js
index 79455b2..d12689b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fillRect() with Infinity/NaN is ignored");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.path.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.path.html
index ff6530e..5f454b4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.path.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.path.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillRect.path</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillRect.path</h1>
 <p class="desc">fillRect does not affect the current path</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.path.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.path.worker.js
index 7433620e..9fb2852 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.path.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.path.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fillRect does not affect the current path");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.html
index 1399bbb..b9a6435 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillRect.shadow</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillRect.shadow</h1>
 <p class="desc">fillRect draws shadows</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.worker.js
index 7f056f50..bd660b5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fillRect draws shadows");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.transform.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.transform.html
index 21b780a5..4ed1b28 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.transform.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.transform.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillRect.transform</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillRect.transform</h1>
 <p class="desc">fillRect is affected by transforms</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.transform.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.transform.worker.js
index d0bfaa9..a204b90 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.transform.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.transform.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fillRect is affected by transforms");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.zero.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.zero.html
index b1309ee..8bd26d20 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.zero.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.zero.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillRect.zero</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillRect.zero</h1>
 <p class="desc">fillRect of zero pixels has no effect</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.zero.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.zero.worker.js
index afe3832..bef6fdb6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.zero.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.zero.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fillRect of zero pixels has no effect");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.html
index 329e2989..3a8c38a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.strokeRect.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.strokeRect.basic</h1>
 <p class="desc">strokeRect works</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.worker.js
index 13fd2ae..225788b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("strokeRect works");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html
index 1f1c947..6ad1f1e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.strokeRect.clip</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.strokeRect.clip</h1>
 <p class="desc">strokeRect is affected by clipping regions</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.worker.js
index dfb6705..33aad46 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("strokeRect is affected by clipping regions");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.html
index 35e4e06..40cbbfcf 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.strokeRect.globalalpha</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.strokeRect.globalalpha</h1>
 <p class="desc">strokeRect is affected by globalAlpha</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.worker.js
index f241200..cb95672 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("strokeRect is affected by globalAlpha");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.html
index 44b8966..dae7c9d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.strokeRect.globalcomposite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.strokeRect.globalcomposite</h1>
 <p class="desc">strokeRect is not affected by globalCompositeOperation</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.worker.js
index 93be63c..662f3dd 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("strokeRect is not affected by globalCompositeOperation");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.html
index be5f9aa..a05ef50c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.strokeRect.negative</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.strokeRect.negative</h1>
 <p class="desc">strokeRect of negative sizes works</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.worker.js
index 9c83950a..af12c4a0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("strokeRect of negative sizes works");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.html
index 91983658..db26a95 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.strokeRect.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.strokeRect.nonfinite</h1>
 <p class="desc">strokeRect() with Infinity/NaN is ignored</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.worker.js
index 7fb16811..3b622121 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("strokeRect() with Infinity/NaN is ignored");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.path.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.path.html
index dc49cbf..79c3f79f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.path.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.path.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.strokeRect.path</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.strokeRect.path</h1>
 <p class="desc">strokeRect does not affect the current path</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.path.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.path.worker.js
index b5908b16..3819965 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.path.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.path.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("strokeRect does not affect the current path");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.html
index a042d943..d02d046c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.strokeRect.shadow</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.strokeRect.shadow</h1>
 <p class="desc">strokeRect draws shadows</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.worker.js
index 781e0b9..b63ff64 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("strokeRect draws shadows");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.html
index ba859b8..875969a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.strokeRect.transform</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.strokeRect.transform</h1>
 <p class="desc">fillRect is affected by transforms</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.worker.js
index 85bc6e8..90b6f50 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fillRect is affected by transforms");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.html
index 973b9d1..2c2cf39 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.strokeRect.zero.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.strokeRect.zero.1</h1>
 <p class="desc">strokeRect of 0x0 pixels draws nothing</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.worker.js
index 5d1f466..3f2af8c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("strokeRect of 0x0 pixels draws nothing");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.html
index 161e2408..cebabdb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.strokeRect.zero.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.strokeRect.zero.2</h1>
 <p class="desc">strokeRect of 0x0 pixels draws nothing, including caps and joins</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.worker.js
index bd7f852..9b5f26e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("strokeRect of 0x0 pixels draws nothing, including caps and joins");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.html
index 7566ba8..6063b14 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.strokeRect.zero.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.strokeRect.zero.3</h1>
 <p class="desc">strokeRect of Nx0 pixels draws a straight line</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.worker.js
index 0b73deb2..aff8dab 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("strokeRect of Nx0 pixels draws a straight line");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.html
index e40d78d..5f169c6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.strokeRect.zero.4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.strokeRect.zero.4</h1>
 <p class="desc">strokeRect of Nx0 pixels draws a closed line with no caps</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.worker.js
index e7de7a5..a38d6b8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("strokeRect of Nx0 pixels draws a closed line with no caps");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.html
index c23f675e..7588fad 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.strokeRect.zero.5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.strokeRect.zero.5</h1>
 <p class="desc">strokeRect of Nx0 pixels draws a closed line with joins</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.worker.js
index cb8224e..f2ed552 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("strokeRect of Nx0 pixels draws a closed line with joins");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.default.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.default.html
index 0e011add..51cc739 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.default.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.default.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.default</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.default</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.default.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.default.worker.js
index bd5af52..35f59e2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.default.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.default.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.html
index d21282a..56be1ec 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.get.semitransparent</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.get.semitransparent</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.worker.js
index 6d544f1..40aacb1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.solid.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.solid.html
index 5da5b97..719ce0ca 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.solid.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.solid.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.get.solid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.get.solid</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.solid.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.solid.worker.js
index aeea44a..157b41e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.solid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.solid.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.transparent.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.transparent.html
index a390abb..0796903f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.transparent.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.transparent.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.get.transparent</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.get.transparent</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.transparent.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.transparent.worker.js
index 3df91dd..0fc8220 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.transparent.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.transparent.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidstring.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidstring.html
index 8d232620..9c72f97 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidstring.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidstring.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.invalidstring</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.invalidstring</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidstring.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidstring.worker.js
index 50189bdf..900d6e9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidstring.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidstring.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidtype.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidtype.html
index 3d1043d..b1551cd 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidtype.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidtype.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.invalidtype</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.invalidtype</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidtype.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidtype.worker.js
index 422ae3e..f097053 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidtype.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidtype.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html
index f795694..226bb5ac 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsl-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-hsl-1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.worker.js
index c147905..7709d10 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html
index a2c2c70d..7c2b4b0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsl-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-hsl-2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.worker.js
index d7a37d2..b5cf874 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html
index a0bf4f3..69f0619 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsl-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-hsl-3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.worker.js
index 1709f493..d4f33b586 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html
index a28f689..ae8dece6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsl-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-hsl-4</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.worker.js
index 2935c51..d96bf205 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html
index 87a0935..b520872 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsl-5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-hsl-5</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.worker.js
index 64c8108..7efed19 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html
index c18f9d9..3e4830e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsl-6</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-hsl-6</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.worker.js
index fe33f4b..a61a59c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html
index 3ad95db15..a4daa649 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsl-7</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-hsl-7</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.worker.js
index 21d51d7..404f1e4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html
index 9971b225..1f33e5e0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsl-8</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-hsl-8</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.worker.js
index b5bc64c..916d62f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html
index 0d99d14..a470d18 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsl-9</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-hsl-9</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.worker.js
index cae19531..b285e10 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html
index 7f03f71..bcc26eb4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsla-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-hsla-1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.worker.js
index 21b44ce..c6e72287 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html
index 014957dee..bb0ead60 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsla-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-hsla-2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.worker.js
index 7bf78b9..df611d2a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html
index 9fde7bd9..ec9dce3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsla-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-hsla-3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.worker.js
index ff6ab80..246e92e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html
index 5669931..c6e3fcc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsla-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-hsla-4</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.worker.js
index f3910ef..9e42ad5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html
index 1e1990f..3b9c5f052 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsla-5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-hsla-5</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.worker.js
index c9631ec..94fc24e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html
index 0f1b644e..86bb08a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsla-6</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-hsla-6</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.worker.js
index c6e4430d..bc751f74 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html
index da290762..f2a833b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsla-7</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-hsla-7</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.worker.js
index cfeaefd..22ffc89 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html
index 404277d..84e8b3dc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsla-8</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-hsla-8</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.worker.js
index fb3415a..d5ff371 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html
index 2bd5a10..bbb6555a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsla-9</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-hsla-9</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.worker.js
index 1df1c82..c81ddae 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html
index 3312d05a..e127bdb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-rgb-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-rgb-1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.worker.js
index 4d1386a5..c09ba56 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html
index 716d4f8..37b1eb0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-rgb-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-rgb-2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.worker.js
index 100309e..8417215 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html
index b0faa05..46f8d95 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-rgb-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-rgb-3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.worker.js
index 6ac4779..9b7cb35 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html
index df858019..9f7b0c96 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-rgb-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-rgb-4</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.worker.js
index acdfb2d..bd2350a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html
index b38903b..8dea6f6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-rgb-5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-rgb-5</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.worker.js
index 7c44ddd..9cbb68a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html
index c54d8dfd..518240f7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-rgb-6</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-rgb-6</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.worker.js
index 21d62f6..526e2ab8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html
index dbc831d..21081d86 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-rgba-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-rgba-1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.worker.js
index cbb6806..95feca8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html
index c1f9c6b..69a4ad54 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-rgba-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-rgba-2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.worker.js
index ee3a09a..011ed04 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html
index f992663..a489c3f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-rgba-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-rgba-3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.worker.js
index 7b5f392..abd9cf1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html
index 482c95f..80f25d32 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-rgba-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-rgba-4</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.worker.js
index 8e02935..a6de83e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html
index ddfff551..a54f884 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-rgba-5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-rgba-5</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.worker.js
index 14d2b30..a069b41 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html
index 339cf5f..afbe418 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-rgba-6</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.css-color-4-rgba-6</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.worker.js
index 016c7cc5..66df2f9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html
index 6637693..65307cd 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.hex3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.hex3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex3.worker.js
index 8ccfe6d..5ca4fe71 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex3.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html
index 403ea90..6546bdd0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.hex4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.hex4</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex4.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex4.worker.js
index d8743c3..2a6c368 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex4.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html
index c2dbe90..fa20542 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.hex6</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.hex6</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex6.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex6.worker.js
index b6fe583a..abf4d9fc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex6.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex6.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html
index b09096ea..b574120 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.hex8</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.hex8</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex8.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex8.worker.js
index 06b5fd0..aef17ee 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex8.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex8.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html
index f6f9983..22d2879 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.hsl-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.hsl-1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.worker.js
index 503f5b6..49228a85 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html
index 7df9115..22fd329 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.hsl-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.hsl-2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.worker.js
index bb9182a..956dccc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html
index e56c95fb..3e919ae6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.hsl-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.hsl-3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.worker.js
index 0809fd42..29be2d1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html
index f23a770..8ea7e07 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.hsl-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.hsl-4</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.worker.js
index ccbc3cd..44be41e4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html
index 0ef8a0a..429c0e6e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.hsl-5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.hsl-5</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.worker.js
index 42a9f90..625579c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html
index 420b787e..62b004b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.hsl-6</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.hsl-6</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.worker.js
index 9a53686..1650f4e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html
index f586958..e68ba60 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.hsl-clamp-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.hsl-clamp-1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.worker.js
index 6c59860..6e638a7e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html
index 92c9c95..0c1f532 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.hsl-clamp-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.hsl-clamp-2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.worker.js
index 7aac1c9..c4851d6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html
index a6cf150..3cbbad8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.hsl-clamp-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.hsl-clamp-3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.worker.js
index 341153b..f5e90c2e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html
index ac414fd..735f6a0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.hsl-clamp-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.hsl-clamp-4</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.worker.js
index 403962a..583ac254 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html
index be595d7a..65091f5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.hsla-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.hsla-1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.worker.js
index 8185fdd..46a98b1c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html
index c1d0486..f433c9d8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.hsla-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.hsla-2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.worker.js
index 91c882ec..135d692 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html
index 80b0ecf3..9ca76c5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.hsla-clamp-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.hsla-clamp-1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.worker.js
index b031416..152fa38 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html
index ae4e637..bc423c2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.hsla-clamp-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.hsla-clamp-2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.worker.js
index 671ca1a..1fb26cf 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html
index 9e35634..659c8e01 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.hsla-clamp-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.hsla-clamp-3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.worker.js
index a6045c6..fd4ac96 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html
index 858b459..bfda01c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.hsla-clamp-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.hsla-clamp-4</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.worker.js
index 77be7be0..730acae 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html
index 285108a..7d3ebb8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.hsla-clamp-5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.hsla-clamp-5</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.worker.js
index d534d4d..1a401aa7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html
index 8056511b..e6373289 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.hsla-clamp-6</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.hsla-clamp-6</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.worker.js
index 32a77d9..c6832d9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.html4.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.html4.html
index f0ea1a7..d76252cd 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.html4.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.html4.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.html4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.html4</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.html4.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.html4.worker.js
index c954966..ac9b6e16 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.html4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.html4.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html
index b23a376..428d440d8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-hsl-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-hsl-1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.worker.js
index 27db125..0f01327 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html
index 2227d55..ac2fd71 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-hsl-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-hsl-2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.worker.js
index 4edbae4..4355567 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html
index dc7caad..85e835de 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-hsl-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-hsl-3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.worker.js
index 4744f9e..d274b862 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html
index affb65e..7a73e5c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-hsl-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-hsl-4</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.worker.js
index 545df307..d57b196 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html
index 407f6ee..6d1fecd 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-hsl-5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-hsl-5</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.worker.js
index 960e3184..ea043e5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html
index 319676e2..9d811004 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-hsla-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-hsla-1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.worker.js
index 0bbf5acc..c2c9ea0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html
index 001e1ba..47f1a229 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-hsla-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-hsla-2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.worker.js
index c1e7c0a..3d97577 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html
index 4e9e59c..c9a1d49 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-hsla-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-hsla-3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.worker.js
index bb45213..9a6c49f2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html
index ba0ca5e..104f880 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-rgb-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-rgb-1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.worker.js
index 17a8f44..2899f40 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html
index 42354ae..2d96d02 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-rgb-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-rgb-2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.worker.js
index 7f6efc60..ff388b9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html
index 402e6ad5..0ab6881 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-rgb-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-rgb-3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.worker.js
index f5d551c0..108e36d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html
index 2556a9c..1093a5c68 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-rgb-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-rgb-4</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.worker.js
index 966f465..8ff720ea 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html
index c2fc1ee..923e8ba 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-rgb-5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-rgb-5</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.worker.js
index 3a54246..8607b34 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html
index f842efaf..cc6a80a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-rgba-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-rgba-1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.worker.js
index 88f7d354..6ffe0bdd 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html
index 22660ca3..181e7ba8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-rgba-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-rgba-2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.worker.js
index cd4b4890..1a6600e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html
index e89a715e..e190de1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-rgba-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.css-color-4-rgba-3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.worker.js
index 999e0b5..b691fb5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html
index 07ee370..ceb0af4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.hex1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.hex1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.worker.js
index f595e108..c7c3058 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html
index 330c4bac..f8e00c7b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.hex2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.hex2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.worker.js
index 6fb16f3..9256e7e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html
index 0a69c28..40cd7fde 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.hex3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.hex3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.worker.js
index 832f4dea..5bbfe65 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html
index 5565e70..cd896a25 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.hex4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.hex4</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.worker.js
index f7a7097a..a3f9817 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html
index b1e452c2..4e340b690 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.hex5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.hex5</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.worker.js
index a931467b..d1de7c5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html
index b0954ef..842739a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.hex6</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.hex6</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.worker.js
index 750548d..13674bf 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html
index e53cb87..3368ef2e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.hex7</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.hex7</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.worker.js
index 7796a4e..9346d01 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html
index a59332f..4c68eb1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.hex8</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.hex8</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.worker.js
index 2156ef0..8823277 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html
index fb15484..9e2a2ff 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.hsl-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.hsl-1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.worker.js
index f1b2a50..64ca3fb3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html
index 7f50966e..87b1c49 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.hsl-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.hsl-2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.worker.js
index b09a92d..8f268897 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html
index 7244cd0..c17d8b36 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.hsl-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.hsl-3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.worker.js
index 0b2a065..3c3a5398 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html
index 3577666a..5b49863 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.hsl-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.hsl-4</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.worker.js
index f174347..13a7f67 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html
index a3b90708..e7b19bd 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.hsl-5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.hsl-5</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.worker.js
index 331ec07..faafa6c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html
index 9e80a62..058f777a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.hsl-6</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.hsl-6</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.worker.js
index 3cad84f..6ef178f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html
index 0904209..073bd73 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.hsla-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.hsla-1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.worker.js
index 011fbe7..9f8c105 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html
index 6e89e9d..0a3a777 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.hsla-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.hsla-2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.worker.js
index 9ac75b7..f873d14 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html
index 82ca843..f35b50f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.hsla-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.hsla-3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.worker.js
index 5f5126ef..85b9415 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html
index 26bbd26..a49efb34 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.name-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.name-1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.worker.js
index 70b2440..2e99264f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html
index d112d5d6..31c3b3b2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.name-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.name-2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.worker.js
index 1aa0f528..d479378e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html
index 07a0f6c..7d6d4cc7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.name-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.name-3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.worker.js
index abc579a..6c43ce6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html
index a69c30e..3fa81d55 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.name-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.name-4</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.worker.js
index 7b2f119d..2c5a996 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html
index 3f3ae631..196b1540b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.name-5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.name-5</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.worker.js
index a3f9cf14..0374288d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html
index 3ba241bc9..61f61e1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.rgb-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.rgb-1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.worker.js
index c1ef405..2b6b77f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html
index 061784f..888cd24 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.rgb-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.rgb-2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.worker.js
index e2c287eb..77793f2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html
index 1641667..6f23cd3d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.rgb-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.rgb-3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.worker.js
index bdb9b6d..0f384ff 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html
index bc40569..b5b35153 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.rgba-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.rgba-1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.worker.js
index 290f175..8834353 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html
index eded526..a406ace 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.rgba-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.rgba-2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.worker.js
index 038b383..078172930 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html
index dec7ace..b7bcd45 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.rgba-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.rgba-3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.worker.js
index 9bdf773..20aa654 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html
index 8b0aee5..638159ff 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.rgba-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.rgba-4</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.worker.js
index 0db44c3..d99ab57 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html
index a3d9790..3599f0a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.invalid.rgba-5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.invalid.rgba-5</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.worker.js
index e8317ec..2b81e8e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html
index 5c48aee..9df6a9b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.rgb-clamp-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.rgb-clamp-1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.worker.js
index b98c41c..2bfd4931 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">Assumes colours are clamped to [0,255].
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html
index 3db018c5..7e8864c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.rgb-clamp-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.rgb-clamp-2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.worker.js
index de7f906..d2b25f5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">Assumes colours are clamped to [0,255].
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html
index bde2348..9205923 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.rgb-clamp-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.rgb-clamp-3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.worker.js
index a594da0..50b9eca 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">Assumes colours are clamped to [0,255].
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html
index 3668053..7b79a5a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.rgb-clamp-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.rgb-clamp-4</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.worker.js
index 0dcbcbc..4c6bc4b2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">Assumes colours are clamped to [0,255].
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html
index 04913c4..4f1e0804 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.rgb-clamp-5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.rgb-clamp-5</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.worker.js
index 21ebeff..1c32ae4f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">Assumes colours are clamped to [0,255].
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html
index 31586c65a..7684a185 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.rgb-eof</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.rgb-eof</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.worker.js
index ead4ddd..d82c64fa 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html
index 2821ff2c..256992b6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.rgb-num</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.rgb-num</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.worker.js
index 333fe0f..b7f79a2d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html
index 0fd927b..c5032d4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.rgb-percent</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.rgb-percent</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.worker.js
index 67513fb5..f3ff4ec 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">CSS3 Color says "The integer value 255 corresponds to 100%". (In particular, it is not 254...)
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html
index 6e40324..592f798 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.rgba-clamp-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.rgba-clamp-1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.worker.js
index 561f2322..06df1fe 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html
index c65b440..433559e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.rgba-clamp-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.rgba-clamp-2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.worker.js
index 7d7b27c..7fbe239 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html
index 5f05f788..6785eeb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.rgba-eof</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.rgba-eof</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.worker.js
index 8fa8b51e..b35e61e8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html
index 8b75a3f..06e7676 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.rgba-num-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.rgba-num-1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.worker.js
index 2dbb9285..c764baa 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html
index c843b9a..c30605d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.rgba-num-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.rgba-num-2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.worker.js
index 3d8a26a..a100ab77 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html
index ccd02ae..74fa502c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.rgba-percent</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.rgba-percent</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.worker.js
index 0952166..ff97e30 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html
index ba577fd..1894270 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.rgba-solid-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.rgba-solid-1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.worker.js
index 585e851..1330db9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html
index 6fb884c1..fb7e621 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.rgba-solid-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.rgba-solid-2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.worker.js
index 6126540..58e7f4c7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html
index e48a586f..81825a3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.rgba-solid-3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.rgba-solid-3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.worker.js
index db4516a..dfda777 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html
index 5a48b8d1..a300e3a3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.rgba-solid-4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.rgba-solid-4</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.worker.js
index 181cc45b..3d2fa4c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html
index e9c9726..e9d8a1c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.svg-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.svg-1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.worker.js
index 71bcb605f..47a95b9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html
index dcfec31..04742747 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.svg-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.svg-2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.worker.js
index 0ac80544..e60b819 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.system.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.system.html
index ce35a74..16cc536 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.system.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.system.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.system</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.system</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.system.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.system.worker.js
index ab5907d..2d6e6bd 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.system.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.system.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html
index 3e7da89..7b12e225 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.transparent-1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.transparent-1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.worker.js
index 10bb53b..6f50f04 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html
index 9dd87625..8b857b9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.fillStyle.parse.transparent-2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.fillStyle.parse.transparent-2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.worker.js
index 0dd0784..d0e6e3f7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.empty.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.empty.html
index 37205580..f6d79ea 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.empty.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.empty.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.empty</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.empty</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.empty.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.empty.worker.js
index 146520e..890171c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.empty.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.empty.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html
index 696c6e6..f5af860 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.interpolate.alpha</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.interpolate.alpha</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.alpha.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.alpha.worker.js
index fe53db22..32d429f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.alpha.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.alpha.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colour.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colour.html
index a924677..7cb6d0e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colour.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colour.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.interpolate.colour</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.interpolate.colour</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colour.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colour.worker.js
index 87cea53d..6700998 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colour.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colour.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html
index 19c4e47..e091155 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.interpolate.colouralpha</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.interpolate.colouralpha</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.worker.js
index 34c2d037..0bd86f7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html
index 7f5cd7b..2056b87b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.interpolate.multiple</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.interpolate.multiple</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.multiple.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.multiple.worker.js
index 33bdf88..e7a08578 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.multiple.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.multiple.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.outside.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.outside.html
index f0fd9af..cc1aaeff 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.outside.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.outside.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.interpolate.outside</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.interpolate.outside</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.outside.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.outside.worker.js
index 9216d0f..564ca3c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.outside.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.outside.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html
index 945873e..aa4da516 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.interpolate.overlap</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.interpolate.overlap</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap.worker.js
index bf5a5a5..4435de7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html
index f20904e..7151fcd1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.interpolate.overlap2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.interpolate.overlap2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.worker.js
index 42b8473..2463b26 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.solid.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.solid.html
index c585bb0..1c1bd39 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.solid.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.solid.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.interpolate.solid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.interpolate.solid</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.solid.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.solid.worker.js
index 4b50008..de746ab 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.solid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.solid.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html
index ffdb32de87..7415e78 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.interpolate.vertical</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.interpolate.vertical</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.vertical.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.vertical.worker.js
index 8212ad8..01f9a11 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.vertical.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.vertical.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html
index 7c8eea80..fc2ab8f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.interpolate.zerosize.fill</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.interpolate.zerosize.fill</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.worker.js
index 4dbe1462..2f65344 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html
index 5eb37c8..162b22e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.interpolate.zerosize.fillRect</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.interpolate.zerosize.fillRect</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.worker.js
index 935e16a..6213177 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html
index 7215a955..5283eb6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.interpolate.zerosize.stroke</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.interpolate.zerosize.stroke</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.worker.js
index cda4dc4..269ec5ba 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html
index 21c94ee..e5d04f5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.interpolate.zerosize.strokeRect</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.interpolate.zerosize.strokeRect</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.worker.js
index 78b8e8f..bd4e780c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.nonfinite.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.nonfinite.html
index 47b1ee5..162dc60 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.nonfinite.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.linear.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.linear.nonfinite</h1>
 <p class="desc">createLinearGradient() throws TypeError if arguments are not finite</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.nonfinite.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.nonfinite.worker.js
index 502921f..248043d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.nonfinite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.nonfinite.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("createLinearGradient() throws TypeError if arguments are not finite");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.1.html
index 43b17d6..350d08c9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.linear.transform.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.linear.transform.1</h1>
 <p class="desc">Linear gradient coordinates are relative to the coordinate space at the time of filling</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.1.worker.js
index f775d85..7154253 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Linear gradient coordinates are relative to the coordinate space at the time of filling");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.2.html
index 44c95e7c0..c1c4249 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.linear.transform.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.linear.transform.2</h1>
 <p class="desc">Linear gradient coordinates are relative to the coordinate space at the time of filling</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.2.worker.js
index bca8df0a..016dc6d6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Linear gradient coordinates are relative to the coordinate space at the time of filling");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.3.html
index 963b7ea..1938cf4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.linear.transform.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.linear.transform.3</h1>
 <p class="desc">Linear gradient transforms do not experience broken caching effects</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.3.worker.js
index 6acfd00..69a97f97 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Linear gradient transforms do not experience broken caching effects");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.compare.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.compare.html
index 1aec24c6..ba4df237 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.compare.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.compare.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.object.compare</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.object.compare</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.compare.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.compare.worker.js
index affd6438..937e189 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.compare.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.compare.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html
index eeb62426..9a2fe69 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.object.crosscanvas</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.object.crosscanvas</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.crosscanvas.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.crosscanvas.worker.js
index 9699977..e111aa9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.crosscanvas.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.crosscanvas.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidcolour.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidcolour.html
index 795673b..63990930 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidcolour.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidcolour.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.object.invalidcolour</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.object.invalidcolour</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidcolour.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidcolour.worker.js
index 1fa62f3..2483e3f86 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidcolour.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidcolour.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidoffset.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidoffset.html
index 2dd87fb..813c46c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidoffset.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidoffset.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.object.invalidoffset</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.object.invalidoffset</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidoffset.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidoffset.worker.js
index 28f7111..366cd79 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidoffset.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidoffset.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.update.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.update.html
index c7f36a3..21835db 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.update.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.update.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.object.update</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.object.update</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.update.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.update.worker.js
index 028d9342..61439fb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.update.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.update.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html
index 6819e160..c6f7e4a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.radial.cone.behind</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.radial.cone.behind</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.behind.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.behind.worker.js
index 397ff4e..ebd4517 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.behind.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.behind.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html
index 0c81b81..57de6fc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.radial.cone.beside</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.radial.cone.beside</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.beside.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.beside.worker.js
index 145e511..5aeb58fb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.beside.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.beside.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html
index 5145775..e7e1957 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.radial.cone.bottom</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.radial.cone.bottom</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.worker.js
index daa24b0..9290614 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html
index 8f6c3025..70a4dd0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.radial.cone.cylinder</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.radial.cone.cylinder</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.worker.js
index 85f2495..340b87c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.front.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.front.html
index c5b46be..fd6f2d66 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.front.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.front.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.radial.cone.front</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.radial.cone.front</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.front.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.front.worker.js
index a7758e9..30addca9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.front.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.front.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html
index a702557..84c9580 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.radial.cone.shape1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.radial.cone.shape1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.worker.js
index 41323f6..7e5feae6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html
index f4f8bb5..45695eb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.radial.cone.shape2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.radial.cone.shape2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.worker.js
index 4a0b9ad..90734bc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.top.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.top.html
index 36f439ea..f6dfa64 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.top.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.top.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.radial.cone.top</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.radial.cone.top</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.top.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.top.worker.js
index 4275e56..6221b4f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.top.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.top.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.equal.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.equal.html
index 9bbf489..9ca390a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.equal.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.equal.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.radial.equal</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.radial.equal</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.equal.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.equal.worker.js
index f5224a32..d311357 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.equal.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.equal.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside1.html
index 2cdcd88..ea27c0df 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.radial.inside1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.radial.inside1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside1.worker.js
index 9a3f95a..c7eccfd 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside2.html
index 0a79dbef..16d3c965 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.radial.inside2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.radial.inside2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside2.worker.js
index 4715d4e2..8f2d100 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside3.html
index 25d276ed..ea5863e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.radial.inside3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.radial.inside3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside3.worker.js
index b1f5530..ae236d34 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.negative.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.negative.html
index 7de3114..70b5d19b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.negative.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.negative.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.radial.negative</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.radial.negative</h1>
 <p class="desc">createRadialGradient() throws INDEX_SIZE_ERR if either radius is negative</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.negative.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.negative.worker.js
index c6a98ca..7a66246 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.negative.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.negative.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("createRadialGradient() throws INDEX_SIZE_ERR if either radius is negative");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.nonfinite.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.nonfinite.html
index 22dbe27..026a4eb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.nonfinite.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.radial.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.radial.nonfinite</h1>
 <p class="desc">createRadialGradient() throws TypeError if arguments are not finite</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.nonfinite.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.nonfinite.worker.js
index bbd2e95..09458c6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.nonfinite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.nonfinite.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("createRadialGradient() throws TypeError if arguments are not finite");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside1.html
index ba0676b..c1b8a78 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.radial.outside1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.radial.outside1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside1.worker.js
index 58280a6e..658438fd 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside2.html
index 24c3a73..086bce9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.radial.outside2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.radial.outside2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside2.worker.js
index 7f1b101..11d7cdd 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside3.html
index 42589dd..0884d5e2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.radial.outside3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.radial.outside3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside3.worker.js
index 3c41392..2bc5d12 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch1.html
index 7fc34302..7af332c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.radial.touch1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.radial.touch1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch1.worker.js
index d176c01..9732601 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch2.html
index 1c8597d..3fea8066 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.radial.touch2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.radial.touch2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch2.worker.js
index 2ffbc75..b45aa46 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch3.html
index 1a8a81e..86caf07a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.radial.touch3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.radial.touch3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch3.worker.js
index 4ea9b865..92e7f6f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.1.html
index a3b466f..d0bf2df 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.radial.transform.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.radial.transform.1</h1>
 <p class="desc">Radial gradient coordinates are relative to the coordinate space at the time of filling</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.1.worker.js
index 36834918..5bed45d5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Radial gradient coordinates are relative to the coordinate space at the time of filling");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.2.html
index 2ea3d2a..174d248 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.radial.transform.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.radial.transform.2</h1>
 <p class="desc">Radial gradient coordinates are relative to the coordinate space at the time of filling</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.2.worker.js
index 1519c33..83ac31c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Radial gradient coordinates are relative to the coordinate space at the time of filling");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.3.html
index eb3f7ba..54677993 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.gradient.radial.transform.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.gradient.radial.transform.3</h1>
 <p class="desc">Radial gradient transforms do not experience broken caching effects</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.3.worker.js
index 5239376..6544604 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Radial gradient transforms do not experience broken caching effects");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.canvas.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.canvas.html
index b3be4e9..b0a4e67 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.canvas.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.canvas.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.basic.canvas</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.basic.canvas</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.canvas.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.canvas.worker.js
index a9969f65..86d0a05 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.canvas.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.canvas.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.image.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.image.html
index 730fb02..4dd6fb4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.image.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.image.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.basic.image</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.basic.image</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.image.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.image.worker.js
index 2d4dfd8..fe6af5d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.image.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.image.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.nocontext.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.nocontext.html
index fcaecbc..efe2345a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.nocontext.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.nocontext.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.basic.nocontext</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.basic.nocontext</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.nocontext.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.nocontext.worker.js
index a5dacef..d35d186 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.nocontext.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.nocontext.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.html
index 4652c40..9a91555 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.basic.zerocanvas</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.basic.zerocanvas</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.worker.js
index 326ce53..bd8b9b8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.crosscanvas.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.crosscanvas.html
index f7d0c5f..bcf987f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.crosscanvas.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.crosscanvas.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.crosscanvas</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.crosscanvas</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.crosscanvas.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.crosscanvas.worker.js
index 6d3ba31..56f5d3d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.crosscanvas.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.crosscanvas.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.null.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.null.html
index 30fd65a..22096257 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.null.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.null.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.image.null</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.image.null</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.null.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.null.worker.js
index 454e619a..a3186103 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.null.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.null.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.string.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.string.html
index bcc4ad0..17a39e5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.string.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.string.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.image.string</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.image.string</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.string.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.string.worker.js
index 6d732e7..a90aed8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.string.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.string.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.undefined.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.undefined.html
index f0347ea..5fbae27 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.undefined.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.undefined.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.image.undefined</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.image.undefined</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.undefined.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.undefined.worker.js
index 8ed51b6..edd8559 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.undefined.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.undefined.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas1.html
index 23c7e78..52a3f25c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.modify.canvas1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.modify.canvas1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas1.worker.js
index 6ca4d6d..81d8635 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas2.html
index f7488fcc..6311a22d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.modify.canvas2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.modify.canvas2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas2.worker.js
index a872bb8..b7aa138 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html
index 925e5cb..7fbac727 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.paint.norepeat.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.paint.norepeat.basic</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.worker.js
index 9316317d..318278b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html
index 2b81da1..764ffb8f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.paint.norepeat.coord1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.paint.norepeat.coord1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.worker.js
index 4210eaa..c43d90c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html
index bdc3ab95..ed66d9d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.paint.norepeat.coord2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.paint.norepeat.coord2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.worker.js
index 226db04e..5246a21a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html
index 8c027af..64fba24 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.paint.norepeat.coord3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.paint.norepeat.coord3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.worker.js
index da93c53..ab2d34dc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html
index 916272fc..b118ae2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.paint.norepeat.outside</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.paint.norepeat.outside</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.worker.js
index d8b5900..ee4e62d7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html
index 42576fa..66d01057 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.paint.orientation.canvas</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.paint.orientation.canvas</h1>
 <p class="desc">Canvas patterns do not get flipped when painted</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.worker.js
index 3a7b8521..bb51634 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Canvas patterns do not get flipped when painted");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html
index 0b9bda31..326e6ae 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.paint.orientation.image</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.paint.orientation.image</h1>
 <p class="desc">Image patterns do not get flipped when painted</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.image.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.image.worker.js
index a1fa022..62ec6d05 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.image.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.image.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Image patterns do not get flipped when painted");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html
index e2dd06a..13cb9d0c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.paint.repeat.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.paint.repeat.basic</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.worker.js
index 062c595..4ccd011 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html
index b7d9a57..15c9d0ef 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.paint.repeat.coord1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.paint.repeat.coord1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.worker.js
index 9f442a8d..ab1e2f1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html
index ff5b67d..7cbecfb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.paint.repeat.coord2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.paint.repeat.coord2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.worker.js
index 5e2f121..c6c9ade 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html
index 02c45fd5..e8e61d9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.paint.repeat.coord3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.paint.repeat.coord3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.worker.js
index 622bcec..c5049b8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html
index 6489e235..a2898cd2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.paint.repeat.outside</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.paint.repeat.outside</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.worker.js
index 246bccec..65d898b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html
index 13e7b8d3..e414aa6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.paint.repeatx.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.paint.repeatx.basic</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.worker.js
index aba0118..19b9c27 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html
index 1fc2e52..fd94c1f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.paint.repeatx.coord1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.paint.repeatx.coord1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.worker.js
index e4777e0..eb63bc14 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html
index c6ec122..ffeccd2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.paint.repeatx.outside</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.paint.repeatx.outside</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.worker.js
index fc8a4a0..af445ad 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html
index f678f1c2..b0dc7df 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.paint.repeaty.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.paint.repeaty.basic</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.worker.js
index 40dfda9..d1f8b5f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html
index 6d3e343..a4f58fb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.paint.repeaty.coord1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.paint.repeaty.coord1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.worker.js
index 108c462..359d079 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html
index 5790bda..fd8c2be1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.paint.repeaty.outside</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.paint.repeaty.outside</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.worker.js
index 4958674..7f73ae2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.case.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.case.html
index 0b082df..59763aa 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.case.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.case.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.repeat.case</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.repeat.case</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.case.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.case.worker.js
index 0130fe3..44838d9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.case.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.case.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.empty.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.empty.html
index 009736cc..65722112 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.empty.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.empty.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.repeat.empty</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.repeat.empty</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.empty.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.empty.worker.js
index 8042a3c..7a387f2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.empty.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.empty.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.null.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.null.html
index 7e78ae01..e36a278 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.null.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.null.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.repeat.null</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.repeat.null</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.null.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.null.worker.js
index ee623df..9c96eaee 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.null.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.null.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.html
index 7f85f3e..6d5db66 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.repeat.nullsuffix</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.repeat.nullsuffix</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.worker.js
index c6ed141..18953ea1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.undefined.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.undefined.html
index 298ba997..656f93f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.undefined.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.undefined.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.repeat.undefined</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.repeat.undefined</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.undefined.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.undefined.worker.js
index 3a275b8..3cd4d8d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.undefined.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.undefined.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.html
index 79e379e..ac3a258 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.repeat.unrecognised</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.repeat.unrecognised</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.worker.js
index 08c076b6..1481c83 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.html
index c8f4ccf..3004efe 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.pattern.repeat.unrecognisednull</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.pattern.repeat.unrecognisednull</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.worker.js
index fc4a45510..c55c621 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.strokeStyle.default.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.strokeStyle.default.html
index 06976858..1c350ba 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.strokeStyle.default.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.strokeStyle.default.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.strokeStyle.default</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.strokeStyle.default</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.strokeStyle.default.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.strokeStyle.default.worker.js
index 498f2f9..803c7002 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.strokeStyle.default.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/fill-and-stroke-styles/2d.strokeStyle.default.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.butt.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.butt.html
index 21ca86b2..eb85e10 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.butt.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.butt.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.cap.butt</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.cap.butt</h1>
 <p class="desc">lineCap 'butt' is rendered correctly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.butt.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.butt.worker.js
index b9d503c..82bf9ab 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.butt.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.butt.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("lineCap 'butt' is rendered correctly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.closed.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.closed.html
index 66b0853..4124a7e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.closed.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.closed.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.cap.closed</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.cap.closed</h1>
 <p class="desc">Line caps are not drawn at the corners of an unclosed rectangle</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.closed.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.closed.worker.js
index f5237d6..358aacd 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.closed.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.closed.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Line caps are not drawn at the corners of an unclosed rectangle");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.invalid.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.invalid.html
index cbf7ceb..5ccad43 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.invalid.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.cap.invalid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.cap.invalid</h1>
 <p class="desc">Setting lineCap to invalid values is ignored</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.invalid.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.invalid.worker.js
index 4c3495f..274ef70 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.invalid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.invalid.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Setting lineCap to invalid values is ignored");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.open.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.open.html
index 8b7a599..fdd7c69 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.open.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.open.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.cap.open</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.cap.open</h1>
 <p class="desc">Line caps are drawn at the corners of an unclosed rectangle</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.open.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.open.worker.js
index b67dc57..19a4375 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.open.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.open.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Line caps are drawn at the corners of an unclosed rectangle");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.round.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.round.html
index fb383cb..97ac28e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.round.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.round.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.cap.round</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.cap.round</h1>
 <p class="desc">lineCap 'round' is rendered correctly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.round.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.round.worker.js
index 7592393b3..dda047c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.round.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.round.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("lineCap 'round' is rendered correctly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.square.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.square.html
index ef9646e..6b3b28194 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.square.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.square.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.cap.square</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.cap.square</h1>
 <p class="desc">lineCap 'square' is rendered correctly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.square.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.square.worker.js
index 6e07a80..65031f9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.square.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.square.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("lineCap 'square' is rendered correctly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.valid.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.valid.html
index 16a4f48d2..9e56b368 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.valid.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.valid.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.cap.valid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.cap.valid</h1>
 <p class="desc">Setting lineCap to valid values works</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.valid.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.valid.worker.js
index b364f3d..3fb10437 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.valid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cap.valid.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Setting lineCap to valid values works");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cross.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cross.html
index 31fc3f3..264f309e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cross.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cross.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.cross</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.cross</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cross.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cross.worker.js
index b85231e8..599edc4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cross.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.cross.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.defaults.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.defaults.html
index e9fc509..6eaebbc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.defaults.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.defaults.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.defaults</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.defaults</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.defaults.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.defaults.worker.js
index 672bee54..ce8f4bb7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.defaults.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.defaults.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.bevel.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.bevel.html
index c721d29b..ebb24aeb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.bevel.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.bevel.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.join.bevel</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.join.bevel</h1>
 <p class="desc">lineJoin 'bevel' is rendered correctly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.bevel.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.bevel.worker.js
index 94d9efb..ee1e7f3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.bevel.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.bevel.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("lineJoin 'bevel' is rendered correctly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.closed.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.closed.html
index 874ef833..9c79d92 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.closed.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.closed.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.join.closed</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.join.closed</h1>
 <p class="desc">Line joins are drawn at the corner of a closed rectangle</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.closed.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.closed.worker.js
index 195f500..299527e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.closed.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.closed.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Line joins are drawn at the corner of a closed rectangle");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.invalid.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.invalid.html
index e153368..6d838d74 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.invalid.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.join.invalid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.join.invalid</h1>
 <p class="desc">Setting lineJoin to invalid values is ignored</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.invalid.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.invalid.worker.js
index 1f3fb4a..7b55609 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.invalid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.invalid.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Setting lineJoin to invalid values is ignored");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.miter.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.miter.html
index 9a463ed..12575cdf 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.miter.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.miter.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.join.miter</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.join.miter</h1>
 <p class="desc">lineJoin 'miter' is rendered correctly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.miter.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.miter.worker.js
index 2d432fca..54148141 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.miter.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.miter.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("lineJoin 'miter' is rendered correctly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.open.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.open.html
index 83b55b5..83c3c8d5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.open.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.open.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.join.open</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.join.open</h1>
 <p class="desc">Line joins are not drawn at the corner of an unclosed rectangle</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.open.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.open.worker.js
index f846631..88c3453c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.open.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.open.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Line joins are not drawn at the corner of an unclosed rectangle");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.parallel.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.parallel.html
index 52fa398..e84246b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.parallel.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.parallel.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.join.parallel</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.join.parallel</h1>
 <p class="desc">Line joins are drawn at 180-degree joins</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.parallel.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.parallel.worker.js
index e13b32d..ef79c18 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.parallel.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.parallel.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Line joins are drawn at 180-degree joins");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.round.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.round.html
index 26ce2d9..5a4085c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.round.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.round.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.join.round</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.join.round</h1>
 <p class="desc">lineJoin 'round' is rendered correctly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.round.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.round.worker.js
index 0c51663..e7e8f5b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.round.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.round.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("lineJoin 'round' is rendered correctly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.valid.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.valid.html
index 16ce035..28b61341 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.valid.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.valid.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.join.valid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.join.valid</h1>
 <p class="desc">Setting lineJoin to valid values works</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.valid.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.valid.worker.js
index 161803b8..88c61f0b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.valid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.join.valid.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Setting lineJoin to valid values works");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.acute.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.acute.html
index 62de5322..a4574585 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.acute.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.acute.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.miter.acute</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.miter.acute</h1>
 <p class="desc">Miter joins are drawn correctly with acute angles</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.acute.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.acute.worker.js
index 63f909e..db33294 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.acute.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.acute.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Miter joins are drawn correctly with acute angles");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.exceeded.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.exceeded.html
index f15309b..c3f94aa13 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.exceeded.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.exceeded.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.miter.exceeded</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.miter.exceeded</h1>
 <p class="desc">Miter joins are not drawn when the miter limit is exceeded</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.exceeded.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.exceeded.worker.js
index 02b1653..b8c4d73 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.exceeded.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.exceeded.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Miter joins are not drawn when the miter limit is exceeded");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.invalid.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.invalid.html
index e8d8863..727ed9bf46 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.invalid.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.miter.invalid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.miter.invalid</h1>
 <p class="desc">Setting miterLimit to invalid values is ignored</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.invalid.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.invalid.worker.js
index 1628f78..60a6218 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.invalid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.invalid.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Setting miterLimit to invalid values is ignored");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.lineedge.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.lineedge.html
index d6f8a60..8a5d065 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.lineedge.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.lineedge.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.miter.lineedge</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.miter.lineedge</h1>
 <p class="desc">Miter joins are not drawn when the miter limit is exceeded at the corners of a zero-height rectangle</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.lineedge.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.lineedge.worker.js
index a0d1aaa..ce7c35d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.lineedge.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.lineedge.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Miter joins are not drawn when the miter limit is exceeded at the corners of a zero-height rectangle");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.obtuse.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.obtuse.html
index 2e87a873..8205c9d1b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.obtuse.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.obtuse.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.miter.obtuse</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.miter.obtuse</h1>
 <p class="desc">Miter joins are drawn correctly with obtuse angles</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.obtuse.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.obtuse.worker.js
index 5796352..7aeabe58 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.obtuse.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.obtuse.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Miter joins are drawn correctly with obtuse angles");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.rightangle.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.rightangle.html
index a7121f5..25626858 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.rightangle.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.rightangle.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.miter.rightangle</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.miter.rightangle</h1>
 <p class="desc">Miter joins are not drawn when the miter limit is exceeded, on exact right angles</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.rightangle.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.rightangle.worker.js
index 717d7f23..0e532f6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.rightangle.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.rightangle.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Miter joins are not drawn when the miter limit is exceeded, on exact right angles");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.valid.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.valid.html
index 8cd86b84..f814fa3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.valid.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.valid.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.miter.valid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.miter.valid</h1>
 <p class="desc">Setting miterLimit to valid values works</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.valid.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.valid.worker.js
index 60af195..b6cb6ef 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.valid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.valid.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Setting miterLimit to valid values works");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.within.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.within.html
index 12f10b2..ec81281 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.within.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.within.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.miter.within</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.miter.within</h1>
 <p class="desc">Miter joins are drawn when the miter limit is not quite exceeded</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.within.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.within.worker.js
index c2e9463..811b042a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.within.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.miter.within.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Miter joins are drawn when the miter limit is not quite exceeded");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.union.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.union.html
index 626a1a5..b7a725c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.union.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.union.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.union</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.union</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.union.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.union.worker.js
index e2c6668..104c04c3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.union.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.union.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.basic.html
index 1dd1bbf..6a733304 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.width.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.width.basic</h1>
 <p class="desc">lineWidth determines the width of line strokes</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.basic.worker.js
index e1e8a05..766da439 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("lineWidth determines the width of line strokes");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.invalid.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.invalid.html
index 2f72c8d..f2160fa 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.invalid.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.width.invalid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.width.invalid</h1>
 <p class="desc">Setting lineWidth to invalid values is ignored</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.invalid.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.invalid.worker.js
index 2c3be82..3789b20 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.invalid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.invalid.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Setting lineWidth to invalid values is ignored");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.scaledefault.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.scaledefault.html
index bb4607f..0767c856 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.scaledefault.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.scaledefault.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.width.scaledefault</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.width.scaledefault</h1>
 <p class="desc">Default lineWidth strokes are affected by scale transformations</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.scaledefault.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.scaledefault.worker.js
index 7fedaed..a2891a7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.scaledefault.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.scaledefault.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Default lineWidth strokes are affected by scale transformations");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.transformed.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.transformed.html
index 72370f5..4553f4b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.transformed.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.transformed.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.width.transformed</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.width.transformed</h1>
 <p class="desc">Line stroke widths are affected by scale transformations</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.transformed.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.transformed.worker.js
index 7bd4efb..72e13e25 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.transformed.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.transformed.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Line stroke widths are affected by scale transformations");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.valid.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.valid.html
index 6cfb199..748aaaa 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.valid.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.valid.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.line.width.valid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.line.width.valid</h1>
 <p class="desc">Setting lineWidth to valid values works</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.valid.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.valid.worker.js
index 8e7498f..4a8680db 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.valid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/line-styles/2d.line.width.valid.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Setting lineWidth to valid values works");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.1.html
index 1a4cfe9..56c147b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.angle.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.angle.1</h1>
 <p class="desc">arc() draws pi/2 .. -pi anticlockwise correctly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.1.worker.js
index 18536c9..a0ac90e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arc() draws pi/2 .. -pi anticlockwise correctly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.2.html
index ac1a5a6..3c108aa 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.angle.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.angle.2</h1>
 <p class="desc">arc() draws -3pi/2 .. -pi anticlockwise correctly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.2.worker.js
index 7a7def97..eff7e0f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arc() draws -3pi/2 .. -pi anticlockwise correctly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.3.html
index 0684024..31f1c1cb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.angle.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.angle.3</h1>
 <p class="desc">arc() wraps angles mod 2pi when anticlockwise and end > start+2pi</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.3.worker.js
index 4c4bfa8..1a63540 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arc() wraps angles mod 2pi when anticlockwise and end > start+2pi");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.4.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.4.html
index f47669c..052c121 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.4.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.4.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.angle.4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.angle.4</h1>
 <p class="desc">arc() draws a full circle when clockwise and end > start+2pi</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.4.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.4.worker.js
index 675808c..1d5b3ca 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.4.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arc() draws a full circle when clockwise and end > start+2pi");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.5.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.5.html
index 9020ff1..c8c9a8ea 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.5.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.5.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.angle.5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.angle.5</h1>
 <p class="desc">arc() wraps angles mod 2pi when clockwise and start > end+2pi</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.5.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.5.worker.js
index ba5c521..caed42b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.5.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arc() wraps angles mod 2pi when clockwise and start > end+2pi");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.6.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.6.html
index 9a9d9dd..52f37a9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.6.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.6.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.angle.6</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.angle.6</h1>
 <p class="desc">arc() draws a full circle when anticlockwise and start > end+2pi</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.6.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.6.worker.js
index 7201b69..8e8f6af 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.6.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.angle.6.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arc() draws a full circle when anticlockwise and start > end+2pi");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.default.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.default.html
index 077fe88..ec5f633 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.default.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.default.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.default</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.default</h1>
 <p class="desc">arc() with missing last argument defaults to clockwise</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.default.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.default.worker.js
index f6db49f0..48cb110 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.default.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.default.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arc() with missing last argument defaults to clockwise");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.empty.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.empty.html
index ec669b0..1974a0a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.empty.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.empty.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.empty</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.empty</h1>
 <p class="desc">arc() with an empty path does not draw a straight line to the start point</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.empty.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.empty.worker.js
index f78e4a9..70a8aa22 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.empty.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.empty.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arc() with an empty path does not draw a straight line to the start point");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.end.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.end.html
index 649c304..6d4e8de 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.end.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.end.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.end</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.end</h1>
 <p class="desc">arc() adds the end point of the arc to the subpath</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.end.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.end.worker.js
index 3782a6d82..47c6e4f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.end.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.end.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arc() adds the end point of the arc to the subpath");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.negative.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.negative.html
index c46d56c..5510124 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.negative.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.negative.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.negative</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.negative</h1>
 <p class="desc">arc() with negative radius throws INDEX_SIZE_ERR</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.negative.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.negative.worker.js
index e389aaf..7247a42 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.negative.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.negative.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arc() with negative radius throws INDEX_SIZE_ERR");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.nonempty.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.nonempty.html
index 75c70da4..c6acfa9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.nonempty.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.nonempty.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.nonempty</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.nonempty</h1>
 <p class="desc">arc() with a non-empty path does draw a straight line to the start point</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.nonempty.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.nonempty.worker.js
index 4446654d..64bda0d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.nonempty.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.nonempty.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arc() with a non-empty path does draw a straight line to the start point");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.nonfinite.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.nonfinite.html
index e6743e4..2ed6dce 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.nonfinite.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.nonfinite</h1>
 <p class="desc">arc() with Infinity/NaN is ignored</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.nonfinite.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.nonfinite.worker.js
index 6a81cfec..50bb057f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.nonfinite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.nonfinite.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arc() with Infinity/NaN is ignored");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.scale.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.scale.1.html
index d6dd793..e46c7fa 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.scale.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.scale.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.scale.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.scale.1</h1>
 <p class="desc">Non-uniformly scaled arcs are the right shape</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.scale.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.scale.1.worker.js
index f35ba45..d2f67d5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.scale.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.scale.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Non-uniformly scaled arcs are the right shape");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.scale.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.scale.2.html
index c3dfddef..57eaffd 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.scale.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.scale.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.scale.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.scale.2</h1>
 <p class="desc">Highly scaled arcs are the right shape</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.scale.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.scale.2.worker.js
index 4ace021..f99db07 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.scale.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.scale.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Highly scaled arcs are the right shape");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.selfintersect.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.selfintersect.1.html
index fbab5d1..fa22b54e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.selfintersect.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.selfintersect.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.selfintersect.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.selfintersect.1</h1>
 <p class="desc">arc() with lineWidth > 2*radius is drawn sensibly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.selfintersect.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.selfintersect.1.worker.js
index 3148354..c252201 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.selfintersect.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.selfintersect.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arc() with lineWidth > 2*radius is drawn sensibly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.selfintersect.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.selfintersect.2.html
index e96b8f2..4f784d0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.selfintersect.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.selfintersect.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.selfintersect.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.selfintersect.2</h1>
 <p class="desc">arc() with lineWidth > 2*radius is drawn sensibly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.selfintersect.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.selfintersect.2.worker.js
index bf29cd1..ece76ae 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.selfintersect.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.selfintersect.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arc() with lineWidth > 2*radius is drawn sensibly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.1.html
index 8be62a1..0e09320 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.shape.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.shape.1</h1>
 <p class="desc">arc() from 0 to pi does not draw anything in the wrong half</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.1.worker.js
index 3be6bc6..b8cce2e8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arc() from 0 to pi does not draw anything in the wrong half");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.2.html
index d9b53d9..65f0828 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.shape.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.shape.2</h1>
 <p class="desc">arc() from 0 to pi draws stuff in the right half</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.2.worker.js
index 98e7b1d..5710112 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arc() from 0 to pi draws stuff in the right half");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.3.html
index 03b44d7..39964ad 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.shape.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.shape.3</h1>
 <p class="desc">arc() from 0 to -pi/2 does not draw anything in the wrong quadrant</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.3.worker.js
index 1f09f586..865d323 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arc() from 0 to -pi/2 does not draw anything in the wrong quadrant");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.4.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.4.html
index 68767de..4f4ad6445 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.4.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.4.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.shape.4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.shape.4</h1>
 <p class="desc">arc() from 0 to -pi/2 draws stuff in the right quadrant</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.4.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.4.worker.js
index d299c5b..4cd21988 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.4.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arc() from 0 to -pi/2 draws stuff in the right quadrant");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.5.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.5.html
index e6a2aadb..e049871 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.5.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.5.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.shape.5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.shape.5</h1>
 <p class="desc">arc() from 0 to 5pi does not draw crazy things</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.5.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.5.worker.js
index 21a0ca3..e51809bf 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.shape.5.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arc() from 0 to 5pi does not draw crazy things");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.1.html
index 5595e3284..d9ee756 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.twopie.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.twopie.1</h1>
 <p class="desc">arc() draws nothing when end = start + 2pi-e and anticlockwise</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.1.worker.js
index 5525571..0d3d5e3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arc() draws nothing when end = start + 2pi-e and anticlockwise");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.2.html
index 4ea42b2..ca156fc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.twopie.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.twopie.2</h1>
 <p class="desc">arc() draws a full circle when end = start + 2pi-e and clockwise</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.2.worker.js
index d9f41d8..219a4e5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arc() draws a full circle when end = start + 2pi-e and clockwise");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.3.html
index 01bae07..19fc941 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.twopie.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.twopie.3</h1>
 <p class="desc">arc() draws a full circle when end = start + 2pi+e and anticlockwise</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.3.worker.js
index 41c400e7..7eb04e6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arc() draws a full circle when end = start + 2pi+e and anticlockwise");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.4.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.4.html
index 9906377..9e5bd75 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.4.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.4.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.twopie.4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.twopie.4</h1>
 <p class="desc">arc() draws nothing when end = start + 2pi+e and clockwise</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.4.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.4.worker.js
index 241071f..180973aa 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.twopie.4.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arc() draws nothing when end = start + 2pi+e and clockwise");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.zero.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.zero.1.html
index 60b73e0..38f5634 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.zero.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.zero.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.zero.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.zero.1</h1>
 <p class="desc">arc() draws nothing when startAngle = endAngle and anticlockwise</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.zero.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.zero.1.worker.js
index 91f15d4..1e99bfd6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.zero.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.zero.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arc() draws nothing when startAngle = endAngle and anticlockwise");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.zero.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.zero.2.html
index 306e5312..b5bc72d9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.zero.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.zero.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.zero.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.zero.2</h1>
 <p class="desc">arc() draws nothing when startAngle = endAngle and clockwise</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.zero.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.zero.2.worker.js
index 4238b7d..21b1c9b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.zero.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.zero.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arc() draws nothing when startAngle = endAngle and clockwise");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.zeroradius.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.zeroradius.html
index ed77c3b..99ea73b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.zeroradius.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.zeroradius.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arc.zeroradius</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arc.zeroradius</h1>
 <p class="desc">arc() with zero radius draws a line to the start point</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.zeroradius.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.zeroradius.worker.js
index fb12a8f..324c799 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.zeroradius.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arc.zeroradius.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arc() with zero radius draws a line to the start point");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.coincide.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.coincide.1.html
index 1f730256..9699be4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.coincide.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.coincide.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arcTo.coincide.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arcTo.coincide.1</h1>
 <p class="desc">arcTo() has no effect if P0 = P1</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.coincide.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.coincide.1.worker.js
index a646c36..a895be3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.coincide.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.coincide.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arcTo() has no effect if P0 = P1");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.coincide.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.coincide.2.html
index d77d5de..65fd0f4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.coincide.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.coincide.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arcTo.coincide.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arcTo.coincide.2</h1>
 <p class="desc">arcTo() draws a straight line to P1 if P1 = P2</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.coincide.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.coincide.2.worker.js
index 5459619..8b0a8c6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.coincide.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.coincide.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arcTo() draws a straight line to P1 if P1 = P2");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.collinear.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.collinear.1.html
index e1cd149..9b984b81 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.collinear.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.collinear.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arcTo.collinear.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arcTo.collinear.1</h1>
 <p class="desc">arcTo() with all points on a line, and P1 between P0/P2, draws a straight line to P1</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.collinear.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.collinear.1.worker.js
index 580cac8..2423836 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.collinear.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.collinear.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arcTo() with all points on a line, and P1 between P0/P2, draws a straight line to P1");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.collinear.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.collinear.2.html
index 1287b57..d23e337 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.collinear.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.collinear.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arcTo.collinear.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arcTo.collinear.2</h1>
 <p class="desc">arcTo() with all points on a line, and P2 between P0/P1, draws a straight line to P1</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.collinear.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.collinear.2.worker.js
index ceeae49..8ec2f81 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.collinear.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.collinear.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arcTo() with all points on a line, and P2 between P0/P1, draws a straight line to P1");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.collinear.3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.collinear.3.html
index 0c56e4d..b7d7c750f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.collinear.3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.collinear.3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arcTo.collinear.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arcTo.collinear.3</h1>
 <p class="desc">arcTo() with all points on a line, and P0 between P1/P2, draws a straight line to P1</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.collinear.3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.collinear.3.worker.js
index 536bd0d..971c16cf 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.collinear.3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.collinear.3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arcTo() with all points on a line, and P0 between P1/P2, draws a straight line to P1");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.1.html
index 8b5490637..c885ed46 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arcTo.ensuresubpath.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arcTo.ensuresubpath.1</h1>
 <p class="desc">If there is no subpath, the first control point is added (and nothing is drawn up to it)</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.1.worker.js
index cefcf11..559fcbe 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("If there is no subpath, the first control point is added (and nothing is drawn up to it)");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.2.html
index 8056389..8a153c0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arcTo.ensuresubpath.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arcTo.ensuresubpath.2</h1>
 <p class="desc">If there is no subpath, the first control point is added</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.2.worker.js
index d6ab04e..38364cbe 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("If there is no subpath, the first control point is added");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.negative.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.negative.html
index d258d0b..7536b38 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.negative.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.negative.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arcTo.negative</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arcTo.negative</h1>
 <p class="desc">arcTo() with negative radius throws an exception</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.negative.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.negative.worker.js
index b95f4c5..47e6ce5d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.negative.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.negative.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arcTo() with negative radius throws an exception");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.nonfinite.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.nonfinite.html
index 2226f57..3fcd6dda 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.nonfinite.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arcTo.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arcTo.nonfinite</h1>
 <p class="desc">arcTo() with Infinity/NaN is ignored</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.nonfinite.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.nonfinite.worker.js
index c8b00759..231df91 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.nonfinite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.nonfinite.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arcTo() with Infinity/NaN is ignored");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.scale.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.scale.html
index 69490ea..73a127b7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.scale.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.scale.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arcTo.scale</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arcTo.scale</h1>
 <p class="desc">arcTo scales the curve, not just the control points</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.scale.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.scale.worker.js
index 80b3419..222402f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.scale.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.scale.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arcTo scales the curve, not just the control points");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve1.html
index fe94413..dcd610a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arcTo.shape.curve1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arcTo.shape.curve1</h1>
 <p class="desc">arcTo() curves in the right kind of shape</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve1.worker.js
index 2e7e3d9..50c8f79d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arcTo() curves in the right kind of shape");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve2.html
index 926b043f..6b3a9ba 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arcTo.shape.curve2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arcTo.shape.curve2</h1>
 <p class="desc">arcTo() curves in the right kind of shape</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve2.worker.js
index f2fafb06..f46fe45 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arcTo() curves in the right kind of shape");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.end.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.end.html
index a3341c0..d5e1793 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.end.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.end.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arcTo.shape.end</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arcTo.shape.end</h1>
 <p class="desc">arcTo() does not draw anything from P1 to P2</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.end.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.end.worker.js
index 52716753..e6685e3d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.end.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.end.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arcTo() does not draw anything from P1 to P2");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.start.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.start.html
index 5071526e4..6419097 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.start.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.start.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arcTo.shape.start</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arcTo.shape.start</h1>
 <p class="desc">arcTo() draws a straight line from P0 to P1</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.start.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.start.worker.js
index 8483568..4803832 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.start.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.shape.start.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arcTo() draws a straight line from P0 to P1");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.transformation.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.transformation.html
index a6989d0..d768d50 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.transformation.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.transformation.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arcTo.transformation</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arcTo.transformation</h1>
 <p class="desc">arcTo joins up to the last subpath point correctly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.transformation.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.transformation.worker.js
index a545bd3..909e4a0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.transformation.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.transformation.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arcTo joins up to the last subpath point correctly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.zero.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.zero.1.html
index 77f69f59..b6079956 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.zero.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.zero.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arcTo.zero.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arcTo.zero.1</h1>
 <p class="desc">arcTo() with zero radius draws a straight line from P0 to P1</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.zero.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.zero.1.worker.js
index d1d2e87b..a76f6380 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.zero.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.zero.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arcTo() with zero radius draws a straight line from P0 to P1");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.zero.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.zero.2.html
index debe3d31..7fde228 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.zero.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.zero.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.arcTo.zero.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.arcTo.zero.2</h1>
 <p class="desc">arcTo() with zero radius draws a straight line from P0 to P1, even when all points are collinear</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.zero.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.zero.2.worker.js
index 3ff55ce..623d98a7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.zero.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.arcTo.zero.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("arcTo() with zero radius draws a straight line from P0 to P1, even when all points are collinear");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.beginPath.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.beginPath.html
index 46c47d74..807d7b2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.beginPath.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.beginPath.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.beginPath</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.beginPath</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.beginPath.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.beginPath.worker.js
index 30069e3..cd19472 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.beginPath.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.beginPath.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.basic.html
index 42f2f04..3c7bc765 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.bezierCurveTo.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.bezierCurveTo.basic</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.basic.worker.js
index 57e1084..e9709d8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.html
index 29ceb0d5..b3bf82f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.bezierCurveTo.ensuresubpath.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.bezierCurveTo.ensuresubpath.1</h1>
 <p class="desc">If there is no subpath, the first control point is added (and nothing is drawn up to it)</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.worker.js
index 5c94226..293a4a1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("If there is no subpath, the first control point is added (and nothing is drawn up to it)");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.html
index 937773b..825b5748 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.bezierCurveTo.ensuresubpath.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.bezierCurveTo.ensuresubpath.2</h1>
 <p class="desc">If there is no subpath, the first control point is added</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.worker.js
index d441145..5ba0a48 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("If there is no subpath, the first control point is added");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.nonfinite.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.nonfinite.html
index 58de7007..3bf7e92 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.nonfinite.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.bezierCurveTo.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.bezierCurveTo.nonfinite</h1>
 <p class="desc">bezierCurveTo() with Infinity/NaN is ignored</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.nonfinite.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.nonfinite.worker.js
index 6b199dde..594716e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.nonfinite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.nonfinite.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("bezierCurveTo() with Infinity/NaN is ignored");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.scaled.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.scaled.html
index 2e96235..8498357 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.scaled.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.scaled.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.bezierCurveTo.scaled</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.bezierCurveTo.scaled</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.scaled.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.scaled.worker.js
index 7c05de1..0092822 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.scaled.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.scaled.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.shape.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.shape.html
index c601b6ba5..632862f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.shape.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.shape.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.bezierCurveTo.shape</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.bezierCurveTo.shape</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.shape.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.shape.worker.js
index ebdeda1..d3a5885 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.shape.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.bezierCurveTo.shape.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.basic.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.basic.1.html
index 4d61e3d..0e85dcc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.basic.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.basic.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.clip.basic.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.clip.basic.1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.basic.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.basic.1.worker.js
index 391d745..9c890f9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.basic.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.basic.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.basic.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.basic.2.html
index 4591f77..9f08113 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.basic.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.basic.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.clip.basic.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.clip.basic.2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.basic.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.basic.2.worker.js
index 965a328..40211c9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.basic.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.basic.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.empty.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.empty.html
index 39555a9..e3c2fa7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.empty.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.empty.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.clip.empty</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.clip.empty</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.empty.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.empty.worker.js
index d22b27ec..ec0a6879 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.empty.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.empty.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.intersect.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.intersect.html
index d7bc3bd..0da3e708 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.intersect.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.intersect.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.clip.intersect</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.clip.intersect</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.intersect.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.intersect.worker.js
index 6dd021c..87dc108 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.intersect.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.intersect.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.unaffected.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.unaffected.html
index bf5d541..56af716 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.unaffected.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.unaffected.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.clip.unaffected</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.clip.unaffected</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.unaffected.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.unaffected.worker.js
index ce6bbd00..6f68df5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.unaffected.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.unaffected.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.winding.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.winding.1.html
index bae8e94c..0290361 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.winding.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.winding.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.clip.winding.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.clip.winding.1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.winding.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.winding.1.worker.js
index 5865147c..b1c0b0d5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.winding.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.winding.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.winding.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.winding.2.html
index ec25689..34d6dd1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.winding.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.winding.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.clip.winding.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.clip.winding.2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.winding.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.winding.2.worker.js
index 649c4346..4583717 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.winding.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.clip.winding.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.closePath.empty.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.closePath.empty.html
index 8cc5168d..6377c26 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.closePath.empty.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.closePath.empty.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.closePath.empty</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.closePath.empty</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.closePath.empty.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.closePath.empty.worker.js
index be09fff..86cc8d6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.closePath.empty.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.closePath.empty.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.closePath.newline.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.closePath.newline.html
index 3f4f1839..c37cce3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.closePath.newline.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.closePath.newline.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.closePath.newline</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.closePath.newline</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.closePath.newline.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.closePath.newline.worker.js
index 04f3392..5012c5e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.closePath.newline.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.closePath.newline.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.closePath.nextpoint.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.closePath.nextpoint.html
index b30fbd6..0fae83d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.closePath.nextpoint.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.closePath.nextpoint.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.closePath.nextpoint</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.closePath.nextpoint</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.closePath.nextpoint.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.closePath.nextpoint.worker.js
index f590e76..1f29f80b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.closePath.nextpoint.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.closePath.nextpoint.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.closed.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.closed.basic.html
index e13ea6f..efc4672 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.closed.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.closed.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.fill.closed.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.fill.closed.basic</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.closed.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.closed.basic.worker.js
index 3d3c3c72..5393baf 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.closed.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.closed.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.closed.unaffected.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.closed.unaffected.html
index 7fdbe47..48cadc5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.closed.unaffected.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.closed.unaffected.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.fill.closed.unaffected</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.fill.closed.unaffected</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.closed.unaffected.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.closed.unaffected.worker.js
index 473dad6..e3c4375 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.closed.unaffected.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.closed.unaffected.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.overlap.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.overlap.html
index b8c6f2a..5cd8e52e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.overlap.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.overlap.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.fill.overlap</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.fill.overlap</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.overlap.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.overlap.worker.js
index 5e5301b..bad0674 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.overlap.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.overlap.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.add.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.add.html
index d01c5df..e98d108 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.add.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.add.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.fill.winding.add</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.fill.winding.add</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.add.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.add.worker.js
index 37df3d5a..aaac3d7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.add.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.add.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.1.html
index 32afbf60..a6e93cd 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.fill.winding.subtract.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.fill.winding.subtract.1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.1.worker.js
index 37f6c711..34f5a1f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.2.html
index 3742632..dfb5c4f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.fill.winding.subtract.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.fill.winding.subtract.2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.2.worker.js
index 864cfd5..5dda314 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.3.html
index 693806a0..3e4d65d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.fill.winding.subtract.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.fill.winding.subtract.3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.3.worker.js
index 276b0cb..a502d8d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.initial.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.initial.html
index d46744d00..476b652 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.initial.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.initial.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.initial</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.initial</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.initial.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.initial.worker.js
index 5856714..7ecf650 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.initial.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.initial.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.arc.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.arc.html
index 4558af1..e580547 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.arc.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.arc.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.isPointInPath.arc</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.isPointInPath.arc</h1>
 <p class="desc">isPointInPath() works on arcs</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.arc.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.arc.worker.js
index 9a6e76e..97286ea 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.arc.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.arc.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("isPointInPath() works on arcs");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.1.html
index 774ef76..60862fd 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.isPointInPath.basic.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.isPointInPath.basic.1</h1>
 <p class="desc">isPointInPath() detects whether the point is inside the path</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.1.worker.js
index 8e2fbee..5f9478a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("isPointInPath() detects whether the point is inside the path");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.2.html
index 9216c73..b019c74 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.isPointInPath.basic.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.isPointInPath.basic.2</h1>
 <p class="desc">isPointInPath() detects whether the point is inside the path</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.2.worker.js
index b2bf9410..75bc7f0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("isPointInPath() detects whether the point is inside the path");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.bezier.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.bezier.html
index 51901846..3cb2b6f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.bezier.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.bezier.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.isPointInPath.bezier</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.isPointInPath.bezier</h1>
 <p class="desc">isPointInPath() works on Bezier curves</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.bezier.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.bezier.worker.js
index 5d2f9e0..b76f8b7d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.bezier.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.bezier.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("isPointInPath() works on Bezier curves");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.bigarc.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.bigarc.html
index 8703eef..6eabd0f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.bigarc.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.bigarc.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.isPointInPath.bigarc</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.isPointInPath.bigarc</h1>
 <p class="desc">isPointInPath() works on unclosed arcs larger than 2pi</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.bigarc.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.bigarc.worker.js
index 974ff75..ce1d67cf 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.bigarc.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.bigarc.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("isPointInPath() works on unclosed arcs larger than 2pi");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.edge.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.edge.html
index 6d6d87d..7daafd5cd 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.edge.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.edge.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.isPointInPath.edge</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.isPointInPath.edge</h1>
 <p class="desc">isPointInPath() counts points on the path as being inside</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.edge.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.edge.worker.js
index 8bf9b19..3211f83 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.edge.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.edge.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("isPointInPath() counts points on the path as being inside");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.empty.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.empty.html
index 9219d50..fac2440 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.empty.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.empty.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.isPointInPath.empty</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.isPointInPath.empty</h1>
 <p class="desc">isPointInPath() works when there is no path</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.empty.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.empty.worker.js
index 8228384..6574b9e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.empty.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.empty.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("isPointInPath() works when there is no path");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.nonfinite.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.nonfinite.html
index 6e6bd2e..2db49e1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.nonfinite.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.isPointInPath.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.isPointInPath.nonfinite</h1>
 <p class="desc">isPointInPath() returns false for non-finite arguments</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.nonfinite.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.nonfinite.worker.js
index 91c2d36..eb9df1b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.nonfinite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.nonfinite.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("isPointInPath() returns false for non-finite arguments");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.outside.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.outside.html
index c3175989..19f8dc0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.outside.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.outside.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.isPointInPath.outside</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.isPointInPath.outside</h1>
 <p class="desc">isPointInPath() works on paths outside the canvas</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.outside.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.outside.worker.js
index 11b81d2..e9c84d8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.outside.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.outside.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("isPointInPath() works on paths outside the canvas");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.subpath.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.subpath.html
index ddf7b279..11f5c10a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.subpath.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.subpath.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.isPointInPath.subpath</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.isPointInPath.subpath</h1>
 <p class="desc">isPointInPath() uses the current path, not just the subpath</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.subpath.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.subpath.worker.js
index a453c805..a20f470d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.subpath.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.subpath.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("isPointInPath() uses the current path, not just the subpath");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.1.html
index a1e8766..5547bc7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.isPointInPath.transform.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.isPointInPath.transform.1</h1>
 <p class="desc">isPointInPath() handles transformations correctly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.1.worker.js
index bebc6d6..65a12a2d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("isPointInPath() handles transformations correctly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.2.html
index 1995295f..741aebf 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.isPointInPath.transform.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.isPointInPath.transform.2</h1>
 <p class="desc">isPointInPath() handles transformations correctly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.2.worker.js
index a092cb9..0fac30a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("isPointInPath() handles transformations correctly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.3.html
index b43e104..37ca18c4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.isPointInPath.transform.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.isPointInPath.transform.3</h1>
 <p class="desc">isPointInPath() handles transformations correctly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.3.worker.js
index cd244a6..26fa7d350 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("isPointInPath() handles transformations correctly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.4.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.4.html
index e795624..3303453d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.4.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.4.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.isPointInPath.transform.4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.isPointInPath.transform.4</h1>
 <p class="desc">isPointInPath() handles transformations correctly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.4.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.4.worker.js
index 6ec20136..0ec7314 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.4.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("isPointInPath() handles transformations correctly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.unclosed.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.unclosed.html
index f05a39d7..08a8ea7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.unclosed.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.unclosed.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.isPointInPath.unclosed</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.isPointInPath.unclosed</h1>
 <p class="desc">isPointInPath() works on unclosed subpaths</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.unclosed.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.unclosed.worker.js
index 316e791..8e9a83d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.unclosed.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.unclosed.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("isPointInPath() works on unclosed subpaths");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.winding.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.winding.html
index 8b0e07f..2b715291 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.winding.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.winding.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.isPointInPath.winding</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.isPointInPath.winding</h1>
 <p class="desc">isPointInPath() uses the non-zero winding number rule</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.winding.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.winding.worker.js
index fde0a17..37978d4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.winding.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.isPointInPath.winding.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("isPointInPath() uses the non-zero winding number rule");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.basic.html
index fe4ffec..56eed8e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.lineTo.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.lineTo.basic</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.basic.worker.js
index c070975..99499e3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.1.html
index 9216819..96efe47 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.lineTo.ensuresubpath.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.lineTo.ensuresubpath.1</h1>
 <p class="desc">If there is no subpath, the point is added and nothing is drawn</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.1.worker.js
index 701ffdd4..c988b989e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("If there is no subpath, the point is added and nothing is drawn");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.2.html
index fb9b04d5..5189d6b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.lineTo.ensuresubpath.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.lineTo.ensuresubpath.2</h1>
 <p class="desc">If there is no subpath, the point is added and used for subsequent drawing</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.2.worker.js
index 699e4404..e593e8e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("If there is no subpath, the point is added and used for subsequent drawing");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.nextpoint.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.nextpoint.html
index 05768c0..4b954ed 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.nextpoint.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.nextpoint.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.lineTo.nextpoint</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.lineTo.nextpoint</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.nextpoint.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.nextpoint.worker.js
index 2262b8bc..d01768b5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.nextpoint.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.nextpoint.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.details.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.details.html
index 4ea2093..82b0284 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.details.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.details.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.lineTo.nonfinite.details</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.lineTo.nonfinite.details</h1>
 <p class="desc">lineTo() with Infinity/NaN for first arg still converts the second arg</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.details.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.details.worker.js
index 13d615306..8190df7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.details.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.details.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("lineTo() with Infinity/NaN for first arg still converts the second arg");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.html
index 8dd773e8..45d13e8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.lineTo.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.lineTo.nonfinite</h1>
 <p class="desc">lineTo() with Infinity/NaN is ignored</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.worker.js
index 4f97b9b..7f48abc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("lineTo() with Infinity/NaN is ignored");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.basic.html
index 36e14ac..29c4c79 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.moveTo.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.moveTo.basic</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.basic.worker.js
index d4b928a..9d7e6fb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.multiple.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.multiple.html
index 41f45143..a3896ab4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.multiple.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.multiple.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.moveTo.multiple</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.moveTo.multiple</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.multiple.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.multiple.worker.js
index 7d648849..ba3d51b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.multiple.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.multiple.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.newsubpath.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.newsubpath.html
index 390a26154..48bae9b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.newsubpath.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.newsubpath.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.moveTo.newsubpath</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.moveTo.newsubpath</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.newsubpath.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.newsubpath.worker.js
index 3dac608..afc53642 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.newsubpath.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.newsubpath.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.nonfinite.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.nonfinite.html
index 100259a4..ee79f44 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.nonfinite.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.moveTo.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.moveTo.nonfinite</h1>
 <p class="desc">moveTo() with Infinity/NaN is ignored</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.nonfinite.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.nonfinite.worker.js
index 84d8972..6b7283d9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.nonfinite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.moveTo.nonfinite.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("moveTo() with Infinity/NaN is ignored");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.basic.html
index 957b890..469ec66 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.quadraticCurveTo.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.quadraticCurveTo.basic</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.basic.worker.js
index d074dfa5..22ff451 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html
index 8f3c10f..3e2155f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.quadraticCurveTo.ensuresubpath.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.quadraticCurveTo.ensuresubpath.1</h1>
 <p class="desc">If there is no subpath, the first control point is added (and nothing is drawn up to it)</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.worker.js
index 67b0bb2..af4cf92 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("If there is no subpath, the first control point is added (and nothing is drawn up to it)");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html
index 0a61ecd8..8159f3c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.quadraticCurveTo.ensuresubpath.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.quadraticCurveTo.ensuresubpath.2</h1>
 <p class="desc">If there is no subpath, the first control point is added</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.worker.js
index a8b87cc..ede934f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("If there is no subpath, the first control point is added");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.nonfinite.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.nonfinite.html
index 9806ca08..4a5711c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.nonfinite.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.quadraticCurveTo.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.quadraticCurveTo.nonfinite</h1>
 <p class="desc">quadraticCurveTo() with Infinity/NaN is ignored</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.nonfinite.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.nonfinite.worker.js
index 4841053..dc267cc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.nonfinite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.nonfinite.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("quadraticCurveTo() with Infinity/NaN is ignored");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.scaled.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.scaled.html
index 9d1ec4f..6bcd8c6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.scaled.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.scaled.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.quadraticCurveTo.scaled</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.quadraticCurveTo.scaled</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.scaled.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.scaled.worker.js
index 2e4106ed..6bb0c1a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.scaled.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.scaled.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.shape.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.shape.html
index 40e454a..6caaf2a0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.shape.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.shape.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.quadraticCurveTo.shape</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.quadraticCurveTo.shape</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.shape.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.shape.worker.js
index e8710f9..23b5124 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.shape.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.shape.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.basic.html
index 059668a..e786320 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.rect.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.rect.basic</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.basic.worker.js
index abcacad5..9aa3af8d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.closed.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.closed.html
index 943d7c9..85e72a2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.closed.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.closed.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.rect.closed</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.rect.closed</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.closed.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.closed.worker.js
index 9a2b7e5..09c942c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.closed.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.closed.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.end.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.end.1.html
index b44c6a8..5317b3b7e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.end.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.end.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.rect.end.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.rect.end.1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.end.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.end.1.worker.js
index 72b2d8a..45e2558 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.end.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.end.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.end.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.end.2.html
index a48b27d6..25ab289 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.end.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.end.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.rect.end.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.rect.end.2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.end.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.end.2.worker.js
index a971874..925d3510 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.end.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.end.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.negative.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.negative.html
index 55edbab..2b47aa0d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.negative.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.negative.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.rect.negative</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.rect.negative</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.negative.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.negative.worker.js
index 4ee0b73..88a8acc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.negative.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.negative.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.newsubpath.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.newsubpath.html
index 982e8b9..1c41d98b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.newsubpath.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.newsubpath.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.rect.newsubpath</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.rect.newsubpath</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.newsubpath.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.newsubpath.worker.js
index 1bacdaa..9d3562c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.newsubpath.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.newsubpath.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.nonfinite.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.nonfinite.html
index d3c62e5..0af2beec 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.nonfinite.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.rect.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.rect.nonfinite</h1>
 <p class="desc">rect() with Infinity/NaN is ignored</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.nonfinite.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.nonfinite.worker.js
index 35582fd..8533f25 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.nonfinite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.nonfinite.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("rect() with Infinity/NaN is ignored");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.selfintersect.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.selfintersect.html
index 7ca1af5..4478ecb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.selfintersect.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.selfintersect.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.rect.selfintersect</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.rect.selfintersect</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.selfintersect.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.selfintersect.worker.js
index 0c261b6..50cc700 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.selfintersect.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.selfintersect.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.winding.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.winding.html
index 4532ddb..b1ec5e2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.winding.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.winding.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.rect.winding</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.rect.winding</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.winding.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.winding.worker.js
index 72f3e3a..4f37705 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.winding.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.winding.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.1.html
index 2873a52..5dc5eb5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.rect.zero.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.rect.zero.1</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.1.worker.js
index 7ad6404b..c64d9ef 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.2.html
index 0bdead0..83925f6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.rect.zero.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.rect.zero.2</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.2.worker.js
index cd43701a..698e277 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.3.html
index 02a84e3..ad6d3be 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.rect.zero.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.rect.zero.3</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.3.worker.js
index 19176838..021a8d1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.4.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.4.html
index 7c80780..ce2601f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.4.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.4.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.rect.zero.4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.rect.zero.4</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.4.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.4.worker.js
index 7c91236..6b8f1cf 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.4.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.5.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.5.html
index 3fc63457..ae1c5dc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.5.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.5.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.rect.zero.5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.rect.zero.5</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.5.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.5.worker.js
index 1e839016..ca87c25 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.5.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.6.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.6.html
index 450ef3c..625c03b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.6.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.6.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.rect.zero.6</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.rect.zero.6</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.6.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.6.worker.js
index 44bda7e..855d022 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.6.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.rect.zero.6.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.empty.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.empty.html
index 14e489a..e16937de 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.empty.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.empty.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.stroke.empty</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.stroke.empty</h1>
 <p class="desc">Empty subpaths are not stroked</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.empty.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.empty.worker.js
index d6db2a01..0fcc8dd2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.empty.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.empty.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Empty subpaths are not stroked");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.overlap.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.overlap.html
index c7277b9..50ceecd7e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.overlap.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.overlap.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.stroke.overlap</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.stroke.overlap</h1>
 <p class="desc">Stroked subpaths are combined before being drawn</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.overlap.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.overlap.worker.js
index 5160847..b70e65b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.overlap.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.overlap.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Stroked subpaths are combined before being drawn");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.arc.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.arc.html
index 065314e..76746a9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.arc.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.arc.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.stroke.prune.arc</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.stroke.prune.arc</h1>
 <p class="desc">Zero-length line segments from arcTo and arc are removed before stroking</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.arc.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.arc.worker.js
index eba5233..40ee31a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.arc.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.arc.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Zero-length line segments from arcTo and arc are removed before stroking");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.closed.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.closed.html
index 7c8ffe1..06a173b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.closed.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.closed.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.stroke.prune.closed</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.stroke.prune.closed</h1>
 <p class="desc">Zero-length line segments from closed paths are removed before stroking</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.closed.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.closed.worker.js
index 8b2e920..27176fa 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.closed.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.closed.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Zero-length line segments from closed paths are removed before stroking");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.corner.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.corner.html
index ef09196..b5f5209 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.corner.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.corner.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.stroke.prune.corner</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.stroke.prune.corner</h1>
 <p class="desc">Zero-length line segments are removed before stroking with miters</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.corner.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.corner.worker.js
index e0b0ad55..835d36f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.corner.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.corner.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Zero-length line segments are removed before stroking with miters");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.curve.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.curve.html
index 2f0dd1e..60c13bb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.curve.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.curve.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.stroke.prune.curve</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.stroke.prune.curve</h1>
 <p class="desc">Zero-length line segments from quadraticCurveTo and bezierCurveTo are removed before stroking</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.curve.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.curve.worker.js
index 54d6955c..8bc8ec1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.curve.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.curve.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Zero-length line segments from quadraticCurveTo and bezierCurveTo are removed before stroking");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.line.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.line.html
index 2a659ea..c40f61c6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.line.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.line.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.stroke.prune.line</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.stroke.prune.line</h1>
 <p class="desc">Zero-length line segments from lineTo are removed before stroking</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.line.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.line.worker.js
index 8229f34..d9dc3ac1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.line.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.line.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Zero-length line segments from lineTo are removed before stroking");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.rect.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.rect.html
index b4b4aeb..74d60f77 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.rect.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.rect.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.stroke.prune.rect</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.stroke.prune.rect</h1>
 <p class="desc">Zero-length line segments from rect and strokeRect are removed before stroking</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.rect.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.rect.worker.js
index e3b2ff8..75158979 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.rect.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.prune.rect.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Zero-length line segments from rect and strokeRect are removed before stroking");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.scale1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.scale1.html
index 61e9a7e..328adf1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.scale1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.scale1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.stroke.scale1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.stroke.scale1</h1>
 <p class="desc">Stroke line widths are scaled by the current transformation matrix</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.scale1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.scale1.worker.js
index e5fc8bc..7996b61 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.scale1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.scale1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Stroke line widths are scaled by the current transformation matrix");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.scale2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.scale2.html
index 0bc4c26..fc49fea 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.scale2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.scale2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.stroke.scale2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.stroke.scale2</h1>
 <p class="desc">Stroke line widths are scaled by the current transformation matrix</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.scale2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.scale2.worker.js
index b532fb7..5d70b6a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.scale2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.scale2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Stroke line widths are scaled by the current transformation matrix");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.skew.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.skew.html
index 6220e7c..cfa6560 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.skew.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.skew.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.stroke.skew</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.stroke.skew</h1>
 <p class="desc">Strokes lines are skewed by the current transformation matrix</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.skew.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.skew.worker.js
index 125c70c..2d4e84e1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.skew.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.skew.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Strokes lines are skewed by the current transformation matrix");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.unaffected.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.unaffected.html
index fc2dff9..3f9f1de6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.unaffected.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.unaffected.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.stroke.unaffected</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.stroke.unaffected</h1>
 <p class="desc">Stroking does not start a new path or subpath</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.unaffected.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.unaffected.worker.js
index 6c3c165..c0444f7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.unaffected.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.unaffected.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Stroking does not start a new path or subpath");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.union.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.union.html
index 76884ca..fbc65f1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.union.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.union.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.stroke.union</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.stroke.union</h1>
 <p class="desc">Strokes in opposite directions are unioned, not subtracted</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.union.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.union.worker.js
index 0594b28..c00ce21 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.union.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.stroke.union.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Strokes in opposite directions are unioned, not subtracted");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.transformation.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.transformation.basic.html
index e7cb8ec..e4d9e09 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.transformation.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.transformation.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.transformation.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.transformation.basic</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.transformation.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.transformation.basic.worker.js
index ac9bc1b..ea0b9ae 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.transformation.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.transformation.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.transformation.changing.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.transformation.changing.html
index aba546b..c0a1ffe 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.transformation.changing.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.transformation.changing.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.transformation.changing</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.transformation.changing</h1>
 <p class="desc">Transformations are applied while building paths, not when drawing</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.transformation.changing.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.transformation.changing.worker.js
index 2f8418d..5eb0d6f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.transformation.changing.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.transformation.changing.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Transformations are applied while building paths, not when drawing");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.transformation.multiple.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.transformation.multiple.html
index 7f38dae..3ee6d0c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.transformation.multiple.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.transformation.multiple.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.path.transformation.multiple</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.path.transformation.multiple</h1>
 <p class="desc">Transformations are applied while building paths, not when drawing</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.transformation.multiple.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.transformation.multiple.worker.js
index 62bde63..1999c272 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.transformation.multiple.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/path-objects/2d.path.transformation.multiple.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Transformations are applied while building paths, not when drawing");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create1.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create1.basic.html
index 8152cfc..f2c53c2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create1.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create1.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.create1.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.create1.basic</h1>
 <p class="desc">createImageData(imgdata) exists and returns something</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create1.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create1.basic.worker.js
index 250a161..40e3da1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create1.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create1.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("createImageData(imgdata) exists and returns something");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create1.initial.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create1.initial.html
index a385d72..0ef6d8a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create1.initial.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create1.initial.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.create1.initial</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.create1.initial</h1>
 <p class="desc">createImageData(imgdata) returns transparent black data of the right size</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create1.initial.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create1.initial.worker.js
index da0543c..68c4a5fe 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create1.initial.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create1.initial.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("createImageData(imgdata) returns transparent black data of the right size");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create1.zero.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create1.zero.html
index bbcadad..1b68df2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create1.zero.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create1.zero.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.create1.zero</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.create1.zero</h1>
 <p class="desc">createImageData(null) throws TypeError</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create1.zero.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create1.zero.worker.js
index f3bed84..b9cb934f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create1.zero.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create1.zero.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("createImageData(null) throws TypeError");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.basic.html
index 13cb5de4..1048cb1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.create2.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.create2.basic</h1>
 <p class="desc">createImageData(sw, sh) exists and returns something</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.basic.worker.js
index 82190d6cb..3092a31 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("createImageData(sw, sh) exists and returns something");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.initial.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.initial.html
index e7ced9d..55e999a9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.initial.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.initial.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.create2.initial</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.create2.initial</h1>
 <p class="desc">createImageData(sw, sh) returns transparent black data of the right size</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.initial.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.initial.worker.js
index d3fea24d..392711c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.initial.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.initial.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("createImageData(sw, sh) returns transparent black data of the right size");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.large.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.large.html
index 25d4905..73d39aa 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.large.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.large.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.create2.large</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.create2.large</h1>
 <p class="desc">createImageData(sw, sh) works for sizes much larger than the canvas</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.large.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.large.worker.js
index d8ae14c..6d97898 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.large.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.large.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("createImageData(sw, sh) works for sizes much larger than the canvas");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.negative.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.negative.html
index d5c42ef..ae86219 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.negative.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.negative.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.create2.negative</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.create2.negative</h1>
 <p class="desc">createImageData(sw, sh) takes the absolute magnitude of the size arguments</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.negative.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.negative.worker.js
index 11f1641a..c93d1b5b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.negative.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.negative.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("createImageData(sw, sh) takes the absolute magnitude of the size arguments");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.nonfinite.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.nonfinite.html
index ae36fc7..5f0f1925 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.nonfinite.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.create2.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.create2.nonfinite</h1>
 <p class="desc">createImageData() throws TypeError if arguments are not finite</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.nonfinite.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.nonfinite.worker.js
index 0609d05..4c8da25 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.nonfinite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.nonfinite.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("createImageData() throws TypeError if arguments are not finite");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.round.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.round.html
index 2d59eff..78db730 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.round.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.round.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.create2.round</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.create2.round</h1>
 <p class="desc">createImageData(w, h) is rounded the same as getImageData(0, 0, w, h)</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.round.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.round.worker.js
index b0c4a03..52b7e84 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.round.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.round.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("createImageData(w, h) is rounded the same as getImageData(0, 0, w, h)");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.zero.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.zero.html
index 8c88cc9..5141618 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.zero.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.zero.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.create2.zero</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.create2.zero</h1>
 <p class="desc">createImageData(sw, sh) throws INDEX_SIZE_ERR if size is zero</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.zero.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.zero.worker.js
index cf54b3c..16573f1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.zero.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.create2.zero.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("createImageData(sw, sh) throws INDEX_SIZE_ERR if size is zero");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.basic.html
index cfb5e3c2..bf148c9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.get.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.get.basic</h1>
 <p class="desc">getImageData() exists and returns something</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.basic.worker.js
index 6824945d..27724a2a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("getImageData() exists and returns something");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.clamp.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.clamp.html
index c5e189b..861e365 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.clamp.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.clamp.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.get.clamp</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.get.clamp</h1>
 <p class="desc">getImageData() clamps colours to the range [0, 255]</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.clamp.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.clamp.worker.js
index 97a2a14..05d22f2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.clamp.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.clamp.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("getImageData() clamps colours to the range [0, 255]");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.length.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.length.html
index c9516d7a..e269cbc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.length.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.length.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.get.length</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.get.length</h1>
 <p class="desc">getImageData() returns a correctly-sized Uint8ClampedArray</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.length.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.length.worker.js
index f8a08e2..762e233 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.length.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.length.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("getImageData() returns a correctly-sized Uint8ClampedArray");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonfinite.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonfinite.html
index ab90a83..c688c22 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonfinite.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.get.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.get.nonfinite</h1>
 <p class="desc">getImageData() throws TypeError if arguments are not finite</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonfinite.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonfinite.worker.js
index bfd5fb0..bcf2e43b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonfinite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonfinite.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("getImageData() throws TypeError if arguments are not finite");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonpremul.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonpremul.html
index 473d6f6e..666ef2e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonpremul.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonpremul.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.get.nonpremul</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.get.nonpremul</h1>
 <p class="desc">getImageData() returns non-premultiplied colours</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonpremul.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonpremul.worker.js
index 6d85a5c..5b98dbc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonpremul.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonpremul.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("getImageData() returns non-premultiplied colours");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.alpha.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.alpha.html
index 4bf30c08..ff1c66f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.alpha.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.get.order.alpha</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.get.order.alpha</h1>
 <p class="desc">getImageData() returns A in the fourth component</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.alpha.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.alpha.worker.js
index 611a9c7..a3423ee 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.alpha.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.alpha.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("getImageData() returns A in the fourth component");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.cols.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.cols.html
index d3abec38..0706cd5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.cols.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.cols.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.get.order.cols</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.get.order.cols</h1>
 <p class="desc">getImageData() returns leftmost columns first</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.cols.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.cols.worker.js
index c3a7d2504..371ea25 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.cols.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.cols.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("getImageData() returns leftmost columns first");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rgb.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rgb.html
index ce81521b..a5c7d86 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rgb.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rgb.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.get.order.rgb</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.get.order.rgb</h1>
 <p class="desc">getImageData() returns R then G then B</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rgb.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rgb.worker.js
index 654ea19..e31ebc92 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rgb.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rgb.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("getImageData() returns R then G then B");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rows.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rows.html
index ba8a740c..5cc141f1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rows.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rows.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.get.order.rows</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.get.order.rows</h1>
 <p class="desc">getImageData() returns topmost rows first</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rows.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rows.worker.js
index 9fb23e6a..a942467 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rows.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rows.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("getImageData() returns topmost rows first");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.range.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.range.html
index 9a19b651..5fb46d03 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.range.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.range.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.get.range</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.get.range</h1>
 <p class="desc">getImageData() returns values in the range [0, 255]</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.range.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.range.worker.js
index 5cac707..f3e93f2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.range.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.range.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("getImageData() returns values in the range [0, 255]");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.negative.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.negative.html
index b6d47a22..94539ff 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.negative.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.negative.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.get.source.negative</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.get.source.negative</h1>
 <p class="desc">getImageData() works with negative width and height, and returns top-to-bottom left-to-right</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.negative.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.negative.worker.js
index ed83ee57..00f6cc5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.negative.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.negative.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("getImageData() works with negative width and height, and returns top-to-bottom left-to-right");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.outside.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.outside.html
index 0190a1f..f420531 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.outside.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.outside.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.get.source.outside</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.get.source.outside</h1>
 <p class="desc">getImageData() returns transparent black outside the canvas</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.outside.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.outside.worker.js
index 0cc5fd4a..568dce0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.outside.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.outside.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("getImageData() returns transparent black outside the canvas");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.size.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.size.html
index e95dd55..f811736 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.size.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.size.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.get.source.size</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.get.source.size</h1>
 <p class="desc">getImageData() returns bigger ImageData for bigger source rectangle</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.size.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.size.worker.js
index bb8c105a..adf912b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.size.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.size.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("getImageData() returns bigger ImageData for bigger source rectangle");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.tiny.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.tiny.html
index ac9563b5..3177cd8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.tiny.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.tiny.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.get.tiny</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.get.tiny</h1>
 <p class="desc">getImageData() works for sizes smaller than one pixel</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.tiny.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.tiny.worker.js
index 3167e465..791dac6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.tiny.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.tiny.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("getImageData() works for sizes smaller than one pixel");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.unaffected.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.unaffected.html
index afd759b..33e65aa 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.unaffected.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.unaffected.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.get.unaffected</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.get.unaffected</h1>
 <p class="desc">getImageData() is not affected by context state</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.unaffected.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.unaffected.worker.js
index 049042f..d5cf3c9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.unaffected.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.unaffected.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("getImageData() is not affected by context state");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.zero.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.zero.html
index 42d71fc..5890d36 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.zero.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.zero.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.get.zero</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.get.zero</h1>
 <p class="desc">getImageData() throws INDEX_SIZE_ERR if size is zero</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.zero.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.zero.worker.js
index 5886b88e..0c0441a7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.zero.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.get.zero.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("getImageData() throws INDEX_SIZE_ERR if size is zero");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.clamp.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.clamp.html
index b367821c..be22bae 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.clamp.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.clamp.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.object.clamp</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.object.clamp</h1>
 <p class="desc">ImageData.data clamps numbers to [0, 255]</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.clamp.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.clamp.worker.js
index 00400bf..07fe898 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.clamp.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.clamp.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("ImageData.data clamps numbers to [0, 255]");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.nan.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.nan.html
index 31224ba..ad05124 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.nan.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.nan.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.object.nan</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.object.nan</h1>
 <p class="desc">ImageData.data converts NaN to 0</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.nan.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.nan.worker.js
index ef665e7..e888386 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.nan.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.nan.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("ImageData.data converts NaN to 0");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.properties.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.properties.html
index 04b9b02ce..3b17b93e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.properties.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.properties.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.object.properties</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.object.properties</h1>
 <p class="desc">ImageData objects have the right properties</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.properties.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.properties.worker.js
index 1094c660..38139cf 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.properties.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.properties.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("ImageData objects have the right properties");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.readonly.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.readonly.html
index 7ad3b6b1..9bf9ccb4f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.readonly.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.readonly.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.object.readonly</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.object.readonly</h1>
 <p class="desc">ImageData objects properties are read-only</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.readonly.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.readonly.worker.js
index 770df89..df4379f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.readonly.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.readonly.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("ImageData objects properties are read-only");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.round.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.round.html
index cbb7519..cec6ed4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.round.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.round.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.object.round</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.object.round</h1>
 <p class="desc">ImageData.data rounds numbers with round-to-zero</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.round.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.round.worker.js
index 6924e6c..845e32d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.round.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.round.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("ImageData.data rounds numbers with round-to-zero");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.set.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.set.html
index f39240e..9485864 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.set.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.set.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.object.set</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.object.set</h1>
 <p class="desc">ImageData.data can be modified</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.set.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.set.worker.js
index 6ab6fe1..e191464 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.set.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.set.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("ImageData.data can be modified");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.string.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.string.html
index 7d944d00..56fae70 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.string.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.string.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.object.string</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.object.string</h1>
 <p class="desc">ImageData.data converts strings to numbers with ToNumber</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.string.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.string.worker.js
index 41a38395..933be0f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.string.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.string.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("ImageData.data converts strings to numbers with ToNumber");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.undefined.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.undefined.html
index 81c2959..e003c45 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.undefined.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.undefined.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.object.undefined</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.object.undefined</h1>
 <p class="desc">ImageData.data converts undefined to 0</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.undefined.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.undefined.worker.js
index bcded33..313c543 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.undefined.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.object.undefined.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("ImageData.data converts undefined to 0");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.alpha.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.alpha.html
index 5236717e..8c980d6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.alpha.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.put.alpha</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.put.alpha</h1>
 <p class="desc">putImageData() puts non-solid image data correctly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.alpha.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.alpha.worker.js
index a1020fd8..fbfcf0b3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.alpha.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.alpha.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("putImageData() puts non-solid image data correctly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.basic.html
index 9123460..49dc9180 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.put.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.put.basic</h1>
 <p class="desc">putImageData() puts image data from getImageData() onto the canvas</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.basic.worker.js
index 3959348b..b83df3c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("putImageData() puts image data from getImageData() onto the canvas");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.clip.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.clip.html
index 3df65e00..0535871 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.clip.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.clip.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.put.clip</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.put.clip</h1>
 <p class="desc">putImageData() is not affected by clipping regions</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.clip.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.clip.worker.js
index e038e41..99ab50e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.clip.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.clip.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("putImageData() is not affected by clipping regions");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.created.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.created.html
index 7f55f17..4c11fc5e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.created.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.created.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.put.created</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.put.created</h1>
 <p class="desc">putImageData() puts image data from createImageData() onto the canvas</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.created.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.created.worker.js
index aede851..3bc71e9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.created.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.created.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("putImageData() puts image data from createImageData() onto the canvas");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.cross.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.cross.html
index a7af5f2..ca155d3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.cross.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.cross.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.put.cross</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.put.cross</h1>
 <p class="desc">putImageData() accepts image data got from a different canvas</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.cross.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.cross.worker.js
index d811560..b3e5b5a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.cross.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.cross.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("putImageData() accepts image data got from a different canvas");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.negative.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.negative.html
index 3b5f437..6617ec41 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.negative.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.negative.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.put.dirty.negative</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.put.dirty.negative</h1>
 <p class="desc">putImageData() handles negative-sized dirty rectangles correctly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.negative.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.negative.worker.js
index 460e7977..3e0b470 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.negative.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.negative.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("putImageData() handles negative-sized dirty rectangles correctly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.outside.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.outside.html
index 1ada85b..29c1094 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.outside.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.outside.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.put.dirty.outside</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.put.dirty.outside</h1>
 <p class="desc">putImageData() handles dirty rectangles outside the canvas correctly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.outside.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.outside.worker.js
index 7a194f9..aaa5e1cab 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.outside.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.outside.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("putImageData() handles dirty rectangles outside the canvas correctly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect1.html
index 5e132d6..eec2d5c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.put.dirty.rect1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.put.dirty.rect1</h1>
 <p class="desc">putImageData() only modifies areas inside the dirty rectangle, using width and height</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect1.worker.js
index 7d9ca46..6ee061c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("putImageData() only modifies areas inside the dirty rectangle, using width and height");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect2.html
index 96056d1..a26130a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.put.dirty.rect2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.put.dirty.rect2</h1>
 <p class="desc">putImageData() only modifies areas inside the dirty rectangle, using x and y</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect2.worker.js
index 524a6d7..7111049 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("putImageData() only modifies areas inside the dirty rectangle, using x and y");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.zero.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.zero.html
index c17df92..9ee0b49 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.zero.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.zero.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.put.dirty.zero</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.put.dirty.zero</h1>
 <p class="desc">putImageData() with zero-sized dirty rectangle puts nothing</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.zero.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.zero.worker.js
index e9bb4ac..98278b1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.zero.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.zero.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("putImageData() with zero-sized dirty rectangle puts nothing");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.modified.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.modified.html
index ddfe634..ff06185 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.modified.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.modified.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.put.modified</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.put.modified</h1>
 <p class="desc">putImageData() puts modified image data correctly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.modified.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.modified.worker.js
index d22588dc..ef52274 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.modified.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.modified.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("putImageData() puts modified image data correctly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.nonfinite.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.nonfinite.html
index d2f174a..75ac059 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.nonfinite.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.put.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.put.nonfinite</h1>
 <p class="desc">putImageData() throws TypeError if arguments are not finite</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.nonfinite.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.nonfinite.worker.js
index 5ba39d6..8165808 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.nonfinite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.nonfinite.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("putImageData() throws TypeError if arguments are not finite");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.null.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.null.html
index a0f7017..067b5c29 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.null.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.null.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.put.null</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.put.null</h1>
 <p class="desc">putImageData() with null imagedata throws TypeError</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.null.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.null.worker.js
index 253508f..b558aaab 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.null.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.null.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("putImageData() with null imagedata throws TypeError");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.path.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.path.html
index 47ae20a..62c5047 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.path.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.path.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.put.path</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.put.path</h1>
 <p class="desc">putImageData() does not affect the current path</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.path.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.path.worker.js
index c2ef145..da5d770 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.path.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.path.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("putImageData() does not affect the current path");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.unaffected.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.unaffected.html
index 3f80709..b9c269d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.unaffected.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.unaffected.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.put.unaffected</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.put.unaffected</h1>
 <p class="desc">putImageData() is not affected by context state</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.unaffected.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.unaffected.worker.js
index 23e4cea..15a6ff1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.unaffected.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.unaffected.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("putImageData() is not affected by context state");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.unchanged.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.unchanged.html
index 72640bf..86d943f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.unchanged.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.unchanged.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.put.unchanged</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.put.unchanged</h1>
 <p class="desc">putImageData(getImageData(...), ...) has no effect</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.unchanged.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.unchanged.worker.js
index 418e46c..091593f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.unchanged.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.unchanged.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("putImageData(getImageData(...), ...) has no effect");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.wrongtype.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.wrongtype.html
index 1a31879..7d726fb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.wrongtype.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.wrongtype.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.imageData.put.wrongtype</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.imageData.put.wrongtype</h1>
 <p class="desc">putImageData() does not accept non-ImageData objects</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.wrongtype.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.wrongtype.worker.js
index 18d737c7..001a9e7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.wrongtype.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/pixel-manipulation/2d.imageData.put.wrongtype.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("putImageData() does not accept non-ImageData objects");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.1.html
index c223e25..fdfaf75 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.alpha.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.alpha.1</h1>
 <p class="desc">Shadow colour alpha components are used</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.1.worker.js
index 9852033..6ddf9a0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadow colour alpha components are used");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.2.html
index 53dd015..524f59a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.alpha.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.alpha.2</h1>
 <p class="desc">Shadow colour alpha components are used</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.2.worker.js
index 491397a..e671c1a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadow colour alpha components are used");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.3.html
index 5cac64d8..5a089b9b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.alpha.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.alpha.3</h1>
 <p class="desc">Shadows are affected by globalAlpha</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.3.worker.js
index f30cba2..25c8c5ac 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are affected by globalAlpha");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.4.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.4.html
index e7aad4f..a8c644a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.4.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.4.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.alpha.4</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.alpha.4</h1>
 <p class="desc">Shadows with alpha components are correctly affected by globalAlpha</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.4.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.4.worker.js
index 1c1b619..567b6b8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.4.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.4.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows with alpha components are correctly affected by globalAlpha");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.5.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.5.html
index db31f71..2efd3567 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.5.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.5.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.alpha.5</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.alpha.5</h1>
 <p class="desc">Shadows of shapes with alpha components are drawn correctly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.5.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.5.worker.js
index dd7699f..3ebaab6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.5.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.alpha.5.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows of shapes with alpha components are drawn correctly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.initial.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.initial.html
index 290ffbb..b716967 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.initial.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.initial.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.attributes.shadowBlur.initial</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.attributes.shadowBlur.initial</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.initial.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.initial.worker.js
index 0406e5f..d5695c8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.initial.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.initial.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.invalid.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.invalid.html
index 108c0d0..4b2115d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.invalid.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.attributes.shadowBlur.invalid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.attributes.shadowBlur.invalid</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.invalid.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.invalid.worker.js
index d4e37a1c..87362f0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.invalid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.invalid.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.valid.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.valid.html
index 45a8395c8..c0076579 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.valid.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.valid.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.attributes.shadowBlur.valid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.attributes.shadowBlur.valid</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.valid.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.valid.worker.js
index aada608..71fc28b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.valid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.valid.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.initial.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.initial.html
index 83c7628d..f923799 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.initial.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.initial.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.attributes.shadowColor.initial</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.attributes.shadowColor.initial</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.initial.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.initial.worker.js
index 5e13b9b3..b7d9257 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.initial.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.initial.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.invalid.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.invalid.html
index b4d661d..704f07c9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.invalid.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.attributes.shadowColor.invalid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.attributes.shadowColor.invalid</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.invalid.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.invalid.worker.js
index aad23bd..a7083941 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.invalid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.invalid.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.valid.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.valid.html
index 318a4ec..22c9f19 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.valid.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.valid.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.attributes.shadowColor.valid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.attributes.shadowColor.valid</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.valid.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.valid.worker.js
index b5a711f..16cf774 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.valid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.valid.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.initial.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.initial.html
index 7efd45e..a844604 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.initial.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.initial.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.attributes.shadowOffset.initial</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.attributes.shadowOffset.initial</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.initial.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.initial.worker.js
index 08e2bf4..978b234 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.initial.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.initial.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.invalid.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.invalid.html
index 8db0cd5..2599d79 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.invalid.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.attributes.shadowOffset.invalid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.attributes.shadowOffset.invalid</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.invalid.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.invalid.worker.js
index 2b02e946..3fd10ef 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.invalid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.invalid.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.valid.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.valid.html
index 19fde85..fde6e64a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.valid.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.valid.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.attributes.shadowOffset.valid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.attributes.shadowOffset.valid</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.valid.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.valid.worker.js
index b6dacb4..0956222c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.valid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.valid.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.alpha.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.alpha.html
index 9f6dafb..7e77dff 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.alpha.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.canvas.alpha</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.canvas.alpha</h1>
 <p class="desc">Shadows are drawn correctly for partially-transparent canvases</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.alpha.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.alpha.worker.js
index a0b9eee..00a9148 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.alpha.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.alpha.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are drawn correctly for partially-transparent canvases");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.basic.html
index c372ef4..25ff73d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.canvas.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.canvas.basic</h1>
 <p class="desc">Shadows are drawn for canvases</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.basic.worker.js
index 3d95499f3..46aab07b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are drawn for canvases");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.transparent.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.transparent.1.html
index 4350516..df6590c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.transparent.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.transparent.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.canvas.transparent.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.canvas.transparent.1</h1>
 <p class="desc">Shadows are not drawn for transparent canvases</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.transparent.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.transparent.1.worker.js
index 7ba697b5..6a631f3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.transparent.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.transparent.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are not drawn for transparent canvases");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.transparent.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.transparent.2.html
index ded18f7..6f4a8f9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.transparent.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.transparent.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.canvas.transparent.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.canvas.transparent.2</h1>
 <p class="desc">Shadows are not drawn for transparent parts of canvases</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.transparent.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.transparent.2.worker.js
index d91fa16..a9c9a7ac 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.transparent.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.canvas.transparent.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are not drawn for transparent parts of canvases");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.clip.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.clip.1.html
index 9d5e33a..d452c06 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.clip.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.clip.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.clip.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.clip.1</h1>
 <p class="desc">Shadows of clipped shapes are still drawn within the clipping region</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.clip.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.clip.1.worker.js
index d6a444d..27cb869 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.clip.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.clip.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows of clipped shapes are still drawn within the clipping region");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.clip.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.clip.2.html
index 586fa9e..dc2992cf 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.clip.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.clip.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.clip.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.clip.2</h1>
 <p class="desc">Shadows are not drawn outside the clipping region</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.clip.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.clip.2.worker.js
index eac6bc31..8ea9e97 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.clip.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.clip.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are not drawn outside the clipping region");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.clip.3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.clip.3.html
index 77bb41c..182b93a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.clip.3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.clip.3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.clip.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.clip.3</h1>
 <p class="desc">Shadows of clipped shapes are still drawn within the clipping region</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.clip.3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.clip.3.worker.js
index 809ee0b..01be0657 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.clip.3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.clip.3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows of clipped shapes are still drawn within the clipping region");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.composite.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.composite.1.html
index 51c458c..a80ebbdb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.composite.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.composite.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.composite.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.composite.1</h1>
 <p class="desc">Shadows are drawn using globalCompositeOperation</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.composite.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.composite.1.worker.js
index 5c81a2c3..f8c80dc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.composite.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.composite.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are drawn using globalCompositeOperation");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.composite.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.composite.2.html
index a0355c6..d8def5cd 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.composite.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.composite.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.composite.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.composite.2</h1>
 <p class="desc">Shadows are drawn using globalCompositeOperation</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.composite.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.composite.2.worker.js
index 2ab91b7..2b93bae 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.composite.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.composite.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are drawn using globalCompositeOperation");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.composite.3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.composite.3.html
index 4cbf1902..d3c68b5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.composite.3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.composite.3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.composite.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.composite.3</h1>
 <p class="desc">Areas outside shadows are drawn correctly with destination-out</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.composite.3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.composite.3.worker.js
index 8573022..75a5d27 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.composite.3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.composite.3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Areas outside shadows are drawn correctly with destination-out");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.blur.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.blur.html
index e6ad293..23a6be1a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.blur.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.blur.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.enable.blur</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.enable.blur</h1>
 <p class="desc">Shadows are drawn if shadowBlur is set</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.blur.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.blur.worker.js
index 610a38b..dc2563f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.blur.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.blur.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are drawn if shadowBlur is set");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.off.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.off.1.html
index f8ecf85f..b35cd5f1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.off.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.off.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.enable.off.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.enable.off.1</h1>
 <p class="desc">Shadows are not drawn when only shadowColor is set</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.off.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.off.1.worker.js
index dad5c0e5..878c7da3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.off.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.off.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are not drawn when only shadowColor is set");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.off.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.off.2.html
index 3a23c8b..2825d9352 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.off.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.off.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.enable.off.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.enable.off.2</h1>
 <p class="desc">Shadows are not drawn when only shadowColor is set</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.off.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.off.2.worker.js
index 371f582..9648af5f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.off.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.off.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are not drawn when only shadowColor is set");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.x.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.x.html
index b2f147b..a0506f4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.x.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.x.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.enable.x</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.enable.x</h1>
 <p class="desc">Shadows are drawn if shadowOffsetX is set</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.x.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.x.worker.js
index 1f70635..f4912bfd 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.x.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.x.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are drawn if shadowOffsetX is set");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.y.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.y.html
index a01d61f2..2330635e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.y.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.y.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.enable.y</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.enable.y</h1>
 <p class="desc">Shadows are drawn if shadowOffsetY is set</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.y.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.y.worker.js
index f1d0f27..a695b8e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.y.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.enable.y.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are drawn if shadowOffsetY is set");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.alpha.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.alpha.html
index 50e7816..933de20 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.alpha.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.gradient.alpha</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.gradient.alpha</h1>
 <p class="desc">Shadows are drawn correctly for partially-transparent gradient fills</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.alpha.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.alpha.worker.js
index 07c02cd..9e8fb64 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.alpha.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.alpha.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are drawn correctly for partially-transparent gradient fills");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.basic.html
index 5ff7e66f..5fa70319 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.gradient.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.gradient.basic</h1>
 <p class="desc">Shadows are drawn for gradient fills</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.basic.worker.js
index 90f24bd..9c28e57 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are drawn for gradient fills");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.transparent.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.transparent.1.html
index 80b59bac..55d3621 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.transparent.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.transparent.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.gradient.transparent.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.gradient.transparent.1</h1>
 <p class="desc">Shadows are not drawn for transparent gradient fills</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.transparent.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.transparent.1.worker.js
index 9e12ce83..3f5addc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.transparent.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.transparent.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are not drawn for transparent gradient fills");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.transparent.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.transparent.2.html
index 7c1f5678..f15bb98 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.transparent.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.transparent.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.gradient.transparent.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.gradient.transparent.2</h1>
 <p class="desc">Shadows are not drawn for transparent parts of gradient fills</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.transparent.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.transparent.2.worker.js
index 08f46fd..e5785b8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.transparent.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.gradient.transparent.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are not drawn for transparent parts of gradient fills");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.alpha.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.alpha.html
index 86483e3..401df16 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.alpha.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.image.alpha</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.image.alpha</h1>
 <p class="desc">Shadows are drawn correctly for partially-transparent images</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.alpha.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.alpha.worker.js
index a624be80..54ffd70 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.alpha.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.alpha.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are drawn correctly for partially-transparent images");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.basic.html
index 5ffd8c6..47a8fee6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.image.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.image.basic</h1>
 <p class="desc">Shadows are drawn for images</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.basic.worker.js
index 0685043..0f192f9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are drawn for images");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.scale.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.scale.html
index d438f3f..b2c0212 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.scale.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.scale.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.image.scale</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.image.scale</h1>
 <p class="desc">Shadows are drawn correctly for scaled images</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.scale.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.scale.worker.js
index 6f084e9..2b430a02 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.scale.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.scale.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are drawn correctly for scaled images");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.section.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.section.html
index 1f29760..3efd2aad 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.section.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.section.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.image.section</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.image.section</h1>
 <p class="desc">Shadows are not drawn for areas outside image source rectangles</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.section.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.section.worker.js
index ad923e0f0..73f76e5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.section.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.section.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are not drawn for areas outside image source rectangles");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.transparent.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.transparent.1.html
index f2b2899..18972fd 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.transparent.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.transparent.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.image.transparent.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.image.transparent.1</h1>
 <p class="desc">Shadows are not drawn for transparent images</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.transparent.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.transparent.1.worker.js
index af2d869f..465e78ca 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.transparent.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.transparent.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are not drawn for transparent images");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.transparent.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.transparent.2.html
index 5b23ddf..0ddf21c0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.transparent.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.transparent.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.image.transparent.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.image.transparent.2</h1>
 <p class="desc">Shadows are not drawn for transparent parts of images</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.transparent.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.transparent.2.worker.js
index 0b99f362..d64e765 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.transparent.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.image.transparent.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are not drawn for transparent parts of images");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.negativeX.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.negativeX.html
index 8f8fad7..33a675d8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.negativeX.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.negativeX.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.offset.negativeX</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.offset.negativeX</h1>
 <p class="desc">Shadows can be offset with negative x</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.negativeX.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.negativeX.worker.js
index 9908123..0135a7e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.negativeX.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.negativeX.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows can be offset with negative x");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.negativeY.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.negativeY.html
index 47c3910..3f7063c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.negativeY.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.negativeY.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.offset.negativeY</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.offset.negativeY</h1>
 <p class="desc">Shadows can be offset with negative y</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.negativeY.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.negativeY.worker.js
index 998e4ad..f2553c5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.negativeY.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.negativeY.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows can be offset with negative y");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.positiveX.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.positiveX.html
index d66414b..05ff73c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.positiveX.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.positiveX.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.offset.positiveX</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.offset.positiveX</h1>
 <p class="desc">Shadows can be offset with positive x</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.positiveX.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.positiveX.worker.js
index e00379f..0b6fabd7b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.positiveX.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.positiveX.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows can be offset with positive x");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.positiveY.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.positiveY.html
index 6914414..d5857a50 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.positiveY.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.positiveY.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.offset.positiveY</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.offset.positiveY</h1>
 <p class="desc">Shadows can be offset with positive y</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.positiveY.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.positiveY.worker.js
index e7df6897..dce9816 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.positiveY.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.offset.positiveY.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows can be offset with positive y");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.outside.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.outside.html
index 664e509..776cbeed 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.outside.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.outside.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.outside</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.outside</h1>
 <p class="desc">Shadows of shapes outside the visible area can be offset onto the visible area</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.outside.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.outside.worker.js
index 6d23c72c..9c389fc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.outside.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.outside.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows of shapes outside the visible area can be offset onto the visible area");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.alpha.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.alpha.html
index 371f32a..6af0644 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.alpha.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.alpha.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.pattern.alpha</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.pattern.alpha</h1>
 <p class="desc">Shadows are drawn correctly for partially-transparent fill patterns</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.alpha.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.alpha.worker.js
index 636253a..b911bd7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.alpha.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.alpha.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are drawn correctly for partially-transparent fill patterns");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.basic.html
index cab7648..ad7fedc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.pattern.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.pattern.basic</h1>
 <p class="desc">Shadows are drawn for fill patterns</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.basic.worker.js
index e8b6033..4166c28 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are drawn for fill patterns");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.transparent.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.transparent.1.html
index 315724a..348c79b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.transparent.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.transparent.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.pattern.transparent.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.pattern.transparent.1</h1>
 <p class="desc">Shadows are not drawn for transparent fill patterns</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.transparent.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.transparent.1.worker.js
index 3400279..2ca00dc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.transparent.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.transparent.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are not drawn for transparent fill patterns");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.transparent.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.transparent.2.html
index 668e07f..2cc6a44 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.transparent.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.transparent.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.pattern.transparent.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.pattern.transparent.2</h1>
 <p class="desc">Shadows are not drawn for transparent parts of fill patterns</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.transparent.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.transparent.2.worker.js
index 157fbe2..b0255fa 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.transparent.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.pattern.transparent.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are not drawn for transparent parts of fill patterns");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.basic.html
index be66f3a9..6d71ea2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.stroke.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.stroke.basic</h1>
 <p class="desc">Shadows are drawn for strokes</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.basic.worker.js
index e16536de..72f0f7b9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are drawn for strokes");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.cap.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.cap.1.html
index 2c460fd..7a9995d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.cap.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.cap.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.stroke.cap.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.stroke.cap.1</h1>
 <p class="desc">Shadows are not drawn for areas outside stroke caps</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.cap.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.cap.1.worker.js
index 4c6a1aa..74b1b94 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.cap.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.cap.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are not drawn for areas outside stroke caps");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.cap.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.cap.2.html
index 0e78c1a..4ff3564 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.cap.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.cap.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.stroke.cap.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.stroke.cap.2</h1>
 <p class="desc">Shadows are drawn for stroke caps</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.cap.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.cap.2.worker.js
index 0c3cae1..ac25dd8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.cap.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.cap.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are drawn for stroke caps");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.join.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.join.1.html
index 04a6245..3647a5d4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.join.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.join.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.stroke.join.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.stroke.join.1</h1>
 <p class="desc">Shadows are not drawn for areas outside stroke joins</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.join.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.join.1.worker.js
index 9583720..65816df7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.join.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.join.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are not drawn for areas outside stroke joins");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.join.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.join.2.html
index 6629313..70c96ce 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.join.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.join.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.stroke.join.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.stroke.join.2</h1>
 <p class="desc">Shadows are drawn for stroke joins</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.join.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.join.2.worker.js
index 8b89d74..bdcfd09 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.join.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.join.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are drawn for stroke joins");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.join.3.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.join.3.html
index 2fe623b..93075330 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.join.3.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.join.3.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.stroke.join.3</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.stroke.join.3</h1>
 <p class="desc">Shadows are drawn for stroke joins respecting miter limit</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.join.3.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.join.3.worker.js
index a67d7706..a769515 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.join.3.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.stroke.join.3.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows are drawn for stroke joins respecting miter limit");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.transform.1.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.transform.1.html
index a879a3b9..09809cc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.transform.1.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.transform.1.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.transform.1</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.transform.1</h1>
 <p class="desc">Shadows take account of transformations</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.transform.1.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.transform.1.worker.js
index 1538935..928f5379 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.transform.1.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.transform.1.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadows take account of transformations");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.transform.2.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.transform.2.html
index d2452b4..fb5c322 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.transform.2.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.transform.2.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.shadow.transform.2</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.shadow.transform.2</h1>
 <p class="desc">Shadow offsets are not affected by transformations</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.transform.2.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.transform.2.worker.js
index bc9c7c8..9cbd71de 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.transform.2.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/shadows/2d.shadow.transform.2.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Shadow offsets are not affected by transformations");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.align.default.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.align.default.html
index 91f6ed3f6..fc1dcd7a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.align.default.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.align.default.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.align.default</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.align.default</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.align.default.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.align.default.worker.js
index 7f59ae9b..bd0256d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.align.default.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.align.default.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.align.invalid.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.align.invalid.html
index bed45de..f1ca61b6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.align.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.align.invalid.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.align.invalid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.align.invalid</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.align.invalid.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.align.invalid.worker.js
index a269785..c528e435 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.align.invalid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.align.invalid.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.align.valid.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.align.valid.html
index d96bdbf0..d617ce0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.align.valid.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.align.valid.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.align.valid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.align.valid</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.align.valid.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.align.valid.worker.js
index 478d454..cdef885dc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.align.valid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.align.valid.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.baseline.default.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.baseline.default.html
index f2fe110..a47f5c56 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.baseline.default.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.baseline.default.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.baseline.default</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.baseline.default</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.baseline.default.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.baseline.default.worker.js
index a475fa3..8bd65af 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.baseline.default.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.baseline.default.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.baseline.invalid.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.baseline.invalid.html
index 0ff3b18d..8e4508fd 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.baseline.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.baseline.invalid.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.baseline.invalid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.baseline.invalid</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.baseline.invalid.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.baseline.invalid.worker.js
index 377799b5..82a19036 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.baseline.invalid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.baseline.invalid.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.baseline.valid.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.baseline.valid.html
index cd635ec..c9d3bffb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.baseline.valid.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.baseline.valid.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.baseline.valid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.baseline.valid</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.baseline.valid.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.baseline.valid.worker.js
index 1440c38c..2297133e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.baseline.valid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.baseline.valid.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.center.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.center.html
index 48e0cb3..c891053 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.center.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.center.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.align.center</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.align.center</h1>
 <p class="desc">textAlign center is the center of the em squares (not the bounding box)</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.center.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.center.worker.js
index 88d77c1..a548b43a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.center.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.center.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("textAlign center is the center of the em squares (not the bounding box)");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.end.ltr.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.end.ltr.html
index 6356b3be..3422764 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.end.ltr.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.end.ltr.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.align.end.ltr</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.align.end.ltr</h1>
 <p class="desc">textAlign end with ltr is the right edge</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.end.ltr.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.end.ltr.worker.js
index 58e6ffa..fb25821 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.end.ltr.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.end.ltr.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("textAlign end with ltr is the right edge");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.end.rtl.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.end.rtl.html
index b60a85c..a759cf7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.end.rtl.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.end.rtl.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.align.end.rtl</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.align.end.rtl</h1>
 <p class="desc">textAlign end with rtl is the left edge</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.end.rtl.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.end.rtl.worker.js
index 66f03aca..041fae76 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.end.rtl.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.end.rtl.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("textAlign end with rtl is the left edge");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.left.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.left.html
index 164b02a..a46d76b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.left.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.left.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.align.left</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.align.left</h1>
 <p class="desc">textAlign left is the left of the first em square (not the bounding box)</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.left.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.left.worker.js
index 725762a..c474bf1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.left.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.left.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("textAlign left is the left of the first em square (not the bounding box)");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.right.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.right.html
index 5621161..976256e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.right.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.right.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.align.right</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.align.right</h1>
 <p class="desc">textAlign right is the right of the last em square (not the bounding box)</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.right.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.right.worker.js
index 70a39a3..fc01a85b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.right.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.right.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("textAlign right is the right of the last em square (not the bounding box)");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.start.ltr.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.start.ltr.html
index 130474e..8f2cc09 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.start.ltr.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.start.ltr.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.align.start.ltr</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.align.start.ltr</h1>
 <p class="desc">textAlign start with ltr is the left edge</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.start.ltr.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.start.ltr.worker.js
index ebc0654..5664436 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.start.ltr.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.start.ltr.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("textAlign start with ltr is the left edge");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.start.rtl.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.start.rtl.html
index 05372ee..6e4206e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.start.rtl.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.start.rtl.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.align.start.rtl</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.align.start.rtl</h1>
 <p class="desc">textAlign start with rtl is the right edge</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.start.rtl.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.start.rtl.worker.js
index dc551e4..3ea6fe9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.start.rtl.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.align.start.rtl.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("textAlign start with rtl is the right edge");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.alphabetic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.alphabetic.html
index 2413fe5..f95bcd4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.alphabetic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.alphabetic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.baseline.alphabetic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.baseline.alphabetic</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.alphabetic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.alphabetic.worker.js
index 2683272..8b973e5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.alphabetic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.alphabetic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.bottom.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.bottom.html
index 5fa9418..0c77788 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.bottom.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.bottom.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.baseline.bottom</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.baseline.bottom</h1>
 <p class="desc">textBaseline bottom is the bottom of the em square (not the bounding box)</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.bottom.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.bottom.worker.js
index 3ba60c96..3ae948c1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.bottom.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.bottom.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("textBaseline bottom is the bottom of the em square (not the bounding box)");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.hanging.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.hanging.html
index e3f9cf34..46a40c9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.hanging.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.hanging.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.baseline.hanging</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.baseline.hanging</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.hanging.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.hanging.worker.js
index b4773e8ab..a3fcc35 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.hanging.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.hanging.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.ideographic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.ideographic.html
index 59865c3b..3f093417 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.ideographic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.ideographic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.baseline.ideographic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.baseline.ideographic</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.ideographic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.ideographic.worker.js
index ada7fe9..5cb8eb0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.ideographic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.ideographic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.middle.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.middle.html
index 71799da..f040792 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.middle.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.middle.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.baseline.middle</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.baseline.middle</h1>
 <p class="desc">textBaseline middle is the middle of the em square (not the bounding box)</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.middle.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.middle.worker.js
index 12c768a..0c29204 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.middle.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.middle.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("textBaseline middle is the middle of the em square (not the bounding box)");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.top.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.top.html
index 2fcce4a..902ed1b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.top.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.top.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.baseline.top</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.baseline.top</h1>
 <p class="desc">textBaseline top is the top of the em square (not the bounding box)</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.top.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.top.worker.js
index 078255ac..a2427ed 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.top.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.baseline.top.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("textBaseline top is the top of the em square (not the bounding box)");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.basic-manual.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.basic-manual.html
index ed267be..9ca033e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.basic-manual.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.basic-manual.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.fill.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.fill.basic</h1>
 <p class="desc">fillText draws filled text</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.basic-manual.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.basic-manual.worker.js
index bd7f7e2..d863488 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.basic-manual.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.basic-manual.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fillText draws filled text");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.NaN.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.NaN.html
index f66b7357..3c7ddaa 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.NaN.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.NaN.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.fill.maxWidth.NaN</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.fill.maxWidth.NaN</h1>
 <p class="desc">fillText handles maxWidth correctly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.NaN.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.NaN.worker.js
index 49a4f6b..4e67325 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.NaN.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.NaN.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fillText handles maxWidth correctly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.bound.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.bound.html
index c748955..ae4b308 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.bound.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.bound.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.fill.maxWidth.bound</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.fill.maxWidth.bound</h1>
 <p class="desc">fillText handles maxWidth based on line size, not bounding box size</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.bound.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.bound.worker.js
index fdbab5b9..0813346 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.bound.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.bound.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fillText handles maxWidth based on line size, not bounding box size");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.fontface.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.fontface.html
index 936de46..b7d4cd6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.fontface.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.fontface.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.fill.maxWidth.fontface</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.fill.maxWidth.fontface</h1>
 <p class="desc">fillText works on @font-face fonts</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.fontface.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.fontface.worker.js
index 3a5b4b7..6e76ff6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.fontface.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.fontface.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fillText works on @font-face fonts");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.large-manual.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.large-manual.html
index e463d4e..669df5d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.large-manual.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.large-manual.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.fill.maxWidth.large</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.fill.maxWidth.large</h1>
 <p class="desc">fillText handles maxWidth correctly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.large-manual.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.large-manual.worker.js
index e99e56e..1eac193 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.large-manual.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.large-manual.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fillText handles maxWidth correctly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.negative.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.negative.html
index c5947d8..fbe920c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.negative.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.negative.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.fill.maxWidth.negative</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.fill.maxWidth.negative</h1>
 <p class="desc">fillText handles maxWidth correctly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.negative.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.negative.worker.js
index 5302fde..fec7229 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.negative.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.negative.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fillText handles maxWidth correctly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.small.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.small.html
index 04cb3edf..00995e7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.small.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.small.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.fill.maxWidth.small</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.fill.maxWidth.small</h1>
 <p class="desc">fillText handles maxWidth correctly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.small.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.small.worker.js
index 73c4924..fcb0925 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.small.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.small.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fillText handles maxWidth correctly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.zero.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.zero.html
index 77c9d05..2dd17d7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.zero.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.zero.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.fill.maxWidth.zero</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.fill.maxWidth.zero</h1>
 <p class="desc">fillText handles maxWidth correctly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.zero.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.zero.worker.js
index d322917..442a9211 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.zero.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.maxWidth.zero.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fillText handles maxWidth correctly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.rtl-manual.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.rtl-manual.html
index fa61f29..ddbd1ff 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.rtl-manual.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.rtl-manual.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.fill.rtl</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.fill.rtl</h1>
 <p class="desc">fillText respects Right-To-Left Override characters</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.rtl-manual.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.rtl-manual.worker.js
index f5bd247..c7be4f8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.rtl-manual.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.rtl-manual.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fillText respects Right-To-Left Override characters");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.unaffected.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.unaffected.html
index 5d2ee75..7c46db0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.unaffected.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.unaffected.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.fill.unaffected</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.fill.unaffected</h1>
 <p class="desc">fillText does not start a new path or subpath</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.unaffected.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.unaffected.worker.js
index 8be9c0b..bfd182e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.unaffected.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fill.unaffected.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("fillText does not start a new path or subpath");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fontface.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fontface.html
index f66be6cc..77994da 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fontface.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fontface.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.fontface</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.fontface</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fontface.notinpage.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fontface.notinpage.html
index 5e088c6..d2bff84 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fontface.notinpage.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fontface.notinpage.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.fontface.notinpage</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.fontface.notinpage</h1>
 <p class="desc">@font-face fonts should work even if they are not used in the page</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fontface.notinpage.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fontface.notinpage.worker.js
index 66e6540..bfc6a74d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fontface.notinpage.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fontface.notinpage.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("@font-face fonts should work even if they are not used in the page");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fontface.repeat.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fontface.repeat.html
index 922f74e..b2a846b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fontface.repeat.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fontface.repeat.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.fontface.repeat</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.fontface.repeat</h1>
 <p class="desc">Draw with the font immediately, then wait a bit until and draw again. (This crashes some version of WebKit.)</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fontface.repeat.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fontface.repeat.worker.js
index c15ee9ad..5e16af7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fontface.repeat.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fontface.repeat.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Draw with the font immediately, then wait a bit until and draw again. (This crashes some version of WebKit.)");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fontface.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fontface.worker.js
index 13637c7..ed9e36a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fontface.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.fontface.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.kern.consistent-manual.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.kern.consistent-manual.html
index da70c50..372e6138 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.kern.consistent-manual.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.kern.consistent-manual.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.kern.consistent</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.kern.consistent</h1>
 <p class="desc">Stroked and filled text should have exactly the same kerning so it overlaps</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.kern.consistent-manual.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.kern.consistent-manual.worker.js
index 46808a8..8bdb213a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.kern.consistent-manual.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.kern.consistent-manual.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Stroked and filled text should have exactly the same kerning so it overlaps");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.basic.html
index 60a388de..8d3ecedf 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.space.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.space.basic</h1>
 <p class="desc">U+0020 is rendered the correct size (1em wide)</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.basic.worker.js
index 3d539e9..1a6c231f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("U+0020 is rendered the correct size (1em wide)");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.end.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.end.html
index 0d44a0d..1b84bf08 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.end.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.end.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.space.collapse.end</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.space.collapse.end</h1>
 <p class="desc">Space characters at the end of a line are collapsed (per CSS)</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.end.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.end.worker.js
index 609bfae..58189f3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.end.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.end.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Space characters at the end of a line are collapsed (per CSS)");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.nonspace.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.nonspace.html
index a596c51..5e01afb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.nonspace.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.nonspace.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.space.collapse.nonspace</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.space.collapse.nonspace</h1>
 <p class="desc">Non-space characters are not converted to U+0020 and collapsed</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.nonspace.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.nonspace.worker.js
index 8822dbfa..63e98d4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.nonspace.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.nonspace.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Non-space characters are not converted to U+0020 and collapsed");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.other.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.other.html
index d7db23c..4962f3bc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.other.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.other.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.space.collapse.other</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.space.collapse.other</h1>
 <p class="desc">Space characters are converted to U+0020, and collapsed (per CSS)</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.other.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.other.worker.js
index c6602350..66fe2e7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.other.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.other.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Space characters are converted to U+0020, and collapsed (per CSS)");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.space.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.space.html
index 4c1a5a4..a2f788b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.space.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.space.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.space.collapse.space</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.space.collapse.space</h1>
 <p class="desc">Space characters are converted to U+0020, and collapsed (per CSS)</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.space.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.space.worker.js
index 98d6924..8b002f5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.space.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.space.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Space characters are converted to U+0020, and collapsed (per CSS)");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.start.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.start.html
index 1a73b94..806abc8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.start.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.start.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.space.collapse.start</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.space.collapse.start</h1>
 <p class="desc">Space characters at the start of a line are collapsed (per CSS)</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.start.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.start.worker.js
index eded1a8..076d7e4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.start.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.space.collapse.start.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Space characters at the start of a line are collapsed (per CSS)");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.stroke.basic-manual.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.stroke.basic-manual.html
index 35cb1a5..510b385 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.stroke.basic-manual.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.stroke.basic-manual.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.stroke.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.stroke.basic</h1>
 <p class="desc">strokeText draws stroked text</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.stroke.basic-manual.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.stroke.basic-manual.worker.js
index a09a1eae..680cf3b1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.stroke.basic-manual.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.stroke.basic-manual.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("strokeText draws stroked text");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.stroke.unaffected.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.stroke.unaffected.html
index 1cac65c..e644154 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.stroke.unaffected.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.stroke.unaffected.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.draw.stroke.unaffected</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.draw.stroke.unaffected</h1>
 <p class="desc">strokeText does not start a new path or subpath</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.stroke.unaffected.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.stroke.unaffected.worker.js
index 7921f8a..90e0feb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.stroke.unaffected.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.draw.stroke.unaffected.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("strokeText does not start a new path or subpath");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.default.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.default.html
index 736c1ab..19a89d007 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.default.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.default.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.font.default</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.font.default</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.default.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.default.worker.js
index cad656e2..94ab1be5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.default.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.default.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.basic.html
index b369e0e3..4c61e6e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.font.parse.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.font.parse.basic</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.basic.worker.js
index 2a3d93d..71791441 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.complex.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.complex.html
index a45f737..34d54196 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.complex.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.complex.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.font.parse.complex</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.font.parse.complex</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.complex.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.complex.worker.js
index 62cc6ed..958af64 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.complex.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.complex.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.invalid.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.invalid.html
index bd610ff..6ed7eb14 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.invalid.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.invalid.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.font.parse.invalid</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.font.parse.invalid</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.invalid.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.invalid.worker.js
index 72815988..9a407c0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.invalid.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.invalid.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.system.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.system.html
index a3dd448a..49adb4c3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.system.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.system.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.font.parse.system</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.font.parse.system</h1>
 <p class="desc">System fonts must be computed to explicit values</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.system.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.system.worker.js
index 0b5bcfc..c05ca6a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.system.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.system.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("System fonts must be computed to explicit values");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.tiny.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.tiny.html
index 350ad23..0b39dc6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.tiny.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.tiny.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.font.parse.tiny</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.font.parse.tiny</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.tiny.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.tiny.worker.js
index 11a96dcd..70c864525 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.tiny.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.parse.tiny.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.relative_size.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.relative_size.html
index 75ce105..8bd0d63 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.relative_size.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.relative_size.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.font.relative_size</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.font.relative_size</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.relative_size.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.relative_size.worker.js
index 34836a1c..09d06e6c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.relative_size.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.font.relative_size.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.actualBoundingBox.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.actualBoundingBox.html
index e747d30..e7809e3f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.actualBoundingBox.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.actualBoundingBox.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.measure.actualBoundingBox</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.measure.actualBoundingBox</h1>
 <p class="desc">Testing actualBoundingBox for OffscreenCanvas</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.actualBoundingBox.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.actualBoundingBox.worker.js
index da6eac5..0715cdb4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.actualBoundingBox.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.actualBoundingBox.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Testing actualBoundingBox for OffscreenCanvas");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.advances.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.advances.html
index ce03b2b..4010488 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.advances.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.advances.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.measure.advances</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.measure.advances</h1>
 <p class="desc">Testing width advances for OffscreenCanvas</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.advances.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.advances.worker.js
index ff696f8..575ddec 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.advances.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.advances.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Testing width advances for OffscreenCanvas");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.baselines.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.baselines.html
index 7812c4e..bdb6d11 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.baselines.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.baselines.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.measure.baselines</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.measure.baselines</h1>
 <p class="desc">Testing baselines for OffscreenCanvas</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.baselines.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.baselines.worker.js
index 721eccfe..04b033e1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.baselines.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.baselines.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Testing baselines for OffscreenCanvas");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.emHeights.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.emHeights.html
index be8be39..62258ad 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.emHeights.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.emHeights.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.measure.emHeights</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.measure.emHeights</h1>
 <p class="desc">Testing emHeights for OffscreenCanvas</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.emHeights.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.emHeights.worker.js
index 561bcb8..6f073bd3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.emHeights.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.emHeights.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Testing emHeights for OffscreenCanvas");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.fontBoundingBox.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.fontBoundingBox.html
index 91e7f5f..6133ec6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.fontBoundingBox.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.fontBoundingBox.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.measure.fontBoundingBox</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.measure.fontBoundingBox</h1>
 <p class="desc">Testing fontBoundingBox for OffscreenCanvas</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.fontBoundingBox.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.fontBoundingBox.worker.js
index b9038bc..cf64d653 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.fontBoundingBox.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.fontBoundingBox.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Testing fontBoundingBox for OffscreenCanvas");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.width.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.width.basic.html
index 4712c1cd..0adef6c5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.width.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.width.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.measure.width.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.measure.width.basic</h1>
 <p class="desc">The width of character is same as font used for OffscreenCanvas</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.width.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.width.basic.worker.js
index b646b78..fef71b3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.width.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.width.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("The width of character is same as font used for OffscreenCanvas");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.width.empty.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.width.empty.html
index 1f48f77..24cd14bb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.width.empty.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.width.empty.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.measure.width.empty</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.measure.width.empty</h1>
 <p class="desc">The empty string has zero width for OffscreenCanvas</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.width.empty.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.width.empty.worker.js
index 35dca25..cecd8ce 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.width.empty.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.width.empty.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("The empty string has zero width for OffscreenCanvas");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.width.space.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.width.space.html
index bfe89568..0d0fc3c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.width.space.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.width.space.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.text.measure.width.space</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.text.measure.width.space</h1>
 <p class="desc">Space characters are converted to U+0020 and collapsed (per CSS) for OffscreenCanvas</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.width.space.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.width.space.worker.js
index 25b594a..ee7e071 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.width.space.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/text/2d.text.measure.width.space.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Space characters are converted to U+0020 and collapsed (per CSS) for OffscreenCanvas");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.bitmap.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.bitmap.html
index a384e56..fbc479d4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.bitmap.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.bitmap.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.state.saverestore.bitmap</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.state.saverestore.bitmap</h1>
 <p class="desc">save()/restore() does not affect the current bitmap</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.bitmap.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.bitmap.worker.js
index be240a4..3c27d46 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.bitmap.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.bitmap.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("save()/restore() does not affect the current bitmap");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.clip.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.clip.html
index 0b3a7ea..7c23f4b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.clip.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.clip.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.state.saverestore.clip</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.state.saverestore.clip</h1>
 <p class="desc">save()/restore() affects the clipping path</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.clip.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.clip.worker.js
index cee7df08..918199b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.clip.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.clip.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("save()/restore() affects the clipping path");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.fillStyle.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.fillStyle.html
index 861312d..ef10480 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.fillStyle.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.fillStyle.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.state.saverestore.fillStyle</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.state.saverestore.fillStyle</h1>
 <p class="desc">save()/restore() works for fillStyle</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.fillStyle.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.fillStyle.worker.js
index a722dd0..72d324b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.fillStyle.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.fillStyle.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("save()/restore() works for fillStyle");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalAlpha.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalAlpha.html
index a24c3d5..fa0c7d3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalAlpha.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalAlpha.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.state.saverestore.globalAlpha</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.state.saverestore.globalAlpha</h1>
 <p class="desc">save()/restore() works for globalAlpha</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalAlpha.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalAlpha.worker.js
index 6432783c..fc425e88 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalAlpha.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalAlpha.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("save()/restore() works for globalAlpha");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html
index 5c512fb..47ef728 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.state.saverestore.globalCompositeOperation</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.state.saverestore.globalCompositeOperation</h1>
 <p class="desc">save()/restore() works for globalCompositeOperation</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalCompositeOperation.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalCompositeOperation.worker.js
index e06c994..04141b9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalCompositeOperation.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalCompositeOperation.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("save()/restore() works for globalCompositeOperation");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineCap.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineCap.html
index a0e245743..708e059 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineCap.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineCap.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.state.saverestore.lineCap</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.state.saverestore.lineCap</h1>
 <p class="desc">save()/restore() works for lineCap</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineCap.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineCap.worker.js
index fa96774..c2deb7a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineCap.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineCap.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("save()/restore() works for lineCap");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineJoin.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineJoin.html
index 75c8a94..0211a88 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineJoin.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineJoin.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.state.saverestore.lineJoin</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.state.saverestore.lineJoin</h1>
 <p class="desc">save()/restore() works for lineJoin</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineJoin.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineJoin.worker.js
index 1a4a377..714537e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineJoin.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineJoin.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("save()/restore() works for lineJoin");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineWidth.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineWidth.html
index 565fc63..1309111 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineWidth.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineWidth.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.state.saverestore.lineWidth</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.state.saverestore.lineWidth</h1>
 <p class="desc">save()/restore() works for lineWidth</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineWidth.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineWidth.worker.js
index b04d4bb..02bda8ac0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineWidth.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineWidth.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("save()/restore() works for lineWidth");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.miterLimit.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.miterLimit.html
index 2173325e..d579e74 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.miterLimit.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.miterLimit.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.state.saverestore.miterLimit</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.state.saverestore.miterLimit</h1>
 <p class="desc">save()/restore() works for miterLimit</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.miterLimit.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.miterLimit.worker.js
index 0591a7b..608593c8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.miterLimit.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.miterLimit.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("save()/restore() works for miterLimit");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.path.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.path.html
index 2c48b99..702be95 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.path.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.path.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.state.saverestore.path</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.state.saverestore.path</h1>
 <p class="desc">save()/restore() does not affect the current path</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.path.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.path.worker.js
index 83833e5..5343028 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.path.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.path.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("save()/restore() does not affect the current path");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowBlur.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowBlur.html
index 0f4fccc..403b0c29 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowBlur.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowBlur.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.state.saverestore.shadowBlur</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.state.saverestore.shadowBlur</h1>
 <p class="desc">save()/restore() works for shadowBlur</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowBlur.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowBlur.worker.js
index c24e643..3bfed14 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowBlur.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowBlur.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("save()/restore() works for shadowBlur");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowColor.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowColor.html
index 086ba30..d62da58 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowColor.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowColor.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.state.saverestore.shadowColor</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.state.saverestore.shadowColor</h1>
 <p class="desc">save()/restore() works for shadowColor</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowColor.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowColor.worker.js
index 94e25bb9..ac23acf 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowColor.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowColor.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("save()/restore() works for shadowColor");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetX.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetX.html
index f211a03..4676d35 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetX.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetX.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.state.saverestore.shadowOffsetX</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.state.saverestore.shadowOffsetX</h1>
 <p class="desc">save()/restore() works for shadowOffsetX</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetX.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetX.worker.js
index 373afa0..5649077 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetX.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetX.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("save()/restore() works for shadowOffsetX");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetY.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetY.html
index 1c1013b..a0665ad 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetY.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetY.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.state.saverestore.shadowOffsetY</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.state.saverestore.shadowOffsetY</h1>
 <p class="desc">save()/restore() works for shadowOffsetY</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetY.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetY.worker.js
index f883a93..3dcd632 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetY.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetY.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("save()/restore() works for shadowOffsetY");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.stack.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.stack.html
index 6e74825..5bbb3b6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.stack.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.stack.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.state.saverestore.stack</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.state.saverestore.stack</h1>
 <p class="desc">save()/restore() can be nested as a stack</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.stack.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.stack.worker.js
index 5a0f74b..aa20af3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.stack.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.stack.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("save()/restore() can be nested as a stack");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.stackdepth.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.stackdepth.html
index 4097ae9..591bbd3c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.stackdepth.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.stackdepth.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.state.saverestore.stackdepth</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.state.saverestore.stackdepth</h1>
 <p class="desc">save()/restore() stack depth is not unreasonably limited</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.stackdepth.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.stackdepth.worker.js
index 58a28e0..abe66e2e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.stackdepth.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.stackdepth.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("save()/restore() stack depth is not unreasonably limited");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.strokeStyle.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.strokeStyle.html
index 13c0c9f..4df4b8b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.strokeStyle.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.strokeStyle.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.state.saverestore.strokeStyle</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.state.saverestore.strokeStyle</h1>
 <p class="desc">save()/restore() works for strokeStyle</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.strokeStyle.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.strokeStyle.worker.js
index 1f149ed9..eaafacf 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.strokeStyle.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.strokeStyle.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("save()/restore() works for strokeStyle");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.transformation.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.transformation.html
index 785c128c..0d34e61 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.transformation.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.transformation.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.state.saverestore.transformation</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.state.saverestore.transformation</h1>
 <p class="desc">save()/restore() affects the current transformation matrix</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.transformation.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.transformation.worker.js
index e5ce45e3..f65c59e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.transformation.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.transformation.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("save()/restore() affects the current transformation matrix");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.underflow.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.underflow.html
index 46aa29e7..ff3994c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.underflow.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.underflow.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.state.saverestore.underflow</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.state.saverestore.underflow</h1>
 <p class="desc">restore() with an empty stack has no effect</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.underflow.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.underflow.worker.js
index 150a31c..ded24a8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.underflow.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-canvas-state/2d.state.saverestore.underflow.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("restore() with an empty stack has no effect");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.canvas.readonly.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.canvas.readonly.html
index 17a986c..33a3c59 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.canvas.readonly.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.canvas.readonly.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.canvas.readonly</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.canvas.readonly</h1>
 <p class="desc">canvas is readonly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.canvas.readonly.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.canvas.readonly.worker.js
index fdd99f86..fc914a4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.canvas.readonly.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.canvas.readonly.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("canvas is readonly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.canvas.reference.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.canvas.reference.html
index 1db64094..808371d4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.canvas.reference.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.canvas.reference.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.canvas.reference</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.canvas.reference</h1>
 <p class="desc">canvas refers back to its canvas</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.canvas.reference.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.canvas.reference.worker.js
index ff2666b..0a9af42e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.canvas.reference.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.canvas.reference.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("canvas refers back to its canvas");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.exists.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.exists.html
index 6011f205..c2848eb9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.exists.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.exists.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.getcontext.exists</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.getcontext.exists</h1>
 <p class="desc">The 2D context is implemented</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.exists.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.exists.worker.js
index bae8080..4238493 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.exists.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.exists.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("The 2D context is implemented");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.extraargs.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.extraargs.html
index 24a68e4..f2120ec 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.extraargs.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.extraargs.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.getcontext.extraargs</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.getcontext.extraargs</h1>
 <p class="desc">The 2D context ignores extra getContext arguments</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.extraargs.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.extraargs.worker.js
index 933aa249..aa950952 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.extraargs.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.extraargs.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("The 2D context ignores extra getContext arguments");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.shared.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.shared.html
index 8a948472..cdf84a5 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.shared.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.shared.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.getcontext.shared</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.getcontext.shared</h1>
 <p class="desc">getContext('2d') returns objects which share canvas state</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.shared.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.shared.worker.js
index c3ec664..22fdda6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.shared.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.shared.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("getContext('2d') returns objects which share canvas state");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.unique.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.unique.html
index 8128c6e..83f4bf0a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.unique.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.unique.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.getcontext.unique</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.getcontext.unique</h1>
 <p class="desc">getContext('2d') returns the same object</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.unique.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.unique.worker.js
index 3e4d6c47..99e7de2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.unique.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/2d.getcontext.unique.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("getContext('2d') returns the same object");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.arguments.missing.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.arguments.missing.html
index dfb7b303..9c73224 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.arguments.missing.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.arguments.missing.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: context.arguments.missing</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>context.arguments.missing</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.arguments.missing.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.arguments.missing.worker.js
index 467b78b0..35633346 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.arguments.missing.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.arguments.missing.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.casesensitive.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.casesensitive.html
index e579b3a..a344c69 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.casesensitive.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.casesensitive.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: context.casesensitive</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>context.casesensitive</h1>
 <p class="desc">Context name "2D" is unrecognised; matching is case sensitive</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.casesensitive.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.casesensitive.worker.js
index 02aa32fa..3fcea3a7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.casesensitive.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.casesensitive.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Context name \"2D\" is unrecognised; matching is case sensitive");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.emptystring.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.emptystring.html
index dc057508..4b829c7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.emptystring.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.emptystring.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: context.emptystring</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>context.emptystring</h1>
 <p class="desc">getContext with empty string returns null</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.emptystring.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.emptystring.worker.js
index ea308c5..bce1106f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.emptystring.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.emptystring.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("getContext with empty string returns null");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badname.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badname.html
index 89c9fa3..3dc2ad9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badname.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badname.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: context.unrecognised.badname</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>context.unrecognised.badname</h1>
 <p class="desc">getContext with unrecognised context name returns null</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badname.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badname.worker.js
index 87ffdcd..e9a961d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badname.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badname.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("getContext with unrecognised context name returns null");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badsuffix.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badsuffix.html
index 4806156..ced3fdee 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badsuffix.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badsuffix.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: context.unrecognised.badsuffix</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>context.unrecognised.badsuffix</h1>
 <p class="desc">Context name "2d" plus a suffix is unrecognised</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badsuffix.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badsuffix.worker.js
index 13833f91..f80205b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badsuffix.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badsuffix.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Context name \"2d\" plus a suffix is unrecognised");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.nullsuffix.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.nullsuffix.html
index 8bf98d41..4df8ea9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.nullsuffix.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.nullsuffix.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: context.unrecognised.nullsuffix</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>context.unrecognised.nullsuffix</h1>
 <p class="desc">Context name "2d" plus a "\0" suffix is unrecognised</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.nullsuffix.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.nullsuffix.worker.js
index fc677f8..e241fde 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.nullsuffix.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.nullsuffix.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Context name \"2d\" plus a \"\\0\" suffix is unrecognised");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.unicode.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.unicode.html
index c657c89..8a54208 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.unicode.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.unicode.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: context.unrecognised.unicode</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>context.unrecognised.unicode</h1>
 <p class="desc">Context name which kind of looks like "2d" is unrecognised</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.unicode.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.unicode.worker.js
index 36befd9..451c2ea 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.unicode.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/context.unrecognised.unicode.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Context name which kind of looks like \"2d\" is unrecognised");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.colour.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.colour.html
index f033e4d..5d36c7ef 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.colour.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.colour.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: initial.colour</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>initial.colour</h1>
 <p class="desc">Initial state is transparent black</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.colour.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.colour.worker.js
index f87861f..847c3c37 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.colour.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.colour.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Initial state is transparent black");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.2dstate.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.2dstate.html
index 13ef0c1..8406dbb3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.2dstate.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.2dstate.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: initial.reset.2dstate</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>initial.reset.2dstate</h1>
 <p class="desc">Resetting the canvas state resets 2D state variables</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.2dstate.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.2dstate.worker.js
index 7eab7fbb..37082d2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.2dstate.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.2dstate.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Resetting the canvas state resets 2D state variables");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.clip.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.clip.html
index 076b3e8..eb25f539e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.clip.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.clip.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: initial.reset.clip</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>initial.reset.clip</h1>
 <p class="desc">Resetting the canvas state resets the current clip region</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.clip.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.clip.worker.js
index 83a1a68f..a0e28441 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.clip.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.clip.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Resetting the canvas state resets the current clip region");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.different.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.different.html
index 3b6ed01..b3eed9e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.different.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.different.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: initial.reset.different</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>initial.reset.different</h1>
 <p class="desc">Changing size resets canvas to transparent black</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.different.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.different.worker.js
index 8bf5784..3243e93 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.different.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.different.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Changing size resets canvas to transparent black");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.gradient.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.gradient.html
index b0318901..97d7654 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.gradient.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.gradient.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: initial.reset.gradient</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>initial.reset.gradient</h1>
 <p class="desc">Resetting the canvas state does not invalidate any existing gradients</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.gradient.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.gradient.worker.js
index 70a3c99..7ed02a15 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.gradient.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.gradient.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Resetting the canvas state does not invalidate any existing gradients");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.path.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.path.html
index e4de133..c767a3cb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.path.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.path.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: initial.reset.path</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>initial.reset.path</h1>
 <p class="desc">Resetting the canvas state resets the current path</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.path.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.path.worker.js
index a0510f6f..7a75feaa 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.path.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.path.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Resetting the canvas state resets the current path");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.pattern.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.pattern.html
index 646b399..9ba9f9e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.pattern.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.pattern.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: initial.reset.pattern</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>initial.reset.pattern</h1>
 <p class="desc">Resetting the canvas state does not invalidate any existing patterns</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.pattern.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.pattern.worker.js
index 51b1dea..4c94691f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.pattern.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.pattern.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Resetting the canvas state does not invalidate any existing patterns");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.same.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.same.html
index 0a2edf4b..ed9260c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.same.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.same.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: initial.reset.same</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>initial.reset.same</h1>
 <p class="desc">Setting size (not changing the value) resets canvas to transparent black</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.same.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.same.worker.js
index dedbc55..aad9ebfe 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.same.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.same.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Setting size (not changing the value) resets canvas to transparent black");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.transform.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.transform.html
index 346283fd..8686155 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.transform.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.transform.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: initial.reset.transform</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>initial.reset.transform</h1>
 <p class="desc">Resetting the canvas state resets the current transformation matrix</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.transform.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.transform.worker.js
index f2487fb..0022c78 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.transform.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/initial.reset.transform.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Resetting the canvas state resets the current transformation matrix");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.commit.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.commit.html
index fd8ea50..cce0976 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.commit.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.commit.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 <link rel="help" href="https://html.spec.whatwg.org/#offscreencontext2d-commit">
 <script>
 
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.commit.w.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.commit.w.html
index 7012097..90de078 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.commit.w.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.commit.w.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 <link rel="help" href="https://html.spec.whatwg.org/#offscreencontext2d-commit">
 
 <script id="myWorker" type="text/worker">
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.constructor.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.constructor.html
index c130107..a1760764 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.constructor.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.constructor.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 <link rel="help" href="https://html.spec.whatwg.org/#dom-offscreencanvas">
 <script>
 
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.constructor.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.constructor.worker.js
index 7c773e0..285e4e1d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.constructor.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.constructor.worker.js
@@ -1,7 +1,7 @@
 // spec link: https://html.spec.whatwg.org/#dom-offscreencanvas
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t1 = async_test("Test that calling OffscreenCanvas's constructor generates correct width and height.");
 t1.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.getcontext.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.getcontext.html
index 65f6391..7aaa0e6 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.getcontext.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.getcontext.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 <link rel="help" href="https://html.spec.whatwg.org/#dom-offscreencanvas-getcontext">
 <script>
 
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.getcontext.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.getcontext.worker.js
index 008e04e..ced412f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.getcontext.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.getcontext.worker.js
@@ -1,7 +1,7 @@
 // spec link: https://html.spec.whatwg.org/#dom-offscreencanvas-getcontext
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 test(function() {
     var offscreenCanvas = new OffscreenCanvas(1, 1);
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.resize.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.resize.html
index 5770309..0922727 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.resize.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.resize.html
@@ -2,7 +2,7 @@
 <title>Test resizing an OffscreenCanvas with a 2d context</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 <body></body>
 <script>
 test(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfer.to.imagebitmap.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfer.to.imagebitmap.html
index 36fef6f..31187c64 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfer.to.imagebitmap.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfer.to.imagebitmap.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 <link rel="help" href="https://html.spec.whatwg.org/#dom-offscreencanvas-transfertoimagebitmap">
 
 <script id="myWorker" type="text/worker">
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfer.to.imagebitmap.w.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfer.to.imagebitmap.w.html
index c1faecb..5acad7d0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfer.to.imagebitmap.w.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfer.to.imagebitmap.w.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 <link rel="help" href="https://html.spec.whatwg.org/#dom-offscreencanvas-transfertoimagebitmap">
 
 <script id="myWorker" type="text/worker">
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfercontrol.to.offscreen.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfercontrol.to.offscreen.html
index 2eacf3f..a13e989 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfercontrol.to.offscreen.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfercontrol.to.offscreen.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 <link rel="help" href="https://html.spec.whatwg.org/#dom-canvas-transfercontroltooffscreen">
 <script>
 
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfercontrol.to.offscreen.w.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfercontrol.to.offscreen.w.html
index ec8d05a..8637c3f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfercontrol.to.offscreen.w.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfercontrol.to.offscreen.w.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 <link rel="help" href="https://html.spec.whatwg.org/#dom-canvas-transfercontroltooffscreen">
 
 <script id="myWorker" type="text/worker">
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transferrable.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transferrable.html
index f32309f..bc2ac3a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transferrable.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transferrable.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 <link rel="help" href="https://html.spec.whatwg.org/#offscreencanvas">
 
 <script id="myWorker" type="text/worker">
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transferrable.w.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transferrable.w.html
index 813290ad..c3f1b11 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transferrable.w.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transferrable.w.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 <link rel="help" href="https://html.spec.whatwg.org/#offscreencanvas">
 
 <script id="myWorker" type="text/worker">
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.default.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.default.html
index b5fa3c0..bb378f2f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.default.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.default.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: size.attributes.default</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>size.attributes.default</h1>
 <p class="desc">Default width/height when attributes are missing</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.default.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.default.worker.js
index 70bb3a2..ecdc53d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.default.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.default.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Default width/height when attributes are missing");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.html
index c6728cd..d422aab 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: size.attributes.idl</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>size.attributes.idl</h1>
 <p class="desc">Getting/setting width/height IDL attributes</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.set.zero.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.set.zero.html
index 34bcef3..3d41dc4e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.set.zero.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.set.zero.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: size.attributes.idl.set.zero</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>size.attributes.idl.set.zero</h1>
 <p class="desc">Setting width/height IDL attributes to 0</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.set.zero.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.set.zero.worker.js
index d321095..7482e06d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.set.zero.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.set.zero.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Setting width/height IDL attributes to 0");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.worker.js
index dc79f01..3846d6d1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Getting/setting width/height IDL attributes");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.decimal.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.decimal.html
index b6ca534..e952c73 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.decimal.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.decimal.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: size.attributes.parse.decimal</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>size.attributes.parse.decimal</h1>
 <p class="desc">Parsing of non-negative integers</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.decimal.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.decimal.worker.js
index 134ee39..b9d9ff9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.decimal.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.decimal.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Parsing of non-negative integers");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.em.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.em.html
index dd248f3..2c0298620f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.em.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.em.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: size.attributes.parse.em</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>size.attributes.parse.em</h1>
 <p class="desc">Parsing of non-negative integers</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.em.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.em.worker.js
index 753db9a..2d1a9fc 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.em.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.em.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Parsing of non-negative integers");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.empty.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.empty.html
index 9134ec0..1bb5f684 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.empty.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.empty.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: size.attributes.parse.empty</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>size.attributes.parse.empty</h1>
 <p class="desc">Parsing of non-negative integers</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.empty.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.empty.worker.js
index 940a89a0..07847d8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.empty.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.empty.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Parsing of non-negative integers");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.exp.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.exp.html
index 0611080..481bc9f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.exp.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.exp.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: size.attributes.parse.exp</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>size.attributes.parse.exp</h1>
 <p class="desc">Parsing of non-negative integers</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.exp.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.exp.worker.js
index 17300f5..a31a7bf 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.exp.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.exp.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Parsing of non-negative integers");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.hex.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.hex.html
index fed86d9..29f2984 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.hex.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.hex.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: size.attributes.parse.hex</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>size.attributes.parse.hex</h1>
 <p class="desc">Parsing of non-negative integers</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.hex.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.hex.worker.js
index 76b9763..933d856 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.hex.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.hex.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Parsing of non-negative integers");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.junk.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.junk.html
index 6a29887..6263cf8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.junk.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.junk.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: size.attributes.parse.junk</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>size.attributes.parse.junk</h1>
 <p class="desc">Parsing of non-negative integers</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.junk.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.junk.worker.js
index 96301e2..ee95f10 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.junk.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.junk.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Parsing of non-negative integers");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.minus.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.minus.html
index c4981aa..d6af82d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.minus.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.minus.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: size.attributes.parse.minus</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>size.attributes.parse.minus</h1>
 <p class="desc">Parsing of non-negative integers</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.minus.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.minus.worker.js
index 82a4de4..bd7a366 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.minus.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.minus.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Parsing of non-negative integers");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.octal.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.octal.html
index fd6edd5..955d4d2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.octal.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.octal.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: size.attributes.parse.octal</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>size.attributes.parse.octal</h1>
 <p class="desc">Parsing of non-negative integers</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.octal.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.octal.worker.js
index 0c3bbc1..bddc3db1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.octal.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.octal.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Parsing of non-negative integers");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.onlyspace.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.onlyspace.html
index ccfa41d..871e431 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.onlyspace.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.onlyspace.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: size.attributes.parse.onlyspace</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>size.attributes.parse.onlyspace</h1>
 <p class="desc">Parsing of non-negative integers</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.onlyspace.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.onlyspace.worker.js
index ec52619..e8c9552 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.onlyspace.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.onlyspace.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Parsing of non-negative integers");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.percent.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.percent.html
index 1446356..9c8cca1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.percent.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.percent.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: size.attributes.parse.percent</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>size.attributes.parse.percent</h1>
 <p class="desc">Parsing of non-negative integers</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.percent.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.percent.worker.js
index 83fda7b..b48ab71 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.percent.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.percent.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Parsing of non-negative integers");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.plus.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.plus.html
index c4bc029..02d7dc7 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.plus.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.plus.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: size.attributes.parse.plus</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>size.attributes.parse.plus</h1>
 <p class="desc">Parsing of non-negative integers</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.plus.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.plus.worker.js
index dee1041..4c6ad634 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.plus.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.plus.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Parsing of non-negative integers");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.space.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.space.html
index 1bbfdea3..9360753 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.space.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.space.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: size.attributes.parse.space</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>size.attributes.parse.space</h1>
 <p class="desc">Parsing of non-negative integers</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.space.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.space.worker.js
index a0da9ce..5bdc1a2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.space.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.space.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Parsing of non-negative integers");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.trailingjunk.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.trailingjunk.html
index f68e0fa..21562d2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.trailingjunk.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.trailingjunk.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: size.attributes.parse.trailingjunk</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>size.attributes.parse.trailingjunk</h1>
 <p class="desc">Parsing of non-negative integers</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.trailingjunk.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.trailingjunk.worker.js
index 8e3fd56..f983af3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.trailingjunk.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.trailingjunk.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Parsing of non-negative integers");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.whitespace.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.whitespace.html
index 3046f3d..c73f616 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.whitespace.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.whitespace.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: size.attributes.parse.whitespace</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>size.attributes.parse.whitespace</h1>
 <p class="desc">Parsing of non-negative integers</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.whitespace.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.whitespace.worker.js
index 5e5261d..39ccbb5a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.whitespace.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.whitespace.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Parsing of non-negative integers");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.zero.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.zero.html
index 4c358c0..b935ff58 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.zero.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.zero.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: size.attributes.parse.zero</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>size.attributes.parse.zero</h1>
 <p class="desc">Parsing of non-negative integers</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.zero.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.zero.worker.js
index f3deb48..d7f60d8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.zero.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.zero.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Parsing of non-negative integers");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidl.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidl.html
index b1fc9b9..0395fb3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidl.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidl.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: size.attributes.reflect.setidl</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>size.attributes.reflect.setidl</h1>
 <p class="desc">Setting IDL attributes updates IDL and content attributes</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidl.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidl.worker.js
index eb2a428..c9ad17b1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidl.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidl.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Setting IDL attributes updates IDL and content attributes");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidlzero.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidlzero.html
index 9ffdb67..9dbdde9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidlzero.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidlzero.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: size.attributes.reflect.setidlzero</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>size.attributes.reflect.setidlzero</h1>
 <p class="desc">Setting IDL attributes to 0 updates IDL and content attributes</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidlzero.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidlzero.worker.js
index 873fc94..a5b9400 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidlzero.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidlzero.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Setting IDL attributes to 0 updates IDL and content attributes");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.large.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.large.html
index a22c17d..2531247 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.large.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.large.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: size.large</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>size.large</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.large.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.large.worker.js
index 797f4ab..536d156e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.large.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/the-offscreen-canvas/size.large.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">Not sure how reasonable this is, but the spec doesn't say there's an upper limit on the size.
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/tools/templates.yaml b/third_party/blink/web_tests/external/wpt/offscreen-canvas/tools/templates.yaml
index 1dbcdfb2..838d8f8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/tools/templates.yaml
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/tools/templates.yaml
@@ -4,7 +4,7 @@
     <title>OffscreenCanvas test: %(name)s</title>%(timeout)s
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
-    <script src="/common/canvas-tests.js"></script>
+    <script src="/2dcontext/resources/canvas-tests.js"></script>
 
     <h1>%(name)s</h1>
     <p class="desc">%(desc)s</p>
@@ -31,7 +31,7 @@
     // Note:%(notes)s
 
     importScripts("/resources/testharness.js");
-    importScripts("/common/canvas-tests.js");
+    importScripts("/2dcontext/resources/canvas-tests.js");
 
     var t = async_test("%(escaped_desc)s");
     t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.order.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.order.html
index 8d01b5aa..8d70442f1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.order.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.order.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.transformation.order</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.transformation.order</h1>
 <p class="desc">Transformations are applied in the right order</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.order.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.order.worker.js
index e6aa169..9b47794 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.order.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.order.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Transformations are applied in the right order");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.direction.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.direction.html
index 81dfdadf..b4c54d2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.direction.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.direction.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.transformation.rotate.direction</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.transformation.rotate.direction</h1>
 <p class="desc">rotate() is clockwise</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.direction.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.direction.worker.js
index 328296fce..0488476 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.direction.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.direction.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("rotate() is clockwise");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.nonfinite.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.nonfinite.html
index fb6a73f..aabe38b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.nonfinite.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.transformation.rotate.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.transformation.rotate.nonfinite</h1>
 <p class="desc">rotate() with Infinity/NaN is ignored</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.nonfinite.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.nonfinite.worker.js
index dbfdfc7..8824c70 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.nonfinite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.nonfinite.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("rotate() with Infinity/NaN is ignored");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.radians.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.radians.html
index 55bc293..1feac42 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.radians.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.radians.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.transformation.rotate.radians</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.transformation.rotate.radians</h1>
 <p class="desc">rotate() uses radians</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.radians.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.radians.worker.js
index 243ed5e4..efc14c97 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.radians.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.radians.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("rotate() uses radians");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.wrap.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.wrap.html
index 9c1333a3..bc49fd1 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.wrap.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.wrap.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.transformation.rotate.wrap</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.transformation.rotate.wrap</h1>
 <p class="desc">rotate() wraps large positive values correctly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.wrap.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.wrap.worker.js
index 5a7a413..82d9e30 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.wrap.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.wrap.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("rotate() wraps large positive values correctly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.wrapnegative.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.wrapnegative.html
index 108f6d8..1aa434a 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.wrapnegative.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.wrapnegative.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.transformation.rotate.wrapnegative</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.transformation.rotate.wrapnegative</h1>
 <p class="desc">rotate() wraps large negative values correctly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.wrapnegative.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.wrapnegative.worker.js
index 5d13b32..1b4dd6b 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.wrapnegative.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.wrapnegative.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("rotate() wraps large negative values correctly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.zero.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.zero.html
index 1d0a3e4..6ec806d 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.zero.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.zero.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.transformation.rotate.zero</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.transformation.rotate.zero</h1>
 <p class="desc">rotate() by 0 does nothing</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.zero.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.zero.worker.js
index 4b664be..353f969 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.zero.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.rotate.zero.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("rotate() by 0 does nothing");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.basic.html
index 1f760c1..9ab8d14e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.transformation.scale.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.transformation.scale.basic</h1>
 <p class="desc">scale() works</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.basic.worker.js
index d35a350..e585f5ae 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("scale() works");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.large.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.large.html
index 5383b54..62e5d943 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.large.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.large.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.transformation.scale.large</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.transformation.scale.large</h1>
 <p class="desc">scale() with large scale factors works</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.large.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.large.worker.js
index a922554..9cba39a0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.large.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.large.worker.js
@@ -4,7 +4,7 @@
 // Note:<p class="notes">Not really that large at all, but it hits the limits in Firefox.
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("scale() with large scale factors works");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.multiple.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.multiple.html
index cea7030..e1a99d94 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.multiple.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.multiple.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.transformation.scale.multiple</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.transformation.scale.multiple</h1>
 <p class="desc">Multiple scale()s combine</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.multiple.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.multiple.worker.js
index 1341166..98d8918 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.multiple.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.multiple.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("Multiple scale()s combine");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.negative.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.negative.html
index 4881383f..ec478fb4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.negative.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.negative.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.transformation.scale.negative</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.transformation.scale.negative</h1>
 <p class="desc">scale() with negative scale factors works</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.negative.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.negative.worker.js
index 27d6de0..d655571 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.negative.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.negative.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("scale() with negative scale factors works");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.nonfinite.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.nonfinite.html
index 7ffa302..20163ce 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.nonfinite.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.transformation.scale.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.transformation.scale.nonfinite</h1>
 <p class="desc">scale() with Infinity/NaN is ignored</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.nonfinite.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.nonfinite.worker.js
index f89950f..7637082 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.nonfinite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.nonfinite.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("scale() with Infinity/NaN is ignored");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.zero.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.zero.html
index 092ba86d..f0e8469 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.zero.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.zero.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.transformation.scale.zero</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.transformation.scale.zero</h1>
 <p class="desc">scale() with a scale factor of zero works</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.zero.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.zero.worker.js
index 2559357..37776685 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.zero.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.scale.zero.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("scale() with a scale factor of zero works");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.setTransform.multiple.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.setTransform.multiple.html
index 666b4c5..90d4031e 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.setTransform.multiple.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.setTransform.multiple.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.transformation.setTransform.multiple</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.transformation.setTransform.multiple</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.setTransform.multiple.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.setTransform.multiple.worker.js
index 8353016..42478567 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.setTransform.multiple.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.setTransform.multiple.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.setTransform.nonfinite.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.setTransform.nonfinite.html
index fca5d5df..fa2fcaa9 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.setTransform.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.setTransform.nonfinite.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.transformation.setTransform.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.transformation.setTransform.nonfinite</h1>
 <p class="desc">setTransform() with Infinity/NaN is ignored</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.setTransform.nonfinite.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.setTransform.nonfinite.worker.js
index 12cdbca9..79c0acfd 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.setTransform.nonfinite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.setTransform.nonfinite.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("setTransform() with Infinity/NaN is ignored");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.setTransform.skewed.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.setTransform.skewed.html
index d36502d..cf6df82 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.setTransform.skewed.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.setTransform.skewed.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.transformation.setTransform.skewed</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.transformation.setTransform.skewed</h1>
 <p class="desc"></p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.setTransform.skewed.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.setTransform.skewed.worker.js
index 6d728bff..96b0e1f 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.setTransform.skewed.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.setTransform.skewed.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.identity.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.identity.html
index b5890c1..fb62cda 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.identity.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.identity.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.transformation.transform.identity</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.transformation.transform.identity</h1>
 <p class="desc">transform() with the identity matrix does nothing</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.identity.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.identity.worker.js
index 166fc5b..ced3cdb 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.identity.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.identity.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("transform() with the identity matrix does nothing");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.multiply.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.multiply.html
index 1c6d166..900e2e2 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.multiply.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.multiply.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.transformation.transform.multiply</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.transformation.transform.multiply</h1>
 <p class="desc">transform() multiplies the CTM</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.multiply.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.multiply.worker.js
index f01d3d99..253e45c0 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.multiply.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.multiply.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("transform() multiplies the CTM");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.nonfinite.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.nonfinite.html
index 2071c73..6dcb8aa4 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.nonfinite.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.transformation.transform.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.transformation.transform.nonfinite</h1>
 <p class="desc">transform() with Infinity/NaN is ignored</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.nonfinite.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.nonfinite.worker.js
index 1ee3659..4b84088 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.nonfinite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.nonfinite.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("transform() with Infinity/NaN is ignored");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.skewed.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.skewed.html
index 83769e0..e2892ab 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.skewed.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.skewed.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.transformation.transform.skewed</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.transformation.transform.skewed</h1>
 <p class="desc">transform() with skewy matrix transforms correctly</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.skewed.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.skewed.worker.js
index b8ae83f..d17e1e3 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.skewed.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.transform.skewed.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("transform() with skewy matrix transforms correctly");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.translate.basic.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.translate.basic.html
index 2978be8..6f7110c 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.translate.basic.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.translate.basic.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.transformation.translate.basic</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.transformation.translate.basic</h1>
 <p class="desc">translate() works</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.translate.basic.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.translate.basic.worker.js
index e019abb..8416af68 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.translate.basic.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.translate.basic.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("translate() works");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.translate.nonfinite.html b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.translate.nonfinite.html
index 0a90f725..dd60596 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.translate.nonfinite.html
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.translate.nonfinite.html
@@ -3,7 +3,7 @@
 <title>OffscreenCanvas test: 2d.transformation.translate.nonfinite</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<script src="/common/canvas-tests.js"></script>
+<script src="/2dcontext/resources/canvas-tests.js"></script>
 
 <h1>2d.transformation.translate.nonfinite</h1>
 <p class="desc">translate() with Infinity/NaN is ignored</p>
diff --git a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.translate.nonfinite.worker.js b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.translate.nonfinite.worker.js
index ea26178..53d01ad8 100644
--- a/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.translate.nonfinite.worker.js
+++ b/third_party/blink/web_tests/external/wpt/offscreen-canvas/transformations/2d.transformation.translate.nonfinite.worker.js
@@ -4,7 +4,7 @@
 // Note:
 
 importScripts("/resources/testharness.js");
-importScripts("/common/canvas-tests.js");
+importScripts("/2dcontext/resources/canvas-tests.js");
 
 var t = async_test("translate() with Infinity/NaN is ignored");
 t.step(function() {
diff --git a/third_party/blink/web_tests/external/wpt/service-workers/service-worker/resources/test-helpers.sub.js b/third_party/blink/web_tests/external/wpt/service-workers/service-worker/resources/test-helpers.sub.js
index af8dad3..db7433dc 100644
--- a/third_party/blink/web_tests/external/wpt/service-workers/service-worker/resources/test-helpers.sub.js
+++ b/third_party/blink/web_tests/external/wpt/service-workers/service-worker/resources/test-helpers.sub.js
@@ -1,10 +1,16 @@
 // Adapter for testharness.js-style tests with Service Workers
 
-function service_worker_unregister_and_register(test, url, scope) {
+/**
+ * @param options an object that represents RegistrationOptions except for scope.
+ * @param options.type a WorkerType.
+ * @param options.updateViaCache a ServiceWorkerUpdateViaCache.
+ * @see https://w3c.github.io/ServiceWorker/#dictdef-registrationoptions
+ */
+function service_worker_unregister_and_register(test, url, scope, options = {}) {
   if (!scope || scope.length == 0)
     return Promise.reject(new Error('tests must define a scope'));
 
-  var options = { scope: scope };
+  options.scope = scope;
   return service_worker_unregister(test, scope)
     .then(function() {
         return navigator.serviceWorker.register(url, options);
diff --git a/third_party/blink/web_tests/external/wpt/tools/requirements_mypy.txt b/third_party/blink/web_tests/external/wpt/tools/requirements_mypy.txt
index 606d801..50c3d0d 100644
--- a/third_party/blink/web_tests/external/wpt/tools/requirements_mypy.txt
+++ b/third_party/blink/web_tests/external/wpt/tools/requirements_mypy.txt
@@ -1,3 +1,3 @@
 mypy==0.730
-mypy-extensions==0.4.1
+mypy-extensions==0.4.2
 typed-ast==1.4.0
diff --git a/third_party/blink/web_tests/external/wpt/tools/wpt/virtualenv.py b/third_party/blink/web_tests/external/wpt/tools/wpt/virtualenv.py
index a894c9c..400debc 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wpt/virtualenv.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wpt/virtualenv.py
@@ -90,7 +90,8 @@
 
     def activate(self):
         path = os.path.join(self.bin_path, "activate_this.py")
-        execfile(path, {"__file__": path})  # noqa: F821
+        with open(path) as f:
+            exec(f.read(), {"__file__": path})
 
     def start(self):
         if not self.exists or self.broken_link:
diff --git a/third_party/blink/web_tests/external/wpt/tools/wptrunner/requirements_firefox.txt b/third_party/blink/web_tests/external/wpt/tools/wptrunner/requirements_firefox.txt
index a0826aed..2021f55 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wptrunner/requirements_firefox.txt
+++ b/third_party/blink/web_tests/external/wpt/tools/wptrunner/requirements_firefox.txt
@@ -1,4 +1,4 @@
-marionette_driver==2.8.0
+marionette_driver==3.0.0
 mozcrash==1.1.0
 mozdownload==1.26.0
 mozinstall==2.0.0
diff --git a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/android_webview.py b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/android_webview.py
index fdf53f7..dd45c049 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/android_webview.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/android_webview.py
@@ -123,7 +123,7 @@
         # TODO(ato): This only indicates the driver is alive,
         # and doesn't say anything about whether a browser session
         # is active.
-        return self.server.is_alive()
+        return self.server.is_alive
 
     def cleanup(self):
         self.stop()
diff --git a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/chrome.py b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/chrome.py
index c9de2203..c71d7725 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/chrome.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/chrome.py
@@ -122,7 +122,7 @@
         # TODO(ato): This only indicates the driver is alive,
         # and doesn't say anything about whether a browser session
         # is active.
-        return self.server.is_alive()
+        return self.server.is_alive
 
     def cleanup(self):
         self.stop()
diff --git a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/chrome_android.py b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/chrome_android.py
index b3e1479..6722874 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/chrome_android.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/chrome_android.py
@@ -105,7 +105,7 @@
         # TODO(ato): This only indicates the driver is alive,
         # and doesn't say anything about whether a browser session
         # is active.
-        return self.server.is_alive()
+        return self.server.is_alive
 
     def cleanup(self):
         self.stop()
diff --git a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/chrome_ios.py b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/chrome_ios.py
index 6db0188e..a042966 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/chrome_ios.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/chrome_ios.py
@@ -71,7 +71,7 @@
         # TODO(ato): This only indicates the driver is alive,
         # and doesn't say anything about whether a browser session
         # is active.
-        return self.server.is_alive()
+        return self.server.is_alive
 
     def cleanup(self):
         self.stop()
diff --git a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/edge.py b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/edge.py
index 18a1ed7..d9d0af1 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/edge.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/edge.py
@@ -108,7 +108,7 @@
         # TODO(ato): This only indicates the server is alive,
         # and doesn't say anything about whether a browser session
         # is active.
-        return self.server.is_alive()
+        return self.server.is_alive
 
     def cleanup(self):
         self.stop()
diff --git a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/edgechromium.py b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/edgechromium.py
index 64850165..e28e0f9 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/edgechromium.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/edgechromium.py
@@ -107,7 +107,7 @@
         # TODO(ato): This only indicates the driver is alive,
         # and doesn't say anything about whether a browser session
         # is active.
-        return self.server.is_alive()
+        return self.server.is_alive
 
     def cleanup(self):
         self.stop()
diff --git a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/ie.py b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/ie.py
index 78c22b9..635e827 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/ie.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/ie.py
@@ -64,7 +64,7 @@
         # TODO(ato): This only indicates the server is alive,
         # and doesn't say anything about whether a browser session
         # is active.
-        return self.server.is_alive()
+        return self.server.is_alive
 
     def cleanup(self):
         self.stop()
diff --git a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/opera.py b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/opera.py
index 805fede..55c0509 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/opera.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/opera.py
@@ -93,7 +93,7 @@
         # TODO(ato): This only indicates the driver is alive,
         # and doesn't say anything about whether a browser session
         # is active.
-        return self.server.is_alive()
+        return self.server.is_alive
 
     def cleanup(self):
         self.stop()
diff --git a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/safari.py b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/safari.py
index dba8432..f4fd331 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/safari.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/safari.py
@@ -79,7 +79,7 @@
         # TODO(ato): This only indicates the driver is alive,
         # and doesn't say anything about whether a browser session
         # is active.
-        return self.server.is_alive()
+        return self.server.is_alive
 
     def cleanup(self):
         self.stop()
diff --git a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/webkit.py b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/webkit.py
index bd444eef..9cb373e 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/webkit.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/browsers/webkit.py
@@ -101,7 +101,7 @@
         # TODO(ato): This only indicates the driver is alive,
         # and doesn't say anything about whether a browser session
         # is active.
-        return self.server.is_alive()
+        return self.server.is_alive
 
     def cleanup(self):
         self.stop()
diff --git a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/badging-origin-trial-interfaces.html b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/badging-origin-trial-interfaces.html
index 9459b0ca..c0ac874 100644
--- a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/badging-origin-trial-interfaces.html
+++ b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/badging-origin-trial-interfaces.html
@@ -11,9 +11,12 @@
 <script src="/resources/origin-trials-helper.js"></script>
 <script>
 
+function assert_function_on(object, function_name, explanation) {
+  assert_equals(typeof object[function_name], 'function', explanation);
+}
+
 test(t => {
-  assert_own_property(window, 'ExperimentalBadge', 'ExperimentalBadge is not defined on the window');
-  assert_own_property(window.ExperimentalBadge, 'set', 'Set is not defined on the ExperimentalBadge API');
-  assert_own_property(window.ExperimentalBadge, 'clear', 'Clear is not defined on the ExperimentalBadge API');
+  assert_function_on(navigator, 'setExperimentalAppBadge', 'setExperimentalAppBadge is not defined on navigator');
+  assert_function_on(navigator, 'clearExperimentalAppBadge', 'clearExperimentalAppBadge is not defined on navigator');
 }, 'Badge API interfaces and properties in Origin-Trial enabled document.');
 </script>
\ No newline at end of file
diff --git a/third_party/blink/web_tests/http/tests/serviceworker/resources/test-helpers.js b/third_party/blink/web_tests/http/tests/serviceworker/resources/test-helpers.js
index 9d92fda2..b887f6f 100644
--- a/third_party/blink/web_tests/http/tests/serviceworker/resources/test-helpers.js
+++ b/third_party/blink/web_tests/http/tests/serviceworker/resources/test-helpers.js
@@ -1,11 +1,10 @@
 // Adapter for testharness.js-style tests with Service Workers
 
-function service_worker_unregister_and_register(
-    test, url, scope, updateViaCache = 'imports') {
+function service_worker_unregister_and_register(test, url, scope, options = {}) {
   if (!scope || scope.length == 0)
     return Promise.reject(new Error('tests must define a scope'));
 
-  var options = { scope: scope, updateViaCache: updateViaCache };
+  options.scope = scope;
   return service_worker_unregister(test, scope)
     .then(function() {
         return navigator.serviceWorker.register(url, options);
diff --git a/third_party/blink/web_tests/http/tests/serviceworker/update-served-from-cache.html b/third_party/blink/web_tests/http/tests/serviceworker/update-served-from-cache.html
index 2b04ee3..fdb45d1 100644
--- a/third_party/blink/web_tests/http/tests/serviceworker/update-served-from-cache.html
+++ b/third_party/blink/web_tests/http/tests/serviceworker/update-served-from-cache.html
@@ -14,8 +14,9 @@
     promise_test(function(t) {
         let registration;
 
+        let options = { updateViaCache: update_via_cache };
         return service_worker_unregister_and_register(t, worker_url, scope,
-                                                      update_via_cache)
+                                                      options)
           .then(function(r) {
               // The script resource for this register() having a non-zero
               // max-age value was cached.
@@ -44,8 +45,9 @@
     promise_test(function(t) {
         let registration;
 
+        let options = { updateViaCache: update_via_cache };
         return service_worker_unregister_and_register(t, worker_url, scope,
-                                                      update_via_cache)
+                                                      options)
           .then(function(r) {
               // The script resource for this register() having a non-zero
               // max-age value was cached.
diff --git a/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt b/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
index c427bb27..ac21954 100644
--- a/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
+++ b/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
@@ -2357,11 +2357,6 @@
     method constructor
     method dispatchEvent
     method removeEventListener
-interface ExperimentalBadge
-    static method clear
-    static method set
-    attribute @@toStringTag
-    method constructor
 interface External
     attribute @@toStringTag
     method AddSearchProvider
@@ -5215,6 +5210,7 @@
     getter webkitTemporaryStorage
     getter xr
     method canShare
+    method clearExperimentalAppBadge
     method constructor
     method getBattery
     method getGamepads
@@ -5227,6 +5223,7 @@
     method requestMIDIAccess
     method requestMediaKeySystemAccess
     method sendBeacon
+    method setExperimentalAppBadge
     method share
     method unregisterProtocolHandler
     method vibrate
diff --git a/third_party/leveldatabase/env_chromium.cc b/third_party/leveldatabase/env_chromium.cc
index 3aa9935..ce44be2 100644
--- a/third_party/leveldatabase/env_chromium.cc
+++ b/third_party/leveldatabase/env_chromium.cc
@@ -213,8 +213,9 @@
       : filename_(fname), file_(std::move(f)), uma_logger_(uma_logger) {}
   virtual ~ChromiumSequentialFile() {}
 
+  // Note: This method is relatively hot during leveldb database
+  // compaction. Please avoid making them slower.
   Status Read(size_t n, Slice* result, char* scratch) override {
-    TRACE_EVENT1("leveldb", "ChromiumSequentialFile::Read", "size", n);
     int bytes_read = file_.ReadAtCurrentPosNoBestEffort(scratch, n);
     if (bytes_read == -1) {
       base::File::Error error = base::File::GetLastFileError();
@@ -306,12 +307,12 @@
     file_cache_->Erase(cache_key_);
   }
 
+  // Note: This method is relatively hot during leveldb database
+  // compaction. Please avoid making them slower.
   Status Read(uint64_t offset,
               size_t n,
               Slice* result,
               char* scratch) const override {
-    TRACE_EVENT2("leveldb", "ChromiumEvictableRandomAccessFile::Read", "offset",
-                 offset, "size", n);
     leveldb::Cache::Handle* handle = file_cache_->Lookup(cache_key_);
     if (!handle) {
       int flags = base::File::FLAG_READ | base::File::FLAG_OPEN;
@@ -351,12 +352,12 @@
 
   virtual ~ChromiumRandomAccessFile() {}
 
+  // Note: This method is relatively hot during leveldb database
+  // compaction. Please avoid making them slower.
   Status Read(uint64_t offset,
               size_t n,
               Slice* result,
               char* scratch) const override {
-    TRACE_EVENT2("leveldb", "ChromiumRandomAccessFile::Read", "offset", offset,
-                 "size", n);
     return ReadFromFileToScratch(offset, n, result, scratch, &file_, filepath_,
                                  uma_logger_);
   }
diff --git a/third_party/wayland-protocols/unstable/remote-shell/remote-shell-unstable-v1.xml b/third_party/wayland-protocols/unstable/remote-shell/remote-shell-unstable-v1.xml
index d5ed3acf..8407d6c 100644
--- a/third_party/wayland-protocols/unstable/remote-shell/remote-shell-unstable-v1.xml
+++ b/third_party/wayland-protocols/unstable/remote-shell/remote-shell-unstable-v1.xml
@@ -38,7 +38,7 @@
     reset.
   </description>
 
-  <interface name="zcr_remote_shell_v1" version="22">
+  <interface name="zcr_remote_shell_v1" version="23">
     <description summary="remote_shell">
       The global interface that allows clients to turn a wl_surface into a
       "real window" which is remotely managed but can be stacked, activated
@@ -237,7 +237,7 @@
 
   </interface>
 
-  <interface name="zcr_remote_surface_v1" version="20">
+  <interface name="zcr_remote_surface_v1" version="23">
     <description summary="A desktop window">
       An interface that may be implemented by a wl_surface, for
       implementations that provide a desktop-style user interface
@@ -1016,6 +1016,23 @@
 	description of set_ime_blocked for detail.
       </description>
     </request>
+
+    <!-- Version 23 additions -->
+    <enum name="zoom_change">
+      <description summary="zoom level change">
+	Zoom level change.
+      </description>
+      <entry name="in" value="0" summary="zoom in"/>
+      <entry name="out" value="1" summary="zoom out"/>
+      <entry name="reset" value="2" summary="reset zoom level"/>
+    </enum>
+
+    <event name="change_zoom_level" since="23">
+      <description summary="change zoom level">
+	Request application zoom level change.
+      </description>
+      <arg name="change" type="int" summary="zoom_change"/>
+    </event>
   </interface>
 
   <interface name="zcr_notification_surface_v1" version="16">
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl
index 35f4c1c..f7af7e6 100644
--- a/tools/mb/mb_config.pyl
+++ b/tools/mb/mb_config.pyl
@@ -327,6 +327,7 @@
       'win-password-manager-captured-sites-rel': 'release_bot',
       'win-pixel-builder-rel': 'release_bot',
       'win32-arm64-rel': 'win32_arm64_release_bot',
+      'win10-code-coverage': 'clang_code_coverage_nofuzzer',
     },
 
     'chromium.goma': {
@@ -1323,6 +1324,10 @@
       'use_clang_coverage', 'debug_static_bot', 'x64', 'ios'
     ],
 
+    'clang_code_coverage_nofuzzer': [
+      'release_bot', 'clang', 'use_clang_coverage', 'no_symbols',
+    ],
+
     'clang_tot_asan_lsan_static_release': [
       'clang_tot', 'asan', 'lsan', 'static', 'release',
     ],
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index f454ecd7..a5533fd 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -1981,12 +1981,15 @@
 </enum>
 
 <enum name="AppBannersUserResponse">
-  <int value="1" label="Native app banner was accepted by the user"/>
-  <int value="2" label="Web app banner was accepted by the user"/>
-  <int value="3" label="Native app banner was dismissed by the user"/>
-  <int value="4" label="Web app banner was dismissed by the user"/>
-  <int value="5" label="Native app banner was ignored by the user"/>
-  <int value="6" label="Web app banner was ignored by the user"/>
+  <int value="1" label="Native app install dialog was accepted by the user"/>
+  <int value="2"
+      label="Web app add-to-homescreen dialog was accepted by the user"/>
+  <int value="3" label="Native app install dialog was dismissed by the user"/>
+  <int value="4"
+      label="Web app add-to-homescreen dialog was dismissed by the user"/>
+  <int value="5"
+      label="Native app banner was ignored by the user (deprecated)"/>
+  <int value="6" label="Web app banner was ignored by the user (deprecated)"/>
 </enum>
 
 <enum name="AppCacheCheckResponseResult">
@@ -61829,6 +61832,7 @@
 </enum>
 
 <enum name="VariationsFirstRunSeedFetchResult">
+  <int value="-4" label="Invalid Date header when fetching seed"/>
   <int value="-3" label="UnknownHostException fetching seed"/>
   <int value="-2" label="SocketTimeoutException fetching seed"/>
   <int value="-1" label="IOException fetching seed"/>
@@ -63052,9 +63056,10 @@
 </enum>
 
 <enum name="WebApkInstallEvent">
-  <int value="0" label="Infobar is ignored"/>
-  <int value="1" label="Infobar is dismissed before installation"/>
-  <int value="2" label="Infobar is dismissed during installation"/>
+  <int value="0" label="Infobar is ignored (deprecated)"/>
+  <int value="1"
+      label="Add-to-homescreen dialog dismissed prior to installation"/>
+  <int value="2" label="Infobar is dismissed during installation (deprecated)"/>
   <int value="3" label="Success"/>
   <int value="4" label="Failed"/>
 </enum>
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index b62a0e9..a8396ca 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -4558,9 +4558,9 @@
     expires_after="2020-02-23">
   <owner>dominickn@chromium.org</owner>
   <summary>
-    App banners promote an application related to the current website, and are
-    requested specifically through the current page's HTML. This stat
-    specifically tracks a user's response to a displayed banner.
+    This stat tracks the user reponse when the add-to-homescreen dialog is shown
+    either: (A) Via the website's JavaScript (B) Via the user tapping the app
+    banner which promotes the application related to the current site.
   </summary>
 </histogram>
 
@@ -26418,6 +26418,9 @@
 </histogram>
 
 <histogram name="Crostini.DiskImageSize" units="GiB" expires_after="2019-11-20">
+  <obsolete>
+    Removed 10/2019 because it was never used.
+  </obsolete>
   <owner>sidereal@google.com</owner>
   <owner>nverne@chromium.org</owner>
   <summary>
@@ -156135,10 +156138,8 @@
   <owner>yfriedman@chromium.org</owner>
   <summary>
     WebAPKs are PWAs wrapped in an Android apk, installed from an app banner or
-    the add to homescreen menu item. This stat tracks the WebAPKs installation
-    events, including whether the infobar is ignored, whether the infobar is
-    dismissed by the user before or during the installation, as well as whether
-    the installation was successful.
+    the add to homescreen menu item. This stat tracks WebAPK installation
+    events.
   </summary>
 </histogram>
 
diff --git a/tools/perf/PRESUBMIT.py b/tools/perf/PRESUBMIT.py
index 4984d27e..c8011f7a 100644
--- a/tools/perf/PRESUBMIT.py
+++ b/tools/perf/PRESUBMIT.py
@@ -29,6 +29,7 @@
       _CheckPerfJsonConfigs(input_api, output_api, block_on_failure))
   results.extend(_CheckWprShaFiles(input_api, output_api))
   results.extend(_CheckShardMaps(input_api, output_api, block_on_failure))
+  results.extend(_CheckVersionsInSmokeTests(input_api, output_api))
   results.extend(input_api.RunTests(input_api.canned_checks.GetPylint(
       input_api, output_api, extra_paths_list=_GetPathsToPrepend(input_api),
       pylintrc='pylintrc')))
@@ -171,6 +172,20 @@
       return [output_api.PresubmitError('Error parsing JSON in %s!' % filename)]
   return []
 
+def _CheckVersionsInSmokeTests(input_api, output_api):
+  results = []
+  perf_dir = input_api.PresubmitLocalPath()
+  vpython = 'vpython.bat' if input_api.is_windows else 'vpython'
+  out, return_code = _RunArgs([
+      vpython,
+      input_api.os_path.join(
+          perf_dir, 'benchmarks', 'system_health_load_tests_smoke_test.py')],
+      input_api)
+  if return_code:
+    results.append(output_api.PresubmitError(
+        'Validating story versions failed', long_text=out))
+
+  return results
 
 def CheckChangeOnUpload(input_api, output_api):
   report = []
diff --git a/tools/perf/benchmarks/smoketests_versions_validator_unittest.py b/tools/perf/benchmarks/smoketests_versions_validator_unittest.py
new file mode 100644
index 0000000..b2466172
--- /dev/null
+++ b/tools/perf/benchmarks/smoketests_versions_validator_unittest.py
@@ -0,0 +1,77 @@
+# Copyright 2019 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Unit tests for multiple version checking in system_health_smoke_test.py."""
+
+import unittest
+
+from benchmarks import system_health_smoke_test
+
+class TestSmoketestsVersionValidator(unittest.TestCase):
+  def test_version_check_pass(self):
+    all_stories = [
+        'a:2018', 'a', 'b:2018', 'b:2019', 'c:2018']
+    disabled_stories = frozenset([
+        'a:2018', 'b:2018'])
+    stories = system_health_smoke_test.find_multi_version_stories(
+        all_stories, disabled_stories)
+    self.assertEquals(0, len(stories),
+                      "Should be no result from version check")
+
+  def test_version_check_multi_colon_prefix_with_version(self):
+    all_stories = [
+        'story:name:a:2018', 'story:name:a:2019']
+    disabled_stories = frozenset(['story:name:a:2018'])
+    stories = system_health_smoke_test.find_multi_version_stories(
+        all_stories, disabled_stories)
+    self.assertEquals(0, len(stories),
+                      "Should be no result from version check")
+
+  def test_version_check_multi_colon_prefix_without_version(self):
+    all_stories = [
+        'story:name:a', 'story:name:a:2019']
+    disabled_stories = frozenset(['story:name:a:2019'])
+    stories = system_health_smoke_test.find_multi_version_stories(
+        all_stories, disabled_stories)
+    self.assertEquals(0, len(stories),
+                      "Should be no result from version check")
+
+  def test_version_check_fail_without_version(self):
+    all_stories = ['a', 'a:2019', 'b:2019']
+    disabled_stories = frozenset(['x'])
+    stories = system_health_smoke_test.find_multi_version_stories(
+        all_stories, disabled_stories)
+    self.assertEquals(1, len(stories),
+                      'Expecting 1 item in stories.')
+    self.assertIn('a', stories)
+    self.assertIn('a', stories['a'])
+    self.assertIn('a:2019', stories['a'])
+
+  def test_version_check_fail_with_version(self):
+    all_stories = ['a:2018', 'a:2019', 'b:2019']
+    disabled_stories = frozenset(['a'])
+    stories = system_health_smoke_test.find_multi_version_stories(
+        all_stories, disabled_stories)
+    self.assertEquals(1, len(stories),
+                      'Expecting 1 item in stories.')
+    self.assertIn('a', stories)
+    self.assertIn('a:2018', stories['a'])
+    self.assertIn('a:2019', stories['a'])
+
+  def test_version_check_fail_multiple_story(self):
+    all_stories = ['a', 'a:2019', 'b:2018', 'b:2019', 'c:2018']
+    disabled_stories = frozenset(['x'])
+    stories = system_health_smoke_test.find_multi_version_stories(
+        all_stories, disabled_stories)
+    self.assertEquals(2, len(stories),
+                      'Expecting 2 item in stories.')
+    self.assertIn('a', stories)
+    self.assertIn('a', stories['a'])
+    self.assertIn('a:2019', stories['a'])
+    self.assertIn('b', stories)
+    self.assertIn('b:2018', stories['b'])
+    self.assertIn('b:2019', stories['b'])
+
+if __name__ == '__main__':
+  unittest.main()
diff --git a/tools/perf/benchmarks/system_health_load_tests_smoke_test.py b/tools/perf/benchmarks/system_health_load_tests_smoke_test.py
new file mode 100755
index 0000000..4ded474c
--- /dev/null
+++ b/tools/perf/benchmarks/system_health_load_tests_smoke_test.py
@@ -0,0 +1,21 @@
+#!/usr/bin/env vpython
+# Copyright 2019 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+"""Script to check story version in system_health_smoke_tests."""
+
+import sys
+import os
+sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
+
+from core import path_util
+path_util.AddTelemetryToPath()
+
+from benchmarks import system_health_smoke_test
+
+def main():
+  system_health_smoke_test.load_tests(None, None, None)
+  return 0
+
+if __name__ == '__main__':
+  sys.exit(main())
diff --git a/tools/perf/benchmarks/system_health_smoke_test.py b/tools/perf/benchmarks/system_health_smoke_test.py
index 98f1130e..855fb9e 100644
--- a/tools/perf/benchmarks/system_health_smoke_test.py
+++ b/tools/perf/benchmarks/system_health_smoke_test.py
@@ -11,6 +11,8 @@
 
 import unittest
 
+from collections import defaultdict
+
 from core import path_util
 from core import perf_benchmark
 
@@ -75,6 +77,8 @@
   'system_health.memory_desktop/browse:news:reddit',
   'system_health.memory_desktop/browse:media:tumblr',
   'system_health.memory_desktop/browse:social:twitter_infinite_scroll',
+  'system_health.memory_mobile/load:social:twitter',
+  'system_health.memory_desktop/load:social:vk',
 
   # crbug.com/637230
   'system_health.memory_desktop/browse:news:cnn',
@@ -313,15 +317,54 @@
       names_stories_to_smoke_tests.append(
           benchmark_class.Name() + '/' + story_to_smoke_test.name)
 
-  for i, story_name in enumerate(names_stories_to_smoke_tests):
-    for j in xrange(i + 1, len(names_stories_to_smoke_tests)):
-      other_story_name = names_stories_to_smoke_tests[j]
-      if (other_story_name.startswith(story_name + ':') and
-          story_name not in _DISABLED_TESTS):
-        raise ValueError(
-            'Story %s is to be replaced by %s. Please put %s in '
-            '_DISABLED_TESTS list to save CQ capacity (see crbug.com/893615)). '
-            'You can use crbug.com/878390 for the disabling reference.' %
-            (repr(story_name), repr(other_story_name), repr(story_name)))
+  # The full story name should follow this convention: story_name[:version],
+  # where version is a year. Please refer to the link below for details:
+  # https://docs.google.com/document/d/134u_j_Lk2hLiDHYxK3NVdZM_sOtExrsExU-hiNFa1uw
+  # Raise exception for stories which have more than one version enabled.
+  multi_version_stories = find_multi_version_stories(
+      names_stories_to_smoke_tests, _DISABLED_TESTS)
+  if len(multi_version_stories):
+    msg = ''
+    for prefix, stories in multi_version_stories.items():
+      msg += prefix + ' : ' + ','.join(stories) + '\n'
+    raise ValueError(
+        'The stories below has multiple versions.'
+        'In order to save CQ capacity, we should only run the latest '
+        'version on CQ. Please put the legacy stories in _DISABLED_TESTS '
+        'list or remove them to save CQ capacity (see crbug.com/893615)). '
+        'You can use crbug.com/878390 for the disabling reference.'
+        '[StoryName] : [StoryVersion1],[StoryVersion2]...\n%s' % (msg))
 
   return suite
+
+
+def find_multi_version_stories(stories, disabled):
+  """Looks for stories with multiple versions enabled.
+
+  Args:
+    stories: list of strings, which are names of all the candidate stories.
+    disabled: frozenset of strings, which are names of stories which are
+      disabled.
+
+  Returns:
+    A dict mapping from a prefix string to a list of stories each of which
+    has the name with that prefix and has multiple versions enabled.
+  """
+  prefixes = defaultdict(list)
+  for name in stories:
+    if name in disabled:
+      continue
+    lastColon = name.rfind(':')
+    if lastColon == -1:
+      prefix = name
+    else:
+      version = name[lastColon+1:]
+      if version.isdigit():
+        prefix = name[:lastColon]
+      else:
+        prefix = name
+    prefixes[prefix].append(name)
+  for prefix, stories in prefixes.items():
+    if len(stories) == 1:
+      prefixes.pop(prefix)
+  return prefixes
diff --git a/ui/file_manager/file_manager/foreground/css/file_manager.css b/ui/file_manager/file_manager/foreground/css/file_manager.css
index ca6cea15..5f613579 100644
--- a/ui/file_manager/file_manager/foreground/css/file_manager.css
+++ b/ui/file_manager/file_manager/foreground/css/file_manager.css
@@ -136,6 +136,10 @@
   overflow-y: hidden;
 }
 
+#directory-tree .tree-item[section-start] {
+  border-top: 1px solid rgba(0, 0, 0, 0.10);
+}
+
 #directory-tree .tree-row {
   align-items: center;
   color: rgb(90, 90, 90);
diff --git a/ui/file_manager/file_manager/foreground/css/tree.css b/ui/file_manager/file_manager/foreground/css/tree.css
index e0f82ea..a096307 100644
--- a/ui/file_manager/file_manager/foreground/css/tree.css
+++ b/ui/file_manager/file_manager/foreground/css/tree.css
@@ -36,10 +36,6 @@
       url(../images/files/ui/2x/expand_more_active.png) 2x);
 }
 
-div[section-start].tree-item {
-    border-top: 1px solid rgba(0, 0, 0, 0.10);
-}
-
 html[dir=rtl] .tree-row > .expand-icon {
   transform: rotate(90deg);
 }
diff --git a/ui/file_manager/file_manager/foreground/js/ui/directory_tree.js b/ui/file_manager/file_manager/foreground/js/ui/directory_tree.js
index 102bcaab..54b9eb8 100644
--- a/ui/file_manager/file_manager/foreground/js/ui/directory_tree.js
+++ b/ui/file_manager/file_manager/foreground/js/ui/directory_tree.js
@@ -1856,7 +1856,7 @@
 
     let addAt = 0;
     while (addAt < parentItem.items.length &&
-           parentItem.items[addAt].entry.name < newDirectory.name) {
+           util.compareName(parentItem.items[addAt].entry, newDirectory) < 0) {
       addAt++;
     }
 
diff --git a/ui/gl/BUILD.gn b/ui/gl/BUILD.gn
index 76b0e7e..7da3795b 100644
--- a/ui/gl/BUILD.gn
+++ b/ui/gl/BUILD.gn
@@ -64,6 +64,8 @@
     "android/surface_texture.h",
     "android/surface_texture_listener.cc",
     "android/surface_texture_listener.h",
+    "buffer_format_utils.cc",
+    "buffer_format_utils.h",
     "ca_renderer_layer_params.cc",
     "ca_renderer_layer_params.h",
     "color_space_utils.cc",
diff --git a/ui/gl/buffer_format_utils.cc b/ui/gl/buffer_format_utils.cc
new file mode 100644
index 0000000..ba2e7bc
--- /dev/null
+++ b/ui/gl/buffer_format_utils.cc
@@ -0,0 +1,79 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ui/gl/buffer_format_utils.h"
+
+#include "ui/gl/gl_bindings.h"
+
+namespace gl {
+
+unsigned BufferFormatToGLInternalFormat(gfx::BufferFormat format) {
+  switch (format) {
+    case gfx::BufferFormat::R_8:
+      return GL_RED_EXT;
+    case gfx::BufferFormat::R_16:
+      return GL_R16_EXT;
+    case gfx::BufferFormat::RG_88:
+      return GL_RG_EXT;
+    case gfx::BufferFormat::BGR_565:
+      return GL_RGB;
+    case gfx::BufferFormat::RGBA_4444:
+      return GL_RGBA;
+    case gfx::BufferFormat::RGBX_8888:
+      return GL_RGB;
+    case gfx::BufferFormat::RGBA_8888:
+      return GL_RGBA;
+    case gfx::BufferFormat::BGRX_8888:
+      return GL_RGB;
+    case gfx::BufferFormat::BGRX_1010102:
+      return GL_RGB10_A2_EXT;
+    case gfx::BufferFormat::RGBX_1010102:
+      return GL_RGB10_A2_EXT;
+    case gfx::BufferFormat::BGRA_8888:
+      return GL_BGRA_EXT;
+    case gfx::BufferFormat::RGBA_F16:
+      return GL_RGBA;
+    case gfx::BufferFormat::YVU_420:
+      return GL_RGB_YCRCB_420_CHROMIUM;
+    case gfx::BufferFormat::YUV_420_BIPLANAR:
+      return GL_RGB_YCBCR_420V_CHROMIUM;
+    case gfx::BufferFormat::P010:
+      return GL_RGB_YCBCR_P010_CHROMIUM;
+  }
+
+  NOTREACHED();
+  return GL_NONE;
+}
+
+unsigned BufferFormatToGLDataType(gfx::BufferFormat format) {
+  switch (format) {
+    case gfx::BufferFormat::R_8:
+    case gfx::BufferFormat::RG_88:
+    case gfx::BufferFormat::RGBX_8888:
+    case gfx::BufferFormat::BGRX_8888:
+    case gfx::BufferFormat::RGBA_8888:
+    case gfx::BufferFormat::BGRA_8888:
+      return GL_UNSIGNED_BYTE;
+    case gfx::BufferFormat::R_16:
+      return GL_UNSIGNED_SHORT;
+    case gfx::BufferFormat::BGR_565:
+      return GL_UNSIGNED_SHORT_5_6_5;
+    case gfx::BufferFormat::RGBA_4444:
+      return GL_UNSIGNED_SHORT_4_4_4_4;
+    case gfx::BufferFormat::RGBX_1010102:
+    case gfx::BufferFormat::BGRX_1010102:
+      return GL_UNSIGNED_INT_2_10_10_10_REV;
+    case gfx::BufferFormat::RGBA_F16:
+      return GL_HALF_FLOAT_OES;
+    case gfx::BufferFormat::YVU_420:
+    case gfx::BufferFormat::YUV_420_BIPLANAR:
+    case gfx::BufferFormat::P010:
+      return GL_NONE;
+  }
+
+  NOTREACHED();
+  return GL_NONE;
+}
+
+}  // namespace gl
diff --git a/ui/gl/buffer_format_utils.h b/ui/gl/buffer_format_utils.h
new file mode 100644
index 0000000..96e271dd
--- /dev/null
+++ b/ui/gl/buffer_format_utils.h
@@ -0,0 +1,22 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef UI_GL_BUFFER_FORMAT_UTILS_H_
+#define UI_GL_BUFFER_FORMAT_UTILS_H_
+
+#include "ui/gfx/buffer_types.h"
+#include "ui/gl/gl_export.h"
+
+namespace gl {
+
+// Map buffer format to GL internalformat. Return GL_NONE if no sensible
+// mapping.
+GL_EXPORT unsigned BufferFormatToGLInternalFormat(gfx::BufferFormat format);
+
+// Map buffer format to GL type. Return GL_NONE if no sensible mapping.
+GL_EXPORT unsigned BufferFormatToGLDataType(gfx::BufferFormat format);
+
+}  // namespace gl
+
+#endif  // UI_GL_BUFFER_FORMAT_UTILS_H_
diff --git a/ui/gl/direct_composition_surface_win_unittest.cc b/ui/gl/direct_composition_surface_win_unittest.cc
index 873cabd..99fee6f 100644
--- a/ui/gl/direct_composition_surface_win_unittest.cc
+++ b/ui/gl/direct_composition_surface_win_unittest.cc
@@ -1134,7 +1134,8 @@
   ASSERT_TRUE(front_buffer_texture);
 
   auto front_buffer_image = base::MakeRefCounted<GLImageD3D>(
-      swap_chain_size, GL_BGRA_EXT, front_buffer_texture, swap_chain);
+      swap_chain_size, GL_BGRA_EXT, GL_UNSIGNED_BYTE, front_buffer_texture,
+      swap_chain);
   ASSERT_TRUE(front_buffer_image->Initialize());
 
   Microsoft::WRL::ComPtr<ID3D11Texture2D> back_buffer_texture;
diff --git a/ui/gl/gl_image.cc b/ui/gl/gl_image.cc
index c54f118..c2cb81a 100644
--- a/ui/gl/gl_image.cc
+++ b/ui/gl/gl_image.cc
@@ -4,6 +4,8 @@
 
 #include "ui/gl/gl_image.h"
 
+#include "ui/gl/gl_bindings.h"
+
 #if defined(OS_ANDROID)
 #include "base/android/scoped_hardware_buffer_fence_sync.h"
 #endif
@@ -38,4 +40,30 @@
   return true;
 }
 
+unsigned GLImage::GetDataFormat() {
+  // GetInternalFormat() mostly returns unsized format and can be used both
+  // as internal format and data format. However, GL_EXT_texture_norm16
+  // follows ES3 semantics and only exposes a sized internalformat.
+  unsigned internalformat = GetInternalFormat();
+  switch (internalformat) {
+    case GL_R16_EXT:
+      return GL_RED;
+    case GL_RGB10_A2_EXT:
+      return GL_RGBA;
+    case GL_RGB_YCRCB_420_CHROMIUM:
+    case GL_RGB_YCBCR_420V_CHROMIUM:
+    case GL_RGB_YCBCR_P010_CHROMIUM:
+      return GL_RGB;
+    case GL_RED:
+    case GL_RG:
+    case GL_RGB:
+    case GL_RGBA:
+    case GL_BGRA_EXT:
+      return internalformat;
+    default:
+      NOTREACHED();
+      return GL_NONE;
+  }
+}
+
 }  // namespace gl
diff --git a/ui/gl/gl_image.h b/ui/gl/gl_image.h
index 7aecaf29..65da6fc 100644
--- a/ui/gl/gl_image.h
+++ b/ui/gl/gl_image.h
@@ -12,6 +12,7 @@
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "build/build_config.h"
+#include "ui/gfx/buffer_types.h"
 #include "ui/gfx/color_space.h"
 #include "ui/gfx/geometry/point.h"
 #include "ui/gfx/geometry/rect.h"
@@ -54,8 +55,14 @@
   // Get the size of the image.
   virtual gfx::Size GetSize() = 0;
 
-  // Get the internal format of the image.
+  // Get the GL internal format, format, type of the image.
+  // They are aligned with glTexImage{2|3}D's parameters |internalformat|,
+  // |format|, and |type|.
+  // The returned enums are based on ES2 contexts and are mostly ES3
+  // compatible, except for GL_HALF_FLOAT_OES.
   virtual unsigned GetInternalFormat() = 0;
+  virtual unsigned GetDataFormat();
+  virtual unsigned GetDataType() = 0;
 
   enum BindOrCopy { BIND, COPY };
   // Returns whether this image is meant to be bound or copied to textures. The
diff --git a/ui/gl/gl_image_ahardwarebuffer.cc b/ui/gl/gl_image_ahardwarebuffer.cc
index 7b50e2c..a07f288 100644
--- a/ui/gl/gl_image_ahardwarebuffer.cc
+++ b/ui/gl/gl_image_ahardwarebuffer.cc
@@ -35,6 +35,24 @@
   }
 }
 
+unsigned int GLDataType(uint32_t buffer_format) {
+  switch (buffer_format) {
+    case AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM:
+    case AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM:
+    case AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM:
+      return GL_UNSIGNED_BYTE;
+    case AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT:
+      return GL_HALF_FLOAT_OES;
+    case AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM:
+      return GL_UNSIGNED_INT_2_10_10_10_REV;
+    case AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM:
+      return GL_UNSIGNED_SHORT_5_6_5;
+    default:
+      // For all other buffer formats, use GL_UNSIGNED_BYTE as type.
+      return GL_UNSIGNED_BYTE;
+  }
+}
+
 }  // namespace
 
 class GLImageAHardwareBuffer::ScopedHardwareBufferFenceSyncImpl
@@ -76,6 +94,7 @@
   handle_ = base::android::ScopedHardwareBufferHandle::Create(buffer);
   uint32_t buffer_format = GetBufferFormat(buffer);
   internal_format_ = GLInternalFormat(buffer_format);
+  data_type_ = GLDataType(buffer_format);
   EGLint attribs[] = {EGL_IMAGE_PRESERVED_KHR, preserved ? EGL_TRUE : EGL_FALSE,
                       EGL_NONE};
   EGLClientBuffer client_buffer = eglGetNativeClientBufferANDROID(buffer);
@@ -87,6 +106,10 @@
   return internal_format_;
 }
 
+unsigned GLImageAHardwareBuffer::GetDataType() {
+  return data_type_;
+}
+
 bool GLImageAHardwareBuffer::BindTexImage(unsigned target) {
   return GLImageEGL::BindTexImage(target);
 }
diff --git a/ui/gl/gl_image_ahardwarebuffer.h b/ui/gl/gl_image_ahardwarebuffer.h
index 516514a..50c609e 100644
--- a/ui/gl/gl_image_ahardwarebuffer.h
+++ b/ui/gl/gl_image_ahardwarebuffer.h
@@ -30,6 +30,7 @@
 
   // Overridden from GLImage:
   unsigned GetInternalFormat() override;
+  unsigned GetDataType() override;
   bool BindTexImage(unsigned target) override;
   bool CopyTexImage(unsigned target) override;
   bool CopyTexSubImage(unsigned target,
@@ -57,6 +58,7 @@
 
   base::android::ScopedHardwareBufferHandle handle_;
   unsigned internal_format_ = GL_RGBA;
+  unsigned data_type_ = GL_UNSIGNED_BYTE;
 
   DISALLOW_COPY_AND_ASSIGN(GLImageAHardwareBuffer);
 };
diff --git a/ui/gl/gl_image_d3d.cc b/ui/gl/gl_image_d3d.cc
index 78636360..99139a2 100644
--- a/ui/gl/gl_image_d3d.cc
+++ b/ui/gl/gl_image_d3d.cc
@@ -15,16 +15,45 @@
 
 namespace gl {
 
+namespace {
+
+bool ValidGLInternalFormat(unsigned internal_format) {
+  switch (internal_format) {
+    case GL_RGB:
+    case GL_RGBA:
+    case GL_BGRA_EXT:
+      return true;
+    default:
+      return false;
+  }
+}
+
+bool ValidGLDataType(unsigned data_type) {
+  switch (data_type) {
+    case GL_UNSIGNED_BYTE:
+    case GL_HALF_FLOAT_OES:
+      return true;
+    default:
+      return false;
+  }
+}
+
+}  // namespace
+
 GLImageD3D::GLImageD3D(const gfx::Size& size,
                        unsigned internal_format,
+                       unsigned data_type,
                        Microsoft::WRL::ComPtr<ID3D11Texture2D> texture,
                        Microsoft::WRL::ComPtr<IDXGISwapChain1> swap_chain)
     : GLImage(),
       size_(size),
       internal_format_(internal_format),
+      data_type_(data_type),
       texture_(std::move(texture)),
       swap_chain_(std::move(swap_chain)) {
   DCHECK(texture_);
+  DCHECK(ValidGLInternalFormat(internal_format_));
+  DCHECK(ValidGLDataType(data_type_));
 }
 
 GLImageD3D::~GLImageD3D() {
@@ -75,6 +104,10 @@
   return internal_format_;
 }
 
+unsigned GLImageD3D::GetDataType() {
+  return data_type_;
+}
+
 bool GLImageD3D::BindTexImage(unsigned target) {
   DCHECK_NE(egl_image_, EGL_NO_IMAGE_KHR);
   glEGLImageTargetTexture2DOES(target, egl_image_);
diff --git a/ui/gl/gl_image_d3d.h b/ui/gl/gl_image_d3d.h
index 6cc2811..6c5b216 100644
--- a/ui/gl/gl_image_d3d.h
+++ b/ui/gl/gl_image_d3d.h
@@ -19,11 +19,14 @@
  public:
   // Creates a GLImage backed by a D3D11 |texture| with given |size| and GL
   // unsized |internal_format|, optionally associated with |swap_chain|.  The
-  // |internal_format| is passed to ANGLE and used for GL operations.  It may be
-  // different from the internal format associated with the  DXGI_FORMAT of the
-  // texture (e.g. RGB instead of BGRA_EXT for DXGI_FORMAT_B8G8R8A8_UNORM).
+  // |internal_format| and |data_type| are passed to ANGLE and used for GL
+  // operations.  |internal_format| may be different from the internal format
+  // associated with the DXGI_FORMAT of the texture (e.g. RGB instead of
+  // BGRA_EXT for DXGI_FORMAT_B8G8R8A8_UNORM).  |data_type| should match the
+  // data type accociated with the DXGI_FORMAT of the texture.
   GLImageD3D(const gfx::Size& size,
              unsigned internal_format,
+             unsigned data_type,
              Microsoft::WRL::ComPtr<ID3D11Texture2D> texture,
              Microsoft::WRL::ComPtr<IDXGISwapChain1> swap_chain);
 
@@ -37,6 +40,7 @@
   BindOrCopy ShouldBindOrCopy() override;
   gfx::Size GetSize() override;
   unsigned GetInternalFormat() override;
+  unsigned GetDataType() override;
   bool BindTexImage(unsigned target) override;
   void ReleaseTexImage(unsigned target) override {}
   bool CopyTexImage(unsigned target) override;
@@ -67,8 +71,9 @@
   ~GLImageD3D() override;
 
   const gfx::Size size_;
-  const unsigned internal_format_; /* GLenum */
-  void* egl_image_ = nullptr; /* EGLImageKHR */
+  const unsigned internal_format_;  // GLenum
+  const unsigned data_type_;        // GLenum
+  void* egl_image_ = nullptr;       // EGLImageKHR
   Microsoft::WRL::ComPtr<ID3D11Texture2D> texture_;
   Microsoft::WRL::ComPtr<IDXGISwapChain1> swap_chain_;
 
diff --git a/ui/gl/gl_image_d3d_unittest.cc b/ui/gl/gl_image_d3d_unittest.cc
index ca32424..b9d03318 100644
--- a/ui/gl/gl_image_d3d_unittest.cc
+++ b/ui/gl/gl_image_d3d_unittest.cc
@@ -14,7 +14,7 @@
 
 const uint8_t kImageColor[] = {0x30, 0x40, 0x10, 0xFF};
 
-template <DXGI_FORMAT texture_format, GLenum internal_format>
+template <DXGI_FORMAT texture_format, GLenum internal_format, GLenum data_type>
 class GLImageD3DTestDelegate : public GLImageTestDelegateBase {
  public:
   void DidSetUp() override {
@@ -49,7 +49,7 @@
     EXPECT_TRUE(SUCCEEDED(hr));
 
     auto image = base::MakeRefCounted<GLImageD3D>(
-        size, internal_format, std::move(d3d11_texture), nullptr);
+        size, internal_format, data_type, std::move(d3d11_texture), nullptr);
     EXPECT_TRUE(image->Initialize());
     return image;
   }
@@ -86,14 +86,28 @@
   Microsoft::WRL::ComPtr<ID3D11Device> d3d11_device_;
 };
 
-using GLImageTestTypes = testing::Types<
-    GLImageD3DTestDelegate<DXGI_FORMAT_B8G8R8A8_UNORM, GL_BGRA_EXT>,
-    GLImageD3DTestDelegate<DXGI_FORMAT_B8G8R8A8_UNORM, GL_RGBA>,
-    GLImageD3DTestDelegate<DXGI_FORMAT_B8G8R8A8_UNORM, GL_RGB>,
-    GLImageD3DTestDelegate<DXGI_FORMAT_R8G8B8A8_UNORM, GL_RGBA>,
-    GLImageD3DTestDelegate<DXGI_FORMAT_R8G8B8A8_UNORM, GL_RGB>,
-    GLImageD3DTestDelegate<DXGI_FORMAT_R16G16B16A16_FLOAT, GL_RGBA>,
-    GLImageD3DTestDelegate<DXGI_FORMAT_R16G16B16A16_FLOAT, GL_RGB>>;
+using GLImageTestTypes =
+    testing::Types<GLImageD3DTestDelegate<DXGI_FORMAT_B8G8R8A8_UNORM,
+                                          GL_BGRA_EXT,
+                                          GL_UNSIGNED_BYTE>,
+                   GLImageD3DTestDelegate<DXGI_FORMAT_B8G8R8A8_UNORM,
+                                          GL_RGBA,
+                                          GL_UNSIGNED_BYTE>,
+                   GLImageD3DTestDelegate<DXGI_FORMAT_B8G8R8A8_UNORM,
+                                          GL_RGB,
+                                          GL_UNSIGNED_BYTE>,
+                   GLImageD3DTestDelegate<DXGI_FORMAT_R8G8B8A8_UNORM,
+                                          GL_RGBA,
+                                          GL_UNSIGNED_BYTE>,
+                   GLImageD3DTestDelegate<DXGI_FORMAT_R8G8B8A8_UNORM,
+                                          GL_RGB,
+                                          GL_UNSIGNED_BYTE>,
+                   GLImageD3DTestDelegate<DXGI_FORMAT_R16G16B16A16_FLOAT,
+                                          GL_RGBA,
+                                          GL_HALF_FLOAT_OES>,
+                   GLImageD3DTestDelegate<DXGI_FORMAT_R16G16B16A16_FLOAT,
+                                          GL_RGB,
+                                          GL_HALF_FLOAT_OES>>;
 
 INSTANTIATE_TYPED_TEST_SUITE_P(GLImageD3D, GLImageTest, GLImageTestTypes);
 INSTANTIATE_TYPED_TEST_SUITE_P(GLImageD3D,
diff --git a/ui/gl/gl_image_dxgi.cc b/ui/gl/gl_image_dxgi.cc
index 9ab685b..aef2b08 100644
--- a/ui/gl/gl_image_dxgi.cc
+++ b/ui/gl/gl_image_dxgi.cc
@@ -203,6 +203,10 @@
     return HasAlpha(buffer_format_) ? GL_RGBA : GL_RGB;
 }
 
+unsigned GLImageDXGI::GetDataType() {
+  return GL_UNSIGNED_BYTE;
+}
+
 gfx::Size GLImageDXGI::GetSize() {
   return size_;
 }
diff --git a/ui/gl/gl_image_dxgi.h b/ui/gl/gl_image_dxgi.h
index c1337c1..deacff1 100644
--- a/ui/gl/gl_image_dxgi.h
+++ b/ui/gl/gl_image_dxgi.h
@@ -35,6 +35,7 @@
                        const gfx::Rect& rect) override;
   void Flush() override;
   unsigned GetInternalFormat() override;
+  unsigned GetDataType() override;
   gfx::Size GetSize() override;
   Type GetType() const override;
   void OnMemoryDump(base::trace_event::ProcessMemoryDump* pmd,
diff --git a/ui/gl/gl_image_glx.cc b/ui/gl/gl_image_glx.cc
index ecaf87f6..ba3b780 100644
--- a/ui/gl/gl_image_glx.cc
+++ b/ui/gl/gl_image_glx.cc
@@ -146,6 +146,10 @@
 
 unsigned GLImageGLX::GetInternalFormat() { return internalformat_; }
 
+unsigned GLImageGLX::GetDataType() {
+  return GL_UNSIGNED_BYTE;
+}
+
 GLImageGLX::BindOrCopy GLImageGLX::ShouldBindOrCopy() {
   return BIND;
 }
diff --git a/ui/gl/gl_image_glx.h b/ui/gl/gl_image_glx.h
index 069bab3..0347fb00 100644
--- a/ui/gl/gl_image_glx.h
+++ b/ui/gl/gl_image_glx.h
@@ -24,6 +24,7 @@
   // Overridden from GLImage:
   gfx::Size GetSize() override;
   unsigned GetInternalFormat() override;
+  unsigned GetDataType() override;
   BindOrCopy ShouldBindOrCopy() override;
   bool BindTexImage(unsigned target) override;
   void ReleaseTexImage(unsigned target) override;
diff --git a/ui/gl/gl_image_io_surface.h b/ui/gl/gl_image_io_surface.h
index 3661759..ec7100e 100644
--- a/ui/gl/gl_image_io_surface.h
+++ b/ui/gl/gl_image_io_surface.h
@@ -46,6 +46,7 @@
   // Overridden from GLImage:
   gfx::Size GetSize() override;
   unsigned GetInternalFormat() override;
+  unsigned GetDataType() override;
   BindOrCopy ShouldBindOrCopy() override;
   bool BindTexImage(unsigned target) override;
   bool BindTexImageWithInternalformat(unsigned target,
diff --git a/ui/gl/gl_image_io_surface.mm b/ui/gl/gl_image_io_surface.mm
index 00b3f31..f5fd7c3 100644
--- a/ui/gl/gl_image_io_surface.mm
+++ b/ui/gl/gl_image_io_surface.mm
@@ -17,6 +17,7 @@
 #include "ui/gfx/buffer_format_util.h"
 #include "ui/gfx/mac/display_icc_profiles.h"
 #include "ui/gfx/mac/io_surface.h"
+#include "ui/gl/buffer_format_utils.h"
 #include "ui/gl/gl_bindings.h"
 #include "ui/gl/gl_context.h"
 #include "ui/gl/gl_enums.h"
@@ -244,6 +245,10 @@
   return internalformat_;
 }
 
+unsigned GLImageIOSurface::GetDataType() {
+  return gl::BufferFormatToGLDataType(format_);
+}
+
 GLImageIOSurface::BindOrCopy GLImageIOSurface::ShouldBindOrCopy() {
   // YUV_420_BIPLANAR is not supported by BindTexImage.
   // CopyTexImage is supported by this format as that performs conversion to RGB
diff --git a/ui/gl/gl_image_memory.cc b/ui/gl/gl_image_memory.cc
index fa894a4..beebc18 100644
--- a/ui/gl/gl_image_memory.cc
+++ b/ui/gl/gl_image_memory.cc
@@ -11,6 +11,7 @@
 #include "base/trace_event/trace_event.h"
 #include "ui/gfx/buffer_format_util.h"
 #include "ui/gfx/gpu_fence.h"
+#include "ui/gl/buffer_format_utils.h"
 #include "ui/gl/gl_bindings.h"
 #include "ui/gl/gl_context.h"
 #include "ui/gl/gl_enums.h"
@@ -21,99 +22,6 @@
 namespace gl {
 namespace {
 
-GLenum TextureFormat(gfx::BufferFormat format) {
-  switch (format) {
-    case gfx::BufferFormat::R_8:
-      return GL_RED;
-    case gfx::BufferFormat::R_16:
-      return GL_R16_EXT;
-    case gfx::BufferFormat::RG_88:
-      return GL_RG;
-    case gfx::BufferFormat::RGBA_4444:
-    case gfx::BufferFormat::RGBA_8888:
-    case gfx::BufferFormat::RGBA_F16:
-      return GL_RGBA;
-    case gfx::BufferFormat::BGRA_8888:
-      return GL_BGRA_EXT;
-    case gfx::BufferFormat::BGR_565:
-    case gfx::BufferFormat::RGBX_8888:
-    case gfx::BufferFormat::BGRX_8888:
-      return GL_RGB;
-    case gfx::BufferFormat::BGRX_1010102:
-    case gfx::BufferFormat::RGBX_1010102:
-      // Technically speaking we should use an opaque format, but neither
-      // OpenGLES nor OpenGL supports the hypothetical GL_RGB10_EXT.
-      return GL_RGB10_A2_EXT;
-    case gfx::BufferFormat::YVU_420:
-    case gfx::BufferFormat::YUV_420_BIPLANAR:
-    case gfx::BufferFormat::P010:
-      NOTREACHED() << gfx::BufferFormatToString(format);
-      return 0;
-  }
-
-  NOTREACHED();
-  return 0;
-}
-
-GLenum DataFormat(gfx::BufferFormat format) {
-  switch (format) {
-    case gfx::BufferFormat::RGBX_8888:
-    case gfx::BufferFormat::RGBX_1010102:
-      return GL_RGBA;
-    case gfx::BufferFormat::BGRX_8888:
-    case gfx::BufferFormat::BGRX_1010102:
-      return GL_BGRA_EXT;
-    case gfx::BufferFormat::BGR_565:
-    case gfx::BufferFormat::RGBA_4444:
-    case gfx::BufferFormat::RGBA_8888:
-    case gfx::BufferFormat::BGRA_8888:
-    case gfx::BufferFormat::RGBA_F16:
-    case gfx::BufferFormat::R_8:
-    case gfx::BufferFormat::R_16:
-    case gfx::BufferFormat::RG_88:
-      return TextureFormat(format);
-    case gfx::BufferFormat::YVU_420:
-    case gfx::BufferFormat::YUV_420_BIPLANAR:
-    case gfx::BufferFormat::P010:
-      NOTREACHED() << gfx::BufferFormatToString(format);
-      return 0;
-  }
-
-  NOTREACHED();
-  return 0;
-}
-
-GLenum DataType(gfx::BufferFormat format) {
-  switch (format) {
-    case gfx::BufferFormat::BGR_565:
-      return GL_UNSIGNED_SHORT_5_6_5_REV;
-    case gfx::BufferFormat::RGBA_4444:
-      return GL_UNSIGNED_SHORT_4_4_4_4;
-    case gfx::BufferFormat::RGBX_8888:
-    case gfx::BufferFormat::RGBA_8888:
-    case gfx::BufferFormat::BGRX_8888:
-    case gfx::BufferFormat::BGRA_8888:
-    case gfx::BufferFormat::R_8:
-    case gfx::BufferFormat::RG_88:
-      return GL_UNSIGNED_BYTE;
-    case gfx::BufferFormat::R_16:
-      return GL_UNSIGNED_SHORT;
-    case gfx::BufferFormat::RGBA_F16:
-      return GL_HALF_FLOAT_OES;
-    case gfx::BufferFormat::BGRX_1010102:
-    case gfx::BufferFormat::RGBX_1010102:
-      return GL_UNSIGNED_INT_2_10_10_10_REV;
-    case gfx::BufferFormat::YVU_420:
-    case gfx::BufferFormat::YUV_420_BIPLANAR:
-    case gfx::BufferFormat::P010:
-      NOTREACHED() << gfx::BufferFormatToString(format);
-      return 0;
-  }
-
-  NOTREACHED();
-  return 0;
-}
-
 GLint DataRowLength(size_t stride, gfx::BufferFormat format) {
   switch (format) {
     case gfx::BufferFormat::RG_88:
@@ -313,7 +221,31 @@
 }
 
 unsigned GLImageMemory::GetInternalFormat() {
-  return TextureFormat(format_);
+  return gl::BufferFormatToGLInternalFormat(format_);
+}
+
+unsigned GLImageMemory::GetDataFormat() {
+  switch (format_) {
+    case gfx::BufferFormat::RGBX_8888:
+    case gfx::BufferFormat::RGBX_1010102:
+      return GL_RGBA;
+    case gfx::BufferFormat::BGRX_8888:
+    case gfx::BufferFormat::BGRX_1010102:
+      return GL_BGRA_EXT;
+    default:
+      break;
+  }
+  return GLImage::GetDataFormat();
+}
+
+unsigned GLImageMemory::GetDataType() {
+  switch (format_) {
+    case gfx::BufferFormat::BGR_565:
+      return GL_UNSIGNED_SHORT_5_6_5_REV;
+    default:
+      break;
+  }
+  return gl::BufferFormatToGLDataType(format_);
 }
 
 GLImage::BindOrCopy GLImageMemory::ShouldBindOrCopy() {
@@ -332,8 +264,8 @@
   if (target == GL_TEXTURE_EXTERNAL_OES)
     return false;
 
-  GLenum data_format = DataFormat(format_);
-  GLenum data_type = DataType(format_);
+  GLenum data_format = GetDataFormat();
+  GLenum data_type = GetDataType();
   GLint data_row_length = DataRowLength(stride_, format_);
   std::unique_ptr<uint8_t[]> gles2_data;
 
@@ -345,9 +277,8 @@
   if (data_row_length != size_.width())
     glPixelStorei(GL_UNPACK_ROW_LENGTH, data_row_length);
 
-  glTexImage2D(target, 0, TextureFormat(format_), size_.width(), size_.height(),
-               0, data_format, data_type,
-               gles2_data ? gles2_data.get() : memory_);
+  glTexImage2D(target, 0, GetInternalFormat(), size_.width(), size_.height(), 0,
+               data_format, data_type, gles2_data ? gles2_data.get() : memory_);
 
   if (data_row_length != size_.width())
     glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
@@ -370,8 +301,8 @@
     return false;
 
   const uint8_t* data = memory_ + rect.y() * stride_;
-  GLenum data_format = DataFormat(format_);
-  GLenum data_type = DataType(format_);
+  GLenum data_format = GetDataFormat();
+  GLenum data_type = GetDataType();
   GLint data_row_length = DataRowLength(stride_, format_);
   std::unique_ptr<uint8_t[]> gles2_data;
 
diff --git a/ui/gl/gl_image_memory.h b/ui/gl/gl_image_memory.h
index 558faee5..e1c6c3bd 100644
--- a/ui/gl/gl_image_memory.h
+++ b/ui/gl/gl_image_memory.h
@@ -30,6 +30,8 @@
   // Overridden from GLImage:
   gfx::Size GetSize() override;
   unsigned GetInternalFormat() override;
+  unsigned GetDataFormat() override;
+  unsigned GetDataType() override;
   BindOrCopy ShouldBindOrCopy() override;
   bool BindTexImage(unsigned target) override;
   void ReleaseTexImage(unsigned target) override {}
diff --git a/ui/gl/gl_image_native_pixmap.cc b/ui/gl/gl_image_native_pixmap.cc
index 18e0deae..93e1cdd 100644
--- a/ui/gl/gl_image_native_pixmap.cc
+++ b/ui/gl/gl_image_native_pixmap.cc
@@ -11,6 +11,7 @@
 #include "build/build_config.h"
 #include "ui/gfx/buffer_format_util.h"
 #include "ui/gfx/gpu_fence.h"
+#include "ui/gl/buffer_format_utils.h"
 #include "ui/gl/egl_util.h"
 #include "ui/gl/gl_context.h"
 #include "ui/gl/gl_enums.h"
@@ -38,37 +39,16 @@
 namespace {
 
 // Returns corresponding internalformat if supported, and GL_NONE otherwise.
-unsigned GetInternalFormatFromFormat(gfx::BufferFormat format) {
+unsigned GLInternalFormat(gfx::BufferFormat format) {
   switch (format) {
-    case gfx::BufferFormat::R_8:
-      return GL_RED_EXT;
-    case gfx::BufferFormat::R_16:
-      return GL_R16_EXT;
-    case gfx::BufferFormat::RG_88:
-      return GL_RG_EXT;
-    case gfx::BufferFormat::BGR_565:
-    case gfx::BufferFormat::RGBX_8888:
-    case gfx::BufferFormat::BGRX_8888:
-      return GL_RGB;
-    case gfx::BufferFormat::RGBA_8888:
-      return GL_RGBA;
-    case gfx::BufferFormat::RGBX_1010102:
-    case gfx::BufferFormat::BGRX_1010102:
-      return GL_RGB10_A2_EXT;
-    case gfx::BufferFormat::BGRA_8888:
-      return GL_BGRA_EXT;
-    case gfx::BufferFormat::YVU_420:
-      return GL_RGB_YCRCB_420_CHROMIUM;
-    case gfx::BufferFormat::YUV_420_BIPLANAR:
-      return GL_RGB_YCBCR_420V_CHROMIUM;
     case gfx::BufferFormat::RGBA_4444:
     case gfx::BufferFormat::RGBA_F16:
     case gfx::BufferFormat::P010:
       return GL_RGB_YCBCR_P010_CHROMIUM;
+    default:
+      break;
   }
-
-  NOTREACHED();
-  return GL_NONE;
+  return gl::BufferFormatToGLInternalFormat(format);
 }
 
 EGLint FourCC(gfx::BufferFormat format) {
@@ -153,7 +133,7 @@
 
 bool GLImageNativePixmap::Initialize(scoped_refptr<gfx::NativePixmap> pixmap) {
   DCHECK(!pixmap_);
-  if (GetInternalFormatFromFormat(format_) == GL_NONE) {
+  if (GLInternalFormat(format_) == GL_NONE) {
     LOG(ERROR) << "Unsupported format: " << gfx::BufferFormatToString(format_);
     return false;
   }
@@ -209,7 +189,7 @@
 }
 
 bool GLImageNativePixmap::InitializeFromTexture(uint32_t texture_id) {
-  if (GetInternalFormatFromFormat(format_) == GL_NONE) {
+  if (GLInternalFormat(format_) == GL_NONE) {
     LOG(ERROR) << "Unsupported format: " << gfx::BufferFormatToString(format_);
     return false;
   }
@@ -311,7 +291,11 @@
 }
 
 unsigned GLImageNativePixmap::GetInternalFormat() {
-  return GetInternalFormatFromFormat(format_);
+  return GLInternalFormat(format_);
+}
+
+unsigned GLImageNativePixmap::GetDataType() {
+  return gl::BufferFormatToGLDataType(format_);
 }
 
 bool GLImageNativePixmap::CopyTexImage(unsigned target) {
diff --git a/ui/gl/gl_image_native_pixmap.h b/ui/gl/gl_image_native_pixmap.h
index 4e81a986..72b16036d 100644
--- a/ui/gl/gl_image_native_pixmap.h
+++ b/ui/gl/gl_image_native_pixmap.h
@@ -28,6 +28,7 @@
 
   // Overridden from GLImage:
   unsigned GetInternalFormat() override;
+  unsigned GetDataType() override;
   bool CopyTexImage(unsigned target) override;
   bool CopyTexSubImage(unsigned target,
                        const gfx::Point& offset,
diff --git a/ui/gl/gl_image_stub.cc b/ui/gl/gl_image_stub.cc
index 9fe966f6..5e6ffb1 100644
--- a/ui/gl/gl_image_stub.cc
+++ b/ui/gl/gl_image_stub.cc
@@ -20,6 +20,10 @@
 
 unsigned GLImageStub::GetInternalFormat() { return GL_RGBA; }
 
+unsigned GLImageStub::GetDataType() {
+  return GL_UNSIGNED_BYTE;
+}
+
 GLImageStub::BindOrCopy GLImageStub::ShouldBindOrCopy() {
   return BIND;
 }
diff --git a/ui/gl/gl_image_stub.h b/ui/gl/gl_image_stub.h
index 42e60e1..0c97c313 100644
--- a/ui/gl/gl_image_stub.h
+++ b/ui/gl/gl_image_stub.h
@@ -20,6 +20,7 @@
   // Overridden from GLImage:
   gfx::Size GetSize() override;
   unsigned GetInternalFormat() override;
+  unsigned GetDataType() override;
   BindOrCopy ShouldBindOrCopy() override;
   bool BindTexImage(unsigned target) override;
   void ReleaseTexImage(unsigned target) override {}
diff --git a/ui/gl/gl_image_surface_texture.cc b/ui/gl/gl_image_surface_texture.cc
index 4b3e1bc9..02aca21c 100644
--- a/ui/gl/gl_image_surface_texture.cc
+++ b/ui/gl/gl_image_surface_texture.cc
@@ -29,6 +29,10 @@
 
 unsigned GLImageSurfaceTexture::GetInternalFormat() { return GL_RGBA; }
 
+unsigned GLImageSurfaceTexture::GetDataType() {
+  return GL_UNSIGNED_BYTE;
+}
+
 bool GLImageSurfaceTexture::BindTexImage(unsigned target) {
   TRACE_EVENT0("gpu", "GLImageSurfaceTexture::BindTexImage");
   DCHECK(thread_checker_.CalledOnValidThread());
diff --git a/ui/gl/gl_image_surface_texture.h b/ui/gl/gl_image_surface_texture.h
index 12b09bbc..eceb7bc 100644
--- a/ui/gl/gl_image_surface_texture.h
+++ b/ui/gl/gl_image_surface_texture.h
@@ -27,6 +27,7 @@
   // Overridden from GLImage:
   gfx::Size GetSize() override;
   unsigned GetInternalFormat() override;
+  unsigned GetDataType() override;
   bool BindTexImage(unsigned target) override;
   void ReleaseTexImage(unsigned target) override {}
   bool CopyTexImage(unsigned target) override;
diff --git a/ui/views/window/client_view.cc b/ui/views/window/client_view.cc
index d79bf40..b34739c5e 100644
--- a/ui/views/window/client_view.cc
+++ b/ui/views/window/client_view.cc
@@ -8,6 +8,7 @@
 #include "ui/accessibility/ax_enums.mojom.h"
 #include "ui/accessibility/ax_node_data.h"
 #include "ui/base/hit_test.h"
+#include "ui/views/layout/fill_layout.h"
 #include "ui/views/widget/widget.h"
 #include "ui/views/widget/widget_delegate.h"
 
@@ -18,6 +19,7 @@
 
 ClientView::ClientView(Widget* widget, View* contents_view)
     : contents_view_(contents_view) {
+  SetLayoutManager(std::make_unique<views::FillLayout>());
 }
 
 int ClientView::NonClientHitTest(const gfx::Point& point) {
@@ -60,14 +62,6 @@
   return contents_view_ ? contents_view_->GetMinimumSize() : gfx::Size();
 }
 
-void ClientView::Layout() {
-  // |contents_view_| is allowed to be NULL up until the point where this view
-  // is attached to a Container.
-  if (contents_view_)
-    contents_view_->SetBounds(0, 0, width(), height());
-}
-
-
 void ClientView::GetAccessibleNodeData(ui::AXNodeData* node_data) {
   node_data->role = ax::mojom::Role::kClient;
 }
@@ -85,6 +79,8 @@
     DCHECK(contents_view_); // |contents_view_| must be valid now!
     // Insert |contents_view_| at index 0 so it is first in the focus chain.
     // (the OK/Cancel buttons are inserted before contents_view_)
+    // TODO(weili): This seems fragile and can be refactored.
+    // Tracked at https://crbug.com/1012466.
     AddChildViewAt(contents_view_, 0);
   } else if (!details.is_add && details.child == contents_view_) {
     contents_view_ = nullptr;
diff --git a/ui/views/window/client_view.h b/ui/views/window/client_view.h
index b237a754..52d70c4 100644
--- a/ui/views/window/client_view.h
+++ b/ui/views/window/client_view.h
@@ -59,7 +59,6 @@
   gfx::Size CalculatePreferredSize() const override;
   gfx::Size GetMinimumSize() const override;
   gfx::Size GetMaximumSize() const override;
-  void Layout() override;
 
  protected:
   // Overridden from View:
diff --git a/ui/webui/resources/cr_components/chromeos/quick_unlock/pin_keyboard.html b/ui/webui/resources/cr_components/chromeos/quick_unlock/pin_keyboard.html
index 3099dcd..68be3a84 100644
--- a/ui/webui/resources/cr_components/chromeos/quick_unlock/pin_keyboard.html
+++ b/ui/webui/resources/cr_components/chromeos/quick_unlock/pin_keyboard.html
@@ -133,20 +133,22 @@
 
       .digit-button inner-text {
         font-family: 'Roboto';
-      }
-
-      inner-text.letter {
-        color: var(--pin-keyboard-letter-color, var(--google-grey-700));
-        font-size: 12px;
-        margin-top: 8px;
-
-        @apply --pin-keyboard-digit-button-letter;
+        position: absolute;
       }
 
       .number {
         color: var(--pin-keyboard-number-color, var(--paper-blue-grey-700));
         font-size: 18px;
-        height: 16px;
+        top: 0;
+      }
+
+      .letter {
+        bottom: 0;
+        color: var(--pin-keyboard-letter-color, var(--google-grey-700));
+        font-size: 12px;
+        margin-top: 8px;
+
+        @apply --pin-keyboard-digit-button-letter;
       }
 
       #pinInput {
diff --git a/ui/webui/resources/cr_elements/cr_searchable_drop_down/cr_searchable_drop_down.js b/ui/webui/resources/cr_elements/cr_searchable_drop_down/cr_searchable_drop_down.js
index 4fdaf01..f4b0b195 100644
--- a/ui/webui/resources/cr_elements/cr_searchable_drop_down/cr_searchable_drop_down.js
+++ b/ui/webui/resources/cr_elements/cr_searchable_drop_down/cr_searchable_drop_down.js
@@ -97,15 +97,18 @@
     'mousemove': 'onMouseMove_',
   },
 
+  /** @private {number} */
+  openDropdownTimeoutId_: 0,
+
   /** @override */
   attached: function() {
-    this.mouseDownListener_ = this.onMouseDown_.bind(this);
-    document.addEventListener('mousedown', this.mouseDownListener_);
+    this.pointerDownListener_ = this.onPointerDown_.bind(this);
+    document.addEventListener('pointerdown', this.pointerDownListener_);
   },
 
   /** @override */
   detached: function() {
-    document.removeEventListener('mousedown', this.mouseDownListener_);
+    document.removeEventListener('pointerdown', this.pointerDownListener_);
   },
 
   /**
@@ -131,11 +134,30 @@
 
   /** @private */
   closeDropdown_: function() {
+    if (this.openDropdownTimeoutId_) {
+      clearTimeout(this.openDropdownTimeoutId_);
+    }
+
     this.$$('iron-dropdown').close();
     this.opened_ = false;
   },
 
   /**
+   * Enqueues a task to open the iron-dropdown. Any pending task is canceled and
+   * a new task is enqueued.
+   * @private
+   */
+  enqueueOpenDropdown_: function() {
+    if (this.opened_) {
+      return;
+    }
+    if (this.openDropdownTimeoutId_) {
+      clearTimeout(this.openDropdownTimeoutId_);
+    }
+    this.openDropdownTimeoutId_ = setTimeout(this.openDropdown_.bind(this));
+  },
+
+  /**
    * @param {!Array<string>} oldValue
    * @param {!Array<string>} newValue
    * @private
@@ -184,7 +206,7 @@
    * @param {!Event} event
    * @private
    */
-  onMouseDown_: function(event) {
+  onPointerDown_: function(event) {
     if (this.readonly) {
       return;
     }
@@ -199,8 +221,12 @@
       // Prevent any other field from gaining focus due to this event.
       event.preventDefault();
     } else if (paths.includes(searchInput)) {
-      // A click on the search input should open the dropdown.
-      this.openDropdown_();
+      // A click on the search input should open the dropdown. Opening the
+      // dropdown is done on a new task because when the IronDropdown element is
+      // opened, it may capture and cancel the touch event, preventing the
+      // searchInput field from receiving focus. Replacing iron-dropdown
+      // (crbug.com/1013408) will eliminate the need for this work around.
+      this.enqueueOpenDropdown_();
     } else {
       // A click outside either the search input or dropdown should close the
       // dropdown. Implicitly, the search input has lost focus at this point.