Commit graph

2403 commits

Author SHA1 Message Date
Anthony Ramine
68014af78e Clean up the cast calls 2015-10-21 11:40:34 +02:00
Anthony Ramine
13ea3ac413 Introduce trait Castable
This trait is used to hold onto the downcast and upcast functions of all
castable IDL interfaces. A castable IDL interface is one which either derives
from or is derived by other interfaces.

The deriving relation is represented by implementations of marker trait
DerivedFrom<T: Castable> generated in InheritTypes.

/^[ ]*use dom::bindings::codegen::InheritTypes::.*(Base|Cast|Derived)/ {
    /::[a-zA-Z]+(Base|Cast|Derived);/d
    s/([{ ])[a-zA-Z]+(Base|Cast|Derived), /\1/g
    s/([{ ])[a-zA-Z]+(Base|Cast|Derived), /\1/g
    s/, [a-zA-Z]+(Base|Cast|Derived)([},])/\2/g
    s/, [a-zA-Z]+(Base|Cast|Derived)([},])/\2/g
    /\{([a-zA-Z]+(Base|Cast|Derived))?\};$/d
    s/\{([a-zA-Z_]+)\};$/\1;/
}

s/([a-zA-Z]+)Cast::from_ref\(\&?\**([a-zA-Z_]+)(\.r\(\))?\)/\2.upcast::<\1>()/g
s/([a-zA-Z]+)Cast::from_ref\(\&?\**([a-zA-Z_]+)(\.[a-zA-Z_]+\(\))?\)/\2\3.upcast::<\1>()/g
s/\(([a-zA-Z]+)Cast::from_ref\)/\(Castable::upcast::<\1>\)/g

s/([a-zA-Z]+)Cast::from_root/Root::upcast::<\1>/g

s/([a-zA-Z]+)Cast::from_layout_js\(\&([a-zA-Z_.]+)\)/\2.upcast::<\1>()/g

s/([a-zA-Z]+)Cast::to_ref\(\&?\**([a-zA-Z_]+)(\.r\(\))?\)/\2.downcast::<\1>()/g
s/([a-zA-Z]+)Cast::to_ref\(\&?\**([a-zA-Z_]+)(\.[a-zA-Z_]+\(\))?\)/\2\3.downcast::<\1>()/g
s/\(([a-zA-Z]+)Cast::to_ref\)/\(Castable::downcast::<\1>\)/g

s/([a-zA-Z]+)Cast::to_root/Root::downcast::<\1>/g

s/([a-zA-Z]+)Cast::to_layout_js\(&?([a-zA-Z_.]+(\(\))?)\)/\2.downcast::<\1>()/g

s/\.is_document\(\)/.is::<Document>()/g
s/\.is_htmlanchorelement\(\)/.is::<HTMLAnchorElement>()/g
s/\.is_htmlappletelement\(\)/.is::<HTMLAppletElement>()/g
s/\.is_htmlareaelement\(\)/.is::<HTMLAreaElement>()/g
s/\.is_htmlbodyelement\(\)/.is::<HTMLBodyElement>()/g
s/\.is_htmlembedelement\(\)/.is::<HTMLEmbedElement>()/g
s/\.is_htmlfieldsetelement\(\)/.is::<HTMLFieldSetElement>()/g
s/\.is_htmlformelement\(\)/.is::<HTMLFormElement>()/g
s/\.is_htmlframesetelement\(\)/.is::<HTMLFrameSetElement>()/g
s/\.is_htmlhtmlelement\(\)/.is::<HTMLHtmlElement>()/g
s/\.is_htmlimageelement\(\)/.is::<HTMLImageElement>()/g
s/\.is_htmllegendelement\(\)/.is::<HTMLLegendElement>()/g
s/\.is_htmloptgroupelement\(\)/.is::<HTMLOptGroupElement>()/g
s/\.is_htmloptionelement\(\)/.is::<HTMLOptionElement>()/g
s/\.is_htmlscriptelement\(\)/.is::<HTMLScriptElement>()/g
s/\.is_htmltabledatacellelement\(\)/.is::<HTMLTableDataCellElement>()/g
s/\.is_htmltableheadercellelement\(\)/.is::<HTMLTableHeaderCellElement>()/g
s/\.is_htmltablerowelement\(\)/.is::<HTMLTableRowElement>()/g
s/\.is_htmltablesectionelement\(\)/.is::<HTMLTableSectionElement>()/g
s/\.is_htmltitleelement\(\)/.is::<HTMLTitleElement>()/g
2015-10-21 11:37:16 +02:00
Anthony Ramine
c77d3b965f Introduce IDLInterface::derives()
This method is given a DOMClass value and returns whether it derives from Self.

