Auto merge of #25205 - shnmorimoto:fix_performance_interface_timing_member, r=jdm

Fix performance interface timing member

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #23330 and #24468 (GitHub issue number if applicable)

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
This commit is contained in:
bors-servo 2019-12-14 10:42:16 -05:00 committed by GitHub
commit 226b341078
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
37 changed files with 87 additions and 402 deletions

View file

@ -96,10 +96,10 @@ impl PerformanceEntryList {
entry_type: Option<DOMString>, entry_type: Option<DOMString>,
) { ) {
self.entries.retain(|e| { self.entries.retain(|e| {
name.as_ref().map_or(true, |name_| *e.name() == *name_) && name.as_ref().map_or(true, |name_| *e.name() != *name_) &&
entry_type entry_type
.as_ref() .as_ref()
.map_or(true, |type_| *e.entry_type() == *type_) .map_or(true, |type_| *e.entry_type() != *type_)
}); });
} }
@ -233,10 +233,10 @@ impl Performance {
/// <https://w3c.github.io/performance-timeline/#queue-a-performanceentry> /// <https://w3c.github.io/performance-timeline/#queue-a-performanceentry>
/// Also this algorithm has been extented according to : /// Also this algorithm has been extented according to :
/// <https://w3c.github.io/resource-timing/#sec-extensions-performance-interface> /// <https://w3c.github.io/resource-timing/#sec-extensions-performance-interface>
pub fn queue_entry(&self, entry: &PerformanceEntry, add_to_performance_entries_buffer: bool) { pub fn queue_entry(&self, entry: &PerformanceEntry) -> Option<usize> {
// https://w3c.github.io/performance-timeline/#dfn-determine-eligibility-for-adding-a-performance-entry // https://w3c.github.io/performance-timeline/#dfn-determine-eligibility-for-adding-a-performance-entry
if entry.entry_type() == "resource" && !self.should_queue_resource_entry(entry) { if entry.entry_type() == "resource" && !self.should_queue_resource_entry(entry) {
return; return None;
} }
// Steps 1-3. // Steps 1-3.
@ -253,19 +253,18 @@ impl Performance {
} }
// Step 4. // Step 4.
// If the "add to performance entry buffer flag" is set, add the //add the new entry to the buffer.
// new entry to the buffer. self.buffer
if add_to_performance_entries_buffer { .borrow_mut()
self.buffer .entries
.borrow_mut() .push(DomRoot::from_ref(entry));
.entries
.push(DomRoot::from_ref(entry)); let entry_last_index = self.buffer.borrow_mut().entries.len() - 1;
}
// Step 5. // Step 5.
// If there is already a queued notification task, we just bail out. // If there is already a queued notification task, we just bail out.
if self.pending_notification_observers_task.get() { if self.pending_notification_observers_task.get() {
return; return None;
} }
// Step 6. // Step 6.
@ -273,6 +272,8 @@ impl Performance {
self.pending_notification_observers_task.set(true); self.pending_notification_observers_task.set(true);
let task_source = self.global().performance_timeline_task_source(); let task_source = self.global().performance_timeline_task_source();
task_source.queue_notification(&self.global()); task_source.queue_notification(&self.global());
Some(entry_last_index)
} }
/// Observers notifications task. /// Observers notifications task.
@ -321,7 +322,7 @@ impl Performance {
.borrow_mut() .borrow_mut()
.pop_front(); .pop_front();
if let Some(ref entry) = entry { if let Some(ref entry) = entry {
self.queue_entry(entry, true); self.queue_entry(entry);
} else { } else {
break; break;
} }
@ -370,6 +371,12 @@ impl Performance {
.push_back(DomRoot::from_ref(entry)); .push_back(DomRoot::from_ref(entry));
false false
} }
pub fn update_entry(&self, index: usize, entry: &PerformanceEntry) {
if let Some(e) = self.buffer.borrow_mut().entries.get_mut(index) {
*e = DomRoot::from_ref(entry);
}
}
} }
impl PerformanceMethods for Performance { impl PerformanceMethods for Performance {
@ -438,10 +445,7 @@ impl PerformanceMethods for Performance {
// Steps 2 to 6. // Steps 2 to 6.
let entry = PerformanceMark::new(&global, mark_name, self.now(), 0.); let entry = PerformanceMark::new(&global, mark_name, self.now(), 0.);
// Steps 7 and 8. // Steps 7 and 8.
self.queue_entry( self.queue_entry(&entry.upcast::<PerformanceEntry>());
&entry.upcast::<PerformanceEntry>(),
true, /* buffer performance entry */
);
// Step 9. // Step 9.
Ok(()) Ok(())
@ -488,10 +492,7 @@ impl PerformanceMethods for Performance {
); );
// Step 9 and 10. // Step 9 and 10.
self.queue_entry( self.queue_entry(&entry.upcast::<PerformanceEntry>());
&entry.upcast::<PerformanceEntry>(),
true, /* buffer performance entry */
);
// Step 11. // Step 11.
Ok(()) Ok(())

View file

@ -689,6 +689,8 @@ pub struct ParserContext {
url: ServoUrl, url: ServoUrl,
/// timing data for this resource /// timing data for this resource
resource_timing: ResourceFetchTiming, resource_timing: ResourceFetchTiming,
/// pushed entry index
pushed_entry_index: Option<usize>,
} }
impl ParserContext { impl ParserContext {
@ -699,6 +701,7 @@ impl ParserContext {
id: id, id: id,
url: url, url: url,
resource_timing: ResourceFetchTiming::new(ResourceTimingType::Navigation), resource_timing: ResourceFetchTiming::new(ResourceTimingType::Navigation),
pushed_entry_index: None,
} }
} }
} }
@ -774,6 +777,8 @@ impl FetchResponseListener for ParserContext {
self.parser = Some(Trusted::new(&*parser)); self.parser = Some(Trusted::new(&*parser));
self.submit_resource_timing();
match content_type { match content_type {
Some(ref mime) if mime.type_() == mime::IMAGE => { Some(ref mime) if mime.type_() == mime::IMAGE => {
self.is_synthesized_document = true; self.is_synthesized_document = true;
@ -881,8 +886,16 @@ impl FetchResponseListener for ParserContext {
parser.parse_sync(); parser.parse_sync();
} }
//TODO only submit if this is the current document resource //TODO only update if this is the current document resource
self.submit_resource_timing(); if let Some(pushed_index) = self.pushed_entry_index {
let document = &parser.document;
let performance_entry =
PerformanceNavigationTiming::new(&document.global(), 0, 0, &document);
document
.global()
.performance()
.update_entry(pushed_index, performance_entry.upcast::<PerformanceEntry>());
}
} }
fn resource_timing_mut(&mut self) -> &mut ResourceFetchTiming { fn resource_timing_mut(&mut self) -> &mut ResourceFetchTiming {
@ -908,10 +921,10 @@ impl FetchResponseListener for ParserContext {
//TODO nav_start and nav_start_precise //TODO nav_start and nav_start_precise
let performance_entry = let performance_entry =
PerformanceNavigationTiming::new(&document.global(), 0, 0, &document); PerformanceNavigationTiming::new(&document.global(), 0, 0, &document);
document self.pushed_entry_index = document
.global() .global()
.performance() .performance()
.queue_entry(performance_entry.upcast::<PerformanceEntry>(), true); .queue_entry(performance_entry.upcast::<PerformanceEntry>());
} }
} }

View file

@ -34,23 +34,20 @@ partial interface Performance {
[Throws] [Throws]
void measure(DOMString measureName, optional DOMString startMark, optional DOMString endMark); void measure(DOMString measureName, optional DOMString startMark, optional DOMString endMark);
void clearMeasures(optional DOMString measureName); void clearMeasures(optional DOMString measureName);
}; };
//https://w3c.github.io/resource-timing/#sec-extensions-performance-interface //https://w3c.github.io/resource-timing/#sec-extensions-performance-interface
partial interface Performance { partial interface Performance {
void clearResourceTimings (); void clearResourceTimings ();
void setResourceTimingBufferSize (unsigned long maxSize); void setResourceTimingBufferSize (unsigned long maxSize);
attribute EventHandler onresourcetimingbufferfull; attribute EventHandler onresourcetimingbufferfull;
}; };
// FIXME(avada): this should be deprecated, but is currently included for web compat
// https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/NavigationTiming/Overview.html#performance-timing-attribute
[Exposed=(Window)]
partial interface Performance {
PerformanceNavigationTiming timing();
};
// https://w3c.github.io/navigation-timing/#extensions-to-the-performance-interface // https://w3c.github.io/navigation-timing/#extensions-to-the-performance-interface
[Exposed=Window]
partial interface Performance { partial interface Performance {
[SameObject, Exposed=Window] [SameObject]
readonly attribute PerformanceNavigationTiming timing;
[SameObject]
readonly attribute PerformanceNavigation navigation; readonly attribute PerformanceNavigation navigation;
}; };

