Import wpt@94573f7263a55f54becf4bcccbc0414cb4911749

Using wpt-import in Chromium a2465c0852f17d0f6fe989ce799d0514a2eb1d78.
With Chromium commits locally applied on WPT:
68d5240e06 "[ChromeDriver] Set key modifiers with mouse actions"
2b037bdc25 "[Animation Worklet] Fix flaky worklet-animation-with-fill-mode.https.html"
fc735f1b74 "[IndexedDB] Fixed DisjointRangeLockManager usage in IndexedDB"


Note to sheriffs: This CL imports external tests and adds
expectations for those tests; if this CL is large and causes
a few new failures, please fix the failures by adding new
lines to TestExpectations rather than reverting. See:
https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_platform_tests.md

NOAUTOREVERT=true
TBR=foolip

No-Export: true
Change-Id: I94175380c59090d994318276e0aeb6f44a123f47
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1516334
Reviewed-by: WPT Autoroller <wpt-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: WPT Autoroller <wpt-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#639693}
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index b415216..0308c30 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -3038,6 +3038,7 @@
 crbug.com/939181 virtual/not-site-per-process/external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects.html [ Failure Timeout ]
 
 # ====== New tests from wpt-importer added here ======
+crbug.com/626703 external/wpt/css/css-text/word-break/word-break-break-word-overflow-wrap-interactions.html [ Failure ]
 crbug.com/626703 external/wpt/css/css-sizing/range-percent-intrinsic-size-2a.html [ Failure ]
 crbug.com/626703 external/wpt/infrastructure/reftest/reftest_fuzzy.html [ Failure ]
 crbug.com/626703 external/wpt/infrastructure/reftest/reftest_fuzzy_1.html [ Failure ]
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_5.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_5.json
index 97159e3..5d89f469 100644
--- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_5.json
+++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_5.json
@@ -67427,6 +67427,18 @@
      {}
     ]
    ],
