Commit graph

6631 commits

Author SHA1 Message Date
bors-servo
e73812c106 Auto merge of #9762 - paulrouget:cocoaUpdate, r=Ms2ger
cocoa v0.2.2 -> v0.2.4

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9762)
<!-- Reviewable:end -->
2016-02-27 10:31:07 +05:30
bors-servo
8bdffa25f9 Auto merge of #9755 - jdm:handlerreturn, r=jdm
use return value of invoking event handlers to cancel the event

Rebased from #8707. Fixes #8490. We can modify the code and test as necessary whenever we make a decision about https://github.com/whatwg/html/issues/423 in the future.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9755)
<!-- Reviewable:end -->
2016-02-27 07:10:50 +05:30
bors-servo
0d7a2eee2d Auto merge of #9514 - g-k:html-input-value, r=KiChjang
HTML input value

Ready for review.

Fixes #9455.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9514)
<!-- Reviewable:end -->
2016-02-27 04:36:46 +05:30
Anthony Ramine
b8ae5897f1 Implement Element.getAttributeNames 2016-02-26 19:15:11 +01:00
João Oliveira
b60d668908 use return value of invoking event handlers to cancel the event 2016-02-26 10:17:57 -05:00
bors-servo
aaad24c531 Auto merge of #9747 - danlrobertson:handle_macro, r=Ms2ger
Use macro for boilerplate code in webdriver `handle_*`

Add a macro for the boilerplate code that appears in most of Handler's methods handling a `WebDriverScriptCommand`.

There are at least three steps that appear in most `Hande::handle_*` methods that handle a `WebDriverScriptCommand`, so I created a simple macro that generates the equivalent code.

There are pros and cons to using a macro like this. It does reduce boilerplate code, but it also can make the code harder to read. Please let me know if you have any comments!

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9747)
<!-- Reviewable:end -->
2016-02-26 17:35:43 +05:30
Paul Rouget
41f9784554 cocoa v0.2.2 -> v0.2.4 2016-02-26 10:40:43 +01:00
bors-servo
26b40afe23 Auto merge of #9757 - jdm:websocket-errors-rebase, r=jdm
Trigger WebSocket error event

Trigger a WebSocket error after receiving an invalid message from the server. Rebased from #8868. Fixes #7861.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9757)
<!-- Reviewable:end -->
2016-02-26 14:14:06 +05:30
Sam Gibson
4f736e6f7c Trigger WebSocket error event
Trigger a WebSocket error after receiving an invalid message from the server
2016-02-26 09:43:12 +01:00
Daniel Robertson
05547dce5a Macro for boilerplate code in webdriver handle_*
Add a macro for the boilerplate code that appears in most of Handler's
methods handling a WebDriverScriptCommand.
2016-02-26 03:20:10 +00:00
bors-servo
4300ba2211 Auto merge of #9717 - schuster:move-range, r=frewsxcv
Move util::range into its own crate

Fixes #9695

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9717)
<!-- Reviewable:end -->
2016-02-26 07:41:57 +05:30
Jonathan Schuster
205336bf2e Move util::range into its own crate 2016-02-25 21:06:10 -05:00
Greg Guthe
e6c31e305d Get input value IDL attribute matching spec
Refs: https://github.com/servo/servo/issues/9455
2016-02-25 18:59:34 -05:00
bors-servo
21f0e63979 Auto merge of #9754 - mbrubeck:img-metadata, r=jdm
Don't use image metadata for layout when rendering to a file