View file

@ -62,7 +62,7 @@ pub fn submit_timing_data(
PerformanceResourceTiming::new(global, url, initiator_type, None, resource_timing); PerformanceResourceTiming::new(global, url, initiator_type, None, resource_timing);
global global
.performance() .performance()
.queue_entry(performance_entry.upcast::<PerformanceEntry>(), true); .queue_entry(performance_entry.upcast::<PerformanceEntry>());
} }
impl<Listener: PreInvoke + Send + 'static> NetworkListener<Listener> { impl<Listener: PreInvoke + Send + 'static> NetworkListener<Listener> {

View file

@ -3889,10 +3889,9 @@ impl ScriptThread {
metric_type, metric_type,
metric_value, metric_value,
); );
window.Performance().queue_entry( window
&entry.upcast::<PerformanceEntry>(), .Performance()
true, /* buffer performance entry */ .queue_entry(&entry.upcast::<PerformanceEntry>());
);
} }
} }

View file

@ -13,4 +13,3 @@
[X-Content-Type-Options%3A%20%2Cnosniff] [X-Content-Type-Options%3A%20%2Cnosniff]
expected: FAIL expected: FAIL

View file

@ -19,3 +19,4 @@
[idlharness.any.html] [idlharness.any.html]
[idlharness.any.worker.html] [idlharness.any.worker.html]
expected: CRASH

