Commit Graph

297 Commits

Author SHA1 Message Date
Corey Farwell
caebc586e7 servo: Merge #7178 - flow::Flow should follow *_mut naming conventions (from frewsxcv:flow-api-mut); r=nox
Fixes #7148

Source-Repo: https://github.com/servo/servo
Source-Revision: 014608f60c45574e6a347f39a96aa33b8eab02e1
2015-08-18 07:31:57 -06:00
Patrick Walton
7de36d89f2 servo: Merge #7177 - layout: Improve our handling of inline absolute containing blocks (from pcwalton:intervening-inline-block); r=mbrubeck
Several issues are addressed in this commit:

* Inline flows now bubble up their absolute descendants instead of
  making the inline flow the containing block for them. (In the future,
  we will need to make the inline flow *sometimes* be the containing
  block for them, but for now it improves sites to unconditionally
  bubble up.)

* Fragments now look at their inline fragment context to determine
  whether they are positioned.

* Inline flows now push the stacking-relative position of the absolute
  containing block down to their inline-block fragments.

* Inline absolute hypothetical fragments can be containing blocks.

* Fixes the logic in
  `containing_block_range_for_flow_surrounding_fragment_at_index`. The
  condition to determine whether fragments are positioned was inverted!

* `Descendants`/`AbsDescendants` has been refactored in order to become
  more friendly to inline absolute containing blocks in the future.

Improves the inline position of the green drop-down arrow in the Google
SERPs. (The block position is still wrong.)

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: d654841288ad6c7d4f8d7da3c68d04ef7df2c241
2015-08-17 13:56:53 -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
Patrick Walton
1665d711a0 servo: Merge #7150 - layout: Take relative position offsets for inlines and inline-blocks into account only once (from pcwalton:position-relative-inline-block); r=mbrubeck
There were two bugs here: (1) relative position applied to
scanned/unscanned text fragments independently of the container element
that applied that relative position, causing double-counting; (2)
relative position applied to inline block fragments independently of the
wrapped block itself, causing double-counting.

Closes #7067.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: 0bfde427e6a77d09d75b5a6e228c7b25f063395f
2015-08-12 09:34:26 -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
Patrick Walton
2d359af22e servo: Merge #7011 - layout: Take inline margins into account when determining the intrinsic sizes of fragments (from pcwalton:inline-margin-intrinsic-size); r=mbrubeck
Avoids a needless wrapped line in the repository name on GitHub.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: da06c2dda096bd5e2a8959c102c315f9838ed465
2015-08-06 18:28:13 -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
Patrick Walton
a020238b86 servo: Merge #6980 - layout: Take borders into account when positioning inline fragments on their baselines (from pcwalton:inline-border-baseline); r=glennw
Improves the Rust GitHub page.

r? @glennw

Source-Repo: https://github.com/servo/servo
Source-Revision: cc70e2f91fcfbc04ca9f02f109ab9894c0eccf9c
2015-08-05 05:03:43 -06:00
Patrick Walton
205973db81 servo: Merge #6940 - layout: When repairing styles for incremental reflow, only repair styles of nodes that represent the dirty node, *including its pseudo-element* (from pcwalton:inline-pseudo-repair-jumpiness); r=mbrubeck
r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: 56d3426431d98a6f43698f33bb7ce4d3ad67adeb
2015-08-04 12:53:26 -06:00
Glenn Watson
c51526ac99 servo: Merge #6784 - Implement offsetParent/Top/Left/Width/Height (from glennw:offset-ext); r=pcwalton
Source-Repo: https://github.com/servo/servo
Source-Revision: d66c59a15213dec17f38af0653e9e7e1bf579a95
2015-08-03 18:39:43 -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
Glenn Watson
902d5e4513 servo: Merge #6903 - Fix percentage height calculation, absolute containing block height calculations (from glennw:fix-height-again); r=pcwalton
It's not possible to correctly determine during the css cascade whether the container height
is explicitly specified. Additionally, the spec https://drafts.csswg.org/css2/visudet.html#the-height-property says this should affect the *used* height, rather than the computed height.

This significantly improves the layout in #6643.

Source-Repo: https://github.com/servo/servo
Source-Revision: 028707f5cd3263fd1476669207f67d5b9d5d4806
2015-08-03 10:38:21 -06:00
Jack Moffitt
8bf76830eb servo: Merge #6876 - Use local slice_chars (from metajack:slice_chars-layout); r=pcwalton
StrExt::slice_chars is deprecated and will be removed in Rust. This
lifts the implementation from Rust libstd and puts it in util::str.

This fixes a bunch of deprecation warnings in Servo.

