Commit graph

8329 commits

Author SHA1 Message Date
bors-servo
1652fe2a91
Auto merge of #21923 - est31:master, r=ferjm
🐈🐈🐈 Implement basic <source> take-first-then-fail algo for HtmlMediaElement

The spec has a complicated algorithm for selecting a <source>
element among multiple <source> children of a HtmlMediaElement
where it loops over all of them, tries each and takes the first
where "everything works out".

This PR implements a much simpler and restricted approach by
just taking the first <source> child, and if that fails,
failing altogether, without looking at any further children.

This is an improvement over the current status and makes gifv
items on imgur playable, although it doesn't mean full <source>
support.

See it in action: https://i.imgur.com/WoEhYj3.gifv

<!-- 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
- [ ] These changes fix #__ (github issue number if applicable).

<!-- Either: -->
- [X] There are tests for these changes OR
- [ ] These changes do not require tests because _____

<!-- 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. -->

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21923)
<!-- Reviewable:end -->
2018-10-16 01:23:08 -04:00
Derek Guenther
1538587f2f Update document.open to latest spec 2018-10-15 20:07:40 -05:00
Pyfisch
c8619424f2 Minor keyboard updates
Support combined character input from winit.
Make use of utility methods from keyboard-types.
Remove prinatable attribute of KeyboardEvent.
2018-10-13 20:30:30 +02:00
bors-servo
e4657c1496
Auto merge of #21931 - jdm:reload-images, r=emilio
Make layout use available image data before querying the image cache.

These changes make layout more efficient for any page which contains images that have already loaded, since it does not require synchronously querying the image cache thread for each image present. It also makes reloading a page actually display the images that are already in the image cache.

---
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #21919
- [x] There are tests for these changes

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21931)
<!-- Reviewable:end -->
2018-10-13 07:56:11 -04:00
bors-servo
a9eaed44d5
Auto merge of #21927 - Eijebong:unicode_serialization, r=jdm
Remove Origin::unicode_serialization

Fixes #20701

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21927)
<!-- Reviewable:end -->
2018-10-12 21:57:34 -04:00
Josh Matthews
49d2ea4f74 Make layout use available image data before querying the image cache. 2018-10-12 21:55:09 -04:00
bors-servo
fa94fc7146
Auto merge of #21922 - Eijebong:storage, r=SimonSapin
Add support for StorageEvent.initstorageevent()

Fixes #21874

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21922)
<!-- Reviewable:end -->
2018-10-12 14:16:07 -04:00
bors-servo
69e5243810
Auto merge of #21856 - zcorpan:zcorpan/remove-td-th-interfaces, r=jdm
Remove the HTMLTable{Header,Data}CellElement interfaces

Fixes #17222.

<!-- Please describe your changes on the following line: -->
This removes the `HTMLTableHeaderCellElement` and `HTMLTableDataCellElement` interfaces and uses the `HTMLTableCellElement` interface for both `th` and `td` elements, as per the spec.

---
<!-- 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 #17222.

<!-- Either: -->
- [X] There are tests for these changes OR
- [ ] These changes do not require tests because _____

<!-- 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. -->

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21856)
<!-- Reviewable:end -->
2018-10-12 09:30:41 -04:00
est31
af0f7db909 Implement basic <source> support for HtmlMediaElement
The spec has a complicated algorithm for selecting a <source>
element among multiple <source> children of a HtmlMediaElement
where it loops over all of them, tries each and takes the first
where "everything works out".

This commit implements a much simpler and restricted approach by
just taking the first <source> child, and if that fails,
failing altogether, without looking at any further children.

This is an improvement over the current status and makes gifv
items on imgur playable, although it doesn't mean full <source>
support.
2018-10-12 15:29:57 +02:00
bors-servo
5f463d3c97
Auto merge of #21911 - servo:webgl, r=jdm
Simplify ctx.drawImage a bit

