Commit Graph

388 Commits

Author SHA1 Message Date
Patrick Walton
ec0209cd30 servo: Merge #4523 - layout: Implement text-rendering per SVG 1.1 § 11.7.4 (from pcwalton:text-rendering); r=mbrubeck
Like Gecko, we treat `geometricprecision` the same as
`optimizelegibility` for now.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: 1a021f66354d9b6c14f76178d803185e50ad87d3
2015-01-08 13:48:53 -07:00
Patrick Walton
c93585da15 servo: Merge #4525 - layout: Implement outline-offset per CSS-UI-3 § 5.5 (from pcwalton:outline-offset); r=mbrubeck
r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: 112ab49706a525ab0b93ca37bd41e9d929218736
2015-01-08 12:03:53 -07:00
Patrick Walton
851088e982 servo: Merge #4530 - layout: Implement pointer-events: none per SVG 1.1 § 16.6 (from pcwalton:pointer-events); r=mbrubeck
SVG-only values are not yet supported.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: a88e668091842dc77169b235a03b5264e65ebdc6
2015-01-08 10:48:55 -07:00
Patrick Walton
76e5fce61f servo: Merge #4529 - layout: Implement word-break: break-all per CSS3-TEXT § 5.2 (from pcwalton:word-break); r=mbrubeck
r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: 3d9200e4066c8147d82de38c071bc945c233c049
2015-01-08 10:09:55 -07:00
Ms2ger
b3c7f9d2ca servo: Merge #4554 - Update rustc to revision 2cfb5acb5a2751c759627377e602bac4f88f2d19 (from servo:rustup_20141221); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 1d7148c79f9124779a910fd5291c5fa0543b2dae
2015-01-08 08:00:57 -07:00
Ms2ger
843040ab81 servo: Merge #4548 - Various cleanup (from Ms2ger:cleanup); r=Manishearth
Source-Repo: https://github.com/servo/servo
Source-Revision: 65ee8166bd64e911502e29a050258b70d9f263aa
2015-01-05 01:27:48 -07:00
Patrick Walton
fe1e6fa761 servo: Merge #4460 - layout: Paint stacking contexts' overflow areas properly (from pcwalton:stacking-context-overflow); r=glennw
This was making `box-shadow` not show up in many cases, in particular,
but the effects were not limited to that.

r? @glennw

Source-Repo: https://github.com/servo/servo
Source-Revision: 499d17f564d699e5e290e8a3859f64e7536827a7
2015-01-04 18:51:48 -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
Megha Gupta
49ad060695 servo: Merge #4495 - Add HTMLElementTypeId enum (fixes #3625) (from MeghaGupta:typeid); r=Ms2ger
Source-Repo: https://github.com/servo/servo
Source-Revision: 2e17cae5d080db72d5f89733d19e0304857cfd34
2015-01-04 12:12:48 -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
Ms2ger
9695007fe1 servo: Merge #4538 - Remove obsolete attributes (from Ms2ger:attributes); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: d8b6cec722e67f1fd39f154f4f0a298f2227501f
2015-01-03 10:39:48 -07:00
Martin Robinson
6c0ac241fb servo: Merge #4536 - Stall PaintTask exit until it can release all buffers (from mrobinson:pixmap); r=pcwalton
It is possible for a PaintTask to start exiting soon after sending new
buffers to the compositor. In that case, the compositor should return
the now unnecessary buffers to the PaintTask so that it can properly
free them.

To accomplish this, the compositor now keeps a hash map of paint task
channels per pipeline id. When a PaintTask exists, the constellation
informs the compositor that it can forget about it. Additionally, the
PaintTask should not wait for any buffers when the engine is doing a
complete shutdown. In that case, the compositor is already halted and
has simply let all buffers leak. We pipe through the shutdown type when
destroying the pipeline to make this decision.

Fixes #2641.

Source-Repo: https://github.com/servo/servo
Source-Revision: a31acffb0405b2c38b39c39c6d552f2ba79b6326
2015-01-02 20:21:47 -07:00
Ms2ger
68127ba40c servo: Merge #4490 - Remove some transmute calls (from Ms2ger:transmutes); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: dbb10747828b08f5dc9bcaea251e1f2d16f554fd
2014-12-27 12:27:46 -07:00
Manish Goregaokar
8e0ed407b9 servo: Merge #4485 - Replace most to_string calls by into_string calls (from servo:into_string); r=Ms2ger
`str::to_string()` goes through a `Formatter`, `str::into_string()` is a direct copy and is apparently 5× faster.

