Commit Graph

577 Commits

Author SHA1 Message Date
Manish Goregaokar
46699136ac servo: Merge #7536 - More clippy fixes (from Manishearth:clippyfix); r=Ms2ger
Elided almost all the lifetimes and removed needless returns. Mostly done by sed + manual fixes.

r? @nox

Source-Repo: https://github.com/servo/servo
Source-Revision: c2c2646d37614ece5869af861993c3d619f6e003
2015-09-04 07:59:04 -06:00
Matt Brubeck
eebf35c920 servo: Merge #7443 - Implement get_table_for_tag on FreeType (from mbrubeck:get_table); r=pcwalton
Updates freetype to pick up servo/rust-freetype#37

r? @glennw

Source-Repo: https://github.com/servo/servo
Source-Revision: 0ad284766b3f12097dce1e5858b5d07e870478eb
2015-09-03 14:37:38 -06:00
Brandon Fairchild
998f147071 servo: Merge #7499 - Improve style nit check for space after a comma (from nerith:style); r=metajack
Fixes #7345.

Source-Repo: https://github.com/servo/servo
Source-Revision: 3424e234c8c86e787edfce6dc63ed155617e0e85
2015-09-02 12:05:58 -06:00
Simon Sapin
d67af4db2f servo: Merge #7509 - Upgrade to rustc 1.4.0-dev (cb9323ec0 2015-09-01) (from servo:rustup_2015-09-01); r=Manishearth
Source-Repo: https://github.com/servo/servo
Source-Revision: f49615ca7b5d98ee603cf42f705073fbe4d414fb
2015-09-02 01:31:23 -06:00
Patrick Walton
8b60eb6fbe servo: Merge #7313 - layout: Make overflow calculation take relative percentages into account (from pcwalton:position-relative-percentage-overflow); r=mbrubeck
This necessitated changing overflow to be calculated by the parent flow
if relatively positioned children are present. That is because the
overflow regions cannot be calculated without knowing relative offsets,
which themselves cannot be calculated without knowing the parent size
(because of percentages). To accomplish this without sacrificing
parallelism in the non-relative case, this patch splits overflow into
"early" and "late" computation. Late overflow computation cannot be
parallelized across children, while early overflow computation can.

Makes the "Apple Music" text show up over the full-bleed promotional
background on apple.com.

r? @SimonSapin -- would appreciate a look over the iframe test case that was changed.

Source-Repo: https://github.com/servo/servo
Source-Revision: dcaf66397a06246b9b4fdca3a10af1508a11f1e8
2015-09-01 12:33:07 -06:00
erneyja
21488105b6 servo: Merge #7468 - Making test-tidy check that = have space after them (from JoshTheGoldfish:Issue7460); r=jdm
For issue #7460. Need to ensure compatibility with #7390.

Source-Repo: https://github.com/servo/servo
Source-Revision: 15de679f115f06a8ce33625d77e820b049730d4b
2015-09-01 08:33:02 -06:00
Bryan Bell
6535404c46 servo: Merge #7370 - gfx: Border radius support for asymmetric sized borders (from bjwbell:bugfix-unequal-borders); r=pcwalton
When the border-top/right/bottom/left-widths are not equal, the angle on the border corner arc separating the borders isn't PI/4.

For instance if the top border width is much larger than the left border width then most of the border corner should be drawn using the top border color.

This change adds support for calculating the correct angle in the border
corner arc for switching from one border to another e.g. the left border
to the top border.

It supports elliptical border radii for when elliptical border radii are
added.

A ref test is also included.

r? @Ms2ger

Source-Repo: https://github.com/servo/servo
Source-Revision: afc2c381db9c85eba3c10e87966351f77678dc6e
2015-08-31 14:58:33 -06:00
wilmoz
b001887fd5 servo: Merge #7475 - Make test-tidy check that braces have spaces before or after them (from wilcus:checkBracesSpaces); r=jdm
https://github.com/servo/servo/issues/7413
Posible future/past bug fixed in components/script/timers.rs

Source-Repo: https://github.com/servo/servo
Source-Revision: 60c72f601c4dd7cfbc8a4a983099a4b323f1516a
2015-08-31 13:18:23 -06:00
Matt Brubeck
f960d793c4 servo: Merge #7434 - Remove unused font shaping code and flags (from mbrubeck:drop-table); r=pcwalton
r? @pcwalton

