Commit Graph

92 Commits

Author SHA1 Message Date
Josh Matthews
fc0399b718 servo: Merge #3759 - Implement Document.readyState. Prevent iframes from notifying the compos (from jdm:readystate); r=Ms2ger
...itor after the initial parse. Fixes #1720. Fixes #3738.

r? @Ms2ger or @Manishearth

Source-Repo: https://github.com/servo/servo
Source-Revision: 2df236376a443d8d031ee7a72379f336f2cd8cc4
2014-10-23 09:18:37 -06:00
Tetsuharu OHZEKI
19bfe8ebf2 servo: Merge #3776 - Macroize event handler getters and setters (from saneyuki:macro); r=jdm
Fix #3755

This doesn't convert some specialized event handlers (e.g. `HTMLBodyElement`'s ones, `HTMLElement.GetOnload()`).

Source-Repo: https://github.com/servo/servo
Source-Revision: 470d27a6681b4647de64c085654403820d48f7af
2014-10-22 22:30:29 -06:00
Edit Balint
e0046d6bcd servo: Merge #3774 - Make DOM getters that return &JS<T> return Temporary<T> instead #3707 (from ebalint:3707_DOM_getters); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 1bc9c049c6536bc102939fd97f4390eed3dcc2bf
2014-10-22 13:36:38 -06:00
Bruno de Oliveira Abinader
8acaae1ca0 servo: Merge #3757 - Usage of JSRef<Attr> in before_remove_attr & after_set_attr (from brunoabinader:content_changed); r=jdm
```JSRef<Attr>``` does not require allocating a ```DOMString``` for value, which are unused in most cases. It also provides more access to ```Attr``` data.

Source-Repo: https://github.com/servo/servo
Source-Revision: 590a93120a26ab6ea787831d7ba08c47423148bc
2014-10-22 09:33:37 -06:00
Tetsuharu OHZEKI
9ee50fb2d1 servo: Merge #3737 - Use DOMRefCell in script crate (from saneyuki:cell); r=jdm
#3050

Altough LayoutDataRef is touched from layout, we don't use DOMRefCell in it becasuse
it's expected to manipulate in layout task.

Source-Repo: https://github.com/servo/servo
Source-Revision: f5e8df9dac9330f2818906c471ed05f5975828c6
2014-10-22 07:54:36 -06:00
Clark Gaebel
2a3a6dbe81 servo: Merge #3744 - More efficient preorder DOM traversals (from cgaebel:efficient-preorder-traversal); r=pcwalton
This also tackles some nearby FIXMEs. `traverse_preorder` is used in a LOT of
DOM functions..

r? @pcwalton

Source-Repo: https://github.com/servo/servo
Source-Revision: 2bc4ffe5cf331fb7bd246af34c5d12e4e03adda9
2014-10-21 13:09:38 -06:00
Gilles Leblanc
8eb8e0ead3 servo: Merge #3720 - Edits dom/bindings/DESIGN.md (from gilles-leblanc:fix-grammatical-errors); r=jdm
This corrects and improves the dom/bindings/DESIGN.md document and also
corrects a grammatical error in a tests/reftest.rs message.

Source-Repo: https://github.com/servo/servo
Source-Revision: 65856dd00a7da07ece8d3e1e63bc495943266a24
2014-10-18 00:24:25 -06:00
Gilles Leblanc
282b3a0bbb servo: Merge #3710 - Make HTMLFormElementHelpers::submit take an enumerated argument instead (from gilles-leblanc:issue-3677); r=jdm
...of a boolean

Fixes #3677

Source-Repo: https://github.com/servo/servo
Source-Revision: de2178bbc073a930ab856b216be9444a02886d70
2014-10-16 19:45:22 -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
Ms2ger
a3e10f96d9 servo: Merge #3699 - Move jsstring_to_str and jsid_to_str to conversions.rs (from Ms2ger:jsstring_to_str); r=jdm
This appears to be a more sensible location for them.

Relevant to #433.

Source-Repo: https://github.com/servo/servo
Source-Revision: 5be4f40bef05c749bdb5353541abae21a826f6b6
2014-10-16 08:45:19 -06:00
Tetsuharu OHZEKI
c145110d75 servo: Merge #3695 - Use DOMRefCell in the rest of dom structs (from saneyuki:cell); r=jdm
#3050