There is no need to swap between RGBA and BGRA twice.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21911)
<!-- Reviewable:end -->
2018-10-12 04:45:11 -04:00
Bastien Orivel
a97ba4f57d Remove Origin::unicode_serialization
Fixes #20701
2018-10-12 10:25:03 +02:00
Manish Goregaokar
40641ac8a4 More accurate names for .started and .stopped 2018-10-11 14:28:05 -07:00
Bastien Orivel
5347e25d1a Add support for StorageEvent.initstorageevent()
Fixes #21874
2018-10-11 22:17:46 +02:00
Fernando Jiménez Moreno
091ad49d68 Allow reusing AudioBuffers 2018-10-11 19:27:21 +02:00
Anthony Ramine
bb2101f540 Simplify ctx.drawImage a bit
There is no need to swap between RGBA and BGRA twice.
2018-10-11 15:46:42 +02:00
bors-servo
ddcb72f750
Auto merge of #21906 - Manishearth:minor-webaudio-fixes, r=ferjm
Minor WebAudio fixes

Stuff I discovered whilst working on https://github.com/servo/media/pull/148

r? @ferjm

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21906)
<!-- Reviewable:end -->
2018-10-11 08:46:18 -04:00
Manish Goregaokar
600f997a51 Increase webaudio sample rate threshold to match firefox 2018-10-10 17:32:12 -07:00
Manish Goregaokar
ceb2cd2279 Handle case when OfflineAudioContext doesn't receive all the buffers 2018-10-10 16:29:43 -07:00
chansuke
7b3cf27c69 Add task source for media element 2018-10-10 22:15:37 +09:00
bors-servo
7a88a2e28a
Auto merge of #21877 - servo:webgl, r=jdm
Improve some byte-swap and premultiply operations

<!-- Reviewable:start -->
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21877)
<!-- Reviewable:end -->
2018-10-09 20:15:40 -04:00
Anthony Ramine
6c469b90b1 Share some code between 2D canvas and WebGL 2018-10-09 14:57:02 +02:00
bors-servo
3b153af49c
Auto merge of #21543 - ceyusa:wip-player, r=<try>
Add <audio> and <video> player backends

These patches enables audio and video playing inside Servo.

It is bit hackish way to enable it, thus the purpose of this pull request is for an early request for comments.

It is tested with the current servo-media GStreamer backend in Linux.

~~The produced layout is not correct, since the elements after the video seems to be stacked behind, and the same with the scrolling bars.~~

~~There is no JavaScript interface yet~~, neither controls.

---
<!-- 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 #6711

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21543)
<!-- Reviewable:end -->
2018-10-09 04:15:18 -04:00
bors-servo
552af0043a
Auto merge of #21785 - sumit0190:new_markasdirty, r=jdm
Add framebuffer check for mark_as_dirty, #21691

<!-- Please describe your changes on the following line: -->
Check `bound_framebuffer` in each `mark_as_dirty` call, so that we don't dirty the canvas if we don't have a bound framebuffer.

---
<!-- 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 #21691  (github issue number if applicable).

<!-- Either: -->
- [ ] There are tests for these changes OR
- [X] These changes do not require tests because there isn't a direct way to test it (yet).

<!-- 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. -->

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21785)
<!-- Reviewable:end -->
2018-10-08 21:45:55 -04:00
Fernando Jiménez Moreno
11ac049d27 Make sure we do not skip the HaveMetadata state. Fixes a bunch of tests 2018-10-08 16:12:04 +02:00
Fernando Jiménez Moreno
6b0acc9cd8 Handle Player errors 2018-10-08 16:12:04 +02:00
Fernando Jiménez Moreno
0db628028a Update servo-media: handle decoder errors and use safer/nicer player API 2018-10-08 16:12:04 +02:00
Fernando Jiménez Moreno
e31339245c Move player setup to common path, deal with setup error and clean debug msgs 2018-10-08 16:12:04 +02:00
Víctor Manuel Jáquez Leal
59d8c95b23 Network EOF does't imply media processing EOS
Since media processing is highly asynchronous, there is no need to
match one event with the other. Then error handling is done when
the player emits the EOS event.

