Bug 1400773 - Reland basic-shape wpt test added in bug 1290864. draft
authorManish Goregaokar <manishearth@gmail.com>
Fri, 05 Aug 2016 19:51:49 +0530
changeset 666221 01d3c0d24debcd1c986225b507866d5fcbee373a
parent 666127 ae39864562c6048fdc2950c5dfedb48e247c3300
child 732019 b16394525577b5bd077d3277f7ea7fe40b7a915e
push id80319
push userbmo:tlin@mozilla.com
push dateMon, 18 Sep 2017 08:15:05 +0000
bugs1400773, 1290864, 1302423
milestone57.0a1
Bug 1400773 - Reland basic-shape wpt test added in bug 1290864. The test was added in bug 1290864, but was deleted accidentally in bug 1302423. This patch revives the test without any modification, but adds it under different path. testing/web-platform/meta/MANIFEST.json is generated by running `./mach web-platform-tests --manifest-update` MozReview-Commit-ID: KNk4AzhUcgV
testing/web-platform/meta/MANIFEST.json
testing/web-platform/tests/css/css-shapes-1/basic-shape-circle-ellipse-serialization.html
--- a/testing/web-platform/meta/MANIFEST.json
+++ b/testing/web-platform/meta/MANIFEST.json
@@ -332374,16 +332374,22 @@
     ]
    ],
    "css/css-scoping-1/shadow-cascade-order-001.html": [
     [
      "/css/css-scoping-1/shadow-cascade-order-001.html",
      {}
     ]
    ],