+   "css/css-text/word-break/word-break-break-word-overflow-wrap-interactions.html": [
+    [
+     "/css/css-text/word-break/word-break-break-word-overflow-wrap-interactions.html",
+     [
+      [
+       "/css/css-text/word-break/word-break-break-word-overflow-wrap-interactions-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "css/css-text/word-break/word-break-keep-all-000.html": [
     [
      "/css/css-text/word-break/word-break-keep-all-000.html",
@@ -146605,6 +146617,11 @@
      {}
     ]
    ],
+   "css/css-text/word-break/word-break-break-word-overflow-wrap-interactions-ref.html": [
+    [
+     {}
+    ]
+   ],
    "css/css-text/writing-system/reference/writing-system-font-001-ref.html": [
     [
      {}
@@ -375245,6 +375262,14 @@
    "ac1840131c3f214b993ffd58dcd2124523f89b6b",
    "reftest"
   ],
+  "css/css-text/word-break/word-break-break-word-overflow-wrap-interactions-ref.html": [
+   "3c6ab3863f88646f2fe9132963704c72d6b8d3d7",
+   "support"
+  ],
+  "css/css-text/word-break/word-break-break-word-overflow-wrap-interactions.html": [
+   "b4d3720e2378f74c90601d5ad43f5093f98e2a32",
+   "reftest"
+  ],
   "css/css-text/word-break/word-break-keep-all-000.html": [
    "fce7487c33ad47aaeeb20fe5ccb1bc5180192329",
    "reftest"
@@ -464922,7 +464947,7 @@
    "support"
   ],
   "tools/manifest/utils.py": [
-   "9da79f6deb42e6d5f98bb4052b3586017acb54e0",
+   "a097ad5090e16aa1a43c8e43332f0761ecd6f240",
    "support"
   ],
   "tools/manifest/vcs.py": [
@@ -469142,7 +469167,7 @@
    "support"
   ],
   "tools/wptrunner/requirements.txt": [
-   "37f4fde47869bd0c1f30ab12ef96cb5d625b8c9d",
+   "6216fb6708da3c60d6e2b0a60d92a232dc383b0f",
    "support"
   ],
   "tools/wptrunner/requirements_chrome.txt": [
@@ -469386,7 +469411,7 @@
    "support"
   ],
   "tools/wptrunner/wptrunner/formatters/wptscreenshot.py": [
-   "bb26ebac7ddc78ff290f3aa68c05019736822626",
+   "48c51418bac16faa5331595de39590219cd1b084",
    "support"
   ],
   "tools/wptrunner/wptrunner/manifestexpected.py": [
@@ -473334,19 +473359,19 @@
    "testharness"
   ],
   "webauthn/createcredential-badargs-rp.https-expected.txt": [
-   "487fdb367fd2746db472a93376ee625006cc549a",
+   "6f49ba947419e8bb77ea536efd058587f79e8e05",
    "support"
   ],
   "webauthn/createcredential-badargs-rp.https.html": [
-   "9958b2c78a1ca80a0a8a11e2fd59128ec9ab2734",
+   "18301138b36105777cdb9ac924a1024b8507a015",
    "testharness"
   ],
   "webauthn/createcredential-badargs-user.https-expected.txt": [
-   "7a35adf2e197f810bf879f8cd956e67a871b8944",
+   "e6c37869d4e0f31ca4744d82add41631a58a1cab",
    "support"
   ],
   "webauthn/createcredential-badargs-user.https.html": [
-   "dd1870aeca6651649fc1ef1c0b38b6a05b481d78",
+   "e8587591951f3c3d8e2b6a283779f605a5640241",
    "testharness"
   ],
   "webauthn/createcredential-excludecredentials.https-expected.txt": [
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/word-break/word-break-break-word-overflow-wrap-interactions-ref.html b/third_party/blink/web_tests/external/wpt/css/css-text/word-break/word-break-break-word-overflow-wrap-interactions-ref.html
new file mode 100644
index 0000000..3c6ab386
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-text/word-break/word-break-break-word-overflow-wrap-interactions-ref.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<title>CSS Test: word-break: break-word and overflow-wrap interaction</title>
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1296042">
+<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
+<style>
+  div {
+    float: left;
+    width: 100px;
+    height: 100px;
+    border: 1px solid black;
+    margin: 10px;
+    overflow-wrap: anywhere;
+  }
+</style>
+<p>The boxes below should look the same.</p>
+<div>FillerFillerFillerFiller</div>
+<div>FillerFillerFillerFiller</div>
+<div>FillerFillerFillerFiller</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/word-break/word-break-break-word-overflow-wrap-interactions.html b/third_party/blink/web_tests/external/wpt/css/css-text/word-break/word-break-break-word-overflow-wrap-interactions.html
new file mode 100644
index 0000000..b4d3720
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-text/word-break/word-break-break-word-overflow-wrap-interactions.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<title>CSS Test: word-break: break-word and overflow-wrap interaction</title>
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1296042">
+<link rel="help" href="https://drafts.csswg.org/css-text/#propdef-word-break">
+<link rel="help" href="https://drafts.csswg.org/css-text/#propdef-overflow-wrap">
+<link rel="help" href="https://drafts.csswg.org/css-text/#valdef-overflow-wrap-anywhere">
+<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
+<link rel="match" href="word-break-break-word-overflow-wrap-interactions-ref.html">
+<style>
+  div {
+    float: left;
+    width: 100px;
+    height: 100px;
+    border: 1px solid black;
+    margin: 10px;
+  }
+</style>
+<p>The boxes below should look the same.</p>
+<div style="word-break: break-word; overflow-wrap: anywhere;">FillerFillerFillerFiller</div>
+<div style="word-break: break-word; overflow-wrap: break-word;">FillerFillerFillerFiller</div>
+<div style="word-break: break-word; overflow-wrap: normal;">FillerFillerFillerFiller</div>
diff --git a/third_party/blink/web_tests/external/wpt/tools/manifest/utils.py b/third_party/blink/web_tests/external/wpt/tools/manifest/utils.py
index 9da79f6..a097ad5 100644
--- a/third_party/blink/web_tests/external/wpt/tools/manifest/utils.py
+++ b/third_party/blink/web_tests/external/wpt/tools/manifest/utils.py
@@ -14,7 +14,10 @@
 
 def from_os_path(path):
     assert os.path.sep == "/" or platform.system() == "Windows"
-    rv = path.replace(os.path.sep, "/")
+    if "/" == os.path.sep:
+        rv = path
+    else:
+        rv = path.replace(os.path.sep, "/")
     if "\\" in rv:
         raise ValueError("path contains \\ when separator is %s" % os.path.sep)
     return rv
@@ -24,6 +27,8 @@
     assert os.path.sep == "/" or platform.system() == "Windows"
     if "\\" in path:
         raise ValueError("normalised path contains \\")
+    if "/" == os.path.sep:
+        return path
     return path.replace("/", os.path.sep)
 
 
diff --git a/third_party/blink/web_tests/external/wpt/tools/wptrunner/requirements.txt b/third_party/blink/web_tests/external/wpt/tools/wptrunner/requirements.txt
index 37f4fde..6216fb6 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wptrunner/requirements.txt
+++ b/third_party/blink/web_tests/external/wpt/tools/wptrunner/requirements.txt
@@ -1,7 +1,7 @@
-html5lib == 1.0.1
-mozinfo == 0.10
+html5lib==1.0.1
+mozinfo==0.10
 mozlog==4.0
 mozdebug==0.1.1
-pillow == 5.2.0
+pillow==5.2.0
 urllib3[secure]==1.24.1
-
+requests==2.21.0
diff --git a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/formatters/wptscreenshot.py b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/formatters/wptscreenshot.py
index bb26eba..48c51418 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/formatters/wptscreenshot.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/formatters/wptscreenshot.py
@@ -1,23 +1,47 @@
+import requests
 from mozlog.structured.formatters.base import BaseFormatter
 
 
 class WptscreenshotFormatter(BaseFormatter):
     """Formatter that outputs screenshots in the format expected by wpt.fyi."""
 
+    # TODO(Hexcles): Make this configurable.
+    API = "https://staging.wpt.fyi/api/screenshots/hashes"
+
     def __init__(self):
         self.cache = set()
 
     def suite_start(self, data):
-        # TODO: ask wpt.fyi for known hashes.
-        pass
+        # TODO(Hexcles): We might want to move the request into a different
+        # place, make it non-blocking, and handle errors better.
+        params = {}
+        run_info = data.get("run_info", {})
+        if "product" in run_info:
+            params["browser"] = run_info["product"]
+        if "browser_version" in run_info:
+            params["browser_version"] = run_info["browser_version"]
+        if "os" in run_info:
+            params["os"] = run_info["os"]
+        if "os_version" in run_info:
+            params["os_version"] = run_info["os_version"]
+        try:
+            r = requests.get(self.API, params=params)
+            r.raise_for_status()
+            self.cache = set(r.json())
+        except (requests.exceptions.RequestException, ValueError):
+            pass
 
     def test_end(self, data):
         if "reftest_screenshots" not in data.get("extra", {}):
             return
         output = ""
         for item in data["extra"]["reftest_screenshots"]:
-            if type(item) != dict or item["hash"] in self.cache:
+            if type(item) != dict:
+                # Skip the relation string.
                 continue
-            self.cache.add(item["hash"])
+            checksum = "sha1:" + item["hash"]
+            if checksum in self.cache:
+                continue
+            self.cache.add(checksum)
             output += "data:image/png;base64,{}\n".format(item["screenshot"])
         return output if output else None