View file

@ -5,6 +5,3 @@
[performance-tojson] [performance-tojson]
expected: FAIL expected: FAIL
[Test performance.toJSON()]
expected: FAIL

View file

@ -6,15 +6,3 @@
[Set HTTP URL frame location.protocol to gopher] [Set HTTP URL frame location.protocol to gopher]
expected: FAIL expected: FAIL
[Set HTTP URL frame location.protocol to http+x]
expected: FAIL
[Set HTTP URL frame location.protocol to ftp]
expected: FAIL
[Set HTTP URL frame location.protocol to data]
expected: FAIL
[Set HTTP URL frame location.protocol to x]
expected: FAIL

View file

@ -1,5 +1,5 @@
[form-double-submit-2.html] [form-double-submit-2.html]
expected: ERROR expected: ERROR
[preventDefault should allow onclick submit() to succeed] [preventDefault should allow onclick submit() to succeed]
expected: FAIL expected: TIMEOUT

View file

@ -1,18 +1,18 @@
[htmlanchorelement_noopener.html] [htmlanchorelement_noopener.html]
type: testharness type: testharness
expected: ERROR expected: TIMEOUT
[Check that targeting of rel=noopener with a given name ignores an existing window with that name] [Check that targeting of rel=noopener with a given name ignores an existing window with that name]
expected: NOTRUN expected: NOTRUN
[Check that rel=noopener with target=_parent does a normal load] [Check that rel=noopener with target=_parent does a normal load]
expected: FAIL expected: NOTRUN
[Check that rel=noopener with target=_top does a normal load] [Check that rel=noopener with target=_top does a normal load]
expected: FAIL expected: NOTRUN
[Check that targeting of rel=noopener with a given name reuses an existing window with that name] [Check that targeting of rel=noopener with a given name reuses an existing window with that name]
expected: NOTRUN expected: NOTRUN
[Check that rel=noopener with target=_self does a normal load] [Check that rel=noopener with target=_self does a normal load]
expected: FAIL expected: NOTRUN

View file

@ -1,5 +0,0 @@
[dom_interactive_image_document.html]
expected: ERROR
[Test domInteractive on image document]
expected: NOTRUN

View file

@ -1,5 +0,0 @@
[dom_interactive_media_document.html]
expected: ERROR
[Test domInteractive on media document]
expected: NOTRUN

View file