+   "css/css-shapes-1/basic-shape-circle-ellipse-serialization.html": [
+    [
+     "/css/css-shapes-1/basic-shape-circle-ellipse-serialization.html",
+     {}
+    ]
+   ],
    "css/css-shapes-1/shape-outside-invalid-001.html": [
     [
      "/css/css-shapes-1/shape-outside-invalid-001.html",
      {}
     ]
    ],
    "css/css-shapes-1/shape-outside-invalid-circle-000.html": [
     [
@@ -519523,16 +519529,20 @@
   "css/css-scoping-1/shadow-cascade-order-001.html": [
    "46913ea7e47811b11be898de5c3bd0a330ea6637",
    "testharness"
   ],
   "css/css-shapes-1/OWNERS": [
    "d26aa70436055346420fd8bae6fd174daf090124",
    "support"
   ],
+  "css/css-shapes-1/basic-shape-circle-ellipse-serialization.html": [
+   "b0841c5c1e328846aaa95376ae62178173cdf5a5",
+   "testharness"
+  ],
   "css/css-shapes-1/shape-outside-invalid-001.html": [
    "550e970032ac78ada40b7b8b3e7159c4160d60da",
    "testharness"
   ],
   "css/css-shapes-1/shape-outside-invalid-circle-000.html": [
    "081416538a641c47c2e6c4ecbd2dfe2b793fc246",
    "testharness"
   ],
@@ -620820,21 +620830,21 @@
    "963e8436d3c2571fb971f05aaa4710f5d3dd7abe",
    "support"
   ],
   "service-workers/service-worker/resources/blank.html": [
    "0ddb4f1cf84729ed673295719ec58a3e5d600a12",
    "support"
   ],
   "service-workers/service-worker/resources/bytecheck-worker-imported-script.py": [
-   "772d029d4efbe22f62f3473d4afe9e501a792571",
+   "b488558e1bb16901b0a9b60f40aeddab9c464021",
    "support"
   ],
   "service-workers/service-worker/resources/bytecheck-worker.py": [
-   "66ec51461bc4da5862a9c4d06a9468a8dbe1d134",
+   "11a8883c24628b25f3faa1470da05caddd5eb094",
    "support"
   ],
   "service-workers/service-worker/resources/claim-shared-worker-fetch-iframe.html": [
    "2f7b5ec149446b2a81044e8b50ccc644facb4e42",
    "support"
   ],
   "service-workers/service-worker/resources/claim-shared-worker-fetch-worker.js": [
    "f5b8d26920aecfde1ee34657aa6006304c7da5a3",
@@ -628464,29 +628474,29 @@
    "16bdf435f3d05ceca30394dee6d82adcb64c997b",
    "wdspec"
   ],
   "webdriver/tests/retrieval/__init__.py": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "webdriver/tests/retrieval/find_element.py": [
-   "eeddcad4917fa1c01cda6e9c61f922243935d8d7",
+   "a2d29c9c8dd5303d196d0682a19f3f3560b35872",
    "wdspec"
   ],
   "webdriver/tests/retrieval/find_element_from_element.py": [
-   "d08f125d788b2bba224f26415a7d5f7bc0294a30",
+   "78d5e503bf979307f313b72f7578c55264c6e207",
    "wdspec"
   ],
   "webdriver/tests/retrieval/find_element_from_elements.py": [
-   "ad0baf0ad3506051f7959eea72c077b41c994167",
+   "0be0eb0bd904fa8f7e5332d43cef2b36dae1a579",
    "wdspec"
   ],
   "webdriver/tests/retrieval/find_elements.py": [
-   "5f052a79bfe687ec7cdb2583649bf689a9d0e984",
+   "7df448c94c89bdb9f6818a69a9d52b21faa4b944",
    "wdspec"
   ],
   "webdriver/tests/sessions/new_session/conftest.py": [
    "d2df38e506cb9a3e501f03fe03e2a31af42d6f04",
    "support"
   ],
   "webdriver/tests/sessions/new_session/create.py": [
    "f47ffcbaf22af9f445e4202ebeaa03bb9415fbc9",
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-shapes-1/basic-shape-circle-ellipse-serialization.html
@@ -0,0 +1,76 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>Serialization of basic shapes</title>
+<link rel="help" href="https://drafts.csswg.org/css-shapes/#basic-shape-serialization"/>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+function checkEquals(input, expected) {
+    test(function() {
+        let div = document.createElement('div');
+        div.style.clipPath = input;
+        let serialized = div.style.clipPath;
+        assert_equals(serialized, expected, input);
+    });
+}
+
+// Keywords get replaced by percentages in 2-value form
+checkEquals("circle(at left bottom)", "circle(at 0% 100%)");
+checkEquals("circle(at bottom left)", "circle(at 0% 100%)");
+checkEquals("circle(at right calc(10% + 5px))",
+            "circle(at 100% calc(10% + 5px))");
+checkEquals("ellipse(at left bottom)", "ellipse(at 0% 100%)");
+checkEquals("ellipse(at bottom left)", "ellipse(at 0% 100%)");
+checkEquals("ellipse(at right calc(10% + 5px))",
+            "ellipse(at 100% calc(10% + 5px))");
+
+// Only 2 or 4 value form allowed
+checkEquals("circle()", "circle(at 50% 50%)");
+checkEquals("circle(0px)", "circle(0px at 50% 50%)");
+checkEquals("circle(closest-side)", "circle(at 50% 50%)");
+checkEquals("circle(farthest-side)",
+            "circle(farthest-side at 50% 50%)");
+checkEquals("ellipse()", "ellipse(at 50% 50%)");
+checkEquals("ellipse(closest-side farthest-side)",
+            "ellipse(closest-side farthest-side at 50% 50%)");
+
+
+checkEquals("circle(at right 5px top)", "circle(at right 5px top 0%)");
+checkEquals("ellipse(at right 10px top)", "ellipse(at right 10px top 0%)");
+// Remove defaults like closest-side
+checkEquals("circle(closest-side at center)",
+            "circle(at 50% 50%)");
+checkEquals("ellipse(closest-side closest-side at center)",
+            "ellipse(at 50% 50%)");
+
+// don't remove non defaults
+checkEquals("circle(farthest-side at center)",
+            "circle(farthest-side at 50% 50%)");
+checkEquals("circle(10px at center)",
+            "circle(10px at 50% 50%)");
+checkEquals("ellipse(farthest-side 10px at center)",
+            "ellipse(farthest-side 10px at 50% 50%)");
+// Ellipse can have 0 radii or two, not one. We cannot
+// eliminate a single closest-side if the other is different
+checkEquals("ellipse(closest-side farthest-side at 50% 50%)",
+            "ellipse(closest-side farthest-side at 50% 50%)");
+checkEquals("ellipse(closest-side 10% at 50% 50%)",
+            "ellipse(closest-side 10% at 50% 50%)");
+
+// Don't transform nonzero lengths
+checkEquals("circle(at right 5px bottom 10px)",
+            "circle(at right 5px bottom 10px)");
+checkEquals("ellipse(at right 5px bottom 10px)",
+            "ellipse(at right 5px bottom 10px)");
+
+// Convert keyword-percentage pairs to plain percentages
+// Convert zero lengths to 0%
+checkEquals("circle(at right 5% top 0px)", "circle(at 95% 0%)");
+checkEquals("ellipse(at right 5% top 0px)", "ellipse(at 95% 0%)");
+
+// Don't transform calcs
+checkEquals("circle(at right calc(10% + 5px) bottom calc(10% + 5px))",
+            "circle(at right calc(10% + 5px) bottom calc(10% + 5px))");
+checkEquals("ellipse(at right calc(10% + 5px) bottom calc(10% + 5px))",
+            "ellipse(at right calc(10% + 5px) bottom calc(10% + 5px))");
+</script>