Commit graph

3774 commits

Author SHA1 Message Date
Corey Farwell
575b3c3d4b Implement 'width' IDL attribute on <table> 2015-11-09 23:31:25 -05:00
bors-servo
f39faaf994 Auto merge of #8227 - asajeffrey:versioned_dom, r=eefriedman
Versioned dom

This PR adds versioning to the DOM. There are now node.get_version and node.get_descendent_version methods that return a counter that is bumped when the node is dirtied. This is used to implement cache invalidation for caching HTMLCollection state. Caching HTMCollections gets a 1000x speedup in the Dromaeo DOM query tests.

Addresses https://github.com/servo/servo/issues/6901, https://github.com/servo/servo/issues/3381 and https://github.com/servo/servo/issues/1916.

Replaces PR https://github.com/servo/servo/pull/6927.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8227)
<!-- Reviewable:end -->
2015-11-10 01:11:23 +05:30
Corey Farwell
ee0800abe9 Implement <hr> 'color' attribute 2015-11-08 18:34:27 -05:00
bors-servo
7ff3a17524 Auto merge of #8039 - tschneidereit:script-owns-stylesheets, r=jdm
Move Stylesheet loading and ownership from the layout task into HTML elements

Stylesheets for `HTMLLinkElement`s are now loaded by the resource task, triggered by the element in question. Stylesheets are owned by the elements they're associated with, which can be `HTMLStyleElement`, `HTMLLinkElement`, and `HTMLMetaElement` (for `<meta name="viewport">).

Additionally, the quirks mode stylesheet (just as the user and user agent stylesheets a couple of commits ago), is implemented as a lazy static, loaded once per process and shared between all documents.

This all has various nice consequences:
 - Stylesheet loading becomes a non-blocking operation.
 - Stylesheets are removed when the element they're associated with is removed from the document.
 - It'll be possible to implement the CSSOM APIs that require direct access to the stylesheets (i.e., ~ all of them).
 - Various subtle correctness issues are fixed.

One piece of interesting follow-up work would be to move parsing of external stylesheets to the resource task, too. Right now, it happens in the link element once loading is complete, so blocks the script task. Moving it to the resource task would probably be fairly straight-forward as it doesn't require access to any external state.

Depends on #7979 because without that loading stylesheets asynchronously breaks lots of content.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8039)
<!-- Reviewable:end -->
2015-11-08 01:11:54 +05:30
Till Schneidereit
543703e3d8 Move Stylesheet loading and ownership from the layout task into HTML elements
Stylesheets for `HTMLLinkElement`s are now loaded by the resource task, triggered by the element in question. Stylesheets are owned by the elements they're associated with, which can be `HTMLStyleElement`, `HTMLLinkElement`, and `HTMLMetaElement` (for `<meta name="viewport">).

Additionally, the quirks mode stylesheet (just as the user and user agent stylesheets a couple of commits ago), is implemented as a lazy static, loaded once per process and shared between all documents.

This all has various nice consequences:
 - Stylesheet loading becomes a non-blocking operation.
 - Stylesheets are removed when the element they're associated with is removed from the document.
 - It'll be possible to implement the CSSOM APIs that require direct access to the stylesheets (i.e., ~ all of them).
 - Various subtle correctness issues are fixed.

One piece of interesting follow-up work would be to move parsing of external stylesheets to the resource task, too. Right now, it happens in the link element once loading is complete, so blocks the script task. Moving it to the resource task would probably be fairly straight-forward as it doesn't require access to any external state.
2015-11-07 18:11:29 +01:00
bors-servo
3c794d0076 Auto merge of #8296 - notriddle:svg_title_prepend, r=nox
Prepend, rather than append, SVG title elements.