Source-Repo: https://github.com/servo/servo
Source-Revision: 108251bece897b96a8b205df22e7d3e790979331
2015-08-31 12:20:49 -06:00
Martin Robinson
08cb29710f servo: Merge #7392 - Split out layered child stacking contexts in display lists (from mrobinson:layered-separate); r=pcwalton
This patch is in preparation for more dynamic layerization of the
pieces of display lists. It also prevents having to sort the children
by z-index multiple times.

Source-Repo: https://github.com/servo/servo
Source-Revision: fa5ad1c6b4faa2c43ff79e77962b94034a4f2bd0
2015-08-26 11:38:34 -06:00
Patrick Walton
dd644f9f6f servo: Merge #7369 - layout: Fix calculation of overflow for stacking contexts that contain position: relative fragments (from pcwalton:relative-layer-overflow); r=glennw
Fixes placement of the header on espn.go.com.

r? @glennw

Source-Repo: https://github.com/servo/servo
Source-Revision: a1cd27e6a3b961129fd4710513cc29e4f7c9cc67
2015-08-25 17:16:34 -06:00
Johann Tuffe
25ce9ab4be servo: Merge #7265 - Add alphabetical order check for use statements (from tafia:tidy-use); r=Ms2ger
close #7112

Source-Repo: https://github.com/servo/servo
Source-Revision: a5fbb2f2a6fa79755f975feff2435abb6a5dd0e9
2015-08-20 07:43:56 -06:00
Patrick Walton
e0b15294f6 servo: Merge #7292 - gfx: Sort layers according to their Z-index value before handing them off to the compositor (from pcwalton:layer-sorting); r=glennw
Closes #7166.

r? @glennw