This is a rebase of the boring and bitrot-prone parts of #4366.

Source-Repo: https://github.com/servo/servo
Source-Revision: 9857ea26cb9ee262654bee97322dbbf373486bff
2014-12-27 06:51:44 -07:00
Patrick Walton
25ca4de050 servo: Merge #4459 - gfx: Clip the background properly when border-radius is used, and clean up some painting stuff (from pcwalton:border-radius-clipping); r=glennw
Together these improve a large number of sites: GitHub, Reddit, Wikipedia, etc.

r? @glennw

Source-Repo: https://github.com/servo/servo
Source-Revision: 63a7742d834e9ed44421baa3ce218a5eabce58bf
2014-12-22 15:51:48 -07:00
Tetsuharu OHZEKI
d32b4e13f5 servo: Merge #4434 - script: Remove glob imports added in #4405 (from saneyuki:glob_script); r=jdm
#4406

Source-Repo: https://github.com/servo/servo
Source-Revision: 803e5ef7904f2843d8e44184f9154af079eea9fa
2014-12-18 15:57:48 -07:00
Simon Sapin
5a3cd41bb2 servo: Merge #4425 - Fix some writing mode mismatch assertions errors (from SimonSapin:mixed-writing-modes); r=mbrubeck
The rendering is still wrong beause of #2795, but at least we get a rendering.

(This test change is just for readability, it should be equivalent to before.)

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: 3cc87165a1279005fa2c12413f33487dee31df96
2014-12-18 15:31:28 -07:00
Patrick Walton
d062ae2387 servo: Merge #4394 - layout: Implement clip per CSS 2.1 § 11.1.2 (from pcwalton:clip); r=SimonSapin
Only the recommended, comma-separated syntax is supported.

r? @SimonSapin

Source-Repo: https://github.com/servo/servo
Source-Revision: a80d88897d176630c79f929e8b1fd661b2e1a17c
2014-12-18 14:12:51 -07:00
Tetsuharu OHZEKI
ab160d6216 servo: Merge #4418 - gfx: Remove glob imports added in #4405 (from saneyuki:glob_gfx); r=jdm
#4406

Source-Repo: https://github.com/servo/servo
Source-Revision: a425bb528957fd77cf8300b17e153f8fc3777483
2014-12-18 12:52:01 -07:00
Tetsuharu OHZEKI
6b6833bc4b servo: Merge #4424 - style: Remove glob imports added in #4405 (from saneyuki:glob_style); r=SimonSapin
#4406

Source-Repo: https://github.com/servo/servo
Source-Revision: 1f342638c46d6b43bca4cfbd405aceedc0465a85
2014-12-18 11:03:55 -07:00
Simon Sapin
66d7332a20 servo: Merge #4420 - Fix warnings (from servo:fix-warnings); r=Ms2ger
Source-Repo: https://github.com/servo/servo
Source-Revision: eea49ee1d986c306a8eec32b64be9b10cb2278fc
2014-12-18 04:42:50 -07:00
Patrick Walton
53a1509c58 servo: Merge #4358 - compositing: Implement cursor per CSS3-UI § 8.1.1 in the CEF/Mac port (from pcwalton:cursor); r=mbrubeck
I'm not sure how we want to handle Linux cursors, and GLFW has no
ability to set cursors (short of disabling it and managing it yourself).

If you test this in the wild you will probably hit #4357 until that PR lands.

Source-Repo: https://github.com/servo/servo
Source-Revision: e2267e0a0749e27046ee8a26ba514cc6865e0345
2014-12-18 00:24:49 -07:00
Patrick Walton
da7904adda servo: Merge #4404 - layout: Implement caption-side per CSS 2.1 § 17.4.1 (from pcwalton:caption-side); r=mbrubeck
`caption-side` is used by 4% of pages by number of loads.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: 6eb9ae1eff2d26c52ad2ac59eec703bd7e8ae867
2014-12-17 23:57:52 -07:00
Patrick Walton
bd7ccaf413 servo: Merge #4400 - layout: Implement empty-cells per CSS 2.1 § 17.6.1.1 (from pcwalton:empty-cells); r=SimonSapin
r? @SimonSapin