Fixes #9550. r? @jdm

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9754)
<!-- Reviewable:end -->
2016-02-26 03:51:46 +05:30
Matt Brubeck
37dd2a654d Don't use image metadata for layout when rendering to a file
PR #9208 added the ability to perform layout before an `<img>` resource is
fully loaded. However, when we are rendering to an image file for testing
purposes, we need to block until the image content is fully loaded (until
issue #9441 is fixed).

Fixes #9550.
2016-02-25 13:47:27 -08:00
bors-servo
32c97b6c8d Auto merge of #9631 - jongiddy:remove-extra-mask-byte, r=jdm
Validate MIME pattern checking

The MIME detector for a HTML file contains an additional byte in the mask.  While it doesn't hurt, it is not used in the byte matching code (since it is zipped with the `pattern` iterator).

I'm not clear how to test this within the `servo` code. The fix doesn't change any externally visible behavior. A test to validate the `ByteMatcher` structures would require the private ByteMatcher structures to be visible to the test. I could use a sub-module, as described at https://doc.rust-lang.org/book/testing.html#the-tests-module but this pattern doesn't appear anywhere else in the `servo` code.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9631)
<!-- Reviewable:end -->
2016-02-26 02:57:44 +05:30
Eli Friedman
7b671d13a0 Use presentation hints correctly for the dimensions of <img>.
Mostly straightforward; includes some extra fixes to make `<canvas>`
work the same way as `<img>` for reflow.
2016-02-25 14:04:06 -05:00
Anthony Ramine
2ed1a4ab3b Do not generate RegisterBindings::Register anymore 2016-02-25 15:56:54 +01:00
Anthony Ramine
1559f5a39f Lazily define interface objects on globals (fixes #6419) 2016-02-25 15:56:47 +01:00
Anthony Ramine
ca979e115b Cache legacy callback interface objects in proto_or_icache_array
We need them to be cached to not instantiate them multiple times with
lazy initialisation.
2016-02-25 15:15:44 +01:00
Anthony Ramine
2c4d5da866 Lazily-define standard ECMAScript classes 2016-02-25 15:15:44 +01:00
Anthony Ramine
787c4e568d Bump phf to 0.7.13 2016-02-25 15:15:44 +01:00
bors-servo
42f1712846 Auto merge of #9740 - paulrouget:mozbrowserconnected, r=jdm
Support Browser API event mozbrowserconnected

Fixes https://github.com/servo/servo/issues/9382

This new event is not yet documented. If this lands, I will add documentation to MDN.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9740)
<!-- Reviewable:end -->
2016-02-25 15:56:24 +05:30
bors-servo
b3b6f09206 Auto merge of #9742 - nox:atom-from-string, r=ecoal95
Make use of From<String> for Atom

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9742)
<!-- Reviewable:end -->
2016-02-25 08:39:44 +05:30
bors-servo
b4da844c03 Auto merge of #9679 - gmorenz:deque, r=pcwalton
Switch to external deque crate

Fixes #9539

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9679)
<!-- Reviewable:end -->
2016-02-25 07:40:49 +05:30
bors-servo
e5f3c5b6d1 Auto merge of #9708 - danlrobertson:i8623, r=KiChjang
Implement GetElementRect webdriver command: #8623

Implement the webdriver Get Element Rect command. Originally I wrote out the algorithm for [Step 7](https://w3c.github.io/webdriver/webdriver-spec.html#dfn-calculate-the-absolute-position) and then I found `GetBoundingClientRect`, and i thought it was probably best to use it instead.

As always, feedback is very welcomed!

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9708)
<!-- Reviewable:end -->
2016-02-25 05:49:03 +05:30
bors-servo
9d47b344d9 Auto merge of #9663 - pcwalton:browser-html-jank-fix, r=glennw
compositing: Stop compositing unnecessarily after each animation frame.

Instead, schedule a delayed composite after each frame of an animation.

The previous code would cause jank, because the following sequence
frequently occurred:

1. The page uses `requestAnimationFrame()` to request a frame.

2. The compositor receives the message, schedules a composite,
dispatches the rAF message to the script thread, composites, and goes to
sleep waiting for vblank (frame 1).

3. The script makes a change and sends it through the pipeline.
Eventually it gets painted and is sent to the compositor, but the
compositor is sleeping.