Interfaces with no descendants directly check whether the given DOMClass is the
same as their own.
2015-10-21 10:59:36 +02:00
Brandon Fairchild
60beb78bf3 Don't require the CanvasFillOrStrokeStyle enum to be public
CanvasFillOrStrokeStyle is only used in a single file,
so it does not need to be a public enum.

Fixes #8105.
2015-10-21 00:25:44 -04:00
Brandon Fairchild
a0e2dfc913 Remove Button prefix from names of variants of ButtonType enum
Fixes #8106.
2015-10-20 22:36:37 -04:00
Adam Szopa
88991013ab Remove explicit lifetimes which can be elided. 2015-10-21 01:27:48 +02:00
Rohan Prinja
ab70c8c942 implement PartialEq for MutHeap<JS<T>> and MutNullableHeap<JS<T>> 2015-10-21 01:40:19 +09:00
Nathan Froyd
50b14e6670 add un-premultiply table for GetImageData
Fixes #6969.
2015-10-20 04:51:29 -04:00
bors-servo
25d3c2b655 Auto merge of #8095 - TileHalo:foo, r=Ms2ger
Removed unsafe from 'query_selector_iter'

Fixing #8078.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8095)
<!-- Reviewable:end -->
2015-10-20 01:13:49 -06:00
Leo Lahti
89e8a26539 Removed unsafe from 'query_selector_iter' 2015-10-20 09:11:06 +03:00
Anthony Ramine
57c423a931 Update URL-related interfaces and their tests up to spec
The URL spec recently changed and the variour "mixins" interfaces are gone,
this commit updates our code and WPT accordingly.

The new expected failures related to HTMLAnchorElement and HTMLAreaElement's
attributes are due to their moving to the HTMLHyperLinkElementUtils interface,
which is not anymore in a separate <script class=untested> element.
2015-10-19 21:05:07 +02:00
bors-servo
6111cf9ffc Auto merge of #7943 - pierrechevalier83:fix_issue_7941, r=Ms2ger
Clarify some code in do_create_interface_objects

rval.get() is believed to be always null upon entering this function.
This assumption is verified by the added assertion.
It makes more sense to move the block of code that was moved inside
the if statement which is the only place where it can be initialized.

Fixes #7941.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7943)
<!-- Reviewable:end -->
2015-10-19 09:37:03 -06:00
bors-servo
2e308e9ecc Auto merge of #8068 - martiansideofthemoon:my-code-fix, r=Manishearth
Implementing getAttributeNode() and similar methods

Attempting to solve #8066 Does it look good so far @Manishearth ?

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8068)
<!-- Reviewable:end -->
2015-10-19 07:58:41 -06:00
bors-servo
1a376aa75d Auto merge of #8060 - nox:deref-js, r=Ms2ger
Implement Deref<Target=T> for JS<T> where T: Reflectable

We can only borrow `JS<T>` from rooted things, so it's safe to deref it.
The only types that provide mutable `JS<T>` things are `MutHeap<JS<T>>` and
`MutNullableHeap<JS<T>>`, which don't actually expose that they contain
`JS<T>` values.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8060)
<!-- Reviewable:end -->
2015-10-19 06:32:05 -06:00
KALPESH KRISHNA
3971b8ce27 Implementing getAttributeNode() and similar methods. 2015-10-19 16:14:43 +05:30
bors-servo
ff2151b8bb Auto merge of #7935 - bholley:eventstate_element, r=nox
Move event state from Node to Element

Just getting my feet wet with Rust here. Please feel free to nit the hell out of it stylistically and idiomatically. :-)

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7935)
<!-- Reviewable:end -->
2015-10-19 02:47:21 -06:00
Anthony Ramine
6dc42dd1d6 Do not root XMLHttpRequest::upload 2015-10-19 09:37:09 +02:00
Anthony Ramine
d28de59e4a Return a reference in ServoHTMLParser::window() 2015-10-19 09:37:08 +02:00
Anthony Ramine
da06341578 Do not root ServoHTMLParser::document 2015-10-19 09:37:07 +02:00
Anthony Ramine
7c47a6b78e Do not root Sink::document 2015-10-19 09:37:06 +02:00
Anthony Ramine
b0d1ccdf5f Do not root Performance::timing 2015-10-19 09:37:05 +02:00
Anthony Ramine
17cd4202e7 Do not root ChildrenList::node 2015-10-19 09:37:04 +02:00
Anthony Ramine
b149e0c979 Do not root NodeIterator::root_node 2015-10-19 09:37:03 +02:00
Anthony Ramine
6849510526 Do not root NamedNodeMap::owner 2015-10-19 09:37:02 +02:00
Anthony Ramine
5889a75b10 Do not root Location::window 2015-10-19 09:37:01 +02:00
Anthony Ramine
dee3aecea1 Do not root HTMLScriptElement::parser_document 2015-10-19 09:37:00 +02:00
Anthony Ramine
e8f358d178 Do not root InputActivationState::checked_radio 2015-10-19 09:36:58 +02:00
Anthony Ramine
71dcabfad8 Do not root DOMTokenList::element 2015-10-19 09:36:57 +02:00
Anthony Ramine
822e6f0d48 Do not root DOMStringMap::element 2015-10-19 09:36:56 +02:00
Anthony Ramine
ff0da2f642 Do not root DOMParser::window 2015-10-19 09:36:55 +02:00
Anthony Ramine
ce6aab6cb1 Do not root DOMImplementation::document 2015-10-19 09:36:54 +02:00
Anthony Ramine
6ab7f64620 Return a reference in BrowserContext::active_window() 2015-10-19 09:36:53 +02:00
Anthony Ramine
409b5e3695 Return a reference in Document::window() 2015-10-19 09:36:52 +02:00
Anthony Ramine
e889b0914b Do not root Document::window 2015-10-19 09:36:51 +02:00
bors-servo
b847e4dd77 Auto merge of #8059 - frewsxcv:fix-codegen-docs, r=jdm
Fix formatting for variable in doc-comment within codegen