Fixes #8164

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8296)
<!-- Reviewable:end -->
2015-11-07 14:13:42 +05:30
bors-servo
65c3185b20 Auto merge of #8341 - bholley:state_hint_selector_ordering, r=pcwalton
Fix restyle hints to handle non-last psuedo-selectors, and track pristine state values rather than changesets

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8341)
<!-- Reviewable:end -->
2015-11-07 09:53:19 +05:30
bors-servo
8c0f0a22d2 Auto merge of #8370 - Ms2ger:update-js, r=jdm
Update js.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8370)
<!-- Reviewable:end -->
2015-11-07 08:11:19 +05:30
bors-servo
faf2f34772 Auto merge of #8343 - servo:custom-properties, r=mbrubeck
Fix some custom properties bugs

Fix #7767.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8343)
<!-- Reviewable:end -->
2015-11-07 06:02:36 +05:30
Alan Jeffrey
237ddc3c0c Caching HTMCollections.
We cache the state of any live HTMLCollection, keeping track of

a) the optional cached length of the collection, and
b) an optional cursor into the collection (a node in the collection plus its index).

The cache is invalidated based on the version number of the node.

We use these caches for speeding up random access to the collection.
When returning coll[i], we search from the cursor, if it exists,
and otherwise search from the front of the collection.
In particular, both a forward for-loop and a backward for-loop
through the collection will now have each access take O(1)
time rather than O(n) time.

This gets 1000x speed-up on the relevant Dromaeo DOM query tests.
2015-11-06 17:23:17 -06:00
Alan Jeffrey
64a50bcf56 Added versioning to DOM nodes.
There is now an inclusive_descendants_version field of each node, which
increases each time the node, or any of its descendants, is dirtied.
This can be used for cache invalidation, by caching a version number
and comparting the current version number against the cached version number.
2015-11-06 17:23:16 -06:00
bors-servo
33bbed7dc1 Auto merge of #8359 - ben0x539:js-url-query-fragment, r=eefriedman
Append query string + fragment to javascript: url.

When loading a URL whose scheme is javascript, we should do what
https://html.spec.whatwg.org/multipage/browsers.html#javascript-protocol
says and append the URL's query and fragment components to the scheme
data, as well as percent- and utf-8-decode the whole thing, before
evaluating it as javascript.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8359)
<!-- Reviewable:end -->
2015-11-07 04:03:35 +05:30
Simon Sapin
3973085cb6 Fix double /**//**/ 2015-11-06 23:01:55 +01:00
Simon Sapin
40e6cc118e Detect var() in shorthand declarations. 2015-11-06 23:01:54 +01:00
bors-servo
c54558d5ef Auto merge of #8315 - asajeffrey:remove_child_dirty_parent, r=pcwalton
Dirty parent when removng a child node.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8315)
<!-- Reviewable:end -->
2015-11-07 02:04:28 +05:30
Ms2ger
2a509e4fa2 Update js. 2015-11-06 18:38:07 +01:00
Benjamin Herr
066867eb86 wpt for javascript urls with queries and fragments
Expected to FAIL right now because contentDocument in iframes with
src="javascript:..." wrongly returns null. Passes in Firefox though!
2015-11-06 18:15:28 +01:00
Michael Howell
71c5d1764a Prepend, rather than append, SVG title elements.
Fixes #8164
2015-11-06 09:34:42 -07:00
Jitendra Jain
ed809a60bf Implement the overrideMimeType method for XMLHttpRequest 2015-11-05 22:19:24 -05:00
bors-servo
45f07ec320 Auto merge of #8216 - akumar21NCSU:master, r=jdm
M1502: Improve HTTP monitoring devtool support

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8216)
<!-- Reviewable:end -->
2015-11-05 23:01:48 +05:30
Ms2ger
e4034597a2 Move img_simple.html to wpt reftests. 2015-11-05 16:49:02 +01:00
Ms2ger
31476b77b6 Move img_block_maxwidth_a.html and img_block_maxwidth_b.html to wpt reftests. 2015-11-05 16:34:37 +01:00
Ms2ger
41a9502688 Move image_rendering_auto_a.html and image_rendering_pixelated_a.html to wpt reftests. 2015-11-05 16:17:27 +01:00
Ms2ger
0cf602f7d8 Move font_size.html to wpt reftests. 2015-11-05 16:01:23 +01:00
Ms2ger
5b35ee09d3 Move floated_negative_margins_a.html to wpt reftests. 2015-11-05 15:52:11 +01:00
Ms2ger
c8f0613113 Move flex_row_direction.html to wpt reftests. 2015-11-05 15:30:10 +01:00
Ms2ger
9623ed54d0 Move flex_column_direction.html to wpt reftests. 2015-11-05 13:35:01 +01:00
Ms2ger
4add7d23f8 Move fixed_width_overrides_child_intrinsic_width_a.html to wpt reftests. 2015-11-05 13:24:31 +01:00
Simon Sapin
69d398f29a Update to rust-cssparser 0.4.0 2015-11-05 08:57:01 +01:00
Abhishek Kumar
de4f8ea4e6 Improve HTTP monitoring devtool support 2015-11-05 00:17:24 -05:00
Abhishek Kumar
b7de946205 Check in for task 1,4 and 5
Adding pipelineID to httpresponse message, clearner code for task1