Source-Repo: https://github.com/servo/servo
Source-Revision: 1de2fb3721b8a189156f4a860009cca01d8b2fd9
2014-10-16 00:03:18 -06:00
Manish Goregaokar
3bb2ca07b8 servo: Merge #3684 - Add #[dom_struct], inline autogenerated trace() methods (from Manishearth:dom_struct); r=jdm
This attribute implies #[jstraceable], #[privatize], and #[must_root].

Source-Repo: https://github.com/servo/servo
Source-Revision: 9af090006017747809f5f72a8870bd516b20f483
2014-10-15 23:24:20 -06:00
Tetsuharu OHZEKI
f497b6922c servo: Merge #3694 - Remove Node.unsafe_get_flags() (from saneyuki:node); r=jdm
`Node.unsafe_get_flags()` returns `*const NodeFlags`, but `NodeFlags` has only `u8` length.
So We should just returns a raw value instead of any pointers.

Source-Repo: https://github.com/servo/servo
Source-Revision: 84b2fe54b9a4f1b04531600492be1b27d3915e05
2014-10-15 22:45:19 -06:00
Ehsan Akhgari
21cf951a82 servo: Merge #3693 - Throw DataCloneError from worker postMessage if structured clone fails (from ehsan:3248); r=jdm
This fixes #3248.

r? @jdm.  Please review for mistakes mercilessly!  Also, I got a host of test failures when running the worker tests, not sure if these tests are expected to pass locally or not.

Source-Repo: https://github.com/servo/servo
Source-Revision: a6001329b8186ca655d8c09c29e5167782ad43cb
2014-10-15 22:06:19 -06:00
Mukilan Thiyagarajan
ee3be6d1e6 servo: Merge #3662 - Implement timers (setTimeout/setInterval) for workers (from mukilan:worker_timer); r=jdm
Closes issue #3236

Source-Repo: https://github.com/servo/servo
Source-Revision: f94228d9f95327aac987103806b6ed452c96f16a
2014-10-15 20:48:22 -06:00
Ms2ger
eea039f813 servo: Merge #3691 - Remove obsolete comments about cycles (from Ms2ger:cycle-comments); r=jdm
The tracing setup has ensured that the cycles can be collected for a long time
now.

Source-Repo: https://github.com/servo/servo
Source-Revision: d54fb041ba80350d1ea0fb342d6edb273d30ccf3
2014-10-15 18:42:20 -06:00
Ms2ger
71e068b8fa servo: Merge #3685 - Remove the reflector field from Document (from Ms2ger:doc-reflector); r=jdm
This field became unused in commit 99a36cbeb6077976861d94b7af16e9e57994a14d.

Source-Repo: https://github.com/servo/servo
Source-Revision: 08b10a6d7de548304225a8a9c19e3280a8ecbfeb
2014-10-15 08:09:23 -06:00
Tetsuharu OHZEKI
171511657e servo: Merge #3574 - Introduce a custom DOMRefCell<T> (from saneyuki:cell); r=jdm
#3050

Source-Repo: https://github.com/servo/servo
Source-Revision: 7c1054e6ab97dd199dee371c3b6ca5d559070804
2014-10-14 23:12:24 -06:00
Kasey Carrothers
1d2b9fbee6 servo: Merge #3655 - Add a to_js method to the casting trait code in CodegenRust.py (from kaseyc:add_to_js_method); r=jdm
Replace the manual checks and calls to transmute_copy in /layout/wrapper.rs with calls to to_js/

Fixes #3616

Source-Repo: https://github.com/servo/servo
Source-Revision: f1c050531f3e3669275f1fc50d92724609eba59b
2014-10-14 22:00:28 -06:00
Clark Gaebel
be2f0cc040 servo: Merge #3640 - Try to reset flows which need reflow, since reflow isn't yet idempotent (from cgaebel:incremental-flow-construction); r=pcwalton
This also hides the not-yet-working parts of incremental reflow behind a runtime
flag. As I get the failing reftests passing, I'll send pull requests for them one
by one.

Source-Repo: https://github.com/servo/servo
Source-Revision: 56989b8dec4aa95a3b484d45f15b23f9b3daaf13
2014-10-14 16:51:30 -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
Patrick Walton
9f1038ee7a servo: Merge #3623 - script: Use atom comparison in more places, especially for attributes (from pcwalton:use-atoms-2); r=jdm
75% improvement in style recalc for Guardians of the Galaxy.