<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8059)
<!-- Reviewable:end -->
2015-10-18 07:55:48 -06:00
bors-servo
23fa9de714 Auto merge of #8038 - martiansideofthemoon:my-code-fix, r=jdm
Adding window.onstorage WindowEventHandler

Well it built successfully this time around 😄 @jdm . Working to solve #7994

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8038)
<!-- Reviewable:end -->
2015-10-17 22:36:13 -06:00
Till Schneidereit
4c1c05fac6 Improve implementation of DOMRect and implement DOMRectReadOnly
Passes most tests from test-css.
2015-10-17 22:47:01 +02:00
Corey Farwell
26abff9663 Fix formatting for variable in doc-comment within codegen 2015-10-17 15:20:12 -04:00
Corey Farwell
1f58169263 Implement HTMLTableRowElement insertCell and deleteCell 2015-10-17 00:07:22 -04:00
Bobby Holley
ac8d57cda7 Move what is now an |impl Element| block to element.rs.
This is a simple cut/paste.
2015-10-16 17:56:32 -07:00
Bobby Holley
75ec093334 Move Event States to |Element|.
Conceptually they belong there, rather than on |Node|.

Fixes #7934.
2015-10-16 17:56:31 -07:00
Anthony Ramine
264e943597 Return a reference in BrowserContext::frame_element() 2015-10-17 02:17:25 +02:00
Anthony Ramine
1f31d5b856 Return a reference in BrowserContext::active_document() 2015-10-17 02:07:52 +02:00
Anthony Ramine
6c7f37061b Implement Deref<Target=T> for JS<T> where T: Reflectable
We can only borrow JS<T> from rooted things, so it's safe to deref it.
The only types that provide mutable JS<T> things are MutHeap<JS<T>> and
MutNullableHeap<JS<T>>, which don't actually expose that they contain
JS<T> values.
2015-10-17 01:58:52 +02:00
bors-servo
7a71f39320 Auto merge of #8031 - creativcoder:spec-links-js, r=jdm
added spec link for type mapping

Hi. added some of the spec links, that i could understand from the spec. Please mention if anything else needs to be added.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8031)
<!-- Reviewable:end -->
2015-10-16 13:38:30 -06:00
bors-servo
0e4abddd37 Auto merge of #7947 - jimberlage:7856/buffered-amount, r=jdm
Adds bufferedAmount to Websocket (fixes #7856).

This adds a readonly bufferedAmount attribute to Servo's websocket implementation.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7947)
<!-- Reviewable:end -->
2015-10-16 12:56:44 -06:00
bors-servo
96ca6b6c6d Auto merge of #8035 - sliz1:issues/8028, r=Manishearth
Issue 8028: `parse_html` should take `Url` rather than `&Url`

fixes #8028

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8035)
<!-- Reviewable:end -->
2015-10-16 11:24:08 -06:00
bors-servo
724d4e191b Auto merge of #8043 - eefriedman:async-listener-mut, r=jdm
Make AsyncResponseListener methods take `&mut self`

Gets rid of a bunch of useless `Cell`/`RefCell` types.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8043)
<!-- Reviewable:end -->
2015-10-16 08:49:13 -06:00
bors-servo
7c7dbde0f4 Auto merge of #8026 - eefriedman:js-rooting, r=nox
Fix uses of JS<T> as a type on the stack

`JS<T>` belongs on the heap, and only on the heap.  This is a collection of fixes so that code uses either `Root<T>` or `&T` to pass around garbage-collected pointers.

Ideally, we could completely ban constructing a `JS<T>` outside of constructor functions, but we aren't quite there yet.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8026)
<!-- Reviewable:end -->
2015-10-16 08:05:59 -06:00
Ms2ger
1f03ce1b1f Enable some warnings for generated code.
None of those warnings currently occur.
2015-10-16 12:07:57 +02:00