Source-Repo: https://github.com/servo/servo
Source-Revision: 636641f90533c941a3580b5caee1ae1fef953841
2014-12-17 22:33:51 -07:00
Glenn Watson
636d338cf6 servo: Merge #4405 - Update rustc to revision 3dcd2157403163789aaf21a9ab3c4d30a7c6494d (from servo:rustup_20141124); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: fbf42c951b2f53d91e2f32f8035484a07ea83493
2014-12-17 18:45:49 -07:00
Matthew Rasmus
6ab3784311 servo: Merge #4133 - Implements basic form resetting (from mttr:form_resetting); r=jdm
We can reset `<input type=text>` fields! I wish I could've done something with checkboxes, but unfortunately, that's it for now.

In addition to that, this PR implements `HTMLInputAttribute.defaultValue`, updates wpt-test to expect passing tests as a result of that implementation, and fixes an index error crash with text inputs.

edit: also includes an html example where one may lazily watch form resets in action: ` tests/html/form_reset_handsfree.html`

Source-Repo: https://github.com/servo/servo
Source-Revision: 5951056973fc0e08e70224214740a274ca8ef20f
2014-12-16 15:03:49 -07:00
Ms2ger
7f0692ab5b servo: Merge #4390 - Remove some manual deref() / deref_mut() calls (from Ms2ger:derefs); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 905c30d69739fcacfe67cb2605eb9f669ae9a82f
2014-12-16 09:22:02 -07:00
Ms2ger
c38a900fd3 servo: Merge #4389 - Fix bogus transmute (from Ms2ger:transmute); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 508924771e8f0f60700931ebd88aebf8c8889e44
2014-12-16 08:54:51 -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
Patrick Walton
97d6970f8c servo: Merge #4371 - layout: Make line breaking able to restart from any position (from pcwalton:line-breaking-improvements); r=mbrubeck
This commit removes the "merge-fragments" pass from inline reflow,
instead merging "on the fly". This ended up being simpler, as well as
more fine grained. Additionally, this patch makes the line breaker no
longer clone every fragment (!)

This functionality will be used in the implementation of
`text-overflow`.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: 88ec52dd617bafe384553ef38325c552fb4f1e23
2014-12-15 19:09:49 -07:00
Patrick Walton
1ed77c8245 servo: Merge #4310 - layout: Implement basic lists and the CSS1 list properties (from pcwalton:lists); r=SimonSapin
The exact rendering is ill-spec'd. Some things are ugly (especially the
width and height of list style images) but they are infrequently used
and I believe this implementation matches the spec. Numeric lists are
not supported yet, since they will require a separate layout pass.

The implementation is a subclass of `BlockFlow`, on advice from Robert
O'Callahan.

r? @SimonSapin

Source-Repo: https://github.com/servo/servo
Source-Revision: 112ef5c484e821aa4869aeaf12a12146f2424fe0
2014-12-15 17:42:48 -07:00
Patrick Walton
ea8fffc9f3 servo: Merge #4318 - gfx: Implement box-shadow per CSS-BACKGROUNDS (from pcwalton:box-shadow-redux); r=SimonSapin
r? @SimonSapin

Source-Repo: https://github.com/servo/servo
Source-Revision: 7805fe19edf5353711f49a8ef1c988dc9f932bb7
2014-12-15 16:31:14 -07:00
Patrick Walton
a25bac63a9 servo: Merge #3844 - script: Improve dirty propagation and fix script-layout synchronization (from pcwalton:script-layout-synchronization); r=jdm
This fixes race conditions whereby layout and script could be running
simultaneously.

r? @jdm
cc @cgaebel

Source-Repo: https://github.com/servo/servo
Source-Revision: 5f2684d2f81046abd7548fb22d996d1e506a104a
2014-12-15 15:31:21 -07:00
Patrick Walton
098dc9f669 servo: Merge #4361 - layout: Implement overflow-wrap/word-wrap per CSS-TEXT § 6.2 (from pcwalton:overflow-wrap); r=glennw
This property is used by approximately 55% of page loads.

To implement the line breaking behavior, the "breaking strategy" has
been cleaned up and abstracted. This should allow us to easily support
other similar properties in the future, such as `text-overflow` and
`word-break`.

r? @glennw

