aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFernando Jiménez Moreno <ferjmoreno@gmail.com>2018-12-12 17:08:36 +0100
committerFernando Jiménez Moreno <ferjmoreno@gmail.com>2018-12-12 18:08:40 +0100
commit881889824053cf3892c30e6b66a29a1720781dae (patch)
tree03515756af4ce7871d89044ec2faa9a5514a1f23
parent707b490c0f1d5f09ac481ae903e349dd2ddd97c5 (diff)
downloadservo-881889824053cf3892c30e6b66a29a1720781dae.tar.gz
servo-881889824053cf3892c30e6b66a29a1720781dae.zip
Do not move to HaveEnoughData state if no media data is fetched from the network
-rw-r--r--components/script/dom/htmlmediaelement.rs12
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/media-elements/loading-the-media-resource/load-events-networkState.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-insert-into-iframe.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-pause-networkState.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-remove-from-document-networkState.html.ini4
5 files changed, 8 insertions, 20 deletions
diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs
index 15d0090cba7..f843554190a 100644
--- a/components/script/dom/htmlmediaelement.rs
+++ b/components/script/dom/htmlmediaelement.rs
@@ -1528,6 +1528,8 @@ struct HTMLMediaElementContext {
resource_timing: ResourceFetchTiming,
/// url for the resource
url: ServoUrl,
+ /// Amount of data fetched.
+ bytes_fetched: usize,
}
// https://html.spec.whatwg.org/multipage/#media-data-processing-steps-list
@@ -1592,8 +1594,9 @@ impl FetchResponseListener for HTMLMediaElementContext {
return;
}
- let elem = self.elem.root();
+ self.bytes_fetched += payload.len();
+ let elem = self.elem.root();
// Push input data into the player.
if let Err(e) = elem.player.push_data(payload) {
eprintln!("Could not push input data to player {:?}", e);
@@ -1617,14 +1620,14 @@ impl FetchResponseListener for HTMLMediaElementContext {
let elem = self.elem.root();
if self.ignore_response {
// An error was received previously, skip processing the payload
- // and notify the media backend that we are done pushing data.
+ // and notify the media backend that we are done pushing data.
if let Err(e) = elem.player.end_of_stream() {
warn!("Could not signal EOS to player {:?}", e);
}
return;
}
- if status.is_ok() {
+ if status.is_ok() && self.bytes_fetched != 0 {
if elem.ready_state.get() == ReadyState::HaveNothing {
// Make sure that we don't skip the HaveMetadata and HaveCurrentData
// states for short streams.
@@ -1711,7 +1714,8 @@ impl HTMLMediaElementContext {
next_progress_event: time::get_time() + Duration::milliseconds(350),
ignore_response: false,
resource_timing: ResourceFetchTiming::new(ResourceTimingType::Resource),
- url: url,
+ url,
+ bytes_fetched: 0,
}
}
}
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/media-elements/loading-the-media-resource/load-events-networkState.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/media-elements/loading-the-media-resource/load-events-networkState.html.ini
deleted file mode 100644
index 95be7126728..00000000000
--- a/tests/wpt/metadata/html/semantics/embedded-content/media-elements/loading-the-media-resource/load-events-networkState.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[load-events-networkState.html]
- [NETWORK_NO_SOURCE]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-insert-into-iframe.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-insert-into-iframe.html.ini
deleted file mode 100644
index dd5f01686e9..00000000000
--- a/tests/wpt/metadata/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-insert-into-iframe.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[resource-selection-invoke-insert-into-iframe.html]
- [NOT invoking resource selection by inserting into other document with src set]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-pause-networkState.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-pause-networkState.html.ini
deleted file mode 100644
index 80becaced04..00000000000
--- a/tests/wpt/metadata/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-pause-networkState.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[resource-selection-invoke-pause-networkState.html]
- [NOT invoking resource selection with pause() when networkState is not NETWORK_EMPTY]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-remove-from-document-networkState.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-remove-from-document-networkState.html.ini
deleted file mode 100644
index cbd728cd5fd..00000000000
--- a/tests/wpt/metadata/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-remove-from-document-networkState.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[resource-selection-invoke-remove-from-document-networkState.html]
- [NOT invoking resource selection with implicit pause() when networkState is not NETWORK_EMPTY]
- expected: FAIL
-