Add the PerformanceServerTiming Interface which makes Server-Timing header timing values available to JavaScript running in the browser.
https://bugs.webkit.org/show_bug.cgi?id=175569
Patch by Charles Vazac <[email protected]> on 2018-05-15
Reviewed by Youenn Fablet.
Tests were imported from web-platform-tests: WebKit/LayoutTests/imported/w3c/web-platform-tests/server-timing/*
LayoutTests/imported/w3c:
- web-platform-tests/server-timing/cross_origin.html: Added.
- web-platform-tests/server-timing/navigation_timing_idl.html: Added.
- web-platform-tests/server-timing/navigation_timing_idl.https.html: Added.
- web-platform-tests/server-timing/resources/blue.png: Added.
- web-platform-tests/server-timing/resources/blue.png.sub.headers: Added.
- web-platform-tests/server-timing/resources/blue_tao.png: Added.
- web-platform-tests/server-timing/resources/blue_tao.png.sub.headers: Added.
- web-platform-tests/server-timing/resources/green.png: Added.
- web-platform-tests/server-timing/resources/green.png.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/0.js: Added.
- web-platform-tests/server-timing/resources/parsing/0.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/1.js: Added.
- web-platform-tests/server-timing/resources/parsing/1.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/10.js: Added.
- web-platform-tests/server-timing/resources/parsing/10.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/11.js: Added.
- web-platform-tests/server-timing/resources/parsing/11.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/12.js: Added.
- web-platform-tests/server-timing/resources/parsing/12.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/13.js: Added.
- web-platform-tests/server-timing/resources/parsing/13.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/14.js: Added.
- web-platform-tests/server-timing/resources/parsing/14.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/15.js: Added.
- web-platform-tests/server-timing/resources/parsing/15.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/16.js: Added.
- web-platform-tests/server-timing/resources/parsing/16.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/17.js: Added.
- web-platform-tests/server-timing/resources/parsing/17.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/18.js: Added.
- web-platform-tests/server-timing/resources/parsing/18.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/19.js: Added.
- web-platform-tests/server-timing/resources/parsing/19.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/2.js: Added.
- web-platform-tests/server-timing/resources/parsing/2.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/20.js: Added.
- web-platform-tests/server-timing/resources/parsing/20.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/21.js: Added.
- web-platform-tests/server-timing/resources/parsing/21.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/22.js: Added.
- web-platform-tests/server-timing/resources/parsing/22.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/23.js: Added.
- web-platform-tests/server-timing/resources/parsing/23.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/24.js: Added.
- web-platform-tests/server-timing/resources/parsing/24.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/25.js: Added.
- web-platform-tests/server-timing/resources/parsing/25.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/26.js: Added.
- web-platform-tests/server-timing/resources/parsing/26.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/27.js: Added.
- web-platform-tests/server-timing/resources/parsing/27.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/28.js: Added.
- web-platform-tests/server-timing/resources/parsing/28.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/29.js: Added.
- web-platform-tests/server-timing/resources/parsing/29.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/3.js: Added.
- web-platform-tests/server-timing/resources/parsing/3.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/30.js: Added.
- web-platform-tests/server-timing/resources/parsing/30.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/31.js: Added.
- web-platform-tests/server-timing/resources/parsing/31.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/32.js: Added.
- web-platform-tests/server-timing/resources/parsing/32.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/33.js: Added.
- web-platform-tests/server-timing/resources/parsing/33.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/34.js: Added.
- web-platform-tests/server-timing/resources/parsing/34.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/35.js: Added.
- web-platform-tests/server-timing/resources/parsing/35.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/36.js: Added.
- web-platform-tests/server-timing/resources/parsing/36.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/37.js: Added.
- web-platform-tests/server-timing/resources/parsing/37.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/38.js: Added.
- web-platform-tests/server-timing/resources/parsing/38.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/39.js: Added.
- web-platform-tests/server-timing/resources/parsing/39.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/4.js: Added.
- web-platform-tests/server-timing/resources/parsing/4.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/40.js: Added.
- web-platform-tests/server-timing/resources/parsing/40.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/41.js: Added.
- web-platform-tests/server-timing/resources/parsing/41.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/42.js: Added.
- web-platform-tests/server-timing/resources/parsing/42.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/43.js: Added.
- web-platform-tests/server-timing/resources/parsing/43.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/44.js: Added.
- web-platform-tests/server-timing/resources/parsing/44.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/45.js: Added.
- web-platform-tests/server-timing/resources/parsing/45.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/46.js: Added.
- web-platform-tests/server-timing/resources/parsing/46.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/47.js: Added.
- web-platform-tests/server-timing/resources/parsing/47.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/48.js: Added.
- web-platform-tests/server-timing/resources/parsing/48.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/49.js: Added.
- web-platform-tests/server-timing/resources/parsing/49.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/5.js: Added.
- web-platform-tests/server-timing/resources/parsing/5.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/50.js: Added.
- web-platform-tests/server-timing/resources/parsing/50.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/51.js: Added.
- web-platform-tests/server-timing/resources/parsing/51.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/52.js: Added.
- web-platform-tests/server-timing/resources/parsing/52.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/53.js: Added.
- web-platform-tests/server-timing/resources/parsing/53.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/54.js: Added.
- web-platform-tests/server-timing/resources/parsing/54.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/55.js: Added.
- web-platform-tests/server-timing/resources/parsing/55.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/56.js: Added.
- web-platform-tests/server-timing/resources/parsing/56.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/57.js: Added.
- web-platform-tests/server-timing/resources/parsing/57.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/58.js: Added.
- web-platform-tests/server-timing/resources/parsing/58.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/59.js: Added.
- web-platform-tests/server-timing/resources/parsing/59.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/6.js: Added.
- web-platform-tests/server-timing/resources/parsing/6.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/60.js: Added.
- web-platform-tests/server-timing/resources/parsing/60.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/61.js: Added.
- web-platform-tests/server-timing/resources/parsing/61.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/62.js: Added.
- web-platform-tests/server-timing/resources/parsing/62.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/63.js: Added.
- web-platform-tests/server-timing/resources/parsing/63.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/64.js: Added.
- web-platform-tests/server-timing/resources/parsing/64.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/65.js: Added.
- web-platform-tests/server-timing/resources/parsing/65.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/66.js: Added.
- web-platform-tests/server-timing/resources/parsing/66.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/67.js: Added.
- web-platform-tests/server-timing/resources/parsing/67.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/68.js: Added.
- web-platform-tests/server-timing/resources/parsing/68.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/69.js: Added.
- web-platform-tests/server-timing/resources/parsing/69.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/7.js: Added.
- web-platform-tests/server-timing/resources/parsing/7.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/70.js: Added.
- web-platform-tests/server-timing/resources/parsing/70.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/71.js: Added.
- web-platform-tests/server-timing/resources/parsing/71.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/72.js: Added.
- web-platform-tests/server-timing/resources/parsing/72.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/73.js: Added.
- web-platform-tests/server-timing/resources/parsing/73.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/74.js: Added.
- web-platform-tests/server-timing/resources/parsing/74.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/75.js: Added.
- web-platform-tests/server-timing/resources/parsing/75.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/76.js: Added.
- web-platform-tests/server-timing/resources/parsing/76.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/77.js: Added.
- web-platform-tests/server-timing/resources/parsing/77.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/78.js: Added.
- web-platform-tests/server-timing/resources/parsing/78.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/79.js: Added.
- web-platform-tests/server-timing/resources/parsing/79.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/8.js: Added.
- web-platform-tests/server-timing/resources/parsing/8.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/80.js: Added.
- web-platform-tests/server-timing/resources/parsing/80.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/81.js: Added.
- web-platform-tests/server-timing/resources/parsing/81.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/82.js: Added.
- web-platform-tests/server-timing/resources/parsing/82.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/83.js: Added.
- web-platform-tests/server-timing/resources/parsing/83.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/9.js: Added.
- web-platform-tests/server-timing/resources/parsing/9.js.sub.headers: Added.
- web-platform-tests/server-timing/resources/parsing/w3c-import.log: Added.
- web-platform-tests/server-timing/resources/w3c-import.log: Added.
- web-platform-tests/server-timing/resource_timing_idl.html: Added.
- web-platform-tests/server-timing/resource_timing_idl.https.html: Added.
- web-platform-tests/server-timing/server_timing_header-parsing.html: Added.
- web-platform-tests/server-timing/server_timing_header-parsing.https.html: Added.
- web-platform-tests/server-timing/test_server_timing.html: Added.
- web-platform-tests/server-timing/test_server_timing.html.sub.headers: Added.
- web-platform-tests/server-timing/test_server_timing.https.html: Added.
- web-platform-tests/server-timing/test_server_timing.https.html.sub.headers: Added.
- web-platform-tests/server-timing/w3c-import.log: Added.
Source/WebCore:
- Sources.txt: Added references to HeaderFieldTokenizer.cpp, ServerTiming.cpp, and ServerTimingParser.cpp.
- WebCore.xcodeproj/project.pbxproj: Added various files.
- loader/HeaderFieldTokenizer.cpp: Added.
(WebCore::HeaderFieldTokenizer::HeaderFieldTokenizer): Added class for tokenizing header values.
(WebCore::HeaderFieldTokenizer::consume): Added method to consume a specified character.
(WebCore::HeaderFieldTokenizer::consumeQuotedString): Added method to consume a quote-string.
(WebCore::HeaderFieldTokenizer::consumeToken): Added a method to consume a token.
(WebCore::HeaderFieldTokenizer::consumeTokenOrQuotedString): Added method to consume a quote-string or quote-string, depending on net character.
(WebCore::HeaderFieldTokenizer::skipSpaces): Added method to skip whitespace.
(WebCore::HeaderFieldTokenizer::consumeBeforeAnyCharMatch): Added method to advance the cursor up until any of a list of characters.
- loader/HeaderFieldTokenizer.h: Added.
- loader/HTTPHeaderField.cpp: Expose isTokenCharacter and isWhitespace.
- loader/HTTPHeaderField.h: Expose isTokenCharacter and isWhitespace.
- loader/PolicyChecker.cpp: Added #include so source compiled on my machine.
- loader/ResourceTiming.cpp:
(WebCore::ResourceTiming::ResourceTiming): Added call to initServerTiming to parse the header.
(WebCore::ResourceTiming::initServerTiming): Added method to parse the header.
(WebCore::ResourceTiming::populateServerTiming): Added method to populate the server timing entries on a PerformanceResourceTiming object.
(WebCore::ResourceTiming::isolatedCopy const): Added code to copy over the server timing entries.
(WebCore::ResourceTiming::ResourceTiming): Accept collection of server timing entries in c'tor.
- loader/ServerTiming.cpp: Added.
(WebCore::ServerTiming::setParameter): Set named parameters, ignoring unrecognized or duplicates.
(WebCore::ServerTiming::isolatedCopy const): Return a new pointer to the object.
- loader/ServerTiming.h: Added.
(WebCore::ServerTiming::ServerTiming): Added struct for the data needed by a server timing entry.
(WebCore::ServerTiming::name const): Added name field of a server timing entry.
(WebCore::ServerTiming::duration const): Added duration field of a server timing entry.
(WebCore::ServerTiming::description const): Added description field of a server timing entry.
- loader/ServerTimingParser.cpp: Added.
(WebCore::ServerTimingParser::parseServerTiming): Parses the header generating a collection of server timing structs.
- loader/ServerTimingParser.h: Added.
- loader/WorkerThreadableLoader.h: Fix build.
- page/Performance.cpp:
(WebCore::Performance::addResourceTiming): Fixed a typo.
- page/PerformanceResourceTiming.cpp:
(WebCore::PerformanceResourceTiming::PerformanceResourceTiming): Given a ResourceTiming object, populate our collection of PerformanceServerTiming objects.
- page/PerformanceResourceTiming.h: Added serverTiming member and getter.
- page/PerformanceResourceTiming.idl: Added serverTiming member to interface.
- platform/network/HTTPHeaderNames.in: Added "Server-Timing" to the header enum.
- platform/network/ResourceResponseBase.cpp: Added "Server-Timing" to isSafeCrossOriginResponseHeader whitelist.
LayoutTests:
- imported/w3c/web-platform-tests/server-timing/cross_origin-expected.txt: Added.
- imported/w3c/web-platform-tests/server-timing/resource_timing_idl-expected.txt: Added.
- imported/w3c/web-platform-tests/server-timing/resource_timing_idl.https-expected.txt: Added.
- imported/w3c/web-platform-tests/server-timing/server_timing_header-parsing-expected.txt: Added.
- imported/w3c/web-platform-tests/server-timing/server_timing_header-parsing.https-expected.txt: Added.
|