Source-Repo: https://github.com/servo/servo
Source-Revision: 68ab18876bf4e210da26590420b9844b9cb0c92d
2014-12-13 14:06:47 -07:00
Patrick Walton
9ccf73c859 servo: Merge #4360 - layout: Implement word-spacing per CSS 2.1 § 16.4 (from pcwalton:word-spacing); r=mbrubeck
This assumes that there are no ligatures that span across multiple
words. Since we have a per-word shape cache, this is a safe assumption
as of now. I have left comments to ensure that, if and when this is
revisted, we make sure to handle it properly.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: 98920b1315e7b867b293a56f5eb81784845f4a19
2014-12-13 10:39:46 -07:00
Patrick Walton
6fb62182d5 servo: Merge #4328 - layout: Implement text-indent per CSS 2.1 § 16.1 (from pcwalton:text-indent); r=SimonSapin
I had to use a somewhat unconventional method of computing text
indentation (propagating from blocks down to inlines) because of the way
containing blocks are handled in Servo.

(As a side note, neither Gecko nor WebKit correctly handles percentages
in `text-align`, at least incrementally -- i.e. when the percentages are
relative to the viewport and the viewport is resized.)

r? @SimonSapin

Source-Repo: https://github.com/servo/servo
Source-Revision: be6612193786ef22810fd66b3ce244a7e66cbcf4
2014-12-12 15:57:46 -07:00
Patrick Walton
68b72c82e4 servo: Merge #4325 - gfx: Implement letter-spacing per CSS 2.1 § 16.4 (from pcwalton:letter-spacing); r=mbrubeck
The ligature disabling code has been manually verified, but I was unable
to reftest it. (The only way I could think of would be to create an
Ahem-like font with a ligature table, but that would be an awful lot of
work.)

Near as I can tell, the method used to apply the spacing (manually
inserting extra advance post-shaping) matches Gecko.

r? @SimonSapin

Source-Repo: https://github.com/servo/servo
Source-Revision: 914f27263d60ffcbe2fd1f9e47a48e3aa3f1cd76
2014-12-12 12:45:54 -07:00
Joseph Crail
6c02d6ca77 servo: Merge #4171 - Fix spelling mistakes in comments (from jbcrail:fix-spelling); r=jdm
I only updated comments, not strings.

Source-Repo: https://github.com/servo/servo
Source-Revision: f451005f4fe075c849de2f3766f5bf84510b8465
2014-12-12 02:12:51 -07:00
Patrick Walton
1c40c6ac32 servo: Merge #4339 - layout: Make table layout idempotent (from pcwalton:refactor-tables); r=mbrubeck
By "idempotent" I mean that later passes do not stomp on data from
earlier passes, so that we can run the passes individually for
incremental reflow. The main change here was to stop overwriting the
"minimum inline-size" field of each column with the column's computed
inline-size.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: 909dd0e80f5c6a9051da6e2f70d77186cc545b1a
2014-12-11 18:06:53 -07:00
Patrick Walton
a6709e3b25 servo: Merge #4299 - layout: Implement outline per CSS 2.1 § 18.4 (from pcwalton:outline); r=mbrubeck
`invert` is not yet supported.

Objects that get layers will not yet display outlines properly. This is
because our overflow calculation doesn't take styles into account and
because layers are always anchored to the top left of the border box.
Since fixing this is work that is not related to outline *per se* I'm
leaving that to a followup and making a note in the code.

r? @SimonSapin

Source-Repo: https://github.com/servo/servo
Source-Revision: d31237f3439e5e5d4055b3a9e53eaeee4f3cdf2c
2014-12-11 16:45:56 -07:00
Patrick Walton
9f515be38b servo: Merge #4311 - layout: Implement text-transform (from pcwalton:text-transform); r=SimonSapin
The Unicode awareness of `text-transform` is implemented as well as
possible given the Rust standard library's Unicode support. In
particular, the notion of an alphabetic character is used instead of a
letter.

Gecko has a subclass of text run to handle text transforms, but I
implemented this in a simpler way.

r? @SimonSapin

Source-Repo: https://github.com/servo/servo
Source-Revision: 9bf1d1862a141dcf75d585d7ae5675d4e86a4c0d
2014-12-10 15:12:58 -07:00
Martin Robinson
8468611d65 servo: Merge #4073 - Remove PseudoDisplayItemClass (from mrobinson:pseudo-rm-rf); r=pcwalton
Now that content box queries are made against the flow tree, we can
remove PseudoDisplayItems from the display list.

Source-Repo: https://github.com/servo/servo
Source-Revision: d988d01dd01c4e7e1503667cdfe91d4663e2c916
2014-12-10 10:57:58 -07:00
Matt Brubeck
8bf363a465 servo: Merge #4309 - Simple cleanups in layout code (from mbrubeck:float-cleanup); r=pcwalton
r? @SimonSapin or @pcwalton