Commit for Refactored task

Unit tests

Removing extra whitespaces.

Removing extra whitespaces.

Removing tabs whitespaces

Making Code tidier.

Style issues Fix

Test-tidy Fixes
2015-11-05 00:17:24 -05:00
bors-servo
021f441d24 Auto merge of #8218 - nikkisquared:master, r=eefriedman
I'm working on resolving https://github.com/servo/servo/issues/8213 as per the spec online and feedback in the servo channel. Note that currently I cannot build (and thus test) my code, so this is a bit of a rough first draft. I'd still like feedback on my progress, and I hope that there is another way for my code to be tested.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8218)
<!-- Reviewable:end -->
2015-11-05 10:24:27 +05:30
Nikki
1d280289f1 Fixes #8213: Implement Blob variant of WebSocket.send() 2015-11-04 21:42:10 -07:00
Bobby Holley
d89816bb5f Consider all the pseudo-classes in a given compound selector when computing restyle hints, not just the rightmost one.
For some reason when I wrote this code I mixed up the rules for pseudo-elements
(rightmost, maximum of one) with those of pseudo-classes (which have no such
restriction). This caused a correctness issue which can be demonstrated with the
associated reftest modification.
2015-11-04 19:01:50 -08:00
Bobby Holley
77c253fd43 Load web fonts synchronously during wpt. 2015-11-04 19:01:49 -08:00
bors-servo
dc159d055c Auto merge of #8322 - mrobinson:iframe-resizing, r=pcwalton
Properly resize iframe root layers

When a layer containing an iframe changes, we also need to resize the
root layer of the subpage. This ensures that content from the child
layer tree is masked to the new size.

Fixes #8301.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8322)
<!-- Reviewable:end -->
2015-11-05 02:23:43 +05:30
bors-servo
b39035c60e Auto merge of #8243 - eefriedman:canvas-width-height, r=Ms2ger
Simplify implementation of '<canvas>' 'width' and 'height' attributes.

Strictly speaking, this affects correctness for extremely large width and height values... but that's unlikely to matter in practice.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8243)
<!-- Reviewable:end -->
2015-11-04 23:22:09 +05:30
Alan Jeffrey
558b0b6c29 Updated test expectations.
The WPT CSS tests block-in-inline-remove-000.htm and block-in-inline-remove-002.htm.ini now pass.
2015-11-04 10:14:49 -06:00
bors-servo
37201e3807 Auto merge of #8323 - mrobinson:wpt-ui-timeout, r=jgraham
Print process output for TIMEOUT status in WPT UI