4. The compositor wakes up, sees the new painted content, page flips,
and goes to sleep (frame 2). Repeat from step 1.

The problem is that we have two composition frames, not just one. This
halves Web apps' framerate!

This commit fixes the problem by scheduling the composite in step 2 to
12 ms in the future. We already have this delayed-composition
functionality in the form of the scrolling timer, which I repurposed and
renamed to the "delayed composition timer" for this task. This change
gives the page 12 ms to prepare the frame, which seems to usually be
enough, especially with WebRender.

Note that simply removing the scheduled composite after rAF is not the
correct solution. If this is done, then pages that call rAF and don't
modify the page won't receive future rAFs, since the compositor will be
sleeping and won't be notified of vblank.

Fixes a bunch of jank in browser.html. The remaining jank seems to be a
problem with browser.html itself.

r? @glennw

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9663)
<!-- Reviewable:end -->
2016-02-25 03:56:02 +05:30
Patrick Walton
9b4cc41695 compositing: Stop compositing unnecessarily after each animation frame.
Instead, schedule a delayed composite after each frame of an animation.

The previous code would cause jank, because the following sequence
frequently occurred:

1. The page uses `requestAnimationFrame()` to request a frame.

2. The compositor receives the message, schedules a composite,
dispatches the rAF message to the script thread, composites, and goes to
sleep waiting for vblank (frame 1).

3. The script makes a change and sends it through the pipeline.
Eventually it gets painted and is sent to the compositor, but the
compositor is sleeping.

4. The compositor wakes up, sees the new painted content, page flips,
and goes to sleep (frame 2). Repeat from step 1.

The problem is that we have two composition frames, not just one. This
halves Web apps' framerate!

This commit fixes the problem by scheduling the composite in step 2 to
12 ms in the future. We already have this delayed-composition
functionality in the form of the scrolling timer, which I repurposed and
renamed to the "delayed composition timer" for this task. This change
gives the page 12 ms to prepare the frame, which seems to usually be
enough, especially with WebRender.

Note that simply removing the scheduled composite after rAF is not the
correct solution. If this is done, then pages that call rAF and don't
modify the page won't receive future rAFs, since the compositor will be
sleeping and won't be notified of vblank.

Fixes a bunch of jank in browser.html. The remaining jank seems to be a
problem with browser.html itself.
2016-02-24 14:06:46 -08:00
bors-servo
7f8c34ce8e Auto merge of #9706 - mrobinson:remove-parallel-display-list-building, r=pcwalton
Remove parallel display list construction

Parallel display list construction hasn't been shown to give any
performance gains. It is also incompatible with the current flat display
list implementation. Once flat display lists have landed, we can explore
possible benefits of parallel construction once again.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9706)
<!-- Reviewable:end -->
2016-02-25 02:52:45 +05:30
bors-servo
09e987b559 Auto merge of #9661 - jdm:devtools-inspector-get-layout, r=pcwalton
Completed implementation of devtools' `getLayout`.

Rebase of #7267. Fixes #3598.