Source-Repo: https://github.com/servo/servo
Source-Revision: a54404c92180b839d2cf089d9ec9a6afe8bd5ba3
2015-07-31 12:54:49 -06:00
David Zbarsky
c79a7611a6 servo: Merge #6798 - Implement getComputedStyle (from dzbarsky:gCS); r=pcwalton
It's not quite done but can probably be reviewed anyway.
I still need to finish up a few of the ToCss impls, I just got lazy and wanted to make sure things worked.

The computation of the used values is definitely not right, I'm going to investigate that.

Source-Repo: https://github.com/servo/servo
Source-Revision: acbca7b3aaf18866f7a1a79d9684149897bf4305
2015-07-29 18:48:45 -06:00
Ms2ger
b7afa848f3 servo: Merge #6794 - Remove StyledNode (from Ms2ger:StyledNode); r=pcwalton
Source-Repo: https://github.com/servo/servo
Source-Revision: 0b447651e4e5309c057f2cf2af58b3aa733bb4c4
2015-07-28 17:26:42 -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
Ms2ger
21e016f76e servo: Merge #6574 - Remove ReplacedImageFragmentInfo::for_node and unsafe code it required (from Ms2ger:for_node); r=pcwalton
Source-Repo: https://github.com/servo/servo
Source-Revision: 805232a85e401f1a07635da894c8e7d05fed4ce9
2015-07-08 08:02:30 -06:00
Ms2ger
c0efa4be7b servo: Merge #6573 - Don't lose a possible error in <SpecificFragmentInfo as fmt::Debug>::fmt (from Ms2ger:warnings); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: effe569e32d33d5c6c95d0882487b6ea128fd71b
2015-07-08 00:35:38 -06:00
Patrick Walton
34e36c0b01 servo: Merge #6492 - layout: Modify styles for replaced content as appropriate during incremental flow construction (from pcwalton:even-more-jumpiness); r=mbrubeck
Fixes jumpiness on lots of Web sites.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: bbcd42773342a587a8515f34bdc3ca69a380c0a8
2015-07-07 10:28:04 -06:00
David Winslow
fd19427d04 servo: Merge #6565 - Fix for #6542 - <img> top-padding adds margin (from dwins:issue_6452_image_padding); r=pcwalton
I wrote this patch that makes the test from #6542 render as expected but I am not confident it is actually the right fix.  Should the padding be included in the 'ascent' metric for images, or am I just introducing a bug that happens to offset the one I'm trying to fix?

Source-Repo: https://github.com/servo/servo
Source-Revision: 0688488a7fd3caee423968b33d6c19d79f94d29a
2015-07-07 06:27:13 -06:00
Simon Sapin
58dd9da612 servo: Merge #6468 - Update rust-selectors (from servo:update-selectors); r=Ms2ger
r? @Ms2ger

https://github.com/servo/rust-selectors/pull/33

Source-Repo: https://github.com/servo/servo
Source-Revision: c331db1623719774c3ead554bcdca0b9c02d90fe
2015-06-26 14:50:01 -06:00
Ms2ger
d90e9f1d68 servo: Merge #6454 - Make {ThreadSafe,}LayoutNode::get_jsmanaged private (from Ms2ger:opaque); r=metajack
Source-Repo: https://github.com/servo/servo
Source-Revision: e02e7c517c30e87adcb61ef408d1ecddc7fb1458
2015-06-24 14:27:11 -06:00
Ms2ger
cbc764953c servo: Merge #6443 - Various layout cleanup (from Ms2ger:cleanup-layout); r=pcwalton
Source-Repo: https://github.com/servo/servo
Source-Revision: 469b9550f6feec56d87ea5c772cb76453c13036a
2015-06-24 03:00:32 -06:00
Glenn Watson
d905323231 servo: Merge #6425 - Implement enough of 3d transforms spec to run the CSS FPS demo (from glennw:3d-transforms); r=pcwalton
Source-Repo: https://github.com/servo/servo
Source-Revision: dcb1237bb5deb84cdf921bf7b145b07eb2bd1430
2015-06-23 12:13:25 -06:00
ecoal95
87b4c78bcf servo: Merge #6423 - Use euclid from crates.io (from emilio:euclid); r=glennw
Sorry for not doing it yesterday, I couldn't.

cc @metajack @SimonSapin

Source-Repo: https://github.com/servo/servo
Source-Revision: 4ebb95ccd8e034007eacb447a054919ef4af2bf7
2015-06-18 20:50:22 -06:00
Ms2ger
750bc64737 servo: Merge #6325 - Use str::parse() rather than FromStr::from_str (from Ms2ger:from_str); r=nox
The former appears to be preferred.

Source-Repo: https://github.com/servo/servo
Source-Revision: db2eb36e19581eee83247160bbb03e2a671d0479
2015-06-14 03:55:56 -06:00
Corey Farwell
06b50698fa servo: Merge #6349 - rust-geom API changes (from frewsxcv:geom-api-changes); r=pcwalton
Shouldn't be merged until these have merged:

