Colspan>1:N/A C0:60%/100 C2:100/100
+An example what table looks like without colspan>1 distribution.
+Table width by rule#2: (60/(100-60) +1) * 100 = 250 + 24 = 274
+
+
+
60%
+
100px
+
+
+
+
Colspan>1:N/A C0:50%/100 C1:50%/100 C2:100/100
+Total column percent is 100%, forcing maximum table grid width by rule #2 to infinity.
+Table css width is 1px, overriding grid max width.
+Final column width is column's minimum width.
+
+
+
+
+
50%
+
50%
+
100px
+
+
+
+
+
Colspan>1:N/A C0:50%/100 C1:50%/100 C2:100/100
+Same example as above, but table width is auto.
+Table grows to size of containing block.
+
+
+
+
50%
+
50%
+
100px
+
+
+
+
+
Colspan>1: Auto/200px C0:40%/20 C1:50/50 C2:100/20
+Table css width is 1px. This forces grid minimum.
+FF: %ge cell gets its percentage width resolved wrt distributing cell.
+fixed cells get remaining excess width redistributed in proportion
+to max size.
+Chrome algorithm: distributes proportionally to min_width. The problem with
+this is that 40% cell will end up with 0 if no min width.
+
Edge distributes all the width to the %ge cell, Chrome distributes proportionally to min width.
+
+
+
40%
+
50
+
20
+
+
+
208px min
+
+
+
+
Merging cell widths into column widths
+
What happens when different types of cells get merged into a single column?
+
C0:0 25%/50px C0:1 50%/40px
+C0:0 alone would imply table width of 50/.25 = 200px.
+C0:1 alone would imply table width of 40/.5 = 80px.
+But, largest percentage and largest min width win, so the table width is 50/.5 = 100px.
+
+
+
+
+
25%/50px
+
Auto
+
+
+
+
50%/40
+
Auto
+
+
+
+
Merging fixed and percentage
+Column that contains both percent and fixed cells is treated as percent.
+
+
+
+
25%/100
+
50px fixed
+
auto
+
+
+
150
+
Auto
+
Auto
+
+
+
+
Order of colspan>1 cell redistribution
+Initial minmax of all cells is 50px.
+C0:1 redistributes 200
+C1:2 redistributes 400
+Chrome distributes right-to-left:
+C1:2 distributes 400, and C1 and C2 both get 200
+When C0:1 turns come, C0+C1 are already long enough, nothing to distirbute
+
+In testcase /tables/mozilla_expected_failures/core/col_span2.html
+distribution right-to-left is described as a bug.
+Firefox and Edge both distribute left to right.
+Chrome is only one that distributes right to left.
+Firefox distribution is not cumulative, it uses original minmax to compute final widths. Edge agrees with TablesNG.
+But, mozilla is stable for row reordering.
+
+
+
+
200
+
50
+
+
+
50
+
400
+
+
+
Auto
+
Auto
+
Auto
+
+
+
+
+
400
+
50
+
+
+
50
+
200
+
+
+
Auto
+
Auto
+
Auto
+
+
+
Order of colspan>1 cell redistribution
+Similar to previous testcase, but colspan is 3, not 2.
+
+In testcase /tables/mozilla_expected_failures/core/col_span2.html
+distribution right-to-left is described as a bug.
+Firefox and Edge both distribute left to right.
+TablesNG matches Edge/FF.
+
+
+
+
300
+
50
+
+
+
50
+
600
+
+
+
Auto
+
Auto
+
Auto
+
Auto
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-four-reports.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-four-reports.https.html
new file mode 100644
index 000000000000..1367a9ec979e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-four-reports.https.html
@@ -0,0 +1,88 @@
+
+
+A test with both COOP and COOP report only setup
+
+
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-four-reports.https.html.sub.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-four-reports.https.html.sub.headers
new file mode 100644
index 000000000000..5c886ad05386
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-four-reports.https.html.sub.headers
@@ -0,0 +1,6 @@
+Cross-Origin-Opener-Policy: same-origin-allow-popups; report-to="coop-report-endpoint"
+Cross-Origin-Opener-Policy-Report-Only: same-origin; report-to="coop-report-only-endpoint"
+Cross-Origin-Embedder-Policy: require-corp
+Cross-Origin-Embedder-Policy-Report-Only: require-corp
+Referrer-Policy: origin
+report-to: { "group": "coop-report-endpoint", "max_age": 10886400, "endpoints": [{ "url": "https://{{hosts[][www]}}:{{ports[https][0]}}/html/cross-origin-opener-policy/reporting/resources/report.py?endpoint=coop-report-endpoint" }] }, { "group": "coop-report-only-endpoint", "max_age": 10886400, "endpoints": [{ "url": "https://{{hosts[][www]}}:{{ports[https][0]}}/html/cross-origin-opener-policy/reporting/resources/report.py?endpoint=coop-report-only-endpoint" }]}
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-from-unsafe-none.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-from-unsafe-none.https.html
new file mode 100644
index 000000000000..2664b68a154f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-from-unsafe-none.https.html
@@ -0,0 +1,71 @@
+
+
+Report only tests for an opener without any COOP/COOP report only set
+
+
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-from-unsafe-none.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-from-unsafe-none.https.html.headers
new file mode 100644
index 000000000000..5b29739bbdde
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-from-unsafe-none.https.html.headers
@@ -0,0 +1 @@
+Referrer-Policy: origin
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin-report-to.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin-report-to.https.html
new file mode 100644
index 000000000000..a312232d07a9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin-report-to.https.html
@@ -0,0 +1,98 @@
+
+
+reporting same origin with report-to
+
+
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin-report-to.https.html.sub.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin-report-to.https.html.sub.headers
new file mode 100644
index 000000000000..74690a7186fb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin-report-to.https.html.sub.headers
@@ -0,0 +1,3 @@
+Cross-Origin-Opener-Policy-Report-Only: same-origin; report-to="coop-report-only-endpoint"
+Referrer-Policy: origin
+report-to: { "group": "coop-report-endpoint", "max_age": 10886400, "endpoints": [{ "url": "https://{{hosts[][www]}}:{{ports[https][0]}}/html/cross-origin-opener-policy/reporting/resources/report.py?endpoint=coop-report-endpoint" }] }, { "group": "coop-report-only-endpoint", "max_age": 10886400, "endpoints": [{ "url": "https://{{hosts[][www]}}:{{ports[https][0]}}/html/cross-origin-opener-policy/reporting/resources/report.py?endpoint=coop-report-only-endpoint" }]}
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin-with-coep-report-only.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin-with-coep-report-only.https.html
new file mode 100644
index 000000000000..a03ddf54cdb7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin-with-coep-report-only.https.html
@@ -0,0 +1,32 @@
+
+
+reporting same origin with report-to
+
+
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin-with-coep-report-only.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin-with-coep-report-only.https.html.headers
new file mode 100644
index 000000000000..58ab03394a05
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin-with-coep-report-only.https.html.headers
@@ -0,0 +1,3 @@
+Cross-Origin-Opener-Policy-Report-Only: same-origin
+Cross-Origin-Embedder-Policy-Report-Only: require-corp
+Referrer-Policy: origin
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin-with-coep.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin-with-coep.https.html
new file mode 100644
index 000000000000..a03ddf54cdb7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin-with-coep.https.html
@@ -0,0 +1,32 @@
+
+
+reporting same origin with report-to
+
+
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin-with-coep.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin-with-coep.https.html.headers
new file mode 100644
index 000000000000..2ba7ffb592d8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin-with-coep.https.html.headers
@@ -0,0 +1,3 @@
+Cross-Origin-Opener-Policy-Report-Only: same-origin
+Cross-Origin-Embedder-Policy: require-corp
+Referrer-Policy: origin
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin.https.html
new file mode 100644
index 000000000000..c02407db9bab
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin.https.html
@@ -0,0 +1,73 @@
+
+
+reporting same origin with report-to
+
+
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin.https.html.headers
new file mode 100644
index 000000000000..9a8445a43e4b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin.https.html.headers
@@ -0,0 +1,2 @@
+Cross-Origin-Opener-Policy-Report-Only: same-origin
+Referrer-Policy: origin
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-same-origin-coep-report-to.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-same-origin-coep-report-to.https.html
index 0f836746f1ce..494c9df67b9d 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-same-origin-coep-report-to.https.html
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-same-origin-coep-report-to.https.html
@@ -105,6 +105,69 @@
}
]
],
+ // Open a same-origin popup with a same-origin COOP report only. One report
+ // is sent to this page's endpoint, but none to the report-only endpoint.
+ [
+ SAME_ORIGIN,
+ "",
+ "",
+ `same-origin; report-to="${popupReportEndpoint.name}"`,
+ "require-corp",
+ [
+ {
+ "endpoint": reportEndpoint,
+ "report": {
+ "body": {
+ "disposition": "enforce",
+ "document-uri": `${location.href}`,
+ "effective-policy": "same-origin-plus-coep",
+ "navigation-uri": /uuid=EXECUTOR_UUID$/, // next destination url
+ "violation-type": "navigation-from-document"
+ },
+ "url": `${location.href}`,
+ "type": "coop"
+ }
+ },]
+ ],
+ // Open a cross-origin popup with a same-origin COOP report only. A report is
+ // sent to both this page's endpoint and the popup's.
+ [
+ CROSS_ORIGIN,
+ "",
+ "",
+ `same-origin; report-to="${popupReportOnlyEndpoint.name}"`,
+ "require-corp",
+ [
+ {
+ "endpoint": reportEndpoint,
+ "report": {
+ "body": {
+ "disposition": "enforce",
+ "document-uri": `${location.href}`,
+ "effective-policy": "same-origin-plus-coep",
+ "navigation-uri": /uuid=EXECUTOR_UUID$/, // next destination url
+ "violation-type": "navigation-from-document"
+ },
+ "url": `${location.href}`,
+ "type": "coop"
+ }
+ },
+ {
+ "endpoint": popupReportOnlyEndpoint,
+ "report": {
+ "body": {
+ "disposition": "reporting",
+ "document-uri": /uuid=EXECUTOR_UUID$/,
+ "effective-policy": "same-origin-plus-coep",
+ "navigation-uri": `${location.origin}/`, // referrer (origin, as dictated by the referrer policy)
+ "violation-type": "navigation-to-document"
+ },
+ "url": /uuid=EXECUTOR_UUID$/,
+ "type": "coop"
+ }
+ }
+ ]
+ ],
];
runNavigationReportingTests(document.title, tests);
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-same-origin.https.html
index bcc9c1c80245..24dace7d8d8f 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-same-origin.https.html
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-same-origin.https.html
@@ -93,7 +93,17 @@
}
}
]
- ]
+ ],
+ // Open a same-origin popup with a same-origin COOP Report only value, the
+ // report only matches the previous document COOP value, no report is sent.
+ [
+ SAME_ORIGIN,
+ "",
+ "",
+ `same-origin; report-to="${popupReportOnlyEndpoint.name}"`,
+ "",
+ []
+ ],
];
runNavigationReportingTests(document.title, tests);
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/resources/report.py b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/resources/report.py
index c9ea353a12fb..f51d27f29910 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/resources/report.py
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/resources/report.py
@@ -1,7 +1,12 @@
import json, uuid
def main(request, response):
+ response.headers.set('Access-Control-Allow-Origin', '*')
+ response.headers.set('Access-Control-Allow-Methods', 'OPTIONS, GET, POST')
+ response.headers.set('Access-Control-Allow-Headers', 'Content-Type')
response.headers.set('Cache-Control', 'no-cache, no-store, must-revalidate');
+ if request.method == 'OPTIONS': # CORS preflight
+ return ''
key = 0;
if 'endpoint' in request.GET:
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/coop-coep.py b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/coop-coep.py
index de7de141fa51..483f313faca6 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/coop-coep.py
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/coop-coep.py
@@ -1,4 +1,3 @@
-
def main(request, response):
coop = request.GET.first("coop")
coopReportOnly = request.GET.first("coop-report-only") if "coop-report-only" in request.GET else ""
diff --git a/tests/wpt/web-platform-tests/svg/painting/reftests/mask-print-ref.svg b/tests/wpt/web-platform-tests/svg/painting/reftests/mask-print-ref.svg
index 5d58e49bc8e9..4717ac4a2750 100644
--- a/tests/wpt/web-platform-tests/svg/painting/reftests/mask-print-ref.svg
+++ b/tests/wpt/web-platform-tests/svg/painting/reftests/mask-print-ref.svg
@@ -2,4 +2,5 @@
+
diff --git a/tests/wpt/web-platform-tests/svg/painting/reftests/mask-print.svg b/tests/wpt/web-platform-tests/svg/painting/reftests/mask-print.svg
index ea8e3d29b9c4..b63ec72054c2 100644
--- a/tests/wpt/web-platform-tests/svg/painting/reftests/mask-print.svg
+++ b/tests/wpt/web-platform-tests/svg/painting/reftests/mask-print.svg
@@ -1,6 +1,6 @@