@ -95,71 +95,9 @@
[PerformanceTiming interface: performance.timing must inherit property "navigationStart" with the proper type] [PerformanceTiming interface: performance.timing must inherit property "navigationStart" with the proper type]
expected: FAIL expected: FAIL
[PerformanceTiming interface: performance.timing must inherit property "unloadEventStart" with the proper type]
expected: FAIL
[PerformanceTiming interface: performance.timing must inherit property "unloadEventEnd" with the proper type]
expected: FAIL
[PerformanceTiming interface: performance.timing must inherit property "redirectStart" with the proper type]
expected: FAIL
[PerformanceTiming interface: performance.timing must inherit property "redirectEnd" with the proper type]
expected: FAIL
[PerformanceTiming interface: performance.timing must inherit property "fetchStart" with the proper type]
expected: FAIL
[PerformanceTiming interface: performance.timing must inherit property "domainLookupStart" with the proper type]
expected: FAIL
[PerformanceTiming interface: performance.timing must inherit property "domainLookupEnd" with the proper type]
expected: FAIL
[PerformanceTiming interface: performance.timing must inherit property "connectStart" with the proper type]
expected: FAIL
[PerformanceTiming interface: performance.timing must inherit property "connectEnd" with the proper type]
expected: FAIL
[PerformanceTiming interface: performance.timing must inherit property "secureConnectionStart" with the proper type]
expected: FAIL
[PerformanceTiming interface: performance.timing must inherit property "requestStart" with the proper type]
expected: FAIL
[PerformanceTiming interface: performance.timing must inherit property "responseStart" with the proper type]
expected: FAIL
[PerformanceTiming interface: performance.timing must inherit property "responseEnd" with the proper type]
expected: FAIL
[PerformanceTiming interface: performance.timing must inherit property "domLoading" with the proper type] [PerformanceTiming interface: performance.timing must inherit property "domLoading" with the proper type]
expected: FAIL expected: FAIL
[PerformanceTiming interface: performance.timing must inherit property "domInteractive" with the proper type]
expected: FAIL
[PerformanceTiming interface: performance.timing must inherit property "domContentLoadedEventStart" with the proper type]
expected: FAIL
[PerformanceTiming interface: performance.timing must inherit property "domContentLoadedEventEnd" with the proper type]
expected: FAIL
[PerformanceTiming interface: performance.timing must inherit property "domComplete" with the proper type]
expected: FAIL
[PerformanceTiming interface: performance.timing must inherit property "loadEventStart" with the proper type]
expected: FAIL
[PerformanceTiming interface: performance.timing must inherit property "loadEventEnd" with the proper type]
expected: FAIL
[PerformanceTiming interface: performance.timing must inherit property "toJSON()" with the proper type]
expected: FAIL
[PerformanceTiming interface: default toJSON operation on performance.timing] [PerformanceTiming interface: default toJSON operation on performance.timing]
expected: FAIL expected: FAIL
[Performance interface: attribute timing]
expected: FAIL

View file

@ -1,5 +0,0 @@
[secure-connection-start-reuse.https.html]
expected: TIMEOUT
[Test that secureConnectionStart value is as expected when reused]
expected: NOTRUN

View file

@ -1,8 +0,0 @@
[test_navigation_redirectCount_none.html]
type: testharness
[timing.redirectStart on an non-redirected navigation]
expected: FAIL
[timing.redirectEnd on an non-redirected navigation]
expected: FAIL

View file

@ -6,18 +6,12 @@
[Reload fetchStart > Original fetchStart] [Reload fetchStart > Original fetchStart]
expected: FAIL expected: FAIL
[Reload domContentLoadedEventEnd > Original domContentLoadedEventEnd]
expected: FAIL
[Reload redirectStart > Original redirectStart] [Reload redirectStart > Original redirectStart]
expected: FAIL expected: FAIL
[Reload domLoading > Original domLoading] [Reload domLoading > Original domLoading]
expected: FAIL expected: FAIL
[Reload loadEventEnd > Original loadEventEnd]
expected: FAIL
[Reload redirectEnd > Original redirectEnd] [Reload redirectEnd > Original redirectEnd]
expected: FAIL expected: FAIL
@ -33,12 +27,6 @@
[Reload connectStart > Original connectStart] [Reload connectStart > Original connectStart]
expected: FAIL expected: FAIL
[Reload domContentLoadedEventStart > Original domContentLoadedEventStart]
expected: FAIL
[Reload domComplete > Original domComplete]
expected: FAIL
[Reload domainLookupStart > Original domainLookupStart] [Reload domainLookupStart > Original domainLookupStart]
expected: FAIL expected: FAIL
@ -57,9 +45,3 @@
[Reload responseEnd > Original responseEnd] [Reload responseEnd > Original responseEnd]
expected: FAIL expected: FAIL
[Reload loadEventStart > Original loadEventStart]
expected: FAIL
[Reload domInteractive > Original domInteractive]
expected: FAIL

View file