https://github.com/servo/rust-geom/pull/81

https://github.com/ecoal95/rust-offscreen-rendering-context/pull/13

https://github.com/servo/rust-layers/pull/178

~~I'll also need to update the Cargo lock files once they merge~~

Source-Repo: https://github.com/servo/servo
Source-Revision: cfcd8589d06935f83b903f76477ea03e4d4652d0
2015-06-13 13:52:07 -06:00
Nicholas Nethercote
009c298911 servo: Merge #6289 - Make LOCAL_CONTEXT_KEY safe and non-leaky (from nnethercote:unleak-LOCAL_CONTEXT_KEY); r=pcwalton
`LOCAL_CONTEXT_KEY` is currently a `Cell<*mut LocalLayoutContext>`. The use
of the raw pointer means that the `LocalLayoutContext` is not dropped when
the thread dies; this leaks FreeType instances and probably other
things. There are also some unsafe getter functions in `LayoutContext`
(`font_context`, `applicable_declarations_cache` and
`style_sharing_candidate_cache`) that @eddyb says involve undefined
behaviour.

This changeset changes `LOCAL_CONTEXT_KEY` to
`RefCell<Option<Rc<LocalLayoutContext>>>`. This fixes the leak and also
results in safe getters.

(Fixes #6282.)

Source-Repo: https://github.com/servo/servo
Source-Revision: 0dec64caf01c98d10e72b73e35b994127c23e81f
2015-06-09 15:52:45 -06:00
Simon Sapin
c439e52b3d servo: Merge #6258 - Drop support for box-sizing: padding-box (from SimonSapin:drop-box-sizing-padding-box); r=jdm
This reverts commit 945adab /  PR #6033.

The CSS Working Group resolved to drop this value from the spec:
http://log.csswg.org/irc.w3.org/css/2015-05-20/#e555680

The group was unable to come up with even a theoretical use case. Gecko only implemented this value for completeness. Other browsers vendors have clearly expressed they have no interest in implementing this.

Source-Repo: https://github.com/servo/servo
Source-Revision: 300c36f250f7838d8008d800644dc466bcd90a72
2015-06-02 08:57:04 -05:00
Corey Farwell
43e2d6c6d7 servo: Merge #6230 - Remove get_ prefix on getters (from frewsxcv:getters-get); r=nox
Part of #6224

I certainly didn't remove all of them; I avoided `unsafe` areas and also `components/script`

Source-Repo: https://github.com/servo/servo
Source-Revision: f6fe1953343a417b62fb310a380af7c6973849b0
2015-06-02 08:17:03 -05:00
Patrick Walton
5450290fbe servo: Merge #5586 - net: Don't load the placeholder image for background images, only for image fragments (from pcwalton:no-broken-background-image-redux); r=glennw
r? @jdm

Source-Repo: https://github.com/servo/servo
Source-Revision: 77099b25d590fdaac76721e7f98f4e83672e64a6
2015-05-20 16:43:31 -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
Patrick Walton
44983ea106 servo: Merge #5577 - script: Implement the width and height attributes for iframes per HTML5 § 4.8.6 (from pcwalton:iframe-size-attributes); r=jdm
Improves Amazon and Ars Technica.

r? @jdm

Source-Repo: https://github.com/servo/servo
Source-Revision: ee147c164a8a13743dec2def60b13997145e7a55
2015-05-20 13:51:05 -05:00
Patrick Walton
203fb9aae6 servo: Merge #5993 - layout: Support percentage widths in inline-blocks (from pcwalton:inline-block-percentage-widths); r=mbrubeck
Improves Twitter.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: acb9824229bf9e02eaabdb9d924f7db242a1ac85
2015-05-19 16:03:15 -05:00
Jinwoo Song
4b3d53fce0 servo: Merge #6033 - Add support for 'padding-box' value for 'box-sizing' property (fixes #6032) (from Jinwoo-Song:boxsizing_paddingbox); r=pcwalton
Spec: http://dev.w3.org/csswg/css-ui/#valdef-box-sizing-padding-box

Currently, only Firefox is supporting this value.

Source-Repo: https://github.com/servo/servo
Source-Revision: 68d135e67116fd15634b0e61ce101e71d8bf34c6
2015-05-15 09:42:18 -05:00
Patrick Walton
133aaea08f servo: Merge #5911 - layout: Allow inline elements to be containing blocks for absolutely-positioned elements (from pcwalton:absolute-inline-containing-blocks); r=mbrubeck
r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: c0ee952a2a7054dcc7e97990a625c281322dd526
2015-05-13 14:27:21 -05:00
Patrick Walton
b7d7badd9e servo: Merge #6014 - layout: Support block-direction margins for inline-blocks (from pcwalton:inline-block-block-direction-margins); r=glennw
Improves linux.com.

r? @glennw

Source-Repo: https://github.com/servo/servo
Source-Revision: 79363a427bc416c1249822da1c7b4d2156fd81de
2015-05-11 19:54:39 -05:00
Ms2ger
1cdbd0dcb7 servo: Merge #5999 - Move get_attr and get_attrs into TElementAttributes (from Ms2ger:TElement); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: cf9338cb2eb1ff0c28e83d40e06b687828ab4c04
2015-05-10 11:26:25 -05:00
Patrick Walton
55fb4b1f93 servo: Merge #5990 - layout: Take the width attribute of <img> into account when computing the intrinsic widths of the associated fragment (from pcwalton:img-width-attribute-intrinsic-width); r=glennw
Fixes sites that use spacer gifs for table layout, such as the comments
page on Hacker News.

r? @glennw

Source-Repo: https://github.com/servo/servo
Source-Revision: 49b73c0bfe50366e767525f9f90c5aa348f68f18
2015-05-08 15:45:52 -05:00
Patrick Walton
7dada6d4f9 servo: Merge #5940 - layout: Implement inline margins (from pcwalton:inline-margins); r=glennw
Improves the Google SERPs.

r? @glennw

Source-Repo: https://github.com/servo/servo
Source-Revision: 0872ed922ff49d28e0183ea1407e07a9cbe338a8
2015-05-07 19:10:31 -05:00
Simon Sapin
25523c4789 servo: Merge #5951 - Clean up the Au API (from SimonSapin:au-cleanup); r=mbrubeck
Fix #5943.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: 1721cf45ed59306a69f3ade08feca065804c3804
2015-05-05 15:08:12 -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
Patrick Walton
fdfc800fa4 servo: Merge #5919 - layout: Fix a couple of issues relating to intrinsic widths of inline blocks (from pcwalton:inline-block-intrinsic-widths); r=mbrubeck
* Stop double-counting border and padding for inline-block fragments.
  (Test case: `inline_block_border_intrinsic_size_a.html`.)

* Take clearance into account when determining intrinsic widths of
  blocks containing floats.

Improves the Amazon headers.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: 7b87085c1880c60aa3be5b3ec4572a0d93fd5537
2015-05-04 13:37:24 -05:00
Glenn Watson
ae03dda6e8 servo: Merge #5913 - Various fixes to getClientBoundingRect() (from glennw:bounding-rect); r=pcwalton
* Fix queries involving stacking contexts
 * The code was double accumulating stacking context origins.
* Handle queries of inline elements.
 * The node addresses being compared were incorrect (CharacterData vs. Span)
* Handle ScriptQuery reflows correctly.
 * The layout task was skipping the compute absolute positions traversal, so failed before window.onload.

Source-Repo: https://github.com/servo/servo
Source-Revision: 5f6a740190e1e5912d84162c92c6b79365df165a
2015-05-01 13:15:23 -05:00
Patrick Walton
26091e84af servo: Merge #5878 - layout: Make the style-specified width affect minimum width (from pcwalton:intrinsic-style-specified-width); r=mbrubeck
Improves the front page of Google.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: adec683333895a5112d3d8295fa01a6b06ff38ad
2015-04-28 05:02:32 -05:00
Simon Sapin
e11ff55b59 servo: Merge #5870 - layout: Implement most of border-collapse per CSS 2.1 § 17.6.2 (from SimonSapin:border-collapse); r=SimonSapin
Fixes #5300, which it is a rebase of.

Known issues:

* Collapsed borders do not correctly affect the border-box of the table
  itself.

* The content widths of all cells in a column and the content height of
  all cells in a row is the same in this patch, but not in Gecko and
  WebKit.

* Corners are not painted well. The spec does not say what to do here.

* Column spans are not handled well. The spec does not say what to do
  here either.

Source-Repo: https://github.com/servo/servo
Source-Revision: 8a4555cc53bc1bbb21a08eb6f010cb1215034419
2015-04-27 12:29:15 -05:00
Patrick Walton
05c9571a2e servo: Merge #5816 - layout: Don't strip trailing newlines from fragments, since we use their presence to determine the line flush mode (from pcwalton:more-jumpiness); r=mbrubeck
Fixes the "jumpiness" seen on the Google home page, Wikipedia, and many
other places.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: 211ee668fae7f619ac7e09abd776a6f45fc40052
2015-04-24 15:17:07 -05:00
Ms2ger
f3c2bbdd16 servo: Merge #5827 - Use as_slice less (from Ms2ger:slice); r=mbrubeck
Source-Repo: https://github.com/servo/servo
Source-Revision: 79be3b967668e46a4289f4fc8fce2b4f457cab23
2015-04-24 12:12:53 -05:00