Changeset 214388 in webkit
- Timestamp:
- Mar 24, 2017 5:10:06 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 2 deleted
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r214386 r214388 1 2017-03-24 Ryan Haddad <ryanhaddad@apple.com> 2 3 Unreviewed, rolling out r214361. 4 5 This change caused flakiness in http/tests/preload tests. 6 7 Reverted changeset: 8 9 "Add a warning for unused link preloads." 10 https://bugs.webkit.org/show_bug.cgi?id=165670 11 http://trac.webkit.org/changeset/214361 12 1 13 2017-03-24 Antoine Quint <graouts@webkit.org> 2 14 -
trunk/LayoutTests/http/tests/preload/download_resources-expected.txt
r214361 r214388 1 CONSOLE MESSAGE: line 13: <link rel=preload> must have a valid `as` value 2 This test makes sure that link preload preloads resources 1 CONSOLE MESSAGE: line 11: <link rel=preload> must have a valid `as` value 2 PASS internals.isPreloaded('../resources/dummy.js'); is true 3 PASS internals.isPreloaded('../resources/dummy.css'); is true 4 PASS internals.isPreloaded('../resources/square.png'); is true 5 PASS internals.isPreloaded('../resources/Ahem.ttf'); is true 6 PASS internals.isPreloaded('../resources/test.mp4'); is true 7 PASS internals.isPreloaded('../security/resources/captions.vtt'); is true 8 PASS internals.isPreloaded('../resources/dummy.xml?badvalue'); is false 9 PASS internals.isPreloaded('../resources/dummy.xml'); is true 10 PASS successfullyParsed is true 3 11 4 PASS Makes sure that preloaded resources are downloaded 12 TEST COMPLETE 5 13 -
trunk/LayoutTests/http/tests/preload/download_resources.html
r214361 r214388 1 1 <!DOCTYPE html> 2 <script src="/js-test-resources/testharness.js"></script> 3 <script src="/js-test-resources/testharnessreport.js"></script> 4 <script> 5 var t = async_test('Makes sure that preloaded resources are downloaded'); 6 </script> 2 <html> 3 <head> 4 <script src="/js-test-resources/js-test.js"></script> 7 5 <link rel=preload href="../resources/dummy.js" as=script> 8 6 <link rel=preload href="../resources/dummy.css" as=style> 9 <link rel=preload href="../resources/square 100.png" as=image>10 <link rel=preload href="../resources/Ahem. woff" as=font crossorigin>7 <link rel=preload href="../resources/square.png" as=image> 8 <link rel=preload href="../resources/Ahem.ttf" as=font crossorigin> 11 9 <link rel=preload href="../resources/test.mp4" as=media> 12 10 <link rel=preload href="../security/resources/captions.vtt" as=track> 13 11 <link rel=preload href="../resources/dummy.xml?badvalue" as=foobarxmlthing> 14 12 <link rel=preload href="../resources/dummy.xml"> 15 <script src="http://127.0.0.1:8000/resources/slow-script.pl?delay=400"></script> 13 <script src="http://127.0.0.1:8000/resources/slow-script.pl?delay=100"></script> 14 </head> 15 <body> 16 16 <script> 17 setTimeout(t.step_func(function() { 18 assert_true(internals.isPreloaded("../resources/dummy.js")); 19 assert_true(internals.isPreloaded("../resources/dummy.css")); 20 assert_true(internals.isPreloaded("../resources/square100.png")); 21 // FIXME: RT doesn't show downloads for the resources below. Need to investigate why. 22 assert_true(internals.isPreloaded("../resources/Ahem.woff")); 23 assert_true(internals.isPreloaded("../resources/test.mp4")); 24 assert_true(internals.isPreloaded("../security/resources/captions.vtt")); 25 assert_false(internals.isPreloaded("../resources/dummy.xml?badvalue")); 26 assert_true(internals.isPreloaded("../resources/dummy.xml")); 27 document.write('<script src="../resources/dummy.js"></scr' + 'ipt>' + 28 '<link rel=stylesheet href="../resources/dummy.css">' + 29 '<img src="../resources/square100.png">' + 30 '<video><source src="../resources/test.mp4">' + 31 '<track kind=subtitles src="../security/resources/captions.vtt" srclang=en>' + 32 '</video>' + 33 '<style>' + 34 ' @font-face { font-family:ahem; src: url(../resources/Ahem.woff); }' + 35 ' span { font-family: ahem, Arial; }' + 36 '</style>' + 37 '<span>This test makes sure that link preload preloads resources</span>'); 38 var xhr = new XMLHttpRequest(); 39 xhr.open("GET", "../resources/dummy.xml"); 40 xhr.send(); 41 t.done(); 42 })); 17 if (window.testRunner) 18 testRunner.dumpAsText(); 19 shouldBeTrue("internals.isPreloaded('../resources/dummy.js');"); 20 shouldBeTrue("internals.isPreloaded('../resources/dummy.css');"); 21 shouldBeTrue("internals.isPreloaded('../resources/square.png');"); 22 shouldBeTrue("internals.isPreloaded('../resources/Ahem.ttf');"); 23 shouldBeTrue("internals.isPreloaded('../resources/test.mp4');"); 24 shouldBeTrue("internals.isPreloaded('../security/resources/captions.vtt');"); 25 shouldBeFalse("internals.isPreloaded('../resources/dummy.xml?badvalue');"); 26 shouldBeTrue("internals.isPreloaded('../resources/dummy.xml');"); 43 27 </script> -
trunk/LayoutTests/http/tests/preload/onerror_event-expected.txt
r214361 r214388 1 CONSOLE MESSAGE: line 2 5: <link rel=preload> must have a valid `as` value2 This test makes sure that link preload triggers error events for non-existing resources. 1 CONSOLE MESSAGE: line 27: <link rel=preload> must have a valid `as` value 2 PASS successfullyParsed is true 3 3 4 PASS Makes sure that preloaded resources trigger onerror 4 TEST COMPLETE 5 PASS styleFailed is true 6 PASS scriptFailed is true 7 PASS imageFailed is true 8 PASS fontFailed is true 9 PASS trackFailed is true 10 PASS gibrishFailed is true 11 PASS noTypeFailed is true 5 12 -
trunk/LayoutTests/http/tests/preload/onerror_event.html
r214361 r214388 1 1 <!DOCTYPE html> 2 <script src="/js-test-resources/testharness.js"></script>3 <script src="/js-test-resources/testharnessreport.js"></script>4 2 <script> 5 var t = async_test('Makes sure that preloaded resources trigger onerror'); 3 if (window.testRunner) { 4 testRunner.dumpAsText() 5 testRunner.waitUntilDone(); 6 } 6 7 </script> 8 <script src="/js-test-resources/js-test.js"></script> 7 9 <script> 8 10 var scriptFailed = false; … … 26 28 <link rel=preload href="http://127.0.0.1:9999/non-existent/dummy.xml" onerror="count();noTypeFailed = true;" onload="count();"> 27 29 <script> 28 document.write('<script src="../non-existent/dummy.js"></scr' + 'ipt>' +29 '<link rel=stylesheet href="../non-existent/dummy.css">' +30 '<img src="../non-existent/square.png">' +31 '<video><source src="test.mp4">' +32 '<track kind=subtitles src="../../non-existent/security/captions.vtt" srclang=en>' +33 '</video>' +34 '<style>' +35 ' @font-face { font-family:ahem; src: url(../../non-existent/Ahem.ttf); }' +36 ' span { font-family: ahem, Arial; }' +37 '</style>' +38 '<span>This test makes sure that link preload triggers error events for non-existing resources.</span>');39 var xhr = new XMLHttpRequest();40 xhr.open("GET", "../non-existent/dummy.xml");41 xhr.send();42 var xhr2 = new XMLHttpRequest();43 xhr2.open("GET", "http://127.0.0.1:9999/non-existent/dummy.xml");44 xhr2.send();45 30 function test() { 46 assert_true(styleFailed); 47 assert_true(scriptFailed); 48 assert_true(imageFailed); 49 assert_true(fontFailed); 50 assert_true(trackFailed); 51 assert_true(gibrishFailed); 52 assert_true(noTypeFailed); 53 t.done(); 31 shouldBeTrue("styleFailed"); 32 shouldBeTrue("scriptFailed"); 33 shouldBeTrue("imageFailed"); 34 shouldBeTrue("fontFailed"); 35 shouldBeTrue("trackFailed"); 36 shouldBeTrue("gibrishFailed"); 37 shouldBeTrue("noTypeFailed"); 38 if (window.testRunner) 39 testRunner.notifyDone(); 54 40 }; 55 setInterval( t.step_func(function() {41 setInterval(function() { 56 42 if (window.counter >= 7) 57 43 test(); 58 }, 100) );44 }, 100); 59 45 </script> 60 46 -
trunk/LayoutTests/http/tests/preload/onload_event-expected.txt
r214361 r214388 16 16 PASS noTypeLoaded is true 17 17 PASS emptyTypeLoaded is true 18 This test makes sure that link preload events are fired 18 -
trunk/LayoutTests/http/tests/preload/onload_event.html
r214361 r214388 30 30 <link rel=preload href="../resources/Ahem.woff" as=font crossorigin onload="count(); fontLoaded = true;" onerror="count()"> 31 31 <link rel=preload href="../resources/test.ogv" as=media onload="count(); mediaLoaded = true;" onerror="count()"> 32 <link rel=preload href="../security/resources/captions.vtt" as=track onload="count(); trackLoaded = true;" onerror="count() ;">32 <link rel=preload href="../security/resources/captions.vtt" as=track onload="count(); trackLoaded = true;" onerror="count()"> 33 33 <link rel=preload href="../resources/dummy.xml" as=foobarxmlthing onload="count(); gibberishLoaded = true;" onerror="count(); gibberishErrored = true;"> 34 34 <link rel=preload href="../resources/dummy.xslt" as=xslt onload="count(); xsltLoaded = true;" onerror="count(); xsltErrored = true;"> … … 52 52 testRunner.notifyDone(); 53 53 } 54 document.write('<script src="../resources/dummy.js"></scr' + 'ipt>' + 55 '<link rel=stylesheet href="../resources/dummy.css">' + 56 '<img src="../resources/square.png">' + 57 '<video><source src="test.mp4">' + 58 '<track kind=subtitles src="../../security/resources/captions.vtt" srclang=en>' + 59 '</video>' + 60 '<style>' + 61 ' @font-face { font-family:ahem; src: url(../../w3c/webperf/resources/Ahem.ttf); }' + 62 ' span { font-family: ahem, Arial; }' + 63 '</style>' + 64 '<span>This test makes sure that link preload events are fired</span>'); 65 var xhr = new XMLHttpRequest(); 66 xhr.open("GET", "../resources/dummy.xml"); 67 xhr.send(); 68 var xhr2 = new XMLHttpRequest(); 69 xhr2.open("GET", "../resources/dummy.xml?badvalue"); 70 xhr2.send(); 71 addEventListener("load", function(){ 54 addEventListener("load", function(){ 72 55 setInterval(function() { 73 56 if (window.counter >= 10) -
trunk/LayoutTests/http/tests/preload/single_download_preload.html
r214361 r214388 56 56 verifyDownloadNumber("http://127.0.0.1:8000/resources/dummy.xml", 2); 57 57 // FIXME: We should verify for video and audio as well, but they seem to (flakily?) trigger multiple partial requests. 58 var xhr = new XMLHttpRequest();59 xhr.open("GET", "../resources/dummy.xml");60 xhr.send();61 var xhr2 = new XMLHttpRequest();62 xhr2.open("GET", "../resources/dummy.xml?badvalue");63 xhr2.send();64 58 t.done(); 65 59 }), 100); -
trunk/Source/WebCore/ChangeLog
r214386 r214388 1 2017-03-24 Ryan Haddad <ryanhaddad@apple.com> 2 3 Unreviewed, rolling out r214361. 4 5 This change caused flakiness in http/tests/preload tests. 6 7 Reverted changeset: 8 9 "Add a warning for unused link preloads." 10 https://bugs.webkit.org/show_bug.cgi?id=165670 11 http://trac.webkit.org/changeset/214361 12 1 13 2017-03-24 Antoine Quint <graouts@webkit.org> 2 14 -
trunk/Source/WebCore/dom/Document.cpp
r214365 r214388 2281 2281 #endif 2282 2282 2283 m_cachedResourceLoader->stopUnusedPreloadsTimer();2284 2285 2283 detachFromFrame(); 2286 2284 -
trunk/Source/WebCore/loader/LinkPreloadResourceClients.h
r214361 r214388 89 89 90 90 void clear() override { clearResource(*this); } 91 bool shouldMarkAsReferenced() const override { return false; }92 91 93 92 private: … … 116 115 117 116 void clear() override { clearResource(*this); } 118 bool shouldMarkAsReferenced() const override { return false; }119 117 120 118 private: … … 138 136 139 137 void clear() override { clearResource(*this); } 140 bool shouldMarkAsReferenced() const override { return false; }141 138 142 139 private: … … 164 161 165 162 void clear() override { clearResource(*this); } 166 bool shouldMarkAsReferenced() const override { return false; }167 163 168 164 private: … … 186 182 187 183 void clear() override { clearResource(*this); } 188 bool shouldMarkAsReferenced() const override { return false; }189 184 190 185 private: -
trunk/Source/WebCore/loader/cache/CachedResource.cpp
r214361 r214388 466 466 bool CachedResource::addClientToSet(CachedResourceClient& client) 467 467 { 468 if (m_preloadResult == PreloadNotReferenced && client.shouldMarkAsReferenced()) {468 if (m_preloadResult == PreloadNotReferenced) { 469 469 if (isLoaded()) 470 470 m_preloadResult = PreloadReferencedWhileComplete; -
trunk/Source/WebCore/loader/cache/CachedResourceClient.h
r214361 r214388 46 46 static CachedResourceClientType expectedType() { return BaseResourceType; } 47 47 virtual CachedResourceClientType resourceClientType() const { return expectedType(); } 48 virtual bool shouldMarkAsReferenced() const { return true; }49 48 50 49 protected: -
trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp
r214361 r214388 86 86 namespace WebCore { 87 87 88 // Timeout for link preloads to be used after window.onload89 static const int unusedPreloadTimeoutInSeconds = 3;90 91 88 static CachedResource* createResource(CachedResource::Type type, CachedResourceRequest&& request, SessionID sessionID) 92 89 { … … 133 130 , m_documentLoader(documentLoader) 134 131 , m_requestCount(0) 135 , m_unusedPreloadsTimer(*this, &CachedResourceLoader::warnUnusedPreloads)136 132 , m_garbageCollectDocumentResourcesTimer(*this, &CachedResourceLoader::garbageCollectDocumentResources) 137 133 , m_autoLoadImages(true) … … 152 148 // Make sure no requests still point to this CachedResourceLoader 153 149 ASSERT(m_requestCount == 0); 154 m_unusedPreloadsTimer.stop();155 150 } 156 151 … … 827 822 { 828 823 m_validatedURLs.clear(); 829 830 // If m_preloads is not empty here, it's full of link preloads,831 // as speculative preloads were cleared at DCL.832 if (m_preloads && m_preloads->size() && !m_unusedPreloadsTimer.isActive())833 m_unusedPreloadsTimer.startOneShot(unusedPreloadTimeoutInSeconds);834 }835 836 void CachedResourceLoader::stopUnusedPreloadsTimer()837 {838 m_unusedPreloadsTimer.stop();839 824 } 840 825 … … 1242 1227 #endif 1243 1228 return resource; 1244 }1245 1246 void CachedResourceLoader::warnUnusedPreloads()1247 {1248 if (!m_preloads)1249 return;1250 for (const auto& resource : *m_preloads) {1251 if (resource && resource->isLinkPreload() && resource->preloadResult() == CachedResource::PreloadNotReferenced && document()) {1252 document()->addConsoleMessage(MessageSource::Other, MessageLevel::Warning,1253 "The resource " + resource->url().string() +1254 " was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it wasn't preloaded for nothing.");1255 }1256 }1257 1229 } 1258 1230 -
trunk/Source/WebCore/loader/cache/CachedResourceLoader.h
r214361 r214388 134 134 CachedResourceHandle<CachedResource> preload(CachedResource::Type, CachedResourceRequest&&); 135 135 void printPreloadStats(); 136 void warnUnusedPreloads();137 void stopUnusedPreloadsTimer();138 136 139 137 bool updateRequestAfterRedirection(CachedResource::Type, ResourceRequest&, const ResourceLoaderOptions&); … … 191 189 192 190 std::unique_ptr<ListHashSet<CachedResource*>> m_preloads; 193 Timer m_unusedPreloadsTimer;194 191 195 192 Timer m_garbageCollectDocumentResourcesTimer;
Note: See TracChangeset
for help on using the changeset viewer.