Commit Graph

58 Commits

Author SHA1 Message Date
Corey Farwell
3d43073796 servo: Merge #6174 - Reduce max line length from 150 to 120 characters (from frewsxcv:cleanup-long-lines); r=SimonSapin
Part of https://github.com/servo/servo/issues/6041

Source-Repo: https://github.com/servo/servo
Source-Revision: 542519ebfd073662bc9421ac5fa0aa01ebc0d6fe
2015-05-24 18:27:26 -05:00
ecoal95
0656a2b904 servo: Merge #6083 - First steps to layerize canvas (from emilio:layerize-canvas); r=pcwalton
I've done a bit of job to get this done. Right now readback is still used, but we have a `LayerId` -> `CanvasRenderer` map on the paint task, that we can use to get rid of that.

I'd want review, to see if this is a good approach (I know it's not the initial `CanvasId` -> renderer approach, but it's pretty similar, since a canvas involves a `PaintLayer`).

I had to do a bit of refactoring to avoid cyclic dependencies between canvas and gfx. I'd want you to review them too.

It's mergeable and doesn't break any tests :P

Some of my main concerns:
* Does the canvas render really need to be behind an `Arc<Mutex<T>>`?
* I can't clone a `NativeSurface` right now (that's why the `SendNativeSurface()` msg is unimplemented in the WebGL task). It should be easy to add that to rust-layers, supposing the caller is responsible to mark it as non-leaking, any reason to not do it?

cc @jdm @pcwalton

