Commit graph

5822 commits

Author SHA1 Message Date
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
bors-servo
d8df028197 Auto merge of #8404 - eefriedman:misc-attributes, r=nox
Misc cleanup for DOM attributes

No functional change; just cleanups related to parsing attributes.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8404)
<!-- Reviewable:end -->
2015-11-10 00:32:24 +05:30
Eli Friedman
af78173243 Move more unsafe layout calls onto LayoutJS. 2015-11-09 10:47:38 -08:00
Eli Friedman
5293afc122 Move unsafe layout calls onto LayoutJS. 2015-11-09 10:47:37 -08:00
bors-servo
eda59fdd69 Auto merge of #8405 - wenderen:8402-replace-load-whole-resource, r=Ms2ger
replace use of load_whole_resource in net/image_cache_task.rs with Fi…

…le::open

Fixes #8402.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8405)
<!-- Reviewable:end -->
2015-11-09 20:56:49 +05:30
rohan.prinja
51012d17c1 replace use of load_whole_resource in net/image_cache_task.rs with File::open
don't ignore read_to_end's return value
2015-11-10 00:09:17 +09:00
bors-servo
f74754f582 Auto merge of #8175 - benschulz:set-timeout-panic, r=jdm
Fixed panic in ActiveTimers.set_timeout_or_interval.

`ActiveTimers.set_timeout_or_interval` asserts that the pipeline is not currently frozen. Apparently that is too strict. When pending network requests complete after a pipeline is frozen, scripts may be executed and a timer scheduled.

With these changes scheduling a timer while the pipeline is frozen behaves as if the timer was scheduled at the time the pipeline was frozen.

To reproduce the panic
 1. `./mach run -r http://google.com`,
 2. immediately click on any link and
 3. wait for the panic.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8175)
<!-- Reviewable:end -->
2015-11-09 20:18:38 +05:30
Ms2ger
1919e19633 Move viewport_size from LayoutTaskData to LayoutTask. 2015-11-09 09:04:05 +01:00
Ms2ger
dd920a06f3 Move epoch from LayoutTaskData to LayoutTask. 2015-11-09 09:04:04 +01:00
Ms2ger
4c3038f378 Pass the constellation_chan to animation::update_animation_state directly. 2015-11-09 09:04:03 +01:00
Ms2ger
c469d09543 Move running_animations from LayoutTaskData to LayoutTask. 2015-11-09 09:04:02 +01:00
Ms2ger
ee2b77e8f5 Move visible_rects from LayoutTaskData to LayoutTask. 2015-11-09 09:04:02 +01:00
Ms2ger
e8f31f2ed7 Move root_flow from LayoutTaskData to LayoutTask. 2015-11-09 09:04:01 +01:00
Ms2ger
53da53ef53 Move outstanding_web_fonts from LayoutTaskData to LayoutTask. 2015-11-09 09:04:00 +01:00
Ms2ger
5e4039d328 Move new_animations_receiver from LayoutTaskData to LayoutTask. 2015-11-09 09:03:59 +01:00
Ms2ger
604d1e8400 Move new_animations_sender from LayoutTaskData to LayoutTask. 2015-11-09 09:03:58 +01:00
Ms2ger
bdfa5fe804 Move generation from LayoutTaskData to LayoutTask. 2015-11-09 09:03:57 +01:00
Ms2ger
880fb9be0b Remove LayoutTaskData::image_cache_task. 2015-11-09 09:03:57 +01:00
Ms2ger
be178c0e5e Remove unused RwData arguments from LayoutTask::exit_now and LayoutTask::prepare_to_exit. 2015-11-09 09:03:56 +01:00
Ms2ger
dcea03c2b4 Move parallel_traversal from LayoutTaskData to LayoutTask. 2015-11-09 09:03:55 +01:00
Ms2ger
49691c1638 Make LayoutTask::solve_constraints_parallel a static method.
This matches LayoutTask::solve_constraints, and will be necessary when we
borrow parallel_traversal directly from the LayoutTask.
2015-11-09 09:03:54 +01:00
Ms2ger
cc1b7acbe6 Make LayoutTask::solve_constraints a static method.
It does not use self.
2015-11-09 09:03:53 +01:00
Ms2ger
8674345d61 Move LayoutTask::first_reflow out of its Cell.
As the LayoutTask is uniquely owned, and we no longer have borrows of its
fields hanging around, we can use mutable references to simplify some code.
2015-11-09 09:03:52 +01:00
Ms2ger
3f4c734cf4 Introduce a RwData struct. 2015-11-09 09:03:52 +01:00
Ms2ger
b8d8505463 Disentangle the message handling from the receiver selection in LayoutTask::handle_request.
This ensures no fields of the LayoutTask are borrowed when calling repaint or
handle_request_helper, which I'll need later.
2015-11-09 09:03:51 +01:00
Ms2ger
ff0acccc06 Consolidate ProfilerMetadata and TimerMetadata.
There is no good reason to have the two types.