The have_metadata attribute is not required anymore.
2018-10-08 16:12:03 +02:00
Fernando Jiménez Moreno
1c92240310 Fix HAVE_METADATA and HAVE_CURRENT_DATA state transitions 2018-10-08 16:12:03 +02:00
Fernando Jiménez Moreno
dba61ad1df Do not set metadata until we have enough data 2018-10-08 16:12:03 +02:00
Fernando Jiménez Moreno
5bbd09769c Set input size 2018-10-08 16:12:03 +02:00
Fernando Jiménez Moreno
50582f1548 Rustfmt and make tidy happy 2018-10-08 16:12:03 +02:00
Fernando Jiménez Moreno
f4ba7e503b Media element duration param 2018-10-08 16:12:03 +02:00
Fernando Jiménez Moreno
6904535865 videoWidth and videoHeight params 2018-10-08 16:12:02 +02:00
Fernando Jiménez Moreno
da0e92d7f8 Cancel fetch in some media data processing steps 2018-10-08 16:12:02 +02:00
Fernando Jiménez Moreno
b656ae195f Player pause 2018-10-08 16:12:02 +02:00
Fernando Jiménez Moreno
8fd9b72eb7 Add show poster flag 2018-10-08 16:12:02 +02:00
Fernando Jimenez Moreno
468c59a217 Abort in-progress fetching process during load algorithm 2018-10-08 16:12:02 +02:00
Fernando Jiménez Moreno
c1bd551b11 Clarify some FIXMEs and bail out if we fail pushing data to player 2018-10-08 16:12:02 +02:00
Fernando Jiménez Moreno
3fbeb398d4 Revert import style format 2018-10-08 16:12:02 +02:00
Fernando Jiménez Moreno
72b1df343e Move unsafe_no_jsmanaged_fields to trace 2018-10-08 16:12:01 +02:00
Fernando Jiménez Moreno
8c40ef459b Do not share entire FrameRenderer with layout, only current frame 2018-10-08 16:12:01 +02:00
Fernando Jiménez Moreno
1f406ef0a0 Player does not need to go inside a mutexed Arc 2018-10-08 16:12:01 +02:00
Víctor Manuel Jáquez Leal
da5d1d462f dom: add media_data() method to LayoutDom implementation 2018-10-08 16:12:00 +02:00
Víctor Manuel Jáquez Leal
74a9edfed3 dom: media: implement LayoutHTMLMediaElementHelpers trait for LayoutDom 2018-10-08 16:12:00 +02:00
Víctor Manuel Jáquez Leal
524750f41f dom: framerenderer: implement HTMLMediaFrameSource trait for MediaFrameRenderer 2018-10-08 16:12:00 +02:00
Víctor Manuel Jáquez Leal
6e3c2fe41a dom: add mediaframewebrenderer 2018-10-08 16:11:59 +02:00
Víctor Manuel Jáquez Leal
781b3b712b Provide webrender_api::RenderApiSender to ScriptThread and DOM Window
This will allow the HTMLMediaElement later to get a handle to the
RenderApi for rendering video frames.

At a later time, all media handling should be moved to its own
thread/process that is communicated with via IPC. At that point this
can be removed again.

Original-patch-by: Sebastian Dröge <sebastian@centricular.com>
2018-10-08 16:11:59 +02:00
Víctor Manuel Jáquez Leal
77c7eda0bf HACK: don't call media_source_failure_steps when eos
Because gstreamer's appsrc queue might be big enough to swallow
the whole video holding the metadata extraction until EOS.
2018-10-08 16:11:59 +02:00
Víctor Manuel Jáquez Leal
ce76b5780a dom: htmlmediaelement: add initial player bits
Also removes the usage of audio-video-metadata crate (?)
2018-10-08 16:11:59 +02:00