@ -1,8 +0,0 @@
[test_no_previous_document.html]
type: testharness
[timing.unloadEventEnd == 0 navigation with no previous document]
expected: FAIL
[timing.unloadEventStart == 0 on navigation with no previous document]
expected: FAIL

View file

@ -1,62 +1,8 @@
[test_timing_attributes_exist.html] [test_timing_attributes_exist.html]
type: testharness type: testharness
[window.performance.timing.connectEnd is defined.]
expected: FAIL
[window.performance.timing.connectStart is defined.]
expected: FAIL
[window.performance.timing.domainLookupEnd is defined.]
expected: FAIL
[window.performance.timing.domainLookupStart is defined.]
expected: FAIL
[window.performance.timing.fetchStart is defined.]
expected: FAIL
[window.performance.timing.redirectEnd is defined.]
expected: FAIL
[window.performance.timing.redirectStart is defined.]
expected: FAIL
[window.performance.timing.requestStart is defined.]
expected: FAIL
[window.performance.timing.responseEnd is defined.]
expected: FAIL
[window.performance.timing.responseStart is defined.]
expected: FAIL
[window.performance.timing.unloadEventEnd is defined.]
expected: FAIL
[window.performance.timing.unloadEventStart is defined.]
expected: FAIL
[window.performance.timing.domComplete is defined.]
expected: FAIL
[window.performance.timing.domContentLoadedEventEnd is defined.]
expected: FAIL
[window.performance.timing.domContentLoadedEventStart is defined.]
expected: FAIL
[window.performance.timing.domInteractive is defined.]
expected: FAIL
[window.performance.timing.domLoading is defined.] [window.performance.timing.domLoading is defined.]
expected: FAIL expected: FAIL
[window.performance.timing.loadEventEnd is defined.]
expected: FAIL
[window.performance.timing.loadEventStart is defined.]
expected: FAIL
[window.performance.timing.navigationStart is defined.] [window.performance.timing.navigationStart is defined.]
expected: FAIL expected: FAIL

View file