This also means that the result of LayoutTask::profiler_metadata no longer
borrows the LayoutTask, which I'll need later.
2015-11-09 09:03:50 +01:00
Eli Friedman
ef52da7acd Move storage of color attribute on <font>. 2015-11-08 17:29:50 -08:00
Eli Friedman
0901e5bc97 Move storage of bgcolor attribute on <body>. 2015-11-08 17:29:49 -08:00
bors-servo
3780fb7fe0 Auto merge of #8419 - frewsxcv:html-hr-element-color-attribute, r=eefriedman
Implement <hr> 'color' attribute

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8419)
<!-- Reviewable:end -->
2015-11-09 05:28:51 +05:30
Corey Farwell
ee0800abe9 Implement <hr> 'color' attribute 2015-11-08 18:34:27 -05:00
bors-servo
97791dd317 Auto merge of #8383 - mbrubeck:touch-refactor, r=glennw
Simplify multi-touch state machine code

This is a minor refactoring of the touch tracking in compositor, to simplify the code and prepare for more gesture handling (like pinch to zoom). r? @glennw

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8383)
<!-- Reviewable:end -->
2015-11-09 04:51:21 +05:30
Roman Klauke
4f35941b9d rename WebSocket::Send_Impl
Previos: `Send_Impl`, now: `send_impl`.

Closes: #8345
2015-11-08 14:45:59 +01:00
bors-servo
fc98b8e126 Auto merge of #8403 - frewsxcv:node-from-nodes-and-strings, r=nox
Minor 'node_from_nodes_and_strings' cleanup

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8403)
<!-- Reviewable:end -->
2015-11-08 17:33:46 +05:30
bors-servo
92f9e58310 Auto merge of #8286 - eefriedman:no-move, r=nox
Remove unnecessary uses of #[no_move]

The patch makes RootCollection a bit safer by making the StackRootTLS hold
it in place.

RootedVec was doing an extremely delicate dance and just hoping nobody
messed it up; switch to a Box to be safe.

CodeGenRust seemed to be using no_move for no particularly good reason.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8286)
<!-- Reviewable:end -->
2015-11-08 12:51:00 +05:30
Corey Farwell
9443b89af7 Minor 'node_from_nodes_and_strings' cleanup
This prevents an 'IntoIter' from getting unnecessarily allocated
2015-11-08 01:03:56 -05:00
Corey Farwell
fe4a5890d1 Add spec link for 'converting nodes into a node' 2015-11-08 00:49:33 -05:00
bors-servo
cd0c8c4e41 Auto merge of #8401 - eefriedman:net-dead-sync-load, r=jdm
Delete dead function load_bytes_iter and related code.

This code became dead with the recent CSS loading changes.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8401)
<!-- Reviewable:end -->
2015-11-08 11:11:00 +05:30
Eli Friedman
1a50fce67c Clean up some code related to #[no_move].
The patch makes RootCollection a bit safer by making the StackRootTLS hold
it in place.

The use of no_move in CodeGenRust was leftover from when roots couldn't
be moved.
2015-11-07 21:17:24 -08:00
Eli Friedman
d5365dbe37 Delete dead function load_bytes_iter and related code. 2015-11-07 20:46:54 -08:00
Sylvester Willis
4adf502846 Added call to event.PreventDefault on html text inputs and textareas.
This change should prevent page scrolling when up/down buttons are pressed.
2015-11-07 20:51:16 -05:00
bors-servo
1979d0a2e6 Auto merge of #8393 - rnestler:fix_8384, r=frewsxcv
Use while let{} instead of loop{match{}}

This fixes #8384

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8393)
<!-- Reviewable:end -->
2015-11-08 01:46:21 +05:30
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
9a465c5842 Auto merge of #8355 - Ms2ger:Exit, r=nox
Cleanup exit messages and related code.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8355)
<!-- Reviewable:end -->
2015-11-07 22:34:45 +05:30
Raphael Nestler
39aa3cfc2a Use while let{} instead of loop{match{}} in ScrollingTimer::run() 2015-11-07 16:21:33 +01:00
Till Schneidereit
068e6a8e9f Derive HeapSizeOf on more Stylesheet-related types
In preparation of storing `Stylesheet`s on nodes.
2015-11-07 16:19:23 +01:00
Till Schneidereit
f1b6c7cc99 Let Stylist compute and store viewport constraints when setting the device 2015-11-07 16:19:13 +01:00
Raphael Nestler
3985e33b43 Use while let{} instead of loop{match{}} 2015-11-07 16:08:43 +01:00
bors-servo
7c4fd5e770 Auto merge of #8387 - larsbergstrom:update_mozjs, r=Manishearth
Update mozjs

r? @Manishearth

This mainly just picks up the support for ccache. I'd like to get one module using it to land to see how it works on Travis & the builders (probably should have done this along with #8366).

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8387)
<!-- Reviewable:end -->
2015-11-07 20:29:58 +05:30
Till Schneidereit
f173504ded Make UA and user stylesheets static and shared by all Stylist instances 2015-11-07 15:45:27 +01:00