This avoids all of the sketchy issues of trying to read the style data for margins from the script thread. I replaced it with a layout query that fetches the margin style properties for a given element.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9661)
<!-- Reviewable:end -->
2016-02-25 00:22:43 +05:30
benshu
0785d91ae4 Completed implementation of devtools' getLayout. 2016-02-24 13:51:47 -05:00
Paul Rouget
3ecc907767 Support Browser API event mozbrowserconnected 2016-02-24 18:45:07 +01:00
Anthony Ramine
0adfb08089 Implement From<DOMString> for Atom 2016-02-24 17:52:17 +01:00
Anthony Ramine
f7fb035188 Optimise local name cloning in Document::CreateAttribute 2016-02-24 17:52:15 +01:00
Anthony Ramine
25ae4ed093 Use atom!("error") in EventTarget::get_compiled_event_handler 2016-02-24 17:52:14 +01:00
Anthony Ramine
cc030df36e Make use of From<String> for Atom 2016-02-24 17:52:13 +01:00
bors-servo
3212d3a91e Auto merge of #9731 - paulrouget:mozbrowserRootPipelineOnly, r=jdm
allow mozbrowser only for top level windows

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9731)
<!-- Reviewable:end -->
2016-02-24 22:18:19 +05:30
Daniel Robertson
cad3115708 find_node_by_unique_id should use find
find_node_by_unique_id should use find instead of for-loop
2016-02-24 11:41:51 -05:00
Daniel Robertson
83b2388ef4 Implement GetElementRect webdriver command
Implement the webdriver Get Element Rect command
2016-02-24 11:41:42 -05:00
Anthony Ramine
50af73d1a2 Bump string_cache to 0.2.10 2016-02-24 16:47:10 +01:00
Lars Bergstrom
1423fb5a63 Pick up new webrender for doc build fixes 2016-02-24 09:32:52 -06:00
bors-servo
438b3a444b Auto merge of #9722 - mbrubeck:slow-selector, r=nox
Dirty elements whose selectors are affected by sibling changes

This fixes incremental layout of nodes that match pseudo-class selectors such as :first-child, :nth-child, :last-child, :first-of-type, etc.  Fixes #8191 and other intermittent layout bugs.

This code is based on the following flags from Gecko:
https://hg.mozilla.org/mozilla-central/file/e1cf617a1f28/dom/base/nsINode.h#l134

Depends on servo/rust-selectors#71. r? @SimonSapin

There are a couple of TODO items in this commit, but I'd appreciate feedback on the general approach before I finish it up.  (Also, if someone who knows more than I do could give some advice about atomic orderings...)

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9722)
<!-- Reviewable:end -->
2016-02-24 18:55:39 +05:30
Saurav Sachidanand
52059740e3 Inline functions HTMLCollection::get_length and get_item 2016-02-24 17:41:07 +05:30
Matt Brubeck
973918967f Dirty elements whose selectors are affected by sibling changes
This fixes incremental layout of nodes that match pseudo-class selectors such
as :first-child, :nth-child, :last-child, :first-of-type, etc.

* Fixes #8191
* Fixes #9063
* Fixes #9303
* Fixes #9448

This code is based on the following flags from Gecko:
https://hg.mozilla.org/mozilla-central/file/e1cf617a1f28/dom/base/nsINode.h#l134
2016-02-23 17:31:38 -08:00
Corey Farwell
83b22fd97f Update webrender crate refs to reflect ownership change.
Also updated the 'webrender' ref to point to the latest commit.
2016-02-23 19:49:50 -05:00
bors-servo
d85ee09bc7 Auto merge of #9729 - Ms2ger:bc-option, r=jdm
Stop returning an Option from Window::browsing_context.

A Window always has a WindowProxy; the only reason it's wrapped in a nullable
field is the order in which those objects are created.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9729)
<!-- Reviewable:end -->
2016-02-24 01:21:01 +05:30
Paul Rouget
322e71627c allow mozbrowser only for top level windows 2016-02-23 20:31:56 +01:00
bors-servo
7840aae1b9 Auto merge of #9660 - servo:websocketup, r=jdm
Update websocket

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9660)
<!-- Reviewable:end -->
2016-02-23 23:51:54 +05:30
bors-servo
7192495e1a Auto merge of #9067 - nox:unenumerable-named-properties, r=jdm
Make NamedNodeMap's named properties unenumerable

https://dom.spec.whatwg.org/#dom-htmlcollection-item

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9067)
<!-- Reviewable:end -->
2016-02-23 22:58:30 +05:30
Anthony Ramine
86f3f37950 Always implement getOwnEnumerablePropertyKeys
According to JSProxy.h, without this the default implementation calls
ownPropertyKeys and filters out the unenumerable properties. We know when such
things exist so we don't need to do that.
2016-02-23 17:23:56 +01:00