Skip to content

Commit 86bc845

Browse files
Move Timing-Allow-Origin checks to the network process
https://bugs.webkit.org/show_bug.cgi?id=226678 <rdar://problem/45227788> Reviewed by Chris Dumez. LayoutTests/imported/w3c: * web-platform-tests/resource-timing/CodingConventions.md: Added. * web-platform-tests/resource-timing/SO-XO-SO-redirect-chain-tao.https-expected.txt: Added. * web-platform-tests/resource-timing/SO-XO-SO-redirect-chain-tao.https.html: Added. * web-platform-tests/resource-timing/SyntheticResponse.py: (main): * web-platform-tests/resource-timing/TAO-match-expected.txt: Added. * web-platform-tests/resource-timing/TAO-match.html: Added. * web-platform-tests/resource-timing/TAO-null-opaque-origin-expected.txt: Added. * web-platform-tests/resource-timing/TAO-null-opaque-origin.html: Added. * web-platform-tests/resource-timing/TAO-port-mismatch-means-crossorigin-expected.txt: Added. * web-platform-tests/resource-timing/TAO-port-mismatch-means-crossorigin.html: Added. * web-platform-tests/resource-timing/__init__.py: Added. * web-platform-tests/resource-timing/buffer-full-add-after-full-event-expected.txt: * web-platform-tests/resource-timing/buffer-full-add-after-full-event.html: * web-platform-tests/resource-timing/buffer-full-add-entries-during-callback-expected.txt: * web-platform-tests/resource-timing/buffer-full-add-entries-during-callback-that-drop.html: * web-platform-tests/resource-timing/buffer-full-add-entries-during-callback.html: * web-platform-tests/resource-timing/buffer-full-add-then-clear-expected.txt: * web-platform-tests/resource-timing/buffer-full-add-then-clear.html: * web-platform-tests/resource-timing/buffer-full-decrease-buffer-during-callback.html: * web-platform-tests/resource-timing/buffer-full-increase-buffer-during-callback-expected.txt: * web-platform-tests/resource-timing/buffer-full-increase-buffer-during-callback.html: * web-platform-tests/resource-timing/buffer-full-inspect-buffer-during-callback-expected.txt: * web-platform-tests/resource-timing/buffer-full-inspect-buffer-during-callback.html: * web-platform-tests/resource-timing/buffer-full-set-to-current-buffer-expected.txt: * web-platform-tests/resource-timing/buffer-full-set-to-current-buffer.html: * web-platform-tests/resource-timing/buffer-full-store-and-clear-during-callback-expected.txt: * web-platform-tests/resource-timing/buffer-full-store-and-clear-during-callback.html: * web-platform-tests/resource-timing/buffer-full-then-increased-expected.txt: * web-platform-tests/resource-timing/buffer-full-then-increased.html: * web-platform-tests/resource-timing/buffer-full-when-populate-entries-expected.txt: * web-platform-tests/resource-timing/buffer-full-when-populate-entries.html: All these buffer-full tests start failing when I update them. That is an unrelated bug. Firefox has the same bug, and we had the same bug before and after this change. * web-platform-tests/resource-timing/connection-reuse-expected.txt: Added. * web-platform-tests/resource-timing/connection-reuse.html: Added. * web-platform-tests/resource-timing/connection-reuse.https-expected.txt: Added. * web-platform-tests/resource-timing/connection-reuse.https.html: Added. * web-platform-tests/resource-timing/cross-origin-start-end-time-with-redirects-expected.txt: Added. * web-platform-tests/resource-timing/cross-origin-start-end-time-with-redirects.html: Added. * web-platform-tests/resource-timing/cross-origin-status-codes.html: * web-platform-tests/resource-timing/document-domain-no-impact-opener-expected.txt: Added. * web-platform-tests/resource-timing/document-domain-no-impact-opener.html: Added. * web-platform-tests/resource-timing/entry-attributes-expected.txt: Added. * web-platform-tests/resource-timing/entry-attributes.html: Added. * web-platform-tests/resource-timing/fetch-cross-origin-redirect.https-expected.txt: Added. * web-platform-tests/resource-timing/fetch-cross-origin-redirect.https.html: Added. * web-platform-tests/resource-timing/font-timestamps-expected.txt: Added. * web-platform-tests/resource-timing/font-timestamps.html: Added. * web-platform-tests/resource-timing/iframe-failed-commit-expected.txt: Added. * web-platform-tests/resource-timing/iframe-failed-commit.html: Added. * web-platform-tests/resource-timing/initiator-type-for-script-expected.txt: Added. * web-platform-tests/resource-timing/initiator-type-for-script.html: Added. * web-platform-tests/resource-timing/nextHopProtocol-is-tao-protected.https-expected.txt: Added. * web-platform-tests/resource-timing/nextHopProtocol-is-tao-protected.https.html: Added. * web-platform-tests/resource-timing/object-not-found-after-TAO-cross-origin-redirect-expected.txt: Added. * web-platform-tests/resource-timing/object-not-found-after-TAO-cross-origin-redirect.html: Added. * web-platform-tests/resource-timing/object-not-found-after-cross-origin-redirect-expected.txt: Added. * web-platform-tests/resource-timing/object-not-found-after-cross-origin-redirect.html: Added. * web-platform-tests/resource-timing/redirects-expected.txt: Added. * web-platform-tests/resource-timing/redirects.html: Added. * web-platform-tests/resource-timing/resource-ignore-data-url-expected.txt: Added. * web-platform-tests/resource-timing/resource-ignore-data-url.html: Added. * web-platform-tests/resource-timing/resource_TAO_cross_origin_redirect_chain-expected.txt: This apparent regression is actually a progression. When this test is run from our test infrastructure, Chrome and Firefox fail the same tests that you see now failing here, indicating that something is wrong with our test infrastructure. When run on wpt.live, all browsers pass this test after this change. * web-platform-tests/resource-timing/resource_cached.html: Added. * web-platform-tests/resource-timing/resource_initiator_types.html: * web-platform-tests/resource-timing/resource_nested_dedicated_worker.worker.js: (async_test): (async_test.async const): Deleted. * web-platform-tests/resource-timing/resource_timing_content_length-expected.txt: Added. * web-platform-tests/resource-timing/resource_timing_content_length.html: Added. * web-platform-tests/resource-timing/resources/200_empty.asis: Added. * web-platform-tests/resource-timing/resources/TAOResponse.py: (main): * web-platform-tests/resource-timing/resources/all_resource_types.html: Added. * web-platform-tests/resource-timing/resources/buffer-full-utilities.js: (const.waitForNextTask): (const.forceBufferFullEvent.async clearBufferAndSetSize): (const.forceBufferFullEvent): (const.fillUpTheBufferWithTwoResources.async clearBufferAndSetSize): (async const.fillUpTheBufferWithSingleResource.async clearBufferAndSetSize): (async const): (let.appendScript): Deleted. (let.waitForNextTask): Deleted. (let.waitUntilConditionIsMet.cond.return.new.Promise.resolve.let.checkCondition): Deleted. (let.waitForEventToFire.return.new.Promise): Deleted. (let.waitForEventToFire): Deleted. (let.fillUpTheBufferWithTwoResources.async src): Deleted. * web-platform-tests/resource-timing/resources/cacheable-and-validated.py: Added. (main): * web-platform-tests/resource-timing/resources/connection-reuse-test.js: Added. (attribute_test.async client): (attribute_test): * web-platform-tests/resource-timing/resources/csp-default-none.html: Added. * web-platform-tests/resource-timing/resources/csp-default-none.html.headers: Added. * web-platform-tests/resource-timing/resources/document-domain-no-impact.html: Added. * web-platform-tests/resource-timing/resources/document-refreshed.html: Added. * web-platform-tests/resource-timing/resources/document-that-refreshes.html: Added. * web-platform-tests/resource-timing/resources/embed-refresh.html: Added. * web-platform-tests/resource-timing/resources/green-frame.html: Added. * web-platform-tests/resource-timing/resources/green.html: Added. * web-platform-tests/resource-timing/resources/green.html.headers: Added. * web-platform-tests/resource-timing/resources/gzip_xml.py: * web-platform-tests/resource-timing/resources/iframe-refresh.html: Added. * web-platform-tests/resource-timing/resources/iframe-reload-TAO.sub.html: * web-platform-tests/resource-timing/resources/multi_redirect.py: (main): * web-platform-tests/resource-timing/resources/object-refresh.html: Added. * web-platform-tests/resource-timing/resources/redirect-cors.py: Added. (main): * web-platform-tests/resource-timing/resources/resource-timing-content-length.py: Added. (main): * web-platform-tests/resource-timing/resources/resource_timing_test0.xml: * web-platform-tests/resource-timing/resources/sizes-helper.js: Added. (const.checkSizeFields): * web-platform-tests/resource-timing/resources/status-code.py: (main): * web-platform-tests/resource-timing/resources/webperftestharness.js: (test_namespace): (test_attribute_exists): (test_enum): * web-platform-tests/resource-timing/resources/webperftestharnessextension.js: (test_method_exists): * web-platform-tests/resource-timing/same-origin-from-cross-origin-redirect-expected.txt: Added. * web-platform-tests/resource-timing/same-origin-from-cross-origin-redirect.html: Added. * web-platform-tests/resource-timing/sizes-cache.any.js: Added. (const.accumulateEntries): (const.checkResourceSizes.list.let.entry.of.entries.else): (promise_test): * web-platform-tests/resource-timing/sizes-redirect-img-expected.txt: Added. * web-platform-tests/resource-timing/sizes-redirect-img.html: Added. * web-platform-tests/resource-timing/sizes-redirect.any.js: Added. (const.accumulateEntry): (const.checkResourceSizes): (const.redirectUrl): (promise_test): * web-platform-tests/resource-timing/status-codes-create-entry.html: * web-platform-tests/resource-timing/test_resource_timing-expected.txt: * web-platform-tests/resource-timing/test_resource_timing.https-expected.txt: * web-platform-tests/resource-timing/workerStart-tao-protected.https.html: Source/WebCore: We tried hard to do it in the web process by keeping track of whether the last redirect was cross-origin and checking the final response and original security origin. We got many tests to pass, but to get the rest and be correct, we need to check the Timing-Allow-Origin header field of each redirect against the original security origin. Tests: imported/w3c/web-platform-tests/resource-timing/SO-XO-SO-redirect-chain-tao.https.html imported/w3c/web-platform-tests/resource-timing/TAO-match.html imported/w3c/web-platform-tests/resource-timing/TAO-null-opaque-origin.html imported/w3c/web-platform-tests/resource-timing/TAO-port-mismatch-means-crossorigin.html imported/w3c/web-platform-tests/resource-timing/connection-reuse.html imported/w3c/web-platform-tests/resource-timing/connection-reuse.https.html imported/w3c/web-platform-tests/resource-timing/cross-origin-start-end-time-with-redirects.html imported/w3c/web-platform-tests/resource-timing/document-domain-no-impact-opener.html imported/w3c/web-platform-tests/resource-timing/entry-attributes.html imported/w3c/web-platform-tests/resource-timing/fetch-cross-origin-redirect.https.html imported/w3c/web-platform-tests/resource-timing/font-timestamps.html imported/w3c/web-platform-tests/resource-timing/iframe-failed-commit.html imported/w3c/web-platform-tests/resource-timing/initiator-type-for-script.html imported/w3c/web-platform-tests/resource-timing/nextHopProtocol-is-tao-protected.https.html imported/w3c/web-platform-tests/resource-timing/object-not-found-after-TAO-cross-origin-redirect.html imported/w3c/web-platform-tests/resource-timing/object-not-found-after-cross-origin-redirect.html imported/w3c/web-platform-tests/resource-timing/redirects.html imported/w3c/web-platform-tests/resource-timing/resource-ignore-data-url.html imported/w3c/web-platform-tests/resource-timing/resource_cached.html imported/w3c/web-platform-tests/resource-timing/resource_timing_content_length.html imported/w3c/web-platform-tests/resource-timing/same-origin-from-cross-origin-redirect.html imported/w3c/web-platform-tests/resource-timing/sizes-redirect-img.html * Headers.cmake: * Sources.txt: * WebCore.xcodeproj/project.pbxproj: * loader/ResourceLoader.cpp: (WebCore::ResourceLoader::start): Get a SecurityOrigin for our WebKitLegacy ResourceHandle use like we do in WebLoaderStrategy::scheduleLoadFromNetworkProcess * loader/ResourceTiming.cpp: (WebCore::ResourceTiming::ResourceTiming): (WebCore::ResourceTiming::initServerTiming): (WebCore::ResourceTiming::isolatedCopy const): (WebCore::passesTimingAllowCheck): Deleted. * loader/ResourceTiming.h: (WebCore::ResourceTiming::networkLoadMetrics const): (WebCore::ResourceTiming::ResourceTiming): (WebCore::ResourceTiming::allowTimingDetails const): Deleted. (): Deleted. * page/PerformanceNavigation.cpp: (WebCore::PerformanceNavigation::redirectCount const): * page/PerformanceNavigationTiming.cpp: (WebCore::PerformanceNavigationTiming::sameOriginCheckFails const): (WebCore::PerformanceNavigationTiming::redirectCount const): * page/PerformanceResourceTiming.cpp: (WebCore::entryStartTime): (WebCore::entryEndTime): (WebCore::PerformanceResourceTiming::redirectStart const): (WebCore::PerformanceResourceTiming::redirectEnd const): (WebCore::PerformanceResourceTiming::domainLookupStart const): (WebCore::PerformanceResourceTiming::domainLookupEnd const): (WebCore::PerformanceResourceTiming::connectStart const): (WebCore::PerformanceResourceTiming::connectEnd const): (WebCore::PerformanceResourceTiming::secureConnectionStart const): (WebCore::PerformanceResourceTiming::requestStart const): (WebCore::PerformanceResourceTiming::responseStart const): (WebCore::PerformanceResourceTiming::transferSize const): (WebCore::PerformanceResourceTiming::encodedBodySize const): (WebCore::PerformanceResourceTiming::decodedBodySize const): * page/PerformanceTiming.cpp: (WebCore::PerformanceTiming::unloadEventStart const): (WebCore::PerformanceTiming::unloadEventEnd const): (WebCore::PerformanceTiming::redirectStart const): (WebCore::PerformanceTiming::redirectEnd const): * platform/network/BlobResourceHandle.cpp: (WebCore::BlobResourceHandle::BlobResourceHandle): * platform/network/NetworkLoadMetrics.h: (WebCore::NetworkLoadMetrics::isolatedCopy const): (WebCore::NetworkLoadMetrics::operator== const): (WebCore::NetworkLoadMetrics::encode const): (WebCore::NetworkLoadMetrics::decode): * platform/network/ResourceHandle.cpp: (WebCore::ResourceHandle::ResourceHandle): (WebCore::ResourceHandle::create): (WebCore::ResourceHandle::loadResourceSynchronously): (WebCore::ResourceHandle::isCrossOriginWithoutTAO const): (WebCore::ResourceHandle::markAsCrossOriginWithoutTAO): (WebCore::ResourceHandle::sourceOrigin const): (WebCore::ResourceHandle::hasCrossOriginRedirect const): Deleted. (WebCore::ResourceHandle::setHasCrossOriginRedirect): Deleted. * platform/network/ResourceHandle.h: * platform/network/ResourceHandleInternal.h: (WebCore::ResourceHandleInternal::ResourceHandleInternal): * platform/network/TimingAllowOrigin.cpp: Added. (WebCore::passesTimingAllowOriginCheck): * platform/network/TimingAllowOrigin.h: Added. * platform/network/cocoa/NetworkLoadMetrics.mm: (WebCore::packageTimingData): (WebCore::copyTimingData): * platform/network/mac/ResourceHandleMac.mm: (WebCore::ResourceHandle::platformLoadResourceSynchronously): * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm: (-[WebCoreResourceHandleAsOperationQueueDelegate connection:willSendRequest:redirectResponse:]): (-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]): Source/WebKit: * NetworkProcess/NetworkLoadParameters.h: * NetworkProcess/NetworkResourceLoadParameters.h: * NetworkProcess/NetworkResourceLoader.cpp: (WebKit::sendReplyToSynchronousRequest): Pass complete metrics with sync xhr responses. Many of the tests use sync xhr. (WebKit::NetworkResourceLoader::didFinishLoading): (WebKit::NetworkResourceLoader::didFailLoading): (WebKit::NetworkResourceLoader::didRetrieveCacheEntry): * NetworkProcess/cocoa/NetworkDataTaskCocoa.h: * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): (WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection): * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]): (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]): Source/WebKitLegacy: * WebCoreSupport/PingHandle.h: * WebCoreSupport/WebResourceLoadScheduler.cpp: (WebResourceLoadScheduler::loadResourceSynchronously): LayoutTests: * TestExpectations: Canonical link: https://commits.webkit.org/238700@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278738 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent 66c5526 commit 86bc845