Source-Repo: https://github.com/servo/servo
Source-Revision: 8077edc0622b04aeb26d42ced86ea285c9cac0e7
2014-10-14 12:42:35 -06:00
Manish Goregaokar
b5024832ed servo: Merge #3652 - Implement form submission for <input type=submit> (from Manishearth:form-button); r=jdm
Partially fixes #3647

Source-Repo: https://github.com/servo/servo
Source-Revision: d1685015559562a42cc440f4e3b7a97d38cc642c
2014-10-14 10:00:38 -06:00
Ms2ger
e139ba90a7 servo: Merge #3676 - Don't borrow CharacterData.data from layout (from Ms2ger:no-text-borrow); r=Manishearth
This should fix the most frequent intermittent wpt failure.

Source-Repo: https://github.com/servo/servo
Source-Revision: 083bf27b7536a8ae825ce87df4344f9e3cbc1a10
2014-10-14 03:36:36 -06:00
Tim Taubert
e87471af27 servo: Merge #3666 - Privatize DOM (fixes #3644) (from ttaubert:issue/3644-privatize-dom); r=Manishearth
This PR removes public fields from all (hope I didn't miss any) DOM structs. Should |Page| be privatized as well? This PR additionally introduces a #[privatize] lint to ensure nobody accidentally re-introduces a public field.

All changesets compile separately if applied in the same order. Hope that helps reviewing but I can of course squash them before merging.

Source-Repo: https://github.com/servo/servo
Source-Revision: f350879574194bb612eac88e21d0920e9827afa7
2014-10-13 22:00:37 -06:00
Tim Taubert
03e0ecf19a servo: Merge #3651 - Make Event::new take enumerated values instead of booleans (fixes #3643) (from ttaubert:issue/3643-event-new-enums); r=Manishearth
r? @jdm

Source-Repo: https://github.com/servo/servo
Source-Revision: 293e06fd7cf3c79e377fc1ce619ee790c46f9858
2014-10-13 19:12:38 -06:00
Ms2ger
5807e210bd servo: Merge #3632 - Remove support for {return,native,concrete}Type overrides in Bindings.conf (from Ms2ger:bindings-conf); r=Manishearth
We have no reason to support non-default type names, and this commit corrects
the computations for callbacks (which needed the override until now).

Source-Repo: https://github.com/servo/servo
Source-Revision: 0ded2bb1ecb7da791c1296c2a2415f49705f8334
2014-10-13 17:00:47 -06:00
Glenn Watson
396ac1d4e4 servo: Merge #3608 - Expose user agent option to DOM navigator interface (from glennw:user-agent-navigator); r=Ms2ger
This also makes command line options available as a global. If we're happy with that change I will go through the rest of the code and update it to avoid passing and cloning the Opts structure.

Source-Repo: https://github.com/servo/servo
Source-Revision: 81620d6bce12819db5b97330e48be52674b39ffb
2014-10-13 15:21:44 -06:00
Manish Goregaokar
57c9401915 servo: Merge #3642 - Implement extremely basic form submission (from Manishearth:form-submit); r=jdm
This is missing a lot of parts, so it doesn't really make any real-world form submission work yet. It provides a skeleton on which the missing bits can be filled in.

What works:
 - `<input>` elements except for `type=file`
 - GET/POST methods
 - URLencoded `enctype`s (default)
 - Submission via `<form>.submit()` only

Stuff that needs to be done for most simple real-world cases to work:
 - [Working text input](https://github.com/servo/servo/pull/3585)
 - Click handlers for `<submit>`
 - Possibly `<textarea>` support
 - Support for the other two enctypes (#3649)

Todo:
 - Correctly implement [planned navigation](https://html.spec.whatwg.org/multipage/forms.html#planned-navigation) using `TrustedFormAddress`  (#3648)
 - [Correctly implement form owners.](https://github.com/servo/servo/issues/3553) Requires html5ever and some discussion of the spec.
 - `<input type=file>` support
 - Image submit support
 - Browsing contexts/targets
 - Support for non-`<input>` controls
 - Validation (?)
 - Dirname (?)

Source-Repo: https://github.com/servo/servo
Source-Revision: 9dfd5e7fcd2011a411b219e8c45aadc0ecb270bd
2014-10-11 07:45:39 -06:00
Patrick Walton
47c280c684 servo: Merge #3639 - Use Gecko's simpler Bloom filter instead of one based on hash (from pcwalton:rewrite-bloom-filter); r=zwarich
stretching.

This preserves the usage of the Bloom filter throughout style recalc,
but the implementation is rewritten. Provides a 15% improvement on
Guardians of the Galaxy.

Source-Repo: https://github.com/servo/servo
Source-Revision: e048f3f940e124d45b43a53a850177c45907822d
2014-10-10 20:27:39 -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
Tim Taubert
1b867d1d8a servo: Merge #3620 - Remove unnecessary deref()s (fixes #3586) (from ttaubert:issue/3586-remove-derefs); r=Manishearth
r? @Manishearth

Source-Repo: https://github.com/servo/servo
Source-Revision: 510f8a817f8144dd5046886d4ca7c612f19a3d08
2014-10-09 07:12:37 -06:00
Tim Taubert
36bbbe717e servo: Merge #3577 - Use HashMap::find_with_or_insert_with in DocumentHelpers::register_named_element (fixes #3193) (from ttaubert:issue/3193-named-element-mangle); r=jdm
Should probably use HashMap::entry() but that doesn't seem to be available with servo's current rust snapshot.

r? @Ms2ger

Source-Repo: https://github.com/servo/servo
Source-Revision: a127fcd854ae0e31d05f34232f595833ccc2ba9e
2014-10-08 13:15:32 -06:00
Manish Goregaokar
5beea4b3fe servo: Merge #3605 - Improve macro getters, add macro setters, implement attributes for <form> (from Manishearth:form-stuff); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 94731270df688f2df49fdec36ccf7eefd9ed021f
2014-10-08 03:42:34 -06:00
Tim Taubert
f15d9faaa2 servo: Merge #3584 - Support [*|attr], attribute selectors in any namespace (fixes #1558) (from ttaubert:issue/1558-attr-ns-selectors); r=Manishearth
This implements basic support for attribute selectors with namespace prefixes. I would have added a more sophisticated test covering various selectors but it seems that we don't have an XML parser yet and thus no XHTML support?

r? @SimonSapin

Source-Repo: https://github.com/servo/servo
Source-Revision: f49c730720a51d14dacefe9815faf50216b36b91
2014-10-08 03:12:34 -06:00
Gilles Leblanc
f23abdd361 servo: Merge #3575 - Take the prefix from createElementNS into account for HTML elements (from gilles-leblanc:issue-3139); r=Ms2ger
Fixes #3139

Source-Repo: https://github.com/servo/servo
Source-Revision: a4b414746bc2b067251d7a543b43fe136b319bdc
2014-10-07 01:33:32 -06:00
Manish Goregaokar
052cbff92f servo: Merge #3518 - Purge Traceable and Untraceable from Servo (from Manishearth:trace-cleanup); r=jdm
Now that we use `JSTraceable` (defined in `script`), we can create arbitrary implementations on non-`script` types (eg `Url` or `RequestHeaderCollection`) where in the past we had to rely on `Traceable` and `Untraceable` to achieve cross-crate impls of `Encodable`.

This removes the two completely. They can be reintroduced if required, though the `untraceable!` macro should suffice.

Fixes #3469

Source-Repo: https://github.com/servo/servo
Source-Revision: b34df7c343579f200d2e67e21fc566842a4e4a91
2014-10-06 10:15:33 -06:00
Andrew Guertin
bae39bc337 servo: Merge #3569 - Replace Cell<Option<JS<T>>> with MutNullableJS<T> (from andrewguertin:mutnullablejs); r=Manishearth
https://github.com/servo/servo/issues/3564

Source-Repo: https://github.com/servo/servo
Source-Revision: d23e45fe5db54994f4f3569f8bda1ec5a6121610
2014-10-03 18:45:27 -06:00
Ms2ger
31623eae6c servo: Merge #3562 - Cleanup Document.find_fragment_node (from Ms2ger:cleanup-fragment-node); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: a2531cd8aa0463e0941229b2f89f1433ad5b5e5e
2014-10-03 03:48:25 -06:00
Ms2ger
f430aa82ad servo: Merge #3558 - Remove the fragment_node field from Page (from Ms2ger:fragment-node); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 643a6d07a201d7db9325250522a80bc3357f11ce
2014-10-02 10:15:27 -06:00
Josh Matthews
2dfdae3733 servo: Merge #3520 - Implement basic form control support (from jdm:formcontrols); r=pcwalton
So far the changes to layout seem fairly well-contained; I think this is worth integrating to give us a browser that is easier to dogfood (and allows us to work on things like form submission much easier), especially since the long-term viability of WebComponents-as-forms is not assured.

Source-Repo: https://github.com/servo/servo
Source-Revision: f80096069592b864221abe112eaf2ecb6c444fda
2014-10-01 16:45:29 -06:00
Josh Matthews
5bcc29c13a servo: Merge #3531 - Implement MutNullableJS for mutable, nullable member pointers to DOM objects (from Ms2ger:MutNullableJS); r=Ms2ger
Extracted from #3527.

Source-Repo: https://github.com/servo/servo
Source-Revision: bae5440689c67f425f94ec27bf0f61ff955dc290
2014-10-01 09:09:28 -06:00
Cameron Zwarich
efa78b5e73 servo: Merge #3542 - Remove extra lifetime parameters (from zwarich:more-jsref); r=Ms2ger
Source-Repo: https://github.com/servo/servo
Source-Revision: a840fed78a493a481683ef73dae923190d87ba6c
2014-10-01 04:03:29 -06:00
Cameron Zwarich
22d42a57e8 servo: Merge #3541 - Convert the NodeHelpers trait to use self methods (from zwarich:more-jsref); r=Ms2ger
Source-Repo: https://github.com/servo/servo
Source-Revision: f73e5088219cd6deeea0d4f0612cad750fc532a9
2014-10-01 02:51:27 -06:00
Cameron Zwarich
c71169cdfc servo: Merge #3540 - Convert TNode / TElement to use self parameters rather than &self (from zwarich:more-jsref); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 09e9abc047e03b81b8a4aa90d13efa184d0a732f
2014-09-30 22:36:28 -06:00
Cameron Zwarich
7da378cb4c servo: Merge #3536 - Convert a method from &JSRef to JSRef (from zwarich:more-jsref); r=Manishearth
This also removes the unnecessary formation of a trait object.

Source-Repo: https://github.com/servo/servo
Source-Revision: 93e259227a969dbea1319d4d3ce92bc5706c6b06
2014-09-30 18:39:27 -06:00
Keegan McAllister
8578d570cb servo: Merge #3530 - Use string-cache's Namespace type, backed by Atom (from kmcallister:namespace-atom); r=Ms2ger
Source-Repo: https://github.com/servo/servo
Source-Revision: 698b916c097ae0272a31a680cba7fc6dbd03ca3d
2014-09-30 02:42:23 -06:00
Bruno de Oliveira Abinader
486a5adfa6 servo: Merge #3491 - CSS selector :enabled no longer matches Anchor, Area & Link elements (from brunoabinader:css-selector-enabled-remove-anchor-area-link-elems); r=Ms2ger
HTML spec has been modified [1] to disable support for :enabled CSS
selector on Anchor, Area & Link elements, after discussion on W3C
Bugzilla [2].

[1] https://html5.org/r/8818
[2] https://www.w3.org/Bugs/Public/show_bug.cgi?id=26622

Next step: Move :enabled CSS selector content test to web-platform-tests.

Source-Repo: https://github.com/servo/servo
Source-Revision: d9e26352a1adbd182fc0a7b54eb32f43540267bb
2014-09-29 12:27:26 -06:00
Simon Sapin
b3423c8393 servo: Merge #3487 - Upgrade Rust and enable style crate rustdoc (from servo:rustup-20140923); r=Ms2ger
The biggest language change is that enum variants now also reserve (for future use) a name in the type namespace, which must not collide with other types. Some things were renamed, and others qualified as `module::name`.

Source-Repo: https://github.com/servo/servo
Source-Revision: 7409685589c550ee7a9f94182f511acddab4c6fd
2014-09-29 10:45:27 -06:00
Ms2ger
7a5be2490b servo: Merge #3522 - Don't move the data when extracting the bytes in XMLHttpRequest::Send (from Ms2ger:xhr-send-uaf); r=SimonSapin
The data is used later to set the Content-Type header. Current rustc
(4d2af3861) does not detect this use-after-move, but treats the later use as
if the data was None. It will, however, detect the bug in d2b30f7d3, which we
are upgrading to.

Source-Repo: https://github.com/servo/servo
Source-Revision: a58324f25b6f87d005026d8f9405c9f0d89a1f74
2014-09-29 09:57:27 -06:00