@ -6,27 +6,9 @@
[window.performance.timing.unloadEventStart difference with window.performance.timing.navigationStart is 0 or at least 5 microseconds] [window.performance.timing.unloadEventStart difference with window.performance.timing.navigationStart is 0 or at least 5 microseconds]
expected: FAIL expected: FAIL
[window.performance.timing.loadEventStart difference with window.performance.timing.domContentLoadedEventEnd is 0 or at least 5 microseconds]
expected: FAIL
[window.performance.timing.unloadEventEnd difference with window.performance.timing.unloadEventStart is 0 or at least 5 microseconds]
expected: FAIL
[window.performance.timing.requestStart difference with window.performance.timing.connectEnd is 0 or at least 5 microseconds]
expected: FAIL
[window.performance.timing.unloadEventStart >= window.performance.timing.navigationStart] [window.performance.timing.unloadEventStart >= window.performance.timing.navigationStart]
expected: FAIL expected: FAIL
[window.performance.timing.loadEventEnd >= window.performance.timing.loadEventStart]
expected: FAIL
[window.performance.timing.domainLookupEnd >= window.performance.timing.domainLookupStart]
expected: FAIL
[window.performance.timing.domContentLoadedEventStart > 0]
expected: FAIL
[window.performance.timing.domLoading >= window.performance.timing.fetchStart] [window.performance.timing.domLoading >= window.performance.timing.fetchStart]
expected: FAIL expected: FAIL
@ -36,129 +18,39 @@
[window.performance.timing.fetchStart >= window.performance.timing.navigationStart] [window.performance.timing.fetchStart >= window.performance.timing.navigationStart]
expected: FAIL expected: FAIL
[window.performance.timing.domInteractive >= window.performance.timing.responseEnd]
expected: FAIL
[window.performance.timing.navigationStart > 0] [window.performance.timing.navigationStart > 0]
expected: FAIL expected: FAIL
[window.performance.timing.loadEventEnd difference with window.performance.timing.loadEventStart is 0 or at least 5 microseconds]
expected: FAIL
[window.performance.timing.redirectEnd == 0]
expected: FAIL
[window.performance.timing.responseEnd >= window.performance.timing.responseStart]
expected: FAIL
[window.performance.timing.connectStart difference with window.performance.timing.domainLookupEnd is 0 or at least 5 microseconds]
expected: FAIL
[window.performance.timing.unloadEventEnd >= window.performance.timing.unloadEventStart]
expected: FAIL
[window.performance.timing.connectStart >= window.performance.timing.domainLookupEnd]
expected: FAIL
[window.performance.timing.redirectStart == 0]
expected: FAIL
[window.performance.timing.domInteractive difference with window.performance.timing.responseEnd is 0 or at least 5 microseconds]
expected: FAIL
[window.performance.timing.domContentLoadedEventEnd > 0]
expected: FAIL
[window.performance.timing.domainLookupEnd > 0] [window.performance.timing.domainLookupEnd > 0]
expected: FAIL expected: FAIL
[window.performance.timing.domLoading > 0] [window.performance.timing.domLoading > 0]
expected: FAIL expected: FAIL
[window.performance.timing.domComplete >= window.performance.timing.domContentLoadedEventEnd]
expected: FAIL
[window.performance.timing.connectEnd difference with window.performance.timing.connectStart is 0 or at least 5 microseconds]
expected: FAIL
[window.performance.timing.connectEnd > 0] [window.performance.timing.connectEnd > 0]
expected: FAIL expected: FAIL
[window.performance.timing.domContentLoadedEventEnd >= window.performance.timing.domContentLoadedEventStart]
expected: FAIL
[window.performance.timing.domLoading difference with window.performance.timing.fetchStart is 0 or at least 5 microseconds] [window.performance.timing.domLoading difference with window.performance.timing.fetchStart is 0 or at least 5 microseconds]
expected: FAIL expected: FAIL
[window.performance.timing.unloadEventStart > 0] [window.performance.timing.unloadEventStart > 0]
expected: FAIL expected: FAIL
[window.performance.timing.domContentLoadedEventStart >= window.performance.timing.domInteractive]
expected: FAIL
[window.performance.timing.connectStart > 0] [window.performance.timing.connectStart > 0]
expected: FAIL expected: FAIL
[window.performance.timing.responseEnd difference with window.performance.timing.responseStart is 0 or at least 5 microseconds]
expected: FAIL
[window.performance.timing.fetchStart > 0] [window.performance.timing.fetchStart > 0]
expected: FAIL expected: FAIL
[window.performance.timing.domainLookupEnd difference with window.performance.timing.domainLookupStart is 0 or at least 5 microseconds]
expected: FAIL
[window.performance.timing.responseStart difference with window.performance.timing.requestStart is 0 or at least 5 microseconds]
expected: FAIL
[window.performance.timing.domComplete difference with window.performance.timing.domContentLoadedEventEnd is 0 or at least 5 microseconds]
expected: FAIL
[window.performance.timing.domContentLoadedEventEnd difference with window.performance.timing.domContentLoadedEventStart is 0 or at least 5 microseconds]
expected: FAIL
[window.performance.timing.domainLookupStart >= window.performance.timing.fetchStart]
expected: FAIL
[window.performance.timing.responseEnd > 0] [window.performance.timing.responseEnd > 0]
expected: FAIL expected: FAIL
[window.performance.timing.unloadEventEnd > 0] [window.performance.timing.unloadEventEnd > 0]
expected: FAIL expected: FAIL
[window.performance.timing.domainLookupStart difference with window.performance.timing.fetchStart is 0 or at least 5 microseconds]
expected: FAIL
[window.performance.timing.domainLookupStart > 0] [window.performance.timing.domainLookupStart > 0]
expected: FAIL expected: FAIL
[window.performance.timing.domInteractive > 0]
expected: FAIL
[window.performance.timing.domContentLoadedEventStart difference with window.performance.timing.domInteractive is 0 or at least 5 microseconds]
expected: FAIL
[window.performance.timing.responseStart > 0] [window.performance.timing.responseStart > 0]
expected: FAIL expected: FAIL
[window.performance.timing.responseStart >= window.performance.timing.requestStart]
expected: FAIL
[window.performance.timing.loadEventStart >= window.performance.timing.domContentLoadedEventEnd]
expected: FAIL
[window.performance.timing.requestStart >= window.performance.timing.connectEnd]
expected: FAIL
[window.performance.timing.connectEnd >= window.performance.timing.connectStart]
expected: FAIL
[window.performance.timing.domComplete > 0]
expected: FAIL
[window.performance.timing.loadEventStart > 0]
expected: FAIL
[window.performance.timing.loadEventEnd > 0]
expected: FAIL

View file