Source-Repo: https://github.com/servo/servo
Source-Revision: d8a5199ba847bb46733eb4794d0bf93966964499
2014-12-09 17:01:12 -07:00
Clark Gaebel
b2e4f7735a servo: Merge #4194 - Fixed #4170 - Incremental reflow wasn't being aggressive enough when nodes get reparented (from cgaebel:incremental-reflow-fix); r=pcwalton
When inserting a node that was already dirtied, the dirtying logic
would short circuit: "This node is already dirty? Great! Then its
parents must be HAS_DIRTY_DESCENDANTS, too! Let's skip that step."

This isn't appropriate when nodes move around the tree. In that case,
the node may be marked HAS_CHANGED, but ancestors may not yet have
the HAS_DIRTY_DESCENDANTS flag set.

This patch adds a `content_and_heritage_changed` hook in the document,
to deal with these cases appropriately.

Source-Repo: https://github.com/servo/servo
Source-Revision: 5c506f7a98368020c7936517f1d8e243c9556937
2014-12-08 12:28:14 -07:00
Matthew Rasmus
d8454896c0 servo: Merge #4190 - Implements the :checked pseudo-class for inputs (from mttr:checked_pseudo_class); r=Manishearth
Relevant spec:
https://html.spec.whatwg.org/multipage/scripting.html#selector-checked

Also modifies HTMLInputElement::SetChecked to no longer modify its
checked content value, instead making use of its internal checkedness
state now that we can match `:checked` properly.

Source-Repo: https://github.com/servo/servo
Source-Revision: f18c18371d2bb5edde9d64e46b74bf01411afab3
2014-12-08 12:01:51 -07:00
Tetsuharu OHZEKI
91421a9ceb servo: Merge #4279 - Rename "render"/"rendering" to "paint"/"painting" (from saneyuki:rename); r=jdm
#4275

* This changeset rename "render"/"rendering" to "paint"/"painting" under `components/`.
* This does not rename words which are used as general browser's working.
  * So this doesn't change `reftest.rs`.

Source-Repo: https://github.com/servo/servo
Source-Revision: 0b486b12109ab765ecee4cbcc684e5d99e8ad5ad
2014-12-08 10:28:10 -07:00
Timothy B. Terriberry
02f6e25351 servo: Merge #4234 - Change time::profile's meta booleans to enums (from tterribe:issue4158); r=metajack
This makes these parameters self-documenting.
This patch does not attempt to push those enums into the data
structures that feed calls to this function.

Fixes #4158.

Source-Repo: https://github.com/servo/servo
Source-Revision: bc7b5b35b44e82dadb35242e39b190b3d1fcba10
2014-12-05 17:34:03 -07:00
Matthew Rasmus
c8b076b106 servo: Merge #4152 - Implements multi line text input for TextArea (from mttr:textview); r=jdm
Fixes #3918

Can be tested in `tests/html/textarea.html`. Also implemented some content reflecting IDL attributes for HTMLTextAreaElement while I was in there.

There are some major problems with TextInput when Multiple is enabled that I haven't addressed here, but I'm prepared to open up a follow-up issue.

Source-Repo: https://github.com/servo/servo
Source-Revision: a369dcfa01f5ad7634469f3a3b652d7f650129a0
2014-12-05 16:25:07 -07:00
Corey Richardson
db9e4ee21e servo: Merge #4217 - Don't categorize HTMLInputElement as a TableCellFragment (from cmr:issue/4196); r=jdm
Closes  #4196.

r? @jdm

Source-Repo: https://github.com/servo/servo
Source-Revision: 90b0369cdfbd62b6c6fa745beffdfd206c825543
2014-12-04 00:06:55 -07:00
Patrick Walton
4c106e6d50 servo: Merge #4036 - layout: Implement opacity per CSS-COLOR § 3.2 (from pcwalton:opacity); r=SimonSapin
This adds the infrastructure necessary to support stacking contexts that
are not containing blocks for absolutely-positioned elements. Our
infrastructure did not support that before. This minor revamp actually
ended up simplifying the logic around display list building and
stacking-relative position computation for absolutely-positioned flows,
which was nice.

This will need this PR: https://github.com/servo/rust-azure/pull/112 I have not updated the Cargo.lock file yet because I want the merge commit.

r? @glennw
f? @SimonSapin

Source-Repo: https://github.com/servo/servo
Source-Revision: 68c90e27970808bddcb8c8a4e782bd4405e67a5c
2014-12-03 15:22:00 -07:00