WebKit Bugzilla
Attachment 360247 Details for
Bug 193213
: Fix Resource Timing buffer edge cases for WPT
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-193213-20190126150721.patch (text/plain), 33.93 KB, created by
cvazac
on 2019-01-26 13:07:23 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
cvazac
Created:
2019-01-26 13:07:23 PST
Size:
33.93 KB
patch
obsolete
>Subversion Revision: 240498 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 354ef06152994edd80b746eac4ec0a2d923278ed..7fc46e5f50adf86e827382fa47894dd9b9a80d9e 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,17 @@ >+2019-01-26 Charles Vazac <cvazac@akamai.com> >+ >+ Fix Resource Timing buffer edge cases for WPT >+ https://bugs.webkit.org/show_bug.cgi?id=193213 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Tests: imported/w3c/web-platform-tests/resource-timing/redirects.sub.html >+ imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse_mixed_content.html >+ imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse_mixed_content_redirect.html >+ >+ * page/Performance.cpp: >+ (WebCore::Performance::resourceTimingBufferFullTimerFired): >+ > 2019-01-25 Brent Fulgham <bfulgham@apple.com> > > Activate the WebResourceLoadStatisticsStore in the NetworkProcess and deactivate it in the UIProcess. >diff --git a/Source/WebCore/page/Performance.cpp b/Source/WebCore/page/Performance.cpp >index d51b26d880ec895d7d699edfbcaba2e65a8465a5..a1cada98368fae8dde4489b8634067432e6d1f23 100644 >--- a/Source/WebCore/page/Performance.cpp >+++ b/Source/WebCore/page/Performance.cpp >@@ -212,11 +212,15 @@ bool Performance::isResourceTimingBufferFull() const > void Performance::resourceTimingBufferFullTimerFired() > { > while (!m_backupResourceTimingBuffer.isEmpty()) { >+ auto beforeCount = m_backupResourceTimingBuffer.size(); >+ > auto backupBuffer = WTFMove(m_backupResourceTimingBuffer); > ASSERT(m_backupResourceTimingBuffer.isEmpty()); > >- m_resourceTimingBufferFullFlag = true; >- dispatchEvent(Event::create(eventNames().resourcetimingbufferfullEvent, Event::CanBubble::No, Event::IsCancelable::No)); >+ if (isResourceTimingBufferFull()) { >+ m_resourceTimingBufferFullFlag = true; >+ dispatchEvent(Event::create(eventNames().resourcetimingbufferfullEvent, Event::CanBubble::No, Event::IsCancelable::No)); >+ } > > if (m_resourceTimingBufferFullFlag) { > for (auto& entry : backupBuffer) >@@ -239,6 +243,13 @@ void Performance::resourceTimingBufferFullTimerFired() > } else > m_backupResourceTimingBuffer.append(entry.copyRef()); > } >+ >+ auto afterCount = m_backupResourceTimingBuffer.size(); >+ >+ if (beforeCount <= afterCount) { >+ m_backupResourceTimingBuffer.clear(); >+ break; >+ } > } > m_waitingForBackupBufferToBeProcessed = false; > } >diff --git a/LayoutTests/imported/w3c/ChangeLog b/LayoutTests/imported/w3c/ChangeLog >index ec057412ce368bd74036ff1436c6a5caf449c7af..e25dea45e7d2d223fe8ef0bb87ef0009ff51b26f 100644 >--- a/LayoutTests/imported/w3c/ChangeLog >+++ b/LayoutTests/imported/w3c/ChangeLog >@@ -1,3 +1,30 @@ >+2019-01-26 Charles Vazac <cvazac@akamai.com> >+ >+ Fix Resource Timing buffer edge cases for WPT >+ https://bugs.webkit.org/show_bug.cgi?id=193213 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * web-platform-tests/resource-timing/buffer-full-add-after-full-event.html: >+ * web-platform-tests/resource-timing/buffer-full-add-then-clear-expected.txt: >+ * web-platform-tests/resource-timing/buffer-full-then-increased-expected.txt: >+ * web-platform-tests/resource-timing/redirects.sub-expected.txt: Added. >+ * web-platform-tests/resource-timing/redirects.sub.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_redirects.html. >+ * web-platform-tests/resource-timing/resource_connection_reuse.html: >+ * web-platform-tests/resource-timing/resource_connection_reuse.https.html: >+ * web-platform-tests/resource-timing/resource_connection_reuse_mixed_content-expected.txt: Added. >+ * web-platform-tests/resource-timing/resource_connection_reuse_mixed_content.html: Copied from LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse.https.html. >+ * web-platform-tests/resource-timing/resource_connection_reuse_mixed_content_redirect-expected.txt: Added. >+ * web-platform-tests/resource-timing/resource_connection_reuse_mixed_content_redirect.html: Copied from LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse.https.html. >+ * web-platform-tests/resource-timing/resource_redirects-expected.txt: Removed. >+ * web-platform-tests/resource-timing/resources/blank_page_green.htm.headers: Added. >+ * web-platform-tests/resource-timing/resources/fake_responses.py: >+ (main): >+ * web-platform-tests/resource-timing/resources/fake_responses_https.sub.html: Added. >+ * web-platform-tests/resource-timing/resources/fake_responses_https_redirect.sub.html: Added. >+ * web-platform-tests/resource-timing/resources/w3c-import.log: >+ * web-platform-tests/resource-timing/w3c-import.log: >+ > 2019-01-24 Charles Vazac <cvazac@akamai.com> > > Implement PerformanceObserver.supportedEntryTypes >diff --git a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/buffer-full-add-after-full-event.html b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/buffer-full-add-after-full-event.html >index 46264ac562d36efc807d121ae8030d329d65531b..73ad841e92fddff1e05395241d69a0079e7a84da 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/buffer-full-add-after-full-event.html >+++ b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/buffer-full-add-after-full-event.html >@@ -61,7 +61,7 @@ let testThatEntryWasAdded = () => { > reject("After buffer full, entry never added to primary"); > } > } >- step_timeout(waitForIt, 250); >+ step_timeout(waitForIt, 0); > }); > }; > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/buffer-full-add-then-clear-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/buffer-full-add-then-clear-expected.txt >index a0ea4c3d1f8bfcc71ea556ffabe055f2d88dc0ed..dcfe228549dfe03d05900623354536d288706b61 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/buffer-full-add-then-clear-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/buffer-full-add-then-clear-expected.txt >@@ -1,6 +1,3 @@ >-CONSOLE MESSAGE: line 2659: Error: assert_unreached: resourcetimingbufferfull should not fire Reached unreachable code > >-Harness Error (FAIL), message = Error: assert_unreached: resourcetimingbufferfull should not fire Reached unreachable code >- >-FAIL Test that if the buffer is cleared after entries were added to the secondary buffer, those entries make it into the primary one assert_equals: the last 3 resources should be in the buffer, since the first one was cleared expected 3 but got 0 >+PASS Test that if the buffer is cleared after entries were added to the secondary buffer, those entries make it into the primary one > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/buffer-full-then-increased-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/buffer-full-then-increased-expected.txt >index b47fa53c1923a6fa9773374ef1cb25b8b51bcb07..744558bf4e097c3b1e4947cffc0948b69ad38d87 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/buffer-full-then-increased-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/buffer-full-then-increased-expected.txt >@@ -1,6 +1,3 @@ >-CONSOLE MESSAGE: line 2659: Error: assert_unreached: resourcetimingbufferfull should not fire Reached unreachable code > >-Harness Error (FAIL), message = Error: assert_unreached: resourcetimingbufferfull should not fire Reached unreachable code >- >-FAIL Test that overflowing the buffer and immediately increasing its limit does not trigger the resourcetimingbufferfull event assert_equals: All resources should be in the buffer, since its size was increased expected 3 but got 1 >+PASS Test that overflowing the buffer and immediately increasing its limit does not trigger the resourcetimingbufferfull event > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/redirects.sub-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/redirects.sub-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..0fcf24b05781f9c4b5cea243fa107591c3db64ca >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/redirects.sub-expected.txt >@@ -0,0 +1,8 @@ >+CONSOLE MESSAGE: line 6: NetworkError: A network error occurred. >+Description >+ >+This test validates that redirects do not alter the URL. >+ >+ >+FAIL Testing resource entries assert_unreached: http://localhost:8800/common/redirect.py?location=https://www.localhost:9443/resource-timing/resources/blank_page_green.htm?id=xhr is expected to be in the Resource Timing buffer Reached unreachable code >+ >diff --git a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/redirects.sub.html b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/redirects.sub.html >new file mode 100644 >index 0000000000000000000000000000000000000000..0e3f405e14b7af9f0b2a4fe5ce916ed1e47534de >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/redirects.sub.html >@@ -0,0 +1,60 @@ >+<!DOCTYPE html> >+<html> >+<head> >+<meta charset="utf-8" /> >+<title>Resource Timing redirect names</title> >+<link rel="author" title="Google" href="http://www.google.com/" /> >+<link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/> >+<script src="/resources/testharness.js"></script> >+<script src="/resources/testharnessreport.js"></script> >+<script src="resources/webperftestharness.js"></script> >+<script src="resources/webperftestharnessextension.js"></script> >+<script> >+let iframe; >+const redirect_url = 'common/redirect.py'; >+const url_prefix = redirect_url + '?location=/resource-timing/resources/'; >+const https_url_prefix = redirect_url + '?location=https://{{hosts[][www]}}:{{ports[https][0]}}/resource-timing/resources/'; >+function setup_iframe() { >+ const iframe_content = >+ '<link rel="stylesheet" href="/' + url_prefix + 'resource_timing_test0.css"></link>' + >+ '<img src="/' + url_prefix + 'blue.png"></img>' + >+ '<iframe src="/' + url_prefix + 'blank_page_green.htm"></iframe>' + >+ '<script src="/' + url_prefix + 'empty_script.js"></scr' + 'ipt>' + >+ '<scr' + 'ipt>' + >+ 'const xhr = new XMLHttpRequest;' + >+ 'xhr.open("GET", "/' + url_prefix + 'blank_page_green.htm?id=xhr", false);' + >+ 'xhr.send();' + >+ 'const xhr2 = new XMLHttpRequest;' + >+ 'xhr2.open("GET", "/' + https_url_prefix + 'blank_page_green.htm?id=xhr", false);' + >+ 'xhr2.send();' + >+ '</scr' + 'ipt>'; >+ iframe = document.getElementById('frameContext'); >+ iframe.contentWindow.document.write(iframe_content); >+} >+function onload_test() { >+ const context = new PerformanceContext(iframe.contentWindow.performance); >+ const entries = context.getEntriesByType('resource'); >+ >+ const index = window.location.pathname.lastIndexOf('resource-timing'); >+ const pathname = window.location.pathname.substring(0, index) + url_prefix; >+ const https_pathname = window.location.pathname.substring(0, index) + https_url_prefix; >+ let expected_entries = {}; >+ expected_entries[pathname + 'resource_timing_test0.css'] = 'link'; >+ expected_entries[pathname + 'blue.png'] = 'img'; >+ expected_entries[pathname + 'blank_page_green.htm'] = 'iframe'; >+ expected_entries[pathname + 'empty_script.js'] = 'script'; >+ expected_entries[pathname + 'blank_page_green.htm?id=xhr'] = 'xmlhttprequest'; >+ expected_entries[https_pathname + 'blank_page_green.htm?id=xhr'] = 'xmlhttprequest'; >+ >+ test_resource_entries(entries, expected_entries); >+} >+window.setup_iframe = setup_iframe; >+</script> >+</head> >+<body> >+<h1>Description</h1> >+<p>This test validates that redirects do not alter the URL.</p> >+<div id="log"></div> >+<iframe id="frameContext" onload="onload_test();" src="resources/inject_resource_test.html"></iframe> >+</body> >+</html> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse.html b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse.html >index 7a31a7e1ab31d4d1a83fb5e2911b8ed95f0f2d92..f347a0b23e15e9134ba2bf37fdafa4cab5e8d809 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse.html >+++ b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse.html >@@ -41,7 +41,7 @@ function onload_test() { > test_equals(entry.fetchStart, entry.connectStart, 'connectStart and fetchStart should be the same'); > test_equals(entry.fetchStart, entry.connectEnd, 'connectEnd and fetchStart should be the same'); > if(!window.isSecureConnection) { >- test_equals(entry.secureConnectionStart, 0, 'secureConnectStart should be zero'); >+ test_equals(entry.secureConnectionStart, 0, 'secureConnectionStart should be zero'); > } > test_equals(entry.fetchStart, entry.domainLookupStart, 'domainLookupStart and fetchStart should be the same') > test_equals(entry.fetchStart, entry.domainLookupEnd, 'domainLookupEnd and fetchStart should be the same') >diff --git a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse.https.html b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse.https.html >index bc79a8519b20659085b6cda9e98685a0aaf33785..86864090a2eea7e62f7f204ec7baf4eccc9f6771 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse.https.html >+++ b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse.https.html >@@ -40,7 +40,7 @@ function onload_test() { > const entry = entries[1]; > test_equals(entry.fetchStart, entry.connectStart, 'connectStart and fetchStart should be the same'); > test_equals(entry.fetchStart, entry.connectEnd, 'connectEnd and fetchStart should be the same'); >- test_equals(entry.fetchStart, entry.secureConnectionStart, 'secureConnectStart and fetchStart should be the same'); >+ test_equals(entry.fetchStart, entry.secureConnectionStart, 'secureConnectionStart and fetchStart should be the same'); > test_equals(entry.fetchStart, entry.domainLookupStart, 'domainLookupStart and fetchStart should be the same') > test_equals(entry.fetchStart, entry.domainLookupEnd, 'domainLookupEnd and fetchStart should be the same') > } >diff --git a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse_mixed_content-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse_mixed_content-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..bda5213eb38119a33d9e8840393118df1a4c4e7c >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse_mixed_content-expected.txt >@@ -0,0 +1,11 @@ >+Blocked access to external URL https://www.localhost:9443/resource-timing/resources/fake_responses.py >+CONSOLE MESSAGE: line 8: NetworkError: A network error occurred. >+Description >+ >+This test validates that connectStart and connectEnd are the same when a connection is reused (e.g. when a persistent connection is used). >+ >+ >+PASS window.performance is defined >+PASS window.performance.getEntriesByType is defined >+FAIL There should be 2 PerformanceEntries assert_equals: There should be 2 PerformanceEntries expected 2 but got 0 >+ >diff --git a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse_mixed_content.html b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse_mixed_content.html >new file mode 100644 >index 0000000000000000000000000000000000000000..51c04ee604c963cb248ca6cb6b536ef9bf21ee12 >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse_mixed_content.html >@@ -0,0 +1,55 @@ >+<!DOCTYPE html> >+<html> >+<head> >+<meta charset="utf-8" /> >+<title>Resource Timing connection reuse</title> >+<link rel="author" title="Google" href="http://www.google.com/" /> >+<script src="/resources/testharness.js"></script> >+<script src="/resources/testharnessreport.js"></script> >+<script src="resources/webperftestharness.js"></script> >+<script src="resources/webperftestharnessextension.js"></script> >+<script> >+setup({explicit_done: true}); >+let iframe; >+let d; >+let body; >+ >+// Explicitly test the namespace before we start testing. >+test_namespace('getEntriesByType'); >+ >+function setup_iframe() { >+ iframe = document.getElementById('frameContext'); >+ d = iframe.contentWindow.document; >+ iframe.addEventListener('load', onload_test, false); >+} >+ >+function onload_test() { >+ const entries = iframe.contentWindow.performance.getEntriesByType('resource'); >+ >+ // When a persistent connection is used, follow-on resources should be included as PerformanceResourceTiming objects. >+ test_equals(entries.length, 2, 'There should be 2 PerformanceEntries'); >+ >+ if (entries.length >= 2) { >+ // When a persistent connection is used, for the resource that reuses the socket, connectStart and connectEnd should have the same value as fetchStart. >+ const entry = entries[1]; >+ test_equals(entry.fetchStart, entry.connectStart, 'connectStart and fetchStart should be the same'); >+ test_equals(entry.fetchStart, entry.connectEnd, 'connectEnd and fetchStart should be the same'); >+ // secureConnectionStart is the same as fetchStart since the subresource is fetched over https >+ test_equals(entry.fetchStart, entry.secureConnectionStart, 'secureConnectionStart and fetchStart should be the same'); >+ test_equals(entry.fetchStart, entry.domainLookupStart, 'domainLookupStart and fetchStart should be the same') >+ test_equals(entry.fetchStart, entry.domainLookupEnd, 'domainLookupEnd and fetchStart should be the same') >+ } >+ >+ done(); >+} >+ >+window.setup_iframe = setup_iframe; >+</script> >+</head> >+<body> >+<h1>Description</h1> >+<p>This test validates that connectStart and connectEnd are the same when a connection is reused (e.g. when a persistent connection is used).</p> >+<div id="log"></div> >+<iframe id="frameContext" src="resources/fake_responses_https.sub.html"></iframe> >+</body> >+</html> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse_mixed_content_redirect-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse_mixed_content_redirect-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..9a3823255c4d8ccb230912ae48dea7c4ae5781d6 >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse_mixed_content_redirect-expected.txt >@@ -0,0 +1,11 @@ >+Blocked access to external URL http://www.localhost:8800/resource-timing/resources/fake_responses.py?redirect=https://www.localhost:9443/resource-timing/resources/fake_responses.py >+CONSOLE MESSAGE: line 10: NetworkError: A network error occurred. >+Description >+ >+This test validates that connectStart and connectEnd are the same when a connection is reused (e.g. when a persistent connection is used). >+ >+ >+PASS window.performance is defined >+PASS window.performance.getEntriesByType is defined >+FAIL There should be 2 PerformanceEntries assert_equals: There should be 2 PerformanceEntries expected 2 but got 0 >+ >diff --git a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse_mixed_content_redirect.html b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse_mixed_content_redirect.html >new file mode 100644 >index 0000000000000000000000000000000000000000..a46d14c9f159ad2839546ed4f595d7e8d7cf4ffa >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse_mixed_content_redirect.html >@@ -0,0 +1,55 @@ >+<!DOCTYPE html> >+<html> >+<head> >+<meta charset="utf-8" /> >+<title>Resource Timing connection reuse</title> >+<link rel="author" title="Google" href="http://www.google.com/" /> >+<script src="/resources/testharness.js"></script> >+<script src="/resources/testharnessreport.js"></script> >+<script src="resources/webperftestharness.js"></script> >+<script src="resources/webperftestharnessextension.js"></script> >+<script> >+setup({explicit_done: true}); >+let iframe; >+let d; >+let body; >+ >+// Explicitly test the namespace before we start testing. >+test_namespace('getEntriesByType'); >+ >+function setup_iframe() { >+ iframe = document.getElementById('frameContext'); >+ d = iframe.contentWindow.document; >+ iframe.addEventListener('load', onload_test, false); >+} >+ >+function onload_test() { >+ const entries = iframe.contentWindow.performance.getEntriesByType('resource'); >+ >+ // When a persistent connection is used, follow-on resources should be included as PerformanceResourceTiming objects. >+ test_equals(entries.length, 2, 'There should be 2 PerformanceEntries'); >+ >+ if (entries.length >= 2) { >+ // When a persistent connection is used, for the resource that reuses the socket, connectStart and connectEnd should have the same value as fetchStart. >+ const entry = entries[1]; >+ test_equals(entry.fetchStart, entry.connectStart, 'connectStart and fetchStart should be the same'); >+ test_equals(entry.fetchStart, entry.connectEnd, 'connectEnd and fetchStart should be the same'); >+ // secureConnectionStart is the same as fetchStart since the subresource is eventually redirected to https. >+ test_equals(entry.fetchStart, entry.secureConnectionStart, 'secureConnectionStart and fetchStart should be the same'); >+ test_equals(entry.fetchStart, entry.domainLookupStart, 'domainLookupStart and fetchStart should be the same') >+ test_equals(entry.fetchStart, entry.domainLookupEnd, 'domainLookupEnd and fetchStart should be the same') >+ } >+ >+ done(); >+} >+ >+window.setup_iframe = setup_iframe; >+</script> >+</head> >+<body> >+<h1>Description</h1> >+<p>This test validates that connectStart and connectEnd are the same when a connection is reused (e.g. when a persistent connection is used).</p> >+<div id="log"></div> >+<iframe id="frameContext" src="resources/fake_responses_https_redirect.sub.html"></iframe> >+</body> >+</html> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_redirects-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_redirects-expected.txt >deleted file mode 100644 >index 77f9308d526c74c8544424d19ad7a43920cc8fa0..0000000000000000000000000000000000000000 >--- a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_redirects-expected.txt >+++ /dev/null >@@ -1,7 +0,0 @@ >-Description >- >-This test validates that redirects do not alter the URL. >- >- >-PASS Testing resource entries >- >diff --git a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_redirects.html b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_redirects.html >deleted file mode 100644 >index 606662afda4401dd0dccbac2b71b66f3b1961e6f..0000000000000000000000000000000000000000 >--- a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_redirects.html >+++ /dev/null >@@ -1,53 +0,0 @@ >-<!DOCTYPE html> >-<html> >-<head> >-<meta charset="utf-8" /> >-<title>Resource Timing redirect names</title> >-<link rel="author" title="Google" href="http://www.google.com/" /> >-<link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/> >-<script src="/resources/testharness.js"></script> >-<script src="/resources/testharnessreport.js"></script> >-<script src="resources/webperftestharness.js"></script> >-<script src="resources/webperftestharnessextension.js"></script> >-<script> >-let iframe; >-function setup_iframe() { >- const iframe_content = >- '<link rel="stylesheet" href="/common/redirect.py?location=/resource-timing/resources/resource_timing_test0.css"></link>' + >- '<img src="/common/redirect.py?location=/resource-timing/resources/blue.png"></img>' + >- '<iframe src="/common/redirect.py?location=/resource-timing/resources/blank_page_green.htm"></iframe>' + >- '<script src="/common/redirect.py?location=/resource-timing/resources/empty_script.js"></scr' + 'ipt>' + >- '<scr' + 'ipt>' + >- 'const xhr = new XMLHttpRequest;' + >- 'xhr.open("GET", "/common/redirect.py?location=/resource-timing/resources/blank_page_green.htm?id=xhr", false);' + >- 'xhr.send();' + >- '</scr' + 'ipt>'; >- iframe = document.getElementById('frameContext'); >- iframe.contentWindow.document.write(iframe_content); >-} >-function onload_test() { >- const context = new PerformanceContext(iframe.contentWindow.performance); >- const entries = context.getEntriesByType('resource'); >- >- const index = window.location.pathname.lastIndexOf('resource-timing'); >- const pathname = window.location.pathname.substring(0, index) + >- 'common/redirect.py?location=/resource-timing/resources/'; >- let expected_entries = {}; >- expected_entries[pathname + 'resource_timing_test0.css'] = 'link'; >- expected_entries[pathname + 'blue.png'] = 'img'; >- expected_entries[pathname + 'blank_page_green.htm'] = 'iframe'; >- expected_entries[pathname + 'empty_script.js'] = 'script'; >- expected_entries[pathname + 'blank_page_green.htm?id=xhr'] = 'xmlhttprequest'; >- >- test_resource_entries(entries, expected_entries); >-} >-window.setup_iframe = setup_iframe; >-</script> >-</head> >-<body> >-<h1>Description</h1> >-<p>This test validates that redirects do not alter the URL.</p> >-<div id="log"></div> >-<iframe id="frameContext" onload="onload_test();" src="resources/inject_resource_test.html"></iframe> >-</body> >-</html> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/blank_page_green.htm.headers b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/blank_page_green.htm.headers >new file mode 100644 >index 0000000000000000000000000000000000000000..cb762eff806849df46dc758ef7b98b63f27f54c9 >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/blank_page_green.htm.headers >@@ -0,0 +1 @@ >+Access-Control-Allow-Origin: * >diff --git a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/fake_responses.py b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/fake_responses.py >index f71693818cb726573e4d1f282b8d61fe8a87df6b..289c179317671ba4e87c06bb89e815c8c449fd19 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/fake_responses.py >+++ b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/fake_responses.py >@@ -2,13 +2,20 @@ > > def main(request, response): > tag = request.GET.first("tag", None) >+ redirect = request.GET.first("redirect", None) > match = request.headers.get("If-None-Match", None) > date = request.GET.first("date", "") > modified = request.headers.get("If-Modified-Since", None) >+ response.headers.set("Access-Control-Allow-Origin", "*"); >+ response.headers.set("Timing-Allow-Origin", "*"); > if tag: > response.headers.set("ETag", '"%s"' % tag) > elif date: > response.headers.set("Last-Modified", date) >+ if redirect: >+ response.headers.set("Location", redirect) >+ response.status = (302, "Moved") >+ return "" > > if ((match is not None and match == tag) or > (modified is not None and modified == date)): >@@ -16,4 +23,4 @@ def main(request, response): > return "" > else: > response.headers.set("Content-Type", "text/plain") >- return "MAYBE NOT" >\ No newline at end of file >+ return "MAYBE NOT" >diff --git a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/fake_responses_https.sub.html b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/fake_responses_https.sub.html >new file mode 100644 >index 0000000000000000000000000000000000000000..cf49fb914bebe0c18d8af19a1a1362ae64217eb5 >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/fake_responses_https.sub.html >@@ -0,0 +1,18 @@ >+<body> >+<script> >+function request() { >+ var client = new XMLHttpRequest, >+ baseurl = "https://{{hosts[][www]}}:{{ports[https][0]}}{{location[pathname]}}", >+ url = new URL("fake_responses.py", baseurl).href; >+ client.open("GET", url, false) >+ client.send(null) >+ client.open("GET", url, false) >+ client.send(null) >+} >+ >+if(window.parent.setup_iframe) { >+ window.parent.setup_iframe(); >+ request(); >+} >+</script> >+</body> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/fake_responses_https_redirect.sub.html b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/fake_responses_https_redirect.sub.html >new file mode 100644 >index 0000000000000000000000000000000000000000..c55e037d1dc15c1247c1a0ad2396c1416b577800 >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/fake_responses_https_redirect.sub.html >@@ -0,0 +1,20 @@ >+<body> >+<script> >+function request() { >+ var client = new XMLHttpRequest, >+ baseurl = "http://{{hosts[][www]}}:{{ports[http][0]}}{{location[pathname]}}", >+ subresource = "fake_responses.py", >+ redirecturl = new URL(subresource, "https://{{hosts[][www]}}:{{ports[https][0]}}{{location[pathname]}}").href, >+ url = new URL(subresource + "?redirect=" + redirecturl, baseurl).href; >+ client.open("GET", url, false) >+ client.send(null) >+ client.open("GET", url, false) >+ client.send(null) >+} >+ >+if(window.parent.setup_iframe) { >+ window.parent.setup_iframe(); >+ request(); >+} >+</script> >+</body> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/w3c-import.log b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/w3c-import.log >index 4d67ebb9513f2e0b93947fac6561eca47d8ce800..da35822426787733e31d237504b3bcd6f582c7a6 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/w3c-import.log >+++ b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/w3c-import.log >@@ -17,6 +17,7 @@ List of files: > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/TAOResponse.py > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/all_resource_types.htm > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/blank_page_green.htm >+/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/blank_page_green.htm.headers > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/blue.png > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/buffer-full-utilities.js > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/document-domain-no-impact.sub.html >@@ -26,6 +27,8 @@ List of files: > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/eventsource.py > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/fake_responses.html > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/fake_responses.py >+/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/fake_responses_https.sub.html >+/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/fake_responses_https_redirect.sub.html > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/green_frame.htm > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/gzip_xml.py > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/iframe-setdomain.sub.html >diff --git a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/w3c-import.log b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/w3c-import.log >index 26b68fb6998ab384f345faa5b75b588fb8b6f981..0985a0624a54b5e111a238aa8592916d0ae5031c 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/resource-timing/w3c-import.log >+++ b/LayoutTests/imported/w3c/web-platform-tests/resource-timing/w3c-import.log >@@ -31,6 +31,7 @@ List of files: > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/document-domain-no-impact-loader.sub.html > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/idlharness.any.js > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/no-entries-for-cross-origin-css-fetched.sub.html >+/LayoutTests/imported/w3c/web-platform-tests/resource-timing/redirects.sub.html > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource-timing-level1.js > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource-timing-level1.sub.html > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource-timing-tojson.html >@@ -48,13 +49,14 @@ List of files: > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_cached.htm > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse.html > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse.https.html >+/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse_mixed_content.html >+/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse_mixed_content_redirect.html > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_dedicated_worker.html > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_dynamic_insertion.html > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_ignore_data_url.html > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_ignore_failures.html > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_initiator_types.html > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_memory_cached.sub.html >-/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_redirects.html > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_reparenting.html > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_script_types.html > /LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_subframe_self_navigation.html
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 193213
:
358530
|
358532
|
358540
|
358544
|
358552
|
358554
|
358555
|
360247
|
360249
|
360250
|
360253
|
360254
|
360255
|
360264
|
360268
|
360344
|
360345
|
362013
|
362014
|
362020
|
362021
|
362024
|
362025
|
362028
|
362034
|
362039
|
362060
|
362095
|
362115