@ -1,11 +1,5 @@
[test_timing_reload.html] [test_timing_reload.html]
type: testharness type: testharness
[loadEventStart is different after the reload.]
expected: FAIL
[domContentLoadedEventEnd is different after the reload.]
expected: FAIL
[domainLookupEnd is different after the reload.] [domainLookupEnd is different after the reload.]
expected: FAIL expected: FAIL
@ -18,15 +12,9 @@
[redirectStart is different after the reload.] [redirectStart is different after the reload.]
expected: FAIL expected: FAIL
[domComplete is different after the reload.]
expected: FAIL
[redirectEnd is different after the reload.] [redirectEnd is different after the reload.]
expected: FAIL expected: FAIL
[loadEventEnd is different after the reload.]
expected: FAIL
[connectStart is different after the reload.] [connectStart is different after the reload.]
expected: FAIL expected: FAIL
@ -54,12 +42,6 @@
[fetchStart is different after the reload.] [fetchStart is different after the reload.]
expected: FAIL expected: FAIL
[domInteractive is different after the reload.]
expected: FAIL
[domContentLoadedEventStart is different after the reload.]
expected: FAIL
[requestStart is different after the reload.] [requestStart is different after the reload.]
expected: FAIL expected: FAIL

View file

@ -6,21 +6,9 @@
[window.performance.timing.redirectStart > 0] [window.performance.timing.redirectStart > 0]
expected: FAIL expected: FAIL
[window.performance.timing.fetchStart >= window.performance.timing.redirectEnd]
expected: FAIL
[window.performance.timing.requestStart difference with window.performance.timing.fetchStart is 0 or at least 5 microseconds]
expected: FAIL
[window.performance.timing.redirectStart >= window.performance.timing.navigationStart] [window.performance.timing.redirectStart >= window.performance.timing.navigationStart]
expected: FAIL expected: FAIL
[window.performance.timing.redirectEnd >= window.performance.timing.redirectStart]
expected: FAIL
[window.performance.timing.redirectEnd difference with window.performance.timing.redirectStart is 0 or at least 5 microseconds]
expected: FAIL
[window.performance.timing.redirectStart difference with window.performance.timing.navigationStart is 0 or at least 5 microseconds] [window.performance.timing.redirectStart difference with window.performance.timing.navigationStart is 0 or at least 5 microseconds]
expected: FAIL expected: FAIL
@ -33,12 +21,6 @@
[window.performance.timing.requestStart > 0] [window.performance.timing.requestStart > 0]
expected: FAIL expected: FAIL
[window.performance.timing.fetchStart difference with window.performance.timing.redirectEnd is 0 or at least 5 microseconds]
expected: FAIL
[window.performance.timing.redirectEnd > 0] [window.performance.timing.redirectEnd > 0]
expected: FAIL expected: FAIL
[window.performance.timing.requestStart >= window.performance.timing.fetchStart]
expected: FAIL

View file

@ -3,9 +3,3 @@
[window.performance.timing.navigationStart > 0] [window.performance.timing.navigationStart > 0]
expected: FAIL expected: FAIL
[timing.redirectStart == 0 on a server redirected navigation from another domain]
expected: FAIL
[timing.redirectEnd == 0 on a server redirected navigation from another domain]
expected: FAIL

View file

@ -1,17 +1,11 @@
[webtiming-resolution.any.html] [webtiming-resolution.any.html]
expected: TIMEOUT [Verifies the resolution of performance.now() is at least 5 microseconds.]
expected: FAIL
[webtiming-resolution.any.worker.html] [webtiming-resolution.any.worker.html]
expected: TIMEOUT
[Verifies the resolution of performance.now() is at least 20 microseconds.] [Verifies the resolution of performance.now() is at least 20 microseconds.]
expected: FAIL expected: FAIL
[Verifies the resolution of entry.startTime is at least 20 microseconds.] [Verifies the resolution of entry.startTime is at least 20 microseconds.]
expected: TIMEOUT expected: TIMEOUT
[Verifies the resolution of entry.startTime is at least 5 microseconds.]
expected: TIMEOUT
[Verifies the resolution of performance.now() is at least 5 microseconds.]
expected: FAIL

View file

@ -1,4 +0,0 @@
[clear_resource_timing_functionality.html]
[No resource timing entries should be stored after clearResourceTimings.]
expected: FAIL

View file