Source-Repo: https://github.com/servo/servo
Source-Revision: c328b76459f34dfe33570d686452e08b7718b4bd
2015-08-19 18:34:58 -06:00
João Oliveira
5ce909571e servo: Merge #7257 - Replace uses of for foo in bar.iter(), (from jxs:master); r=Ms2ger
and `for foo in bar.iter_mut(), and for foo in bar.into_iter()
(continuation of #7197)

Source-Repo: https://github.com/servo/servo
Source-Revision: 0d6d6a05009606dfbbfc9765d7dc2c745c18f6a5
2015-08-18 02:46:46 -06:00
Patrick Walton
1e501c2a0e servo: Merge #7222 - gfx: Paint dashed borders with nonzero radii the same way Gecko does (from pcwalton:dashed-border-radius); r=glennw
It's not ideal, but it was easy to implement and will do for now.

Closes #7157.

r? @glennw

Source-Repo: https://github.com/servo/servo
Source-Revision: f4b526cfb4ea1ef263ff029650c74ff50a74d5db
2015-08-17 16:53:58 -06:00
João Oliveira
48eef8eeb5 servo: Merge #7245 - replace len() !=0 with !is_empty() (from jxs:master); r=Ms2ger
Source-Repo: https://github.com/servo/servo
Source-Revision: d90907cb5f7399196b76b3117e19ff4d1b775a96
2015-08-17 02:33:28 -06:00
Josh Matthews
d1f1ba555f servo: Merge #7203 - Add automated style nit checks to test-tidy (from jdm:style); r=Ms2ger
Expands on the work by @wilmoz and cleans up the existing errors. Closes #7180. Closes #7111.

Source-Repo: https://github.com/servo/servo
Source-Revision: e74825f9fde8e222f4ba9bb24b2c2a3864c73e5f
2015-08-16 08:37:40 -06:00
João Oliveira
5bbd3b623e servo: Merge #7225 - Replace uses of for foo in bar.iter() and for foo in bar.iter_mut() (from jxs:master); r=nox
closes #7197

Source-Repo: https://github.com/servo/servo
Source-Revision: a1b3f477aa541fda4d1b6ccb02c3e56143f4d217
2015-08-15 03:03:21 -06:00
João Oliveira
728883c59d servo: Merge #7208 - replace .len() == 0 with is_empty() (from jxs:master); r=Ms2ger
closes #7198

Source-Repo: https://github.com/servo/servo
Source-Revision: 85022a4c347dca3f5d28cec3010f7e9410217df4
2015-08-14 00:51:59 -06:00
Glenn Watson
100e501113 servo: Merge #7206 - Fix "'PaintWorker' panicked at 'index 0 and/or 4 in * do not lie on… (from glennw:fix-debug-panic); r=pcwalton
… character boundary" when printing display list.

This whole piece of code seems a bit fragile, but it fixes the immediate problem for now.

Source-Repo: https://github.com/servo/servo
Source-Revision: 7a9458e530a3bd7a679cb21dec8586710cf4a416
2015-08-13 20:07:56 -06:00
Glenn Watson
9a8f1a9352 servo: Merge #7186 - Enable item clipping on normal transform layers. Fixes rounded corners on layers with 2d transforms (from glennw:rounded-clip); r=pcwalton
Needed for #6643.

Source-Repo: https://github.com/servo/servo
Source-Revision: c1cc2c1a27cb6887934ab5088cccdb33434a680b
2015-08-13 01:53:44 -06:00
Corey Farwell
73f9789af8 servo: Merge #6867 - Utilize match guard; make methods more similar (from frewsxcv:match-guard-and-similar); r=jdm
Make the structure for the `stretchiness` and `boldness` methods more
similar

Source-Repo: https://github.com/servo/servo
Source-Revision: 55a9abdf358dd8f05b06849f0d39b4e8ca8f6ba3
2015-08-12 22:13:16 -06:00
Patrick Walton
815af6aa90 servo: Merge #7024 - layout: Rewrite whitespace stripping (from pcwalton:whitespace-stripping); r=mbrubeck
This patch makes Servo unconditionally strip whitespace before text run
scanning (assuming that the `white-space` property allows it). Whitespace
stripping during reflow is now only used for handling whitespace at the ends of
lines; reflow now never attempts to handle ignorable whitespace.

Many CSS tests pass now. There are some new failures, however.

The following reference tests now fail due to a pre-existing bug whereby
whitespace is used to calculate the position of inline hypothetical boxes for
elements with `display: inline; position: absolute`:

* `absolute-replaced-height-036.htm`
* `vertical-align-sub-001.htm`
* `vertical-align-super-001.htm`

The following reference tests fail due to a pre-existing bug whereby we don't
handle `font-size: 0` properly in inline reflow:

* `font-size-zero-1.htm`
* `font-size-zero-2.htm`

The following reference test fails due to the fact that it relied on our
incorrect insertion of whitespace to make room for the black background:

* `inline-formatting-context-007.htm`

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: 7dc83e7820df43b1b617ae8dcf661398b0bd0842
2015-08-11 12:57:02 -06:00
Patrick Walton
b79446c001 servo: Merge #7137 - layout: Make absolutely-positioned elements with z-index: auto not stacking contexts (from pcwalton:absolute-stacking-contexts); r=glennw
Improves many sites.

Closes #7069.

r? @glennw

Source-Repo: https://github.com/servo/servo
Source-Revision: 7ce47266acc7c23de537905746b274b4a75424fa
2015-08-11 12:22:14 -06:00
Matt Brubeck
127e852158 servo: Merge #7161 - Snap rectangles to nearest pixels consistently (from mbrubeck:underline); r=pcwalton
Snapping the top-left and bottom-right corners separately can cause a rectangle to change size or even become empty when offset by a subpixel amount.  Instead, this patch snaps the top-left corner, then snaps the size to a whole pixel amount, so any rectangle of a given original size will always have the same snapped size.

Fixes #7152. r? @pcwalton or @glennw

Source-Repo: https://github.com/servo/servo
Source-Revision: 9c528c6382ee4355f42824a7caad217c4eb8a3b0
2015-08-11 11:31:32 -06:00
Patrick Walton
03469bd0d3 servo: Merge #7090 - layout: Implement basic overflow: scroll functionality (from pcwalton:overflow-scroll); r=glennw
Known issues:

* Display list optimization can sometimes optimize out elements that
  should be shown. This affects the Enyo demo.

* The `overflow: scroll` container doesn't clip the inner layer properly
  when borders, border radius, etc. are present.

* `overflow-x: scroll` and `overflow-y: scroll` don't work individually;
  elements are scrolled all at once.

Note that multiple layers per stacking context aren't needed for the Enyo demo; rather the issue is that the height of the main area is being calculated incorrectly. (It looks like JS is measuring the height and poking in an explicit value that is too tall.)

r? @glennw

Source-Repo: https://github.com/servo/servo
Source-Revision: b05b02e11fb849e1f0153d009d8fcf0501ace8dc
2015-08-10 22:29:40 -06:00
Glenn Watson
b40e42bbba servo: Merge #7141 - Update rust-layers to get 2d transform + clipping support (from glennw:2d-clipping-update); r=pcwalton
Source-Repo: https://github.com/servo/servo
Source-Revision: 5af93e9ca3500a75f845614f17323d258ee72d71
2015-08-10 20:23:42 -06:00
Patrick Walton
78e790ea7d servo: Merge #7099 - servo: Update ipc-channel to pick up bincode support (from pcwalton:bincode); r=jdm
Large improvement in page load times, especially in debug builds.

r? @jdm

Source-Repo: https://github.com/servo/servo
Source-Revision: d4d4d6dc013ee322282de7ec0effa54c8827a775
2015-08-08 10:55:00 -06:00
Glenn Watson
e90a3376af servo: Merge #7021 - Fix display list optimization on retina displays. Fixes #7018 (from glennw:fix-7018); r=pcwalton
Source-Repo: https://github.com/servo/servo
Source-Revision: 50a30121bfbb842067b980815fbe6d6e385e996a
2015-08-06 23:26:24 -06:00
Manish Goregaokar
c75548bdb3 servo: Merge #7054 - Rollup of 3 pull requests (from Manishearth:rollup); r=Manishearth
- Successful merges: #7028, #7034, #7039
- Failed merges:

Source-Repo: https://github.com/servo/servo
Source-Revision: 76b4bae6ee45317f2ca0aefbc48b89169d2450c8
2015-08-06 17:43:09 -06:00
Matt Brubeck
1b79f20ff5 servo: Merge #7052 - Rollup of 2 pull requests (from mbrubeck:rollup); r=mbrubeck
- Successful merges: #7014, #7015
- Failed merges:

Source-Repo: https://github.com/servo/servo
Source-Revision: b21584c862f8831dfb40e9cf0495bf04bc6ae1b5
2015-08-06 16:13:12 -06:00
Glenn Watson
a1e8cd6cbc servo: Merge #6988 - No need for paint layer in stacking context to be an arc (from glennw:no-arc)
Source-Repo: https://github.com/servo/servo
Source-Revision: f570da28c29e2cd762fd7743f11b711c18055aac
2015-08-05 20:06:09 -06:00
Glenn Watson
28a85fefec servo: Merge #6983 - Support transforms for display list optimization. Prevents clipping in #6643 (from glennw:tf2); r=pcwalton
Source-Repo: https://github.com/servo/servo
Source-Revision: 315c4f5ed7be91951b83b9bbec372bc4bf8f3507
2015-08-05 12:50:36 -06:00
Patrick Walton
6f3204c0da servo: Merge #6981 - gfx: Fix Core Text font instantiation for Web fonts on Mac (from pcwalton:github-font-fallback); r=metajack
r? @metajack

Source-Repo: https://github.com/servo/servo
Source-Revision: 11acfbc29fd3412c18b6bf62e51faef5c2435fd3
2015-08-05 06:11:36 -06:00
Josh Matthews
eed904f282 servo: Merge #6959 - Fix warnings (from servo:warnings_); r=jdm
Adds on top of #6949.

Source-Repo: https://github.com/servo/servo
Source-Revision: 0d8825c25c6eed4dc22b10e668b03fc79056702b
2015-08-05 03:44:22 -06:00
David Zbarsky
2f8faff83d servo: Merge #6954 - Implement strokeRect with zero-width or zero-height rects (from dzbarsky:stroke_rect); r=glennw
Source-Repo: https://github.com/servo/servo
Source-Revision: eecd9752093540220eb52308b8fb3ceba0939e3c
2015-08-04 16:38:57 -06:00
Matt Brubeck
e0d8993732 servo: Merge #6937 - Store Harfbuzz callback functions in a static var (from mbrubeck:hb_funcs); r=glennw
r? gw

Source-Repo: https://github.com/servo/servo
Source-Revision: d77f9415c5c64d18f31a1af45d2a9197373daa38
2015-08-03 22:40:35 -06:00
Matt Brubeck
ddb5d97a58 servo: Merge #6721 - Implement the unicode-bidi CSS property (from mbrubeck:unicode-bidi); r=pcwalton
r? @pcwalton

Source-Repo: https://github.com/servo/servo
Source-Revision: 5922ac606c63b91fdbd8c84fd0abb35450bee547
2015-08-03 15:37:12 -06:00
Patrick Walton
179aadb5a4 servo: Merge #6895 - layout: Tie transitions to the DOM node and finish them instantly when new styles are set (from pcwalton:better-transitions); r=glennw
Tying transitions to the DOM node avoids quadratic complexity when
updating them.

Finishing transitions instantly when styles are updated makes our
behavior more correct.

r? @glennw

Source-Repo: https://github.com/servo/servo
Source-Revision: ffe4bd25a495efd672986f090150b165811b6708
2015-08-02 15:04:54 -06:00
Patrick Walton
cd66568bea servo: Merge #6586 - script: Make the resource task communication use IPC channels (from pcwalton:resource-task-ipc); r=jdm
This change makes Servo use serialized messages over IPC channels for resource loading. The goal is to make it easier to make Servo multiprocess in the future. This patch does not make Servo multiprocess now; there are many other channels that need to be changed to IPC before that can happen. It does introduce a dependency on https://github.com/serde-rs/serde and https://github.com/pcwalton/ipc-channel for the first time.

At the moment, `ipc-channel` uses JSON for serialization. This is because serde does not yet have official support for bincode. When serde gains support for bincode, I'll switch to that. For now, however, the JSON encoding and decoding will constitute a significant performance regression in resource loading.

To avoid having to send boxed `AsyncResponseTarget` trait objects across process boundaries, this series of commits changes `AsyncResponseTarget` to wrap a sender only. It is then the client's responsibility to spawn a thread to proxy calls from that sender to the consumer of the resource data. This only had to be done in a few places. In the future, we may want to collapse those threads into one per process to reduce overhead. (It is impossible to continue to use `AsyncResponseTarget` as a boxed trait object across processes, regardless of how much work is done on `ipc-channel`. Vtables are fundamentally incompatible with IPC across mutually untrusting processes.)

In general, I was pretty pleased with how this turned out. The main changes are adding serialization functionality to various objects that `serde` does not know how to serialize natively—the most complicated being Hyper objects—and reworking `AsyncResponseTarget`. The overall structure of the code is unchanged, and other than `AsyncResponseTarget` no functionality was lost in moving to serialization and IPC.

r? @jdm

Source-Repo: https://github.com/servo/servo
Source-Revision: 2eb122f394651232abd683fc576a5c4288bf277f
2015-07-31 16:06:36 -06:00
Patrick Walton
33045acedc servo: Merge #6795 - Send display lists over IPC in multiprocess mode (from pcwalton:display-list-e10s-fixes); r=glennw
This patch set introduces the `--multiprocess` (`-M`) switch. Right now, all it does it cause display lists to be serialized, but eventually it will cause actual processes to be spawned.

r? @metajack

Source-Repo: https://github.com/servo/servo
Source-Revision: c4480b5d0309acc7f154166b91992f73a85de57f
2015-07-31 09:43:40 -06:00
Huon Wilson
7041857250 servo: Merge #6852 - Avoid undefined behaviour by allocating with align 1 (from huonw:fix-alignment); r=pcwalton
The allocation APIs require that the alignment is a power-of-two;
meaning 1 is the "I don't care" alignment, not 0.

Source-Repo: https://github.com/servo/servo
Source-Revision: 3792bd7611df7343c1bad6119a07bd14296c9ba6
2015-07-30 12:35:26 -06:00
Martin Robinson
7b39cbab34 servo: Merge #6842 - Update to the latest skia (from mrobinson:preserve-gl); r=pcwalton
Now GLRasteizationContexts require having an active GLContext. This will
allow preserving GLContexts and possibly framebuffers between
rasterization sessions, improving GL Rasterization performance.

Linux Before:
+ Painting Per Tile    4.5559    4.3392  1.6920  18.5548 74
Painting             170.1554  151.8353  0.0008 350.1093 28

Linux After:
+ Painting Per Tile    3.8726    3.1299  1.5848  12.6732 62
Painting              13.5480   10.8947  0.0029  39.1198 23

Source-Repo: https://github.com/servo/servo
Source-Revision: ccd341cc68f034df675ffaf80673a1bece078e08
2015-07-30 07:29:38 -06:00
Glenn Watson
657af379e9 servo: Merge #6801 - Accumulate and invert stacking context transform for hit tests (from glennw:hit-test-transforms); r=pcwalton
This makes hit tests work on stacking contexts with transforms.

Ref #6643.

Source-Repo: https://github.com/servo/servo
Source-Revision: fff104bb41dea0ba64fdca312de7b4c0d76277c8
2015-07-28 23:09:08 -06:00
Patrick Walton
89b3b2b275 servo: Merge #6616 - script: Make most of 2D canvas and WebGL run over IPC (from pcwalton:canvas-webgl-ipc); r=jdm
To actually make the multiprocess communication work, we'll need to
reroute the task creation to the pipeline or the compositor. But this
works as a first step.

r? @jdm

Source-Repo: https://github.com/servo/servo
Source-Revision: 1764267379a00b96a1df89f3917299a0c6fd325c
2015-07-25 01:50:31 -06:00
Patrick Walton
9a5dbcbefe servo: Merge #6629 - profile: Make the time and memory profilers run over IPC (from pcwalton:profiler-ipc); r=jdm
Uses a couple of extra threads to work around the lack of cross-process
boxed trait objects.

r? @nnethercote

Source-Repo: https://github.com/servo/servo
Source-Revision: f778e0eecf7cd8a2b870d18c3c305ff10d6b1894
2015-07-24 18:55:05 -06:00
Martin Robinson
e630ca094c servo: Merge #6679 - Have BufferMap store NativeSurfaces and rename to SurfaceMap (from mrobinson:surface-cache); r=pcwalton
We currently store LayerBuffers, because previously NativeSurfaces did
not record their own size. Now we can store NativeSurfaces directly,
which saves a bit of space in the surface cache and allows us to create
LayerBuffers only in the PaintTask.

This also means that instead of sending cached LayerBuffers, the
compositor can just send cached NativeSurfaces to the PaintTask.

Source-Repo: https://github.com/servo/servo
Source-Revision: 590cb33bb7ae9f4713a7c2ee8bfe1076c180e392
2015-07-24 17:59:45 -06:00
Matt Brubeck
83840728e7 servo: Merge #6471 - Basic support for bidirectional text (from mbrubeck:bidi); r=pcwalton
This re-orders text according to the Unicode bidirectional layout algorithm, using the [unicode-bidi](https://github.com/mbrubeck/unicode-bidi) crate.  It uses the natural order of the text based on Unicode character properties and the CSS `direction` property.

This does not yet support the CSS `unicode-bidi` property or the HTML `dir` attribute, but these should be straightforward to add.

r? @pcwalton.  Also depends on servo/unicode-bidi#4.

Source-Repo: https://github.com/servo/servo
Source-Revision: d3a36fafd948d7b9366feeca44f9ca9ad012d706
2015-07-23 21:20:49 -06:00
Akos Kiss
634811c7e4 servo: Merge #6718 - Add aarch64-unknown-linux-gnu support (from akosthekiss:aarch64-support); r=jdm
* Adding dependencies
* Replacing `i8` with `libc::c_char` to build properly on platforms
  where char is unsigned.

Source-Repo: https://github.com/servo/servo
Source-Revision: b386d7ae444af868907b9faff44e8432469160bd
2015-07-23 17:17:18 -06:00
Bogdan Cuza
8a7ad0a203 servo: Merge #6682 - Fix a few issues (from boghison:scripttask); r=jdm
- Use SmallVec<[T; N]>
 - Make find_iframe a free function
 - Make ProgressEvent use enums for bubbles and cancelable
 - Change README, as `rust-snapshot-hash` is just a text file

Source-Repo: https://github.com/servo/servo
Source-Revision: aafc3dfa963b466303d5f241d69036f211aaad00
2015-07-22 12:25:57 -06:00