Tests can time out due to script or runtime errors, which are typically
reported via the Servo process output. Including process output for tests
timing out makes it easier to understand these problems.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8323)
<!-- Reviewable:end -->
2015-11-04 20:56:15 +05:30
bors-servo
64caba7284 Auto merge of #8328 - mskrzypkows:missing_css_style, r=Ms2ger
Add missing css style for image_rendering_auto_a.html

There was a missing image position in the test which caused potentially 
wrong comparision of images in basic.list:
!= image_rendering_auto_a.html image_rendering_pixelated_a.html

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8328)
<!-- Reviewable:end -->
2015-11-04 18:59:58 +05:30
bors-servo
df4e614179 Auto merge of #8321 - servo:reset-zero, r=Ms2ger
counter-reset defaults to 0, not 1.

https://drafts.csswg.org/css2/generate.html#counters

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8321)
<!-- Reviewable:end -->
2015-11-04 17:52:23 +05:30
Ms2ger
6b75078503 Make DOMString a newtype around String, rather than a typedef.
This should make it somewhat easier to experiment with alternative
representations in the future. To reduce churn, this commit leaves the String
field public, though.

Also, this will allow us to use the default String type to represent the IDL
USVString type, which explicitly forbids unpaired surrogates, ans as such is
a better match to the Rust String type.
2015-11-04 12:09:11 +01:00
Ms2ger
dab3926622 Create a helper function to create TextInput structs in its unit test. 2015-11-04 12:09:09 +01:00
bors-servo
b098339f92 Auto merge of #8320 - frewsxcv:expand-tidy, r=metajack
Expand tidy to lint parts of /tests/wpt

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8320)
<!-- Reviewable:end -->
2015-11-04 15:43:28 +05:30
Simon Sapin
80dbd29528 counter-reset defaults to 0, not 1. 2015-11-04 10:55:16 +01:00
Maciej Skrzypkowski
64dbc28927 Add missing css style for image_rendering_auto_a.html
There was a missing image position in the test which caused potentially 
wrong comparision of images in basic.list:
!= image_rendering_auto_a.html image_rendering_pixelated_a.html
2015-11-04 10:07:02 +01:00
David Zbarsky
d95ca55f26 Allow retrieving width/height for non-positioned elements 2015-11-03 20:13:09 -08:00
bors-servo
ca56ebbb09 Auto merge of #8306 - glennw:fix-abd-overflow, r=pcwalton
Change overflow calculation to be calculated after compute_absolute_position.

Also include absolutely positioned elements in the overflow rect calculation.

Fixes #7797.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8306)
<!-- Reviewable:end -->
2015-11-04 08:15:58 +05:30
bors-servo
86e3add8fd Auto merge of #8266 - mrobinson:stacking-context-mix, r=pcwalton
Mix stacking contexts into the positioned content list

Sometimes positioned content needs to be layered on top of stacking
contexts. The layer synthesis code can do this, but the current design
prevents it because stacking contexts are stored in a separate struct
member. In order to preserve tree order, mix stacking contexts into the
positioned content list, by adding a new StackingContextClass
DisplayItem. Such items do not have a base DisplayItem.

In some ways this simplifies the code, because we no longer have to
have a separate code path in the StackingContextLayerCreator.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8266)
<!-- Reviewable:end -->
2015-11-04 07:22:43 +05:30
Martin Robinson
c1a38e240a Mix stacking contexts into the positioned content list
Sometimes positioned content needs to be layered on top of stacking
contexts. The layer synthesis code can do this, but the current design
prevents it because stacking contexts are stored in a separate struct
member. In order to preserve tree order, mix stacking contexts into the
positioned content list, by adding a new StackingContextClass
DisplayItem. Such items do not have a base DisplayItem.

In some ways this simplifies the code, because we no longer have to
have a separate code path in the StackingContextLayerCreator.

Fixes #7779.
Fixes #7983.
Fixes #8122.
Fixes #8310.
2015-11-03 17:47:39 -08:00