@ -1,4 +1,5 @@
[realtimeanalyser-fft-scaling.html] [realtimeanalyser-fft-scaling.html]
expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.] [X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL expected: FAIL

View file

@ -0,0 +1,5 @@
[017.html]
expected: TIMEOUT
[origin of the script that invoked the method, about:blank]
expected: TIMEOUT

View file

@ -1,4 +1,5 @@
[import-in-moduleworker.html] [import-in-moduleworker.html]
expected: ERROR
[Base URL in module dedicated workers: import] [Base URL in module dedicated workers: import]
expected: FAIL expected: FAIL

View file

@ -1,4 +1,5 @@
[sharedworker-in-worker.html] [sharedworker-in-worker.html]
expected: ERROR
[Base URL in workers: new SharedWorker()] [Base URL in workers: new SharedWorker()]
expected: FAIL expected: FAIL

View file

@ -0,0 +1,2 @@
[Worker-constructor.html]
expected: ERROR

View file

@ -1,44 +1,55 @@
[dedicated-worker-import-data-url.any.html] [dedicated-worker-import-data-url.any.html]
type: testharness type: testharness
expected: ERROR expected: ERROR
[dedicated-worker-import-data-url] [dedicated-worker-import-data-url]
expected: FAIL expected: FAIL
[Static import.] [Static import.]
expected: TIMEOUT expected: TIMEOUT
[Nested static import.] [Nested static import.]
expected: NOTRUN expected: NOTRUN
[Static import and then dynamic import.] [Static import and then dynamic import.]
expected: NOTRUN expected: NOTRUN
[Dynamic import.] [Dynamic import.]
expected: NOTRUN expected: NOTRUN
[Nested dynamic import.] [Nested dynamic import.]
expected: NOTRUN expected: NOTRUN
[Dynamic import and then static import.] [Dynamic import and then static import.]
expected: NOTRUN expected: NOTRUN
[eval(import()).] [eval(import()).]
expected: NOTRUN expected: NOTRUN
[dedicated-worker-import-data-url.any.worker.html] [dedicated-worker-import-data-url.any.worker.html]
type: testharness type: testharness
expected: ERROR expected: TIMEOUT
[dedicated-worker-import-data-url] [dedicated-worker-import-data-url]
expected: FAIL expected: FAIL
[Static import.] [Static import.]
expected: TIMEOUT expected: TIMEOUT
[Nested static import.] [Nested static import.]
expected: NOTRUN expected: NOTRUN
[Static import and then dynamic import.] [Static import and then dynamic import.]
expected: NOTRUN expected: NOTRUN
[Dynamic import.] [Dynamic import.]
expected: NOTRUN expected: NOTRUN
[Nested dynamic import.] [Nested dynamic import.]
expected: NOTRUN expected: NOTRUN
[Dynamic import and then static import.] [Dynamic import and then static import.]
expected: NOTRUN expected: NOTRUN
[eval(import()).] [eval(import()).]
expected: NOTRUN expected: NOTRUN

View file

@ -1,11 +1,7 @@
[dedicated-worker-import-referrer.html] [dedicated-worker-import-referrer.html]
expected: CRASH
[DedicatedWorker: Referrer] [DedicatedWorker: Referrer]
expected: FAIL expected: FAIL
[Same-origin top-level module script loading with "no-referrer" referrer policy]
expected: FAIL
[Same-origin top-level module script loading with "origin" referrer policy] [Same-origin top-level module script loading with "origin" referrer policy]
expected: FAIL expected: FAIL

View file

@ -1,5 +1,5 @@
[dedicated-worker-options-credentials.html] [dedicated-worker-options-credentials.html]
expected: ERROR expected: TIMEOUT
[DedicatedWorker: WorkerOptions 'credentials'] [DedicatedWorker: WorkerOptions 'credentials']
expected: FAIL expected: FAIL

View file

@ -1,4 +1,5 @@
[005.html] [005.html]
expected: ERROR
[dedicated worker in shared worker in dedicated worker] [dedicated worker in shared worker in dedicated worker]
expected: FAIL expected: FAIL

View file

@ -1,5 +1,6 @@
[003.html] [003.html]
type: testharness type: testharness
expected: ERROR
[shared] [shared]
expected: FAIL expected: FAIL

View file

@ -6,12 +6,6 @@
[Performance marks and measures seem to be working correctly in workers] [Performance marks and measures seem to be working correctly in workers]
expected: FAIL expected: FAIL
[Can use clearMarks and clearMeasures in workers]
expected: FAIL
[performance.clearResourceTimings in workers]
expected: FAIL
[performance.setResourceTimingBufferSize in workers] [performance.setResourceTimingBufferSize in workers]
expected: FAIL expected: FAIL

View file

@ -0,0 +1,2 @@
[long-expressions-should-not-crash.html]
expected: TIMEOUT