Source-Repo: https://github.com/servo/servo
Source-Revision: ad53e95080144485e74cd9b9d48ce75e20de4e36
2015-05-20 15:42:06 -05:00
Ms2ger
fd6b9e7d32 servo: Merge #6001 - Merge the JS context and runtime structs into Runtime (from Ms2ger:runtime); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: d1a0aacc60a27a6a9d0709c505d9621a5ebc2f78
2015-05-10 15:14:37 -05:00
Guro Bokum
8800f4e7e5 servo: Merge #5753 - Start using on_refresh_driver_tick #5681 (from JIoJIaJIu:timeline); r=jdm
RequestAnimationFrame
[Task](https://github.com/servo/servo/issues/5681)

Source-Repo: https://github.com/servo/servo
Source-Revision: 5e59e77c416dbe35e8c30ca1c21c9088ed17a079
2015-05-06 00:50:13 -05:00
Simon Sapin
b72bb5e7d5 servo: Merge #5935 - Upgrade Rust (from servo:rustup_2015-04-25); r=Ms2ger
r? everybody

Source-Repo: https://github.com/servo/servo
Source-Revision: 49aed6555dbc008c1a378c5cbb303f5467232b6b
2015-05-05 09:11:30 -05:00
Ms2ger
607915e1d8 servo: Merge #5916 - Prepare for the rustup (from servo:prepare-rustup); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 2f0b805fad2419518f0d80e90cf322fbd507a916
2015-05-01 14:44:19 -05:00
Manish Goregaokar
035e4ad068 servo: Merge #5855 - Add move protection to Root and friends (from Manishearth:nomove); r=kmc,munksgaard
fixes #5724, #5737


uses https://github.com/Manishearth/rust-tenacious (can be moved in-tree if needed)

I can make it `Deny` by default too (I'll add a cargo feature to tenacious), though we might want it on
`Warn` until we get some mileage on it.

Source-Repo: https://github.com/servo/servo
Source-Revision: d7987e43c944eb9b156bf3244c08fce4cb570db4
2015-04-27 23:14:25 -05:00
Jacob Taylor-Hindle
630913efbb servo: Merge #5860 - Remove #[jstraceable] annotation for the RootedVec type [Issue #5849] (from GlassAndOneHalf:remove-jstraceable); r=jdm
This PR solves Issue #5849.

Source-Repo: https://github.com/servo/servo
Source-Revision: ea00e949a45ca2e8842882b1b8a6ad7970890c00
2015-04-26 19:00:06 -05:00
Glenn Watson
1511f427f8 servo: Merge #5767 - Refactored image cache task - details below (from glennw:image-cache); r=larsbergstrom,jdm
* Simpler image cache API for clients to use.
 * Significantly fewer threads.
   * One thread for image cache task (multiplexes commands, decoder threads and async resource requests).
   * 4 threads for decoder worker tasks.
 * Removed ReflowEvent hacks in script and layout tasks.
   * Image elements pass a Trusted<T> to image cache, which is used to dirty nodes via script task. Previous use of Untrusted addresses was unsafe.
   * Image requests such as background-image on layout / paint threads trigger repaint only rather than full reflow.
 * Add reflow batching for when multiple images load quickly.
   * Reduces the number of paints loading wikipedia from ~95 to ~35.
 * Reasonably simple to add proper prefetch support in a follow up PR.
 * Async loaded images always construct Image fragments now, instead of generic.
   * Image fragments support the image not being present.
 * Simpler implementation of synchronous image loading for reftests.
 * Removed image holder.
 * image.onload support.
 * image NaturalWidth and NaturalHeight support.
 * Updated WPT expectations.

Source-Repo: https://github.com/servo/servo
Source-Revision: ac0645c2363b5a6ea3930b0857b3a27f1b6d033f
2015-04-22 19:16:46 -05:00
Mátyás Mustoha
3ceb9c7bf4 servo: Merge #5757 - Canvas: implement global composition and blending (from mmatyas:canvas_globalcomposite); r=jdm
Implements https://html.spec.whatwg.org/multipage/scripting.html#dom-context-2d-globalcompositeoperation.

Source-Repo: https://github.com/servo/servo
Source-Revision: e278e5b9a27738bdca7a151b4295628e1f179e29
2015-04-22 14:15:28 -05:00
Ms2ger
b7f90cee85 servo: Merge #5790 - Store a Runtime object in ScriptTask (from Ms2ger:new_rt_and_cx); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 886805d76c206214047c475c6f8947c8c38c40b7
2015-04-22 07:08:41 -05:00
Josh Matthews
3e5cee10f5 servo: Merge #5156 - Support opt-in async network events (from jdm:asyncnet); r=pcwalton,Manishearth
This implements a framework for opting in to receiving network events asynchronously. It also converts XMLHttpRequest to use them, and paves the way for better support for synchronous XHR using on-demand, targeted event loops instead of spinning the global event loop. This gives us complete feature parity with the existing XHR implementation, using fewer threads than before in the async case.

Source-Repo: https://github.com/servo/servo
Source-Revision: 3151497d498b001b4a783dce0595615c6fc40936
2015-04-16 11:33:06 -05:00
Mátyás Mustoha
bccbfe6a0d servo: Merge #5635 - Canvas: added lineCap and lineJoin support (from mmatyas:canvas_linecapjoin); r=jdm
This patch adds support for setting the line cap and join. However, it seems there's a problem on the azure-side, as the line cap setting doesn't work. Changing either the default values or using the new function has no effect. Line join works fine though.

Source-Repo: https://github.com/servo/servo
Source-Revision: fe81ce942a36b08ece8ef6d58de72624a961eeaa
2015-04-14 12:57:48 -05:00
Guro Bokum
b33284109c servo: Merge #5636 - Firefox timeline integration #4957 (from JIoJIaJIu:timeline); r=jdm
Available markers only:

Reflow
DOMEvent
Also need to implement:

Style marker
Paint marker
Javascript marker
frames reply, depends on getting javascript stack
I decided to make pull request before implemented another markers for getting feedback.
mb it would be better to create separated tasks.

Notices:
Marker doesn't fill stack and stackEnd
MemoryActor sends fake data because there is no memory profiler per tab
FramerateActor sends empty Vec, need implement http://mxr.mozilla.org/mozilla-central/source/dom/base/nsGlobalWindow.cpp#5240

Source-Repo: https://github.com/servo/servo
Source-Revision: 74c847a17fb560dd4cd62069778776f6f06df19f
2015-04-13 12:44:49 -05:00
Ms2ger
34c2b82ced servo: Merge #5632 - Create a Runtime struct (from Ms2ger:runtime); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 35fb5166624faa13d8a7090ce3f2456726547e11
2015-04-10 08:44:38 -05:00
Jag Talon
d8a73c7fd7 servo: Merge #5543 - RootCollection: Start using RootedVec instead of SmallVec32 (from jagtalon:jag/slashdot); r=jdm
Partially fixes #5504.

Props to @ehegnes and @jdm for the help!

Source-Repo: https://github.com/servo/servo
Source-Revision: 184d214e260213bafc5801af33f3031289da9361
2015-04-07 11:56:50 -05:00
Ms2ger
2e4311ca40 servo: Merge #5511 - Stop using int/uint in script (from Ms2ger:int); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 036b3eaa04fc4d94b8fd29a9c8e0f6020f55d23d
2015-04-03 13:54:46 -06:00
Manish Goregaokar
2674bab6a8 servo: Merge #5465 - Split out shared networking code into net_traits crate (from gilles-leblanc:issue-4476-b); r=jdm
Fixes #4476

Source-Repo: https://github.com/servo/servo
Source-Revision: d707d1b78e3393a1ed164af8ec855bd0ff119e55
2015-04-03 13:00:46 -06:00
Mukilan Thiyagarajan
04976edce5 servo: Merge #5436 - Implement a replacement for Vec<Root<T>> (from servo:rooted-vec); r=Ms2ger,jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 1282850b998ce82195a7099d950676fc1b53b86b
2015-03-29 05:07:01 -06:00
Thiago Pontes
79eadfe612 servo: Merge #5181 - Notify devtools about new worker globals (from thiagopnts:master); r=jdm
This is for #4704. I'm not sure if this is the best approach, so I'm open to suggestions.

Source-Repo: https://github.com/servo/servo
Source-Revision: 439e3150d74453b86abbcc7934b7e5152f102940
2015-03-27 13:33:56 -06:00
Manish Goregaokar
5384901f1b servo: Merge #5389 - Blanket impl JSTraceable on raw pointers (from Manishearth:trace_raw); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 5dd43bf84c78063b6eaf505cab253c1666d969ce
2015-03-26 20:51:51 -06:00
Ms2ger
bfd31316e6 servo: Merge #5288 - Fix various build warnings (from Ms2ger:warnings); r=SimonSapin
Source-Repo: https://github.com/servo/servo
Source-Revision: 0663cd632517c9a9c86db47456c5a4da637045ed
2015-03-20 11:00:54 -06:00
Mátyás Mustoha
beac897eb1 servo: Merge #4891 - Implement canvas gradient (from mmatyas:canvas_gradient); r=jdm
Based on [ebalint](https://github.com/ebalint)'s original patch, this commit implements the linear and radial gradients for the canvas. The PR also includes test cases.
Depends on #4623 and servo/rust-azure#136.

Source-Repo: https://github.com/servo/servo
Source-Revision: dea36f981650f027902b4f71f0cdabd2da69fe21
2015-03-20 03:12:47 -06:00
Ms2ger
f4ea3a3dd0 servo: Merge #5256 - Upgrade rustc to d3c49d2140fc65e8bb7d7cf25bfe74dda6ce5ecf/rustc-1.0.0-de (from servo:rustup_20150311); r=jdm
...v.

Relies on:
* https://github.com/servo/rust-geom/pull/72
* https://github.com/servo/rust-glx/pull/10
* https://github.com/servo/gleam/pull/15
* https://github.com/servo/rust-mozjs/pull/137
* https://github.com/servo/rust-core-text/pull/35
* https://github.com/servo/rust-io-surface/pull/28

Source-Repo: https://github.com/servo/servo
Source-Revision: 99cf9dbfc107bacb84dfe5afa9539a0ede3beac2
2015-03-18 11:25:00 -06:00
Zack Slayton
0635a7d127 servo: Merge #5217 - localStorage shim, fixes #5195 (from zslayton:master); r=jdm
@jdm This initial version has a few outstanding issues that I wanted to invite input on. Specifically:

1. I had some difficulty finding a home for the `StorageType` enum. Structs defined outside of the `script` module don't seem to be able to use the `#[jstraceable]` annotation and the `net` module (where `StorageTask` lives) doesn't have access to `script`. Per Simon Sapin's suggestion, I worked around this temporarily by creating a `TraceableStorageType` stand-in struct that was traceable and which could be translated into a regular `StorageType` when being sent to the `StorageTask`. Unsure of the best way to resolve this hack. Thoughts?

2. Apart from the `Storage` constructor used in `Window::SessionStorage` and the new `Window::LocalStorage`, there's also a method called `Storage::Constructor`. I'm unclear on what (if anything) will actually invoke this, so I'm not sure which variant of `StorageType` to use here. I've temporarily created an `Unknown` variant of `StorageType` as a placeholder.

3. I discovered that the web platform tests directory's localStorage tests. Many of them now pass despite the configured expectation that they fail. However, several do not pass. Is there a good way for me to add debug logging or otherwise get a sense of which assertion failed / what went wrong?

Thanks for your continued help!

Source-Repo: https://github.com/servo/servo
Source-Revision: b8e87ea020879090c931421cf3cec73d8cd1156f
2015-03-16 14:48:51 -06:00
Prabhjyot Singh Sodhi
6d37a6bb57 servo: Merge #5054 - implement missing steps from "prepare a script" algorithm (from psdh:scriptimplementation); r=jdm
Fixes #4089

Source-Repo: https://github.com/servo/servo
Source-Revision: 73e5bbec4316c2e9b83121d5127687c20e1fb796
2015-03-06 13:36:53 -07:00
Guro Bokum
14bb53fef3 servo: Merge #5139 - ScriptTask::mouse_over_targets is not traced #4985 (from JIoJIaJIu:trace); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: eda9c0c9ac29646c5b4c9ce30b97c6547345171e
2015-03-06 09:42:52 -07:00
Patrick Walton
caba5137e0 servo: Merge #5016 - script: Implement enough 2D canvas support to render basic SVGs such as (from jdm:canvas-for-svg); r=jdm
the tiger.

Rebased from #4623.

Source-Repo: https://github.com/servo/servo
Source-Revision: 2e1adb3fa670504fb0fedaa517f312ba233bf67b
2015-02-22 20:33:45 -07:00
Ms2ger
94c0222b83 servo: Merge #4979 - Audit ints and uints in script (from Ms2ger:audit-ints); r=Manishearth
Source-Repo: https://github.com/servo/servo
Source-Revision: 276f74b1ddec9dfa4cb053eb0802f95bd5ed6b66
2015-02-20 07:09:54 -07:00
Simon Sapin
8fbd363d52 servo: Merge #4893 - Upgrade to rustc ba2f13ef0 2015-02-04 (from servo:rustup_2015-01-31); r=Ms2ger,glennw
Ready for review.

Final link step on android fails, but we know how to fix it and will add it to this branch soon.

Source-Repo: https://github.com/servo/servo
Source-Revision: 2cc08f289ab909de44fa09a07b2c43b70ce379b9
2015-02-11 17:24:45 -07:00
Tetsuharu OHZEKI
2784ead343 servo: Merge #4878 - [script] Merge the binding design document into inline doc comments (from saneyuki:doc); r=Ms2ger
Now, we have many documents about dom bindings as inline comments. It's better to fuse a standalone markdown document to them.

Source-Repo: https://github.com/servo/servo
Source-Revision: 2c5155a119872ccdfb614c4cd5b1379de20ab595
2015-02-10 04:33:45 -07:00
Ms2ger
f3a69a15a3 servo: Merge #4886 - Import msg as msg rather than servo_msg (from Ms2ger:servo_msg); r=saneyuki
Source-Repo: https://github.com/servo/servo
Source-Revision: 29d3b872de4abb693b75e71fc0b987c52b0fd1f6
2015-02-10 03:51:46 -07:00
Ms2ger
4bf05f548b servo: Merge #4836 - Implement an Unrooted smart pointer to replace JS when it is not traced (from Ms2ger:unrooted); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 7d32ece0bf3cdfbeb98e106ec6daca5a5f4385bc
2015-02-06 04:36:44 -07:00
Simon Sapin
ba695b5444 servo: Merge #4757 - Bring CSS parse error reporting back (from servo:newnewnewcss); r=mbrubeck
(Still off by default. Enable with `RUST_LOG=style`.)

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: 172aed535be3c34775824dac64ad2b91fc379ad5
2015-01-30 15:27:53 -07:00
Ms2ger
155838196e servo: Merge #4766 - Import the util crate as util rather than servo_util (from Ms2ger:util); r=Manishearth
This used to conflict with the util crate from the standard library, which
has long since been removed.

The import in layout has not been changed because of a conflict with the
util mod there.

Source-Repo: https://github.com/servo/servo
Source-Revision: 27e0f16407629422b5e047e067d458142372c97e
2015-01-29 05:12:49 -07:00
Ms2ger
aabf127e49 servo: Merge #4717 - Document proxyhandler.rs, and related changes (from Ms2ger:doc-proxy); r=saneyuki
Source-Repo: https://github.com/servo/servo
Source-Revision: 1a2a08aa501dd0da8bcdf362b55acb31093f5c9c
2015-01-28 01:48:52 -07:00
Josh Matthews
b11f7d94dc servo: Merge #4719 - Update rustc to 00b112c45a604fa6f4b59af2a40c9deeadfdb7c6/rustc-1.0.0-dev (from servo:rustup_20150109); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 3f9012864a2cd927cf17a8e11dfa6922add1b7df
2015-01-27 18:15:50 -07:00
Ms2ger
2979891740 servo: Merge #4542 - Prepare for the rust upgrade (from servo:pre-rustup_20141221); r=saneyuki
In particular, this contains changes to qualify enums where rust will require it, and to stop using some features that will be removed.

Source-Repo: https://github.com/servo/servo
Source-Revision: ba8cf6b0e6145265f9472d4855f078d8b5943fe7
2015-01-04 12:39:47 -07:00
Ms2ger
03365eb590 servo: Merge #4535 - Stop using some obsolete features (from servo:pre-rustup_20141221); r=jdm
This prepares for the rust upgrade currently being conducted.

Source-Repo: https://github.com/servo/servo
Source-Revision: e8fac3681b690adb0796b2a807ac95bd9c13597a
2015-01-03 14:39:46 -07:00
Josh Matthews
b23f44d460 servo: Merge #4057 - Enable refcounting arbitrary DOM types (from jdm:refcountdom); r=Ms2ger
This replaces the specialized TrustedXHRAddress and TrustedWorkerAddress code that was used for the same purpose. A non-zero refcount pins the given DOM object's reflector and prevents it from being GCed even when there are no other outstanding references visible to SpiderMonkey. This will enable us to implement asynchronous operations that refer to particular DOM objects (such as "queue a task to fire a simple event named load at the iframe element" from the spec) safely and conveniently, and paves the way for things like asynchronous network responses.

Some concerns about the resulting size of XHR progress messages have been expressed, but I believe optimizations to reduce that can be implemented in subsequent PRs.

r? @Ms2ger - note in particular the changes to the worker lifetime code. I couldn't figure out how to achieve an identical lifetime to the previous addref/release pairing, and I also was having trouble figuring out why the existing setup was safe. The new implementation now holds the main script task Worker object alive via the TrustedWorkerAddress field in the dedicated worker global scope, which is a significant difference.

Source-Repo: https://github.com/servo/servo
Source-Revision: 2c259f477c41331e66beab8bda865971982a1ff4
2014-12-29 11:57:45 -07:00
Patrick Walton
2a3b044e37 servo: Merge #4289 - style: Implement basic column spans, quirks mode, and the legacy bgcolor and border attributes (from pcwalton:hacker-news); r=SimonSapin
This patch provides some of the groundwork for column spans greater than
1. It implements the column-span CSS property as well as the
corresponding colspan attribute; although the former is not
well-specified outside of CSS multi-column layout, INTRINSIC refers to
it. Although width is distributed to spanning columns, they do not yet
contribute minimum and preferred widths; this will be implemented in a
follow-up.

The parsing for the legacy bgcolor and border attributes is
implemented according to the WHATWG HTML specification.

Additionally, this patch cleans up some miscellaneous formatting issues,
refactors layout/css somewhat to eliminate needless levels of
indirection, and cleans up the handling of table rowgroups.

New Hacker News screenshot: http://i.imgur.com/hnl2a7E.png

Source-Repo: https://github.com/servo/servo
Source-Revision: 8e31e5f98747e4b42dafcc4b076fac46aeb09310
2014-12-15 19:33:46 -07:00
Manish Goregaokar
08f0462c06 servo: Merge #4198 - Hyper+OpenSSL on Android (from Manishearth:hyper-droid); r=Manishearth
This is the Hyper pull request, plus the set up for OpenSSL on Android to make it merge.

Sean's commits have been reviewed in #4065 (My Android changes were reviewed by Glenn)

Source-Repo: https://github.com/servo/servo
Source-Revision: 6bd9bf979bcfa96ea14e666b59eab01a6d6c373e
2014-12-05 04:16:11 -07:00
Glenn Watson
71f726977a servo: Merge #3948 - Rust upgrade to rustc hash b03a2755193cd756583bcf5831cf4545d75ecb8a (from servo:rustup-20141105_2); r=Manishearth
Source-Repo: https://github.com/servo/servo
Source-Revision: c5e1b0d32e17fad29799023c85e2e73ac89c3af7
2014-11-12 20:48:31 -07:00
Martin Robinson
814dac2156 servo: Merge #3809 - Clip display list based on frame viewport (from mrobinson:display-list-optimization); r=pcwalton
Instead of creating a display list for the entire page, only create one
for an area that expands around the viewport. On my machine this makes
incremental layout of http://timecube.com 50% faster.

Source-Repo: https://github.com/servo/servo
Source-Revision: 26045d7fcbab8851fbefe2851cd904203f8fd8dd
2014-11-12 17:36:32 -07:00
Ms2ger
a1cd2e6fb3 servo: Merge #3937 - Add missing documentation for bindings code (from Ms2ger:docs-bindings); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: fe11a75f794db47a66426456e1e904cf107cc41d
2014-11-07 10:57:30 -07:00
Patrick Walton
24fdd1b7b3 servo: Merge #3835 - script: Implement various microoptimizations (from pcwalton:script-microoptzns); r=Ms2ger
This is a grab bag of various microoptimizations for script that I came across when profiling our performance on RoboHornet.

r? @jdm

Source-Repo: https://github.com/servo/servo
Source-Revision: 69f8b46f362a828ffaefe9623355bc1ad76dc5e0
2014-11-03 15:48:34 -07:00
Ray Clanan
6becd6b208 servo: Merge #3773 - Rename untraceable!() to no_jsmanaged_fields!(). References issue #3671 (from rclanan:rename-untraceable); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 041ab13fcec726bbacc09b3be07e706091625dda
2014-10-23 19:48:28 -06:00
Keegan McAllister
a8be3c4e6b servo: Merge #3670 - Use html5ever for HTML parsing (from kmcallister:h5e-take2); r=jdm
r? @Ms2ger, @jdm

The parser is now a JS-managed object and we use hooks in html5ever to trace its internal state.  This should be memory-safe even if arbitrary JavaScript can run during a parse.  Please let me know if you think of a reason it wouldn't be!

I think the likely outcome of a garbage collection during parsing is a dynamic `RefCell` borrow failure, but I'm going to look into that after this lands.  It should be safe to trace the parser while it's mutably borrowed, as long as it's not shared between threads, so we can probably switch to `UnsafeCell`.

Source-Repo: https://github.com/servo/servo
Source-Revision: 8d3b107568ab965b518b8003b702a5db993fa7d0
2014-10-16 14:15:21 -06:00
Patrick Walton
07c968075f servo: Merge #3622 - layout: Introduce support for legacy presentational attributes to selector matching, and use it for <input size> and <td width> (from pcwalton:html4ever); r=jdm
This implements a general framework for legacy presentational attributes
to the DOM and style calculation, so that adding more of them later will
be straightforward.

Source-Repo: https://github.com/servo/servo
Source-Revision: 0aeecfc41d5f0c637960fcddf87cc2db3e5efeea
2014-10-14 14:06:36 -06:00
Clark Gaebel
c0d7a56ba4 servo: Merge #3590 - Incremental Style Recalc (from cgaebel:slow-incremental-reflow-rebase); r=pcwalton
This patch puts in the initial framework for incremental reflow. Nodes' styles
are no longer recalculated unless the node has changed.

I've been hacking on the general problem of incremental reflow for the past
couple weeks, and I've yet to get a full implementation that actually passes all
the reftests + wikipedia + cnn. Therefore, I'm going to try to land the different
parts of it one by one.

This patch only does incremental style recalc, without incremental flow
construction, inline-size bubbling, reflow, or display lists. Those will be coming
in that order as I finish them.

At least with this strategy, I can land a working version of incremental reflow,
even if not yet complete.

r? @pcwalton

Source-Repo: https://github.com/servo/servo
Source-Revision: 85b277655f07db1cb99c4d3dee93804735ed0470
2014-10-09 11:21:32 -06:00