147 files changed

Lines changed: 2549 additions & 391 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

LayoutTests/ChangeLog

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
2021-06-10 Alex Christensen <achristensen@webkit.org>
2+
3+
Move Timing-Allow-Origin checks to the network process
4+
https://bugs.webkit.org/show_bug.cgi?id=226678
5+
<rdar://problem/45227788>
6+
7+
Reviewed by Chris Dumez.
8+
9+
* TestExpectations:
10+
111
2021-06-10 Cameron McCormack <heycam@apple.com>
212

313
Move some Mac MathML test expectation files around

LayoutTests/TestExpectations

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -933,6 +933,10 @@ imported/w3c/web-platform-tests/eventsource/request-credentials.htm [ Failure ]
933933
imported/w3c/web-platform-tests/mediacapture-fromelement/capture.html [ Failure ]
934934
imported/w3c/web-platform-tests/mediacapture-fromelement/ended.html [ Failure ]
935935
imported/w3c/web-platform-tests/mediacapture-fromelement/creation.html [ Pass Failure ]
936+
imported/w3c/web-platform-tests/resource-timing/font-timestamps.html [ Failure ]
937+
imported/w3c/web-platform-tests/resource-timing/status-codes-create-entry.html [ Pass Failure ]
938+
imported/w3c/web-platform-tests/resource-timing/SO-XO-SO-redirect-chain-tao.https.html [ Failure ]
939+
imported/w3c/web-platform-tests/resource-timing/resource_TAO_cross_origin_redirect_chain.html [ Failure ]
936940
webkit.org/b/180240 imported/w3c/web-platform-tests/resource-timing/single-entry-per-resource.html [ Pass Failure ]
937941
webkit.org/b/189906 imported/w3c/web-platform-tests/resource-timing/resource_timing_buffer_full_eventually.html [ Skip ]
938942
imported/w3c/web-platform-tests/resource-timing/resource-reload-TAO.sub.html [ Skip ]
@@ -942,8 +946,12 @@ imported/w3c/web-platform-tests/resource-timing/crossorigin-sandwich-no-TAO.sub.
942946
imported/w3c/web-platform-tests/resource-timing/cors-preflight.any.html [ Failure Pass ]
943947
imported/w3c/web-platform-tests/resource-timing/crossorigin-sandwich-TAO.sub.html [ Pass Failure ]
944948
imported/w3c/web-platform-tests/resource-timing/crossorigin-sandwich-partial-TAO.sub.html [ Pass Failure ]
949+
imported/w3c/web-platform-tests/navigation-timing/nav2_test_attributes_values.html [ Pass Failure ]
945950
imported/w3c/web-platform-tests/navigation-timing/secure_connection_start_non_zero.https.html [ Pass Failure ]
946951
imported/w3c/web-platform-tests/navigation-timing/nav2_test_attributes_values.html [ Pass Failure ]
952+
imported/w3c/web-platform-tests/resource-timing/TAO-match.html [ Pass Failure ]
953+
imported/w3c/web-platform-tests/resource-timing/iframe-failed-commit.html [ Pass Failure ]
954+
imported/w3c/web-platform-tests/resource-timing/fetch-cross-origin-redirect.https.html [ Pass Failure ]
947955

948956
imported/w3c/web-platform-tests/mediacapture-streams/MediaStream-default-feature-policy.https.html [ DumpJSConsoleLogInStdErr ]
949957
imported/w3c/web-platform-tests/mediacapture-record/passthrough/MediaRecorder-passthrough.https.html [ Failure Timeout Pass ]
@@ -1390,14 +1398,17 @@ imported/w3c/web-platform-tests/resource-timing/test_resource_timing.html [ Pass
13901398
imported/w3c/web-platform-tests/resource-timing/test_resource_timing.https.html [ Pass Failure ]
13911399
imported/w3c/web-platform-tests/resource-timing/buffer-full-add-entries-during-callback-that-drop.html [ Skip ]
13921400
imported/w3c/web-platform-tests/resource-timing/buffer-full-decrease-buffer-during-callback.html [ Skip ]
1401+
imported/w3c/web-platform-tests/resource-timing/buffer-full-increase-buffer-during-callback.html [ Skip ]
1402+
imported/w3c/web-platform-tests/resource-timing/buffer-full-add-entries-during-callback.html [ Skip ]
13931403
imported/w3c/web-platform-tests/resource-timing/cross-origin-status-codes.html [ Skip ]
13941404
imported/w3c/web-platform-tests/resource-timing/nested-context-navigations-embed.html [ Skip ]
13951405
imported/w3c/web-platform-tests/resource-timing/nested-context-navigations-iframe.html [ Skip ]
13961406
imported/w3c/web-platform-tests/resource-timing/nested-context-navigations-object.html [ Skip ]
13971407
imported/w3c/web-platform-tests/resource-timing/resource_nested_dedicated_worker.worker.html [ Skip ]
1408+
imported/w3c/web-platform-tests/resource-timing/buffer-full-inspect-buffer-during-callback.html [ Skip ]
1409+
imported/w3c/web-platform-tests/resource-timing/buffer-full-set-to-current-buffer.html [ Skip ]
1410+
imported/w3c/web-platform-tests/resource-timing/document-domain-no-impact-opener.html [ Skip ]
13981411

1399-
imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse.html [ Failure ]
1400-
imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse.https.html [ Failure ]
14011412
imported/w3c/web-platform-tests/resource-timing/resource_reparenting.html [ Failure ]
14021413

14031414
webkit.org/b/168357 http/wpt/resource-timing/rt-initiatorType-media.html [ Failure ]
@@ -4881,4 +4892,4 @@ http/wpt/webxr [ Skip ]
48814892
imported/w3c/web-platform-tests/css/css-color/predefined-013.html [ Skip ]
48824893

48834894
webkit.org/b/226884 imported/w3c/web-platform-tests/service-workers/service-worker/credentials.https.html [ Failure ]
4884-
webkit.org/b/226884 imported/w3c/web-platform-tests/content-security-policy/reporting/report-only-in-meta.sub.html [ Failure ]
4895+
webkit.org/b/226884 imported/w3c/web-platform-tests/content-security-policy/reporting/report-only-in-meta.sub.html [ Failure ]

LayoutTests/imported/w3c/ChangeLog

Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,156 @@
1+
2021-06-10 Alex Christensen <achristensen@webkit.org>
2+
3+
Move Timing-Allow-Origin checks to the network process
4+
https://bugs.webkit.org/show_bug.cgi?id=226678
5+
<rdar://problem/45227788>
6+
7+
Reviewed by Chris Dumez.
8+
9+
* web-platform-tests/resource-timing/CodingConventions.md: Added.
10+
* web-platform-tests/resource-timing/SO-XO-SO-redirect-chain-tao.https-expected.txt: Added.
11+
* web-platform-tests/resource-timing/SO-XO-SO-redirect-chain-tao.https.html: Added.
12+
* web-platform-tests/resource-timing/SyntheticResponse.py:
13+
(main):
14+
* web-platform-tests/resource-timing/TAO-match-expected.txt: Added.
15+
* web-platform-tests/resource-timing/TAO-match.html: Added.
16+
* web-platform-tests/resource-timing/TAO-null-opaque-origin-expected.txt: Added.
17+
* web-platform-tests/resource-timing/TAO-null-opaque-origin.html: Added.
18+
* web-platform-tests/resource-timing/TAO-port-mismatch-means-crossorigin-expected.txt: Added.
19+
* web-platform-tests/resource-timing/TAO-port-mismatch-means-crossorigin.html: Added.
20+
* web-platform-tests/resource-timing/__init__.py: Added.
21+
* web-platform-tests/resource-timing/buffer-full-add-after-full-event-expected.txt:
22+
* web-platform-tests/resource-timing/buffer-full-add-after-full-event.html:
23+
* web-platform-tests/resource-timing/buffer-full-add-entries-during-callback-expected.txt:
24+
* web-platform-tests/resource-timing/buffer-full-add-entries-during-callback-that-drop.html:
25+
* web-platform-tests/resource-timing/buffer-full-add-entries-during-callback.html:
26+
* web-platform-tests/resource-timing/buffer-full-add-then-clear-expected.txt:
27+
* web-platform-tests/resource-timing/buffer-full-add-then-clear.html:
28+
* web-platform-tests/resource-timing/buffer-full-decrease-buffer-during-callback.html:
29+
* web-platform-tests/resource-timing/buffer-full-increase-buffer-during-callback-expected.txt:
30+
* web-platform-tests/resource-timing/buffer-full-increase-buffer-during-callback.html:
31+
* web-platform-tests/resource-timing/buffer-full-inspect-buffer-during-callback-expected.txt:
32+
* web-platform-tests/resource-timing/buffer-full-inspect-buffer-during-callback.html:
33+
* web-platform-tests/resource-timing/buffer-full-set-to-current-buffer-expected.txt:
34+
* web-platform-tests/resource-timing/buffer-full-set-to-current-buffer.html:
35+
* web-platform-tests/resource-timing/buffer-full-store-and-clear-during-callback-expected.txt:
36+
* web-platform-tests/resource-timing/buffer-full-store-and-clear-during-callback.html:
37+
* web-platform-tests/resource-timing/buffer-full-then-increased-expected.txt:
38+
* web-platform-tests/resource-timing/buffer-full-then-increased.html:
39+
* web-platform-tests/resource-timing/buffer-full-when-populate-entries-expected.txt:
40+
* web-platform-tests/resource-timing/buffer-full-when-populate-entries.html:
41+
All these buffer-full tests start failing when I update them.
42+
That is an unrelated bug. Firefox has the same bug, and we had the same bug before and after this change.
43+
* web-platform-tests/resource-timing/connection-reuse-expected.txt: Added.
44+
* web-platform-tests/resource-timing/connection-reuse.html: Added.
45+
* web-platform-tests/resource-timing/connection-reuse.https-expected.txt: Added.
46+
* web-platform-tests/resource-timing/connection-reuse.https.html: Added.
47+
* web-platform-tests/resource-timing/cross-origin-start-end-time-with-redirects-expected.txt: Added.
48+
* web-platform-tests/resource-timing/cross-origin-start-end-time-with-redirects.html: Added.
49+
* web-platform-tests/resource-timing/cross-origin-status-codes.html:
50+
* web-platform-tests/resource-timing/document-domain-no-impact-opener-expected.txt: Added.
51+
* web-platform-tests/resource-timing/document-domain-no-impact-opener.html: Added.
52+
* web-platform-tests/resource-timing/entry-attributes-expected.txt: Added.
53+
* web-platform-tests/resource-timing/entry-attributes.html: Added.
54+
* web-platform-tests/resource-timing/fetch-cross-origin-redirect.https-expected.txt: Added.
55+
* web-platform-tests/resource-timing/fetch-cross-origin-redirect.https.html: Added.
56+
* web-platform-tests/resource-timing/font-timestamps-expected.txt: Added.
57+
* web-platform-tests/resource-timing/font-timestamps.html: Added.
58+
* web-platform-tests/resource-timing/iframe-failed-commit-expected.txt: Added.
59+
* web-platform-tests/resource-timing/iframe-failed-commit.html: Added.
60+
* web-platform-tests/resource-timing/initiator-type-for-script-expected.txt: Added.
61+
* web-platform-tests/resource-timing/initiator-type-for-script.html: Added.
62+
* web-platform-tests/resource-timing/nextHopProtocol-is-tao-protected.https-expected.txt: Added.
63+
* web-platform-tests/resource-timing/nextHopProtocol-is-tao-protected.https.html: Added.
64+
* web-platform-tests/resource-timing/object-not-found-after-TAO-cross-origin-redirect-expected.txt: Added.
65+
* web-platform-tests/resource-timing/object-not-found-after-TAO-cross-origin-redirect.html: Added.
66+
* web-platform-tests/resource-timing/object-not-found-after-cross-origin-redirect-expected.txt: Added.
67+
* web-platform-tests/resource-timing/object-not-found-after-cross-origin-redirect.html: Added.
68+
* web-platform-tests/resource-timing/redirects-expected.txt: Added.
69+
* web-platform-tests/resource-timing/redirects.html: Added.
70+
* web-platform-tests/resource-timing/resource-ignore-data-url-expected.txt: Added.
71+
* web-platform-tests/resource-timing/resource-ignore-data-url.html: Added.
72+
* web-platform-tests/resource-timing/resource_TAO_cross_origin_redirect_chain-expected.txt:
73+
This apparent regression is actually a progression.
74+
When this test is run from our test infrastructure, Chrome and Firefox fail the same tests that you see now failing here,
75+
indicating that something is wrong with our test infrastructure. When run on wpt.live, all browsers pass this test
76+
after this change.
77+
* web-platform-tests/resource-timing/resource_cached.html: Added.
78+
* web-platform-tests/resource-timing/resource_initiator_types.html:
79+
* web-platform-tests/resource-timing/resource_nested_dedicated_worker.worker.js:
80+
(async_test):
81+
(async_test.async const): Deleted.
82+
* web-platform-tests/resource-timing/resource_timing_content_length-expected.txt: Added.
83+
* web-platform-tests/resource-timing/resource_timing_content_length.html: Added.
84+
* web-platform-tests/resource-timing/resources/200_empty.asis: Added.
85+
* web-platform-tests/resource-timing/resources/TAOResponse.py:
86+
(main):
87+
* web-platform-tests/resource-timing/resources/all_resource_types.html: Added.
88+
* web-platform-tests/resource-timing/resources/buffer-full-utilities.js:
89+
(const.waitForNextTask):
90+
(const.forceBufferFullEvent.async clearBufferAndSetSize):
91+
(const.forceBufferFullEvent):
92+
(const.fillUpTheBufferWithTwoResources.async clearBufferAndSetSize):
93+
(async const.fillUpTheBufferWithSingleResource.async clearBufferAndSetSize):
94+
(async const):
95+
(let.appendScript): Deleted.
96+
(let.waitForNextTask): Deleted.
97+
(let.waitUntilConditionIsMet.cond.return.new.Promise.resolve.let.checkCondition): Deleted.
98+
(let.waitForEventToFire.return.new.Promise): Deleted.
99+
(let.waitForEventToFire): Deleted.
100+
(let.fillUpTheBufferWithTwoResources.async src): Deleted.
101+
* web-platform-tests/resource-timing/resources/cacheable-and-validated.py: Added.
102+
(main):
103+
* web-platform-tests/resource-timing/resources/connection-reuse-test.js: Added.
104+
(attribute_test.async client):
105+
(attribute_test):
106+
* web-platform-tests/resource-timing/resources/csp-default-none.html: Added.
107+
* web-platform-tests/resource-timing/resources/csp-default-none.html.headers: Added.
108+
* web-platform-tests/resource-timing/resources/document-domain-no-impact.html: Added.
109+
* web-platform-tests/resource-timing/resources/document-refreshed.html: Added.
110+
* web-platform-tests/resource-timing/resources/document-that-refreshes.html: Added.
111+
* web-platform-tests/resource-timing/resources/embed-refresh.html: Added.
112+
* web-platform-tests/resource-timing/resources/green-frame.html: Added.
113+
* web-platform-tests/resource-timing/resources/green.html: Added.
114+
* web-platform-tests/resource-timing/resources/green.html.headers: Added.
115+
* web-platform-tests/resource-timing/resources/gzip_xml.py:
116+
* web-platform-tests/resource-timing/resources/iframe-refresh.html: Added.
117+
* web-platform-tests/resource-timing/resources/iframe-reload-TAO.sub.html:
118+
* web-platform-tests/resource-timing/resources/multi_redirect.py:
119+
(main):
120+
* web-platform-tests/resource-timing/resources/object-refresh.html: Added.
121+
* web-platform-tests/resource-timing/resources/redirect-cors.py: Added.
122+
(main):
123+
* web-platform-tests/resource-timing/resources/resource-timing-content-length.py: Added.
124+
(main):
125+
* web-platform-tests/resource-timing/resources/resource_timing_test0.xml:
126+
* web-platform-tests/resource-timing/resources/sizes-helper.js: Added.
127+
(const.checkSizeFields):
128+
* web-platform-tests/resource-timing/resources/status-code.py:
129+
(main):
130+
* web-platform-tests/resource-timing/resources/webperftestharness.js:
131+
(test_namespace):
132+
(test_attribute_exists):
133+
(test_enum):
134+
* web-platform-tests/resource-timing/resources/webperftestharnessextension.js:
135+
(test_method_exists):
136+
* web-platform-tests/resource-timing/same-origin-from-cross-origin-redirect-expected.txt: Added.
137+
* web-platform-tests/resource-timing/same-origin-from-cross-origin-redirect.html: Added.
138+
* web-platform-tests/resource-timing/sizes-cache.any.js: Added.
139+
(const.accumulateEntries):
140+
(const.checkResourceSizes.list.let.entry.of.entries.else):
141+
(promise_test):
142+
* web-platform-tests/resource-timing/sizes-redirect-img-expected.txt: Added.
143+
* web-platform-tests/resource-timing/sizes-redirect-img.html: Added.
144+
* web-platform-tests/resource-timing/sizes-redirect.any.js: Added.
145+
(const.accumulateEntry):
146+
(const.checkResourceSizes):
147+
(const.redirectUrl):
148+
(promise_test):
149+
* web-platform-tests/resource-timing/status-codes-create-entry.html:
150+
* web-platform-tests/resource-timing/test_resource_timing-expected.txt:
151+
* web-platform-tests/resource-timing/test_resource_timing.https-expected.txt:
152+
* web-platform-tests/resource-timing/workerStart-tao-protected.https.html:
153+
1154
2021-06-10 Youenn Fablet <youenn@apple.com>
2155

3156
CountQueuingStrategy.constructor misses checking the type of init param
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
For [Resource Timing][1] tests, we want to have a consistent and clear coding
2+
style. The goals of this style are to:
3+
* Make it easier for new contributors to find their way around
4+
* Help improve readability and maintainability
5+
* Help us understand which parts of the spec are tested or not
6+
Lots of the following rules are arbitrary but the value is realized in
7+
consistency instead of adhering to the 'perfect' style.
8+
9+
We want the test suite to be navigable. Developers should be able to easily
10+
find the file or test that is relevant to their work.
11+
* Tests should be arranged in files according to which piece of the spec they
12+
test
13+
* Files should be named using a consistent pattern
14+
* HTML files should include useful meta tags
15+
* `<title>` for controlling labels in results pages
16+
* `<link rel="help">` to point at the relevant piece of the spec
17+
18+
We want the test suite to run consistently. Flaky tests are counterproductive.
19+
* Prefer `promise_test` to `async_test`
20+
* Note that there’s [still potential for some concurrency][2]; use
21+
`add_cleanup()` if needed
22+
23+
We want the tests to be readable. Tests should be written in a modern style
24+
with recurring patterns.
25+
* 80 character line limits where we can
26+
* Consistent use of anonymous functions
27+
* prefer
28+
```
29+
const func1 = param1 => {
30+
body();
31+
}
32+
const func2 = (param1, param2) => {
33+
body();
34+
}
35+
fn(param => {
36+
body();
37+
});
38+
```
39+
40+
over
41+
42+
```
43+
function func1(param1) {
44+
body();
45+
}
46+
function func2(param1, param2) {
47+
body();
48+
}
49+
fn(function(param) {
50+
body();
51+
});
52+
```
53+
54+
* Prefer `const` (or, if needed, `let`) to `var`
55+
* Contain use of ‘.sub’ in filenames to known helper utilities where possible
56+
* E.g. prefer use of get-host-info.sub.js to `{{host}}` or `{{ports[0]}}`
57+
expressions
58+
* Avoid use of webperftestharness[extension].js as it’s a layer of cognitive
59+
overhead between test content and test intent
60+
* Helper .js files are still encouraged where it makes sense but we want
61+
to avoid a testing framework that is specific to Resource Timing (or
62+
web performance APIs, in general).
63+
* Prefer [`fetch_tests_from_window`][3] to collect test results from embedded
64+
iframes instead of hand-rolled `postMessage` approaches
65+
* Use the [`assert_*`][4] family of functions to check conformance to the spec
66+
but throw exceptions explicitly when the test itself is broken.
67+
* A failed assert indicates "the implementation doesn't conform to the
68+
spec"
69+
* Other uncaught exceptions indicate "the test case itself has a bug"
70+
* Where possible, we want tests to be scalable - adding another test case
71+
should be as simple as calling the tests with new parameters, rather than
72+
copying an existing test and modifying it.
73+
74+
[1]: https://www.w3.org/TR/resource-timing-2/
75+
[2]: https://web-platform-tests.org/writing-tests/testharness-api.html#promise-tests
76+
[3]: https://web-platform-tests.org/writing-tests/testharness-api.html#consolidating-tests-from-other-documents
77+
[4]: https://web-platform-tests.org/writing-tests/testharness-api.html#list-of-assertions

0 commit comments

Comments
 (0)