-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement DOMTokenList and DOMSettableTokenList #1717
Labels
A-content/dom
Interacting with the DOM from web content
Comments
I believe @evilpie was working on this. |
@evilpie Did you have a branch with the work you got done? |
I don't have the the branch anymore. Anybody should feel free to work on this. |
Ms2ger
added a commit
to Ms2ger/servo
that referenced
this issue
Jun 8, 2014
Ms2ger
added a commit
to Ms2ger/servo
that referenced
this issue
Jun 8, 2014
jimrhoskins
added a commit
to jimrhoskins/servo
that referenced
this issue
Jan 9, 2015
Fixes servo#3758 Store the sandbox attribute of HTMLIFrameElement as a TokenList internally. Use .tokens() to iterate over the tokens instead of splitting on the string value. The external interface for sandbox remains a DOMString, which will need to be fixed when DOMSettableTokenList is implemented (servo#1717).
jimrhoskins
added a commit
to jimrhoskins/servo
that referenced
this issue
Jan 9, 2015
Fixes servo#3758 Store the sandbox attribute of HTMLIFrameElement as a TokenList internally. Use .tokens() to iterate over the tokens instead of splitting on the string value. The external interface for sandbox remains a DOMString, which will need to be fixed when DOMSettableTokenList is implemented (servo#1717).
bors-servo
pushed a commit
that referenced
this issue
Jan 9, 2015
Fixes #3758 Store the sandbox attribute of HTMLIFrameElement as a TokenList internally. Use .tokens() to iterate over the tokens instead of splitting on the string value. The external interface for sandbox remains a DOMString, which will need to be fixed when DOMSettableTokenList is implemented (#1717).
srm09
added a commit
to shanil-puri/servo
that referenced
this issue
Feb 4, 2015
Don't categorize HTMLInputElement as a TableCellFragment Closes #4196. Cleanup Document::GetDoctype. Cleanup Document::GetDocumentElement. Cleanup Document::SetBody. Cleanup Document::GetElementsByName. New commits added. Rebase commit Removing accidental commti. Commit no update devtools: handle script task panics gracefully in ConsoleActor. Implement the HTMLScriptElement.src setter Fixes #1113. remove bindings codegen h/cpp files from .gitignore These files don't exist in the tree, and the codegen doesn't create them, so we shouldn't have them sitting around in .gitignore. Make tidy ingore new target dir added ErrorEvent WebIDL and errorevent.rs Mach test inference fix Implement MutNullableJS::or_init. This will make it easier to implement lazy getters. Use MutNullableJS::or_init in Document. Use MutNullableJS::or_init in Window. convert net crate to use hyper convert msg crate to use hyper convert script crate to use hyper adjust WPT since hyper fixed some Set up openssl on Android Temporarily change expectations for some wpt tests till hyper gets support for status codes >599 allow deleting last char Make TextInput correctly handle multibyte chars. Implements some HTMLTextAreaElement attributes These attributes all reflect their own related content values, with the exception of defaultValue, which acts as an alias for its IDL textContent attribute. Many of these do have default values and constraints which are currently unimplemented. Implements multi line text input for TextArea Updates WPT to expect newly passing tests Addresses reviews More review addressing HTMLTextArea: Implements a dirty value flag Handle default uint attributes properly ...and passing a whole bunch of new tests. Make the password input element show the correct number of dots for multibyte chars. Change time::profile's meta booleans to enums. 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. Issue 4253 - Setting timeout on a sync XHR should throw InvalidAccessErr Clarify the panic in get_uint_attribute. Split up the InputButton variant Implement form control mutability, rename FormOwner -> FormControl Add stub Activatable trait Add trusted setter to Event Implement basic (unhooked) framework for element activation Hook up authentic click activation to the script task Some reorganization of activation code: - Make method name apply to trait implementor better (When a user agent is to run post-click activation steps on an element, it must run the activation behavior defined for that element) - Mention invariants and conditions on authentic_click_activation Move InputSubmit to Activatable Move InputCheckbox to Activatable Refactor code for fetching radio siblings Move InputRadio to Activatable Hook up synthetic click activation to script_task and <>.click() Implement implicit form submission Address review comments Implement QuerySelectorIterator (fixes #4082) Switch over to query_selector_iter Switch to NodeFlags (the footprint has not changed) Add oninput/onchange so tests work Add Comparable trait to js.rs; fixups `should_move_clip_rect` is a bare function `self` is never used, so there's no need for this to be a method. Fixes #4261. PEP8 line length fixes in testing_commands.py ...so that PyLint stops yelling at me Adds a --component (or -c) argument to test-unit Example usage: `./mach test-unit -c style` Last second bug catch Corrected case of Document#characterSet Resolves #4251 Use .clone() instead of.as_slice().to_string() Update content tests for Document#characterSet Use or_init where appropriate. Fix breakage of `./mach test` When running commands through Registrar.dispatch, mach does not behave in the same way it would as if it were running through the command line. Defaults normally provided through a combination of @CommandArgument and argparse magic are ignored. I have some ideas as to how to fix this, but until then, this will allow `./mach test` to run through test-unit properly. Fix path for CEF build. Update cargo.lock for CEF and fix left over line from libgreen removal. servo.css: Style <button> like <input type=button> Implement the "messageevent" argument to Document#createEvent. #4008 Remove an expected failure from tests/wpt/metadata/dom/events/EventTarget-dispatchEvent.html.ini Create the root frame before evaluating the javascript URL. This prevents a crash when the script in the javascript URL accesses the document attribute. Fix bug of TextInput.adjust_vertical(1) always moving to the end of text. Implement Page(Up|Down) functionality for TextInput. Fix bug of TextInput.adjust_horizontal causing stack overflow or wraparound When the edit_point is in the first position of a multiline TextInput adjust_horizontal(-1) moves the edit_point to the end of the first line. When the first line is empty this causes a stack overflow. When the edit_point is in the last position adjust_horizontal(1) causes a stack overflow. Simplify the content_changed call in ScriptTask::load. Cleanup last_loaded_url/last_url handling in ScriptTask::load. Pass the load data to parse_html directly, rather than in an Option. Simplify the LoadData creation in parse_html. Move the networking code in parse_html into ScriptTask::load. This doesn't really have anything to do with parsing HTML, and fits in better with the code in ScriptTask::load. In particular, all changes to Page's url now go through ScriptTask methods. Make parse_html's base_url argument non-optional. It turns out the case where it woul be None can't happen. Rename gfx/render_task.rs -> gfx/paint_task.rs Rename RenderTask -> PaintTask. Rename canvas_render_task -> canvas_paint_task Rename CanvasRenderTask -> CanvasPaintTask. Rename RenderContext -> PaintContext Rename RenderLayer -> PaintLayer Rename RenderRequest -> PaintRequest Rename RenderChan -> PaintChan Rename gfx::paint_task::Msg Rename compositor_task::Msg. Rename RenderListener -> PaintListener, and its methods. Rename RenderState -> PaintState Rename IOCompositor's members. Rename WindowMethods::set_paint_state() Fix README.md: a tile size is used for 'painting'. Rename RendererReadyMsg -> PainterReadyMsg Rename RenderFontCacheEntry -> PaintFontCacheEntry. Rename TaskState::RENDER -> TaskState::PAINT Replace almost "render" to "paint" words in gfx crate. Replace almost "render" to "paint" in compositing crate. This doesn't touch some "render" words which are used as general means. Replace almost "render" to "paint" in layout crate. This doesn't touch some "render" words which are used as general means. Replace render to paint in util/opts.rs. Some general words are not replaced. Replace 'render' to 'paint' in compositor_msg.rs Implements the :checked pseudo-class for inputs 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. Fixed #4170 - Incremental reflow wasn't being aggressive enough when nodes get reparented. 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. Fixes #4232 Implemented Document#inputEncoding Resolves #4252 Cleanup Node::query_selector. Cleanup Node::summarize. Cleanup Node::clone. Cleanup Node::ChildNodes. Cleanup Node::Normalize. Cleanup Node::CloneNode. Cleanup Node::as_element. Cleanup Node::is_html_element_in_html_document. Implement selection ranges and deletion of \n for TextInput. gfx: Update Azure and Skia, and rewrite broken clipping logic. This exposed some problems in our clipping logic, which was never properly rewritten for the stacking context reform. The clipping code worked in terms of a stack of clips, but the new stacking context code has no concept of a stack of clip regions. Fixing that in turn exposed some flaky/incorrect tests: * `borders` had an incorrect reference image, as far as I can tell. * `negative_margins` had some stray pixels, fixed by changing the text. Fix concatentation error on no args to `./mach rustc` Since default argument to params is None, concatenating it with a list will raise an error. This behaviour prevents `./mach rustc` to be called when system-rust is defined in .servobuild. Currently it will only work when followed by an argument, i.e. `./mach rustc -arg`. Testing this patch: `./mach rustc` should not raise an error. Update WPTupdate readme for new directory structure Updates `./mach update-cargo` for new path changes Also fixed a bug if run with no arguments. Use mach to build openssl on android instead of glut makefile. The glut makefile will be removed shortly after glutin lands for android, so we need to build openssl for android elsewhere in the build process. Add unit test to freeze sizes of DOM structs Restrict size tests to 64 bit Bound several link properties. Specifically: href, rel, media, hreflang and type. Add a `./mach clean-snapshots` command to remove old Cargo and Rust. Bootstrapping automatically downloads new Rust and Cargo snapshots as needed into versioned directories, but do not remove now-unused versions. This is the desired behavior for `git bisect` to be usable. However, this means that old version keep accumulating, taking up disk space. This adds a mach command to remove snapshots other than the ones currently being used. It is never run automatically. To be safe, the command defaults to only printing what would be removed, and only removes stuff when run with a `-f` argument. mach clean-snapshots: better no-op output Combine two conditionals in ScriptTask::load. Now that the code lives in the same function, I see no reason for them to remain separate. Move the load response into the HTMLInput enum. It is None iff the parser input is an InputString variant, so it makes more sense to pass it in the same enum. Remove the url from the InputUrl variant. This url is the pre-redirect url, which is not particularly meaningful, and it is used only in a panic message. Update typeable to pick up a warning fix. Don't include the root element when calling Element#getElementsByTagName Fixes #4249 Issue #1820 - Improve the Blob implementation Rename base_url to final_url in ScriptTask::load. This seems like a clearer name, as it's used for more than just as a base url. Pass a borrowed Url to parse_html. It does not need to take ownership, and I want to reuse final_url in the caller. Reuse the final_url in ScriptTask::load. In both the javascript and non-javascript url cases, final_url is set to the same url as is stored by the Page. Update rust-openssl to add static linking for android. Add a gonk port. Convert C code to Rust Eliminate use of allow(dead_code) in window.rs Remove use of rustuv/green in the gonk port. Remove unused code in assign_block_size_block_base This code is unreachable because an earlier `if base(kid).flags.is_float()` check bails out of the loop before it can reach this block. Make all of LineBreaker private Cleanup Page::remove. Remove comment that hasn't been true since Document became a Node. The panic was removed in 99a36cbeb6077976861d94b7af16e9e57994a14d. Cleanup PageIterator::next. ports/cef: Implement accelerated compositing for the CEF port. Remove PseudoDisplayItemClass Now that content box queries are made against the flow tree, we can remove PseudoDisplayItems from the display list. CEF updates for Linux / MiniServo-GTK. Make the gonk port work again layout: Implement `text-transform`. 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. Update skia + azure to get android compile and text rendering fixes. Sync CEF as well. Update ./mach update-cargo to include gonk Cargo.lock Avoid some Option::unwrap calls in page.rs. Reindent in should_move_clip_rect. All root layers should mask their content Root layers that define the extent of iframes should always mask their child content. This fixes a bug where root layers without an assigned size and location do not spill over the entire scene. Hit test against clipped layer boundaries When finding the layer under a point, take into account clipping rectangles defined by layers that mask to bounds. This prevents clicks from being hijacked by masked layers. Return early and decline analysis when linting within unsafe functions for must_root analysis. Removes a handful of whitelist annotations obsoleted by this change. fixes #3658 some fixes for multiple-mode textinput layout: Implement `outline` per CSS 2.1 § 18.4. `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. Switch android to glutin. Pass the timing information to PerformanceTiming rather than exposing methods. layout: Make table layout idempotent. 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. Add support for the 'rem' css unit Remove glut port now that android glutin has landed. Remove glut from update-cargo command. Fix spelling mistakes in comments. Update web-platform-tests. Sending key events through script task before processing them in the compositor. Fixes #4163 gfx: Implement `letter-spacing` per CSS 2.1 § 16.4. 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. Don't include the root element when calling Element#getElementsByTagNameNS. Follow-up to work done in #4304. all_elements should ignore root as well. Update PowerMeasure.py post-cargoify Groove and Ridge rendering shows a solid border when color is black, that is broken and the current patch will implement a similar behavior as Firefox. Adding tests to check behavior. There are 3 files that will test: a) If the groove border is different from a black border (the bug that this patch set fixes); b) If a ridge border is different from a black border (samething); c) If groove is different from ridge (they should be inverse of each other). All 3 new tests passes on OSX Yosemite (10.10). Restored older behavior for lighter color, should fix the regression. layout: Refactor inline layout a bit. layout: Implement `text-indent` per CSS 2.1 § 16.1. 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.) Return real page titles and URLs for devtools tab choices. Fixes #4167. script_task, handle_msgs: sort for pattern constructor script_trask, handle_msgs: factored out handle_msg_from_constellation script_trask, handle_msgs: factored out handle_msg_from_script script_trask, handle_msgs: factored out handle_msg_from_devtools compositing: Translate clip rects into the coordinate systems of child layers when doing hit tests. Fixes clicking on links on the second page of Hacker News. Factor out part of the traversal routine in HTMLCollection. I would move the filter() call into the traverse function as well, but the callback can't outlive its stack frame. Skip the root node in live HTMLCollections. The root node is never included in the collection, and omitting it here simplifies and speeds up the filter implementations. layout: Implement `word-spacing` per CSS 2.1 § 16.4. 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. Make DOMParser::ParseFromString actually parse the string layout: Implement `overflow-wrap`/`word-wrap` per CSS-TEXT § 6.2. 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`. Run the DOM parsing tests. Run the File API tests. Make ErrorEvent::new take cancelable and bubbling enums Correctly set the BlobType for File objects. Add handle_key stub to gonk port Update azure to fix gonk build script: Improve dirty propagation and fix script-layout synchronization. This fixes race conditions whereby layout and script could be running simultaneously. script: Add some workarounds for image cache task races gfx: Implement `box-shadow` per CSS-BACKGROUNDS. layout: Implement basic lists and the CSS1 list properties. 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. layout: Make line breaking able to restart from any position. 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`. style: Move presentational hint synthesis into `legacy.rs`. style: Parse the legacy `border` attribute per the legacy HTML specification. Additionally, this patch cleans up some miscellaneous formatting issues and refactors files in `layout/css/` somewhat to eliminate needless levels of indirection. It also fixes our handling of presentational hints that only apply if border is nonzero. style: Parse the legacy `bgcolor` attribute per the HTML5 specification. Additionally, this patch cleans up some miscellaneous formatting issues. style: Implement basic column spans. This patch provides some of the groundwork for column spans greater than 1. It implements the column-span CSS property (prefixed so as not to be exposed to content) 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. Additionally, this patch cleans up some miscellaneous formatting issues and improves the handling of table rowgroups. style: Implement quirks mode rules. style: Address review comments relating to `bgcolor` and column spans Fix window.performance.now() script: Fix double-borrow error This was my fault. It comes up on almost any page after scrolling a bit. Fixed codegen error regarding Uint8ClampedArray Add auxiliary method to EventTargetHelpers for events without target fixup! Add auxiliary method to EventTargetHelpers for events without target Update cocoa (needed for newer glutin) Fix bogus transmute. Remove some manual deref() / deref_mut() calls. Makes layout respect <textarea> cols attribute Makes layout respect <textarea> rows attribute review addresssing Update Cargo.lock to fix gonk build Fix crash in textinput Implements HTMLInputElement.defaultValue ...and changes SetValue to update the input text instead of the content attr. Also includes a comment summarizing everything I currently know with respect to an input elements checkedness vs its IDL attributes vs its content attributes. Implements basic form resetting What can this do? Reset `<input type=text>` fields back to their default value through a call to a form's reset method. That's all for now! Fixes compile error after rebase Adds reset method to FormControl Implements FormControl for HTMLTextAreaElement Implements reset button htmltextarea: Fixed some value_changed issues Also modified tests/html/textarea.html to allow for the testing of the textarea's dirty value flag. Implements DefaultChecked and resets of checkboxes Implements dirty value/checked flags for input And modifies test-inputs.html to test. Fixes wpt breaking mistake Updated WPT to expect newly passing tests Implements :indeterminate pseudo-class Addresses reviews Additional updates for newly passing WPT's handle null for evaluating JS value. #4235 Inset and outset border coloring is incorrect on left side border. This patch will fix this issue. Thanks to differences on rendering between CPU X GPU, there is a 1 pixel wide difference in the position where the top border meets the right border (as also the right border X bottom border). The workaround to have a test that will work on both modes is to cover the affected area with a white div. This patch adds inset test. Adding tests for outset. Cropping the ref images to save some bytes (as also adjust test borders to match results). Update gleam, clear initial framebuffer under glutin. Include gleam for android Update rustc to revision 3dcd2157403163789aaf21a9ab3c4d30a7c6494d. Various compile fixes for android rustup (link still fails). Compile fix for glutin feature after rust upgrade. Use `parse_html` in DOMParser. layout: Implement `empty-cells` per CSS 2.1 § 17.6.1.1. layout: Implement `caption-side` per CSS 2.1 § 17.4.1. `caption-side` is used by 4% of pages by number of loads. compositing: Implement `cursor` per CSS3-UI § 8.1.1 in the CEF/Mac port. 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). Restore glutin close on escape functionality. Also fix linux compile error. Rename the PrototypeList enums to fix case build warnings. Have 'mach build' pass arbitrary arguments to Cargo. Duplicating all of Cargo’s argument parsing in mach is silly. Remove usage of the deprecated std::num::Zero trait. Remove usage of deprecated HashMap::get_copy Simplify util::range::RangeIndex to always require std::num::Int, and fix remaining warnings. Update layer bounds on resize This fixes a bug where fixed-position layers are not repositioned when the window is resized. This fixes #4407. This removes all unnecessary clones when calling fire_timer. style: Remove glob imports added in #4405 Add the basic CSSStyleDeclaration CSSOM interface. This just includes the .webidl file (with some of the functionality commented out) and the stub implementations for the bindings. This is another step towards #1721. Add stub CSS2Properties type. Stub in some uses of getPropertyValue and sketch out its implementation. Add a style property to HTMLElement. Implement something like CSS value serialization. Fetch actual inline style declarations from owning elements. Implement setting element style properties. Improve serialization to return initial values when unspecified. Improve color serialization by retaining author-specified keywords. Add a ton of properties and improve a bunch of serialization. Fixups for rust upgrade and jsref changes. Rebase and update new css properties. Add z-index support. Move test_htmlelement_style.html out of the automatic tests because they don't all pass. Implement RemoveProperty, SetProperty, and supported property indices. Address review comments. Slight simplification. Fix syntax error in test_interfaces.html and make it pass. Merge CSS2Properties and CSSStyleDeclaration. Address review comments. Add missing supported CSS properties. Fix test failures. gfx: Remove glob imports added in #4405 net: Remove glob imports added in #4405 layout: Implement `clip` per CSS 2.1 § 11.1.2. Only the recommended, comma-separated syntax is supported. script: Fix double borrow error when going back. Closes #4402. I have verified that back and forward work once again. Fix some writing mode mismatch assertions errors. 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.) script: Remove glob imports added in #4405 Similar to groove/ridge case, inset/outset would scale the color to decorate the border. Scale fails when the color is black (i.e. zero), thus this patch will fix this issue by using a fixed color. Adding inset ref test. Adding outset ref test. Update cargo nightly to get android cross compile fix. Also add stub trait method to glutin port. Add time as submodule - workaround for android cross compiling until next rustup. Handle getting/setting onload for any element. Trigger a load event after evaluating a <script>. Update WPT: script-onload-string is passing now. update past rustup and use DoesNotBubble instead of Bubbles update to namespaced enums without re-exports Make the argument to dispatch_event_with_target non-optional. The name of the method makes it clear it's supposed to be used with a target override, so we might as well enforce that. Update wptrunner and start running reftests. Enable html/rendering. Simplify some code in ScriptTask::load. Create a replacement for Cell<SM primitive>. Fixes #4337. Remove unused libgreen import. Use the try macro in unwrap_jsmanaged. Remove the proto_{id,depth} arguments from unwrap_jsmanaged. Instead, we infer them from the type we're unwrapping into. This will prevent any mismatches between the type we return and the type we check for. Use unwrap() when finalizing. This allows us to duplicate a little less code. Move unwrap_jsmanaged and related machinery to conversions.rs. CodegenRust fixes for NamedGetter Added Element::set_custom_attribute Implement HTMLElement.dataset Make DOMStringMap use related Element's custom attributes values. Avoid duplicated code Update web-platform-tests results Update HTML{Div,Span,}Element stack size Remove the unused DOMRefCell::unwrap method. Document DOMRefCell. Based on the RefCell documentation. Require documentation for ByteString. Simplify _obj_toString by using JS_NewStringCopyN. Reindent _obj_toString. GlobalRef passed by value in reflect_dom_object, reflect_node #4165 On left/right keydown place edit_point correctly when there is a selection in TextInput Fixes #4447 Make gonk port build again after the last rustup Removed accidental commit of submodule pointer Rebuild after ./mach test-unit (ugly) workaround for issue #3928 Moved unit tests to the end of `./mach test` glutin - Add support for waking up blocked event loop, and smooth resize on mac. gfx: Refactor the border drawing code and split out fragment display list building into multiple functions. This should have no functional changes; it's just code cleanup. gfx: Fix a nasty bug whereby the transient clip was not always removed, causing elements to be randomly clipped out. Improves Wikipedia, Reddit, etc. gfx: Clip the background properly when `border-radius` is used. Improves Reddit, GitHub, etc. Use event polling instead of blocking when outputting to a file. This stops some ref tests on linux blocking while waiting for user input events and never outputting the file. Also mark vertical writing test as flaky on all platforms. Due to unrelated timing reasons, this fails reliably on mac when glutin is enabled. The related bug with details on the root cause is #3926. Update glutin to get mac visibility fix. Revert PR #4038 for causing WPT failures. Revert "Enable html/rendering." This reverts commit dde0702a898147ef77b93e54f3664be2f5af12a2. Revert "Update wptrunner and start running reftests." This reverts commit 1d68ee689f26b9318e287a5db1f5c96d2a7905ce. Fixes #4462. Add a test that wptrunner fails when it should. Implemented CSSStyleDeclaration.setPropertyPriority Implemented CSSStyleDeclaration.setPropertyPriority, resolves #4433 Add GetPropertyPriority to CSSStyleDeclaration Tweak getPropertyPriority to match recommendations Adding Tests for Style Priority Use else if Adding Content Test for GetPropertyPriority Revert "Adding Tests for Style Priority" This reverts commit 8666a37f833b06c3e43f27acd8a9678e94425e55. This fixes #4259. Dispatching the mousemove event for the top most node when the mouse moves while on top of it Allow selection of all text in a text control using the ctrl-a/cmd-a shortcut. Fixes #4411. Replace XHR events for generic ones in ScriptTask fixup! Replace XHR events for generic ones in ScriptTask fixup! Replace XHR events for generic ones in ScriptTask Replace bool attribute in Element::update_inline_style with a descriptive enum Fix HTTPS fetches. This fixes #4166. throw_dom_exception will take the GlobalRef by value, and all generated code will pass it by value. Call the NamedGetter method from the get trap in proxy bindings. Use the custom defineProperty trap when it exists. Correct the generated code for NamedSetter calls. Factor out the name handling in Element::{Get,Set,Remove}Attribute. Implement Element::set_custom_attribute. Implement HTMLElement.dataset (fixes #2974). Implement dummy getOwnPropertyNames and enumerate traps. AttrValue's s/from_tokenlist/from_serialized_tokenlist/ Avoid duplicated tokens in AttrValue::from_serialized_tokenlist Added AttrValue::from_atomic_tokens & Element::set_atomic_tokenlist_attribute Added Element::get_tokenlist_attribute DOMTokenList::check_token_exceptions now returns an Atom Implement DOMTokenList.add Implement DOMTokenList.remove Implement DOMTokenList.toggle Updated web-platform-tests results gfx: to_string() -> into_string() style: to_string() -> into_string() script: to_string() -> into_string() layout: to_string() -> into_string() servo: to_string() -> into_string() plugins: Fix transmute lint message Remove some transmute calls. Use inline(always) for trace() Add internal plugin for creating Reflectable implementations Remove manual impls of Reflectors (autogen) Obtained via: `find . -maxdepth 1 -type f -print0 | xargs -0 sed -z -i "s/\\nimpl Reflectable for[^{]*{[^}]*}[^}]*}\\n//"` `find . -maxdepth 1 -type f -print0 |xargs -0 grep -lZ dom_struct | xargs -0 grep -LZ "reflector()\\|Reflector::new" |xargs -0 sed -z -i "s/use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object};/use dom::bindings::utils::reflect_dom_object;/"` followed by semi-automated removal of leftover imports Remove extra spaces Command: `find . -maxdepth 1 -type f -print0 | xargs -0 sed -z -i "s/}\\n\\n\\n/}\\n\\n/"` Add inheritance-checking lint Ensure that Reflectors are the first field Fix warnings post-upgrade Update web-platform-tests. Added readonly flag for CSSStyleDeclaration Simplify some code in handle_click_event. Add support for named deleter Closes #4469. Allow refcounting arbitrary DOM objects in concert with the GC to enable safe, asynchronous/cross-task references to pinned objects. Force all messages to worker tasks to send a TrustedWorkerAddress along with the ScriptMsg. This ensures that the main-thread Worker object is rooted for as long as there are events in flight or being processed. Upgrade cssparser to a version with the new ToCss trait. Implement ToCss for types in style::properties::common_values::specified Implement ToCss for Cursor and de-duplicate variants and string values. Remove some tabs @jdm, can you configure your editor to not insert them in the first place? Declare dependencies on text_writer. Transitive dependencies being available is considered a bug: https://github.com/rust-lang/cargo/issues/1037 Add a match_ignore_ascii_case! macro that does not allocate. It should replace `match foo.to_ascii_lower().as_slice() { ...}` @Manishearth I changed map.get to map.find in the lint to work around an ICE: task 'rustc' panicked at 'couldn't find node id 0 in the AST map' Does this look OK? Fix typo in a cursor keyword. Thanks @nuss-justin! Move the define_css_keyword_enum macro to the style crate. update description in ORGANIZATION.md add ` around path use geom::num::Zero rather than the deprecated num::Zero trait in std This fixes the following warning: display_list/mod.rs:735:20: 735:30 warning: use of deprecated item: Use `Int::zero()` or `Float::zero()`., #[warn(deprecated)] on by default display_list/mod.rs:735 let zero = Zero::zero(); ^~~~~~~~~~ Re-enable two transform_text unit tests. Note that I had to change some expectations to make them pass. Cleanup the transform_text tests. Reformat the transform_text tests. Codegen whitespace fixes Codegen indent fixes Codegen empty lines fix Codegen style fix Replace the remaining to_string calls by into_string calls. plugins: Add seanmonstar's to_string() lint Use or_init for HTMLCanvasElement::GetContext. break up lints.rs into separate files add str ToJSValConvertible for str type use str to_jsval() now xmlhttprequest.rs, CodegenRust.py replace into_string().to_jsval() to to_jsval() conversions.rs DOMString to_jsval() use as_slice().tojsval() now Bug #1820, add the optional "type" parameter to Blob Remove spurious spaces from lints/mod.rs. Stop using ptr.is_not_null() in script. This method is deprecated in rust master; removing its users in advance will make a future rust upgrade smoother. Remove the 'a lifetime from Root. It does not add any safety, as the reference is constructed from a raw pointer without limiting the lifetime in any way. Remove the 'b lifetime from Root. It does not add any safety, as the reference is constructed from a raw pointer without limiting the lifetime in any way. Rename Root::root_ref() to Root::r(). As it will be used much more widely after the upcoming changes, this limits the effort reading and writing the method calls. Replace Root::deref() calls by Root::r() calls where possible. This changes those calls that were already sound. Remove unsound Root::deref() call in Attr::set_value. This changes those calls whose unsoundness was not picked up by the type system because of a lifetime constraint that cannot be expressed at this time. Remove unsound Root::deref() calls in XMLHttpRequest. Remove unsound Root::deref() call in BrowserContext::create_window_proxy. Remove unsound Root::deref() calls in CSSStyleDeclaration. Remove unsound Root::deref() call in Document::get_html_element. Convince borrowck that Document::createNodeList is sound. Remove unsound Root::deref() call in Document::set_quirks_mode. Remove unsound Root::deref() calls in DOMParser::ParseFromString. Note that Root::clone() calls through to JSRef::clone() due to autoderef. Remove unsound Root::deref() calls in HTML elements. Rename GlobalRoot::root_ref() to GlobalRoot::r() for consistency. Construct a new JSRef in Root::r(). Stall PaintTask exit until it can release all buffers 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. Remove obsolete attributes. Fix obsolete format traits. They are to be removed from the language in the next rust upgrade. Remove dummy deriving attributes. Traits cannot be derived for typedefs. The upcoming rust update will make those attributes compilation errors. Implement Document.defaultView - fixes #4518 Issue 4497: Converts WorkerPostMessage into a Runnable. Implements WorkerMessage handler implementing Runnable trait. Add HTMLElementTypeId enum (fixes #3625) Fix inheritance enums for htmlmediaelement and htmltablecellelement Rename paint_task::Msg variants. Rename constellation_msg::Msg variants. Don't qualify Ok/Err in image_cache_task. Rename TimeProfilerCategory variants. Rename the PaintState variants. Stop using div_rem. Slice some fixed-size arrays. Disambiguate trait object reference syntax. Remove some obsolete formatting traits. Qualify Azure enums. Qualify libstyle enums. Qualify PixelsByColorType. Qualify stb_image::LoadResult. Import ast::ComponentValue more consistently. Qualify hyper enums. Qualify resource_task enums. Qualify JSGCTraceKind. Qualify CanvasMsg. Re-export devtools enums. Qualify image_cache_task::Msg. Qualify script_traits enums. Qualify compositor_msg::ReadyState. Remove dependencies on the native crate. Rename the ConstellationControlMsg variants. Import enums inside hyper::mime rather than the module. layout: Paint stacking contexts' overflow areas properly. This was making `box-shadow` not show up in many cases, in particular, but the effects were not limited to that. layout: Explicitly thread border box dimensions and relative offsets through display list building. The old `flow_origin` concept was ill-defined (sometimes the border box plus the flow origin, sometimes including horizontal margins and sometimes not, sometimes including relative position and sometimes not), leading to brittleness and test failures. This commit reworks the logic to always pass border box origins in during display list building. Simplify vtable_for. Remove the unused native argument from spawn_named_with_send_on_failure. Remove spawn_named_native. All threads are native now, so this was just an alias for spawn_named. Rename MouseWindowEvent variants. Check for no parameters when invoking cargo Update cocoa/glutin for mac mouse events fix. Code cleanup in glfw_app::Window::scroll_window More code re-use, fewer unchecked units. Fix gonk port bustage due to constellation_msg renaming Update rustc to revision 2cfb5acb5a2751c759627377e602bac4f88f2d19. Fix #3936 – {Window,WorkerGlobalScope}.set{Timeout,Interval}(DOMString) Ban Cell<JS<T>> and Cell<JSVal<T>> (partial #4336) Mention MutHeap in DESIGN.md layout: Implement `word-break: break-all` per CSS3-TEXT § 5.2. layout: Implement `pointer-events: none` per SVG 1.1 § 16.6. SVG-only values are not yet supported. layout: Implement `outline-offset` per CSS-UI-3 § 5.5. Rename Compositor messages SetIds and Paint These names no longer reflect what the messages do, so rename them to SetFrameTree and AssignPaintedBuffers. Fix root layer naming in the compositor The term "root layer" is used in the compositor to refer to both the pipeline root layer and the page background layer. This can be quite confusing. Instead, call the page background layer the "base layer," which is always the first child of the pipeline root layer. Fixes #4164 Make Constructor and new functions take GlobalRef by value Fixes #4164 Make file.rs Constructor and new functions take GlobalRef by value layout: Implement `text-rendering` per SVG 1.1 § 11.7.4. Like Gecko, we treat `geometricprecision` the same as `optimizelegibility` for now. Remove if_let feature gates. This feature is now supported unconditionally. Add ability to explicitly set static resources path, used by cef-linux. Fix android unused import error. Fix `string::raw::from_buf` deprecation warning Fix `use {f32,f64}::consts` warning Fix `variable does not need to be mutable` warning Fix `non_upper_case_globals` warnings Allow `missing_copy_implementations` Fix `use Deref instead` warning Fix `unnecessary `unsafe` block` warning Fix `renamed to into_inner()` warnings Fix `use UnicodeChar::to_lowercase` warning Fix `renamed to slice::from_raw_buf` warning Fix Equiv related deprecation warnings ...except where we have our own implementations of Equiv. Update glutin for hidpi tests on mac. Update android openssl version due to security advisory https://www.openssl.org/news/secadv_20150108.txt Silence warnings from openssl Fix dead code warning for Android Fixes #4573 Replaces the boolean argument of TextInput::adjust[horizontal|vertical] with enum to self document the code Fix assertion trying to remove a Node that has no parent fixes #4562 Deny unsafe blocks in script. As a first start, this allows them indiscriminately where used. Remove the NavigatorInfo struct. It serves no purpose. Make initialize_layers a PaintTask method This simplifies calling it substantially. Also avoid unnecessarily changing the PaintTask epoch when we don't have paint permission. layout: Implement `filter` per CSS-FILTERS § 5. `blur` and `drop-shadow` are not yet supported, because the `text-shadow` PR makes some fundamental changes to blur rendering that are needed first. Remove transmutes in LayoutContext. Pass a Vec to ApplicableDeclarationsCacheEntry::new. As it copies the slice anyway, it is better to give the caller the opportunity to pass in an existing Vec. CanvasRenderTask connected to Layout Update rust-azure to f4a02f3f621b0a994a20d42e438371a87c62f898. Make DOMContentLoaded and load asynchronous with using Runnable. Change the reason of disable /html/semantics/document-metadata/the-base-element/base_multiple.html We haven't support the propagation of load event from iframe. Store HTMLIFrameElement sandbox attr as TokenList Fixes #3758 Store the sandbox attribute of HTMLIFrameElement as a TokenList internally. Use .tokens() to iterate over the tokens instead of splitting on the string value. The external interface for sandbox remains a DOMString, which will need to be fixed when DOMSettableTokenList is implemented (#1717). Combine all pipeline status trackers into a single struct This will make it easier to organize and clean up this information during pipeline shutdown. Be less stringent with invalid compositor messages It is possible for messages for defunct pipelines to arrive in the compositor. If the compositor believes that the pipelines are in the process of shutting down, simply ignore the messages. We still panic in the case that the pipeline is totally unknown. Fixes #3733. Store pipelines in the Compositor Instead of cloning pipelines and storing them once per layer, store them globally in the compositor and access them via id. This trades lots of unnecessary duplication for a HashMap lookup. Fix gonk build after the last rustup Update FrameTree pipelines when appropriate Instead of simply creating a new FrameTree when an iframe starts a load, update the existing FrameTree's pipeline. This prevents the FrameTree from accumulating many extra children. Add FrameTree::add_child This helper method simplifies a few lines. Notify compositor when a FrameTree changes pipelines When the constellation change a FrameTree pipeline, it should send a notification to the compositor, so that it can negotiate buffers from the correct render task. This commit also migrates away from the generalized FrameTreeUpdateMsg to ones specific to the situation at hand. That turned out to be an unnecessary abstraction. Only send SetLayerRect messages for compositor-backed frames Only send SetLayerRect when we know that a frame has a compositor layer. If it doesn't, we wait until we send the new layer to the compositor. Make the gonk input code use standard file APIs Move the documentation comment for the devtools_traits crate to have it picked up. Create a StructuredCloneData struct to encapsulate the result of a structured clone. Implement StructuredCloneData::write. Implement StructuredCloneData::read. Rewrite ReverseChildrenIterator to return Temporary. Make Runnable::handler take self by value. With my thanks to kimundi and eddyb for their help in making this approach work. Make StructuredCloneData an opaque struct. Remove RethrowContentExceptions and related infrastructure. We do not intend to implement the DOM in JS, so this code isn't necessary. Fix the documentation comment for the devtools library. Also removed a duplicated feature gate. remove unused function with_layout_node #4572 remove documentation in with_layout_node #4572 remove unused documentation in function with_layout_node #4572 layout: Implement `mix-blend-mode` per COMPOSITING § 3.4.1. `background-blend-mode` is not yet supported because we don't support multiple backgrounds yet. Implement most of the important WindowProxy traps Check quirks mode in {Document,Element}::getElementsByClassName Fixes #4604. Remove unused Flow method Add support for multiple cef browsers (multiple tabs). table_wrapper.rs: Fix for percentage widths Fixes #4421 Update png/harfbuzz, use prefixed symbol names. Update glutin and add hidpi methods. Update wptrunner and start running reftests. Enable html/rendering. Update web-platform-tests and wptrunner. Add handling for unreported exceptions when invoking callback objects. Stop pretending to do anything except eagerly report pending exceptions after invoking a callback. Use latest mozjs. Use DrawTarget::new instead of DrawTarget::new_with_data in CanvasPaintTask Update to use latest mozjs-sys Update harfbuzz module. Write a macro or syntax extension to generate OpenType tags Fixes #4556 added unit tests for TextInput - fixes #4352 Disable util crate doctests Because of bug in rustdoc, a new rust-layers dependency on rust-azure will cause linking issues. See https://github.com/rust-lang/rust/issues/21246 for details. Minor fix to Arch developer setup instructions Add the flag that says "Don't reinstall already-installed packages". Otherwise the suggested command means "reinstall all these packages". Update to latest rust-azure and rust-layers We no longer need to implement from_azure_surface in Servo, now that rust-layers is handling more of the glue between rust-layers and Azure. Add the enum to describe the script origin. Make script load event asynchronous for internal scripts fixup! Make script load event asynchronous for internal scripts Implement Element#closest fixes #4603 - Add definition to the Element.webidl and implementation to element.rs. - Create inclusive_ancestors helper in NodeHelpers - Update test expectations Fix TextInput's edit point after set_content Previously, when the edit point was being clamped leftward by a shortened line, it would be placed one one character too far to the left instead of at the very end. Document error.rs. Document global.rs. Update web-platform-tests. Add basic support for closing cef tabs. Prevents crashes, but leaks memory for now. Disallow lines that span more than 160 columns. The Rust style guide suggests 100, but we have too many violations in the tree already. This check can be tightened over time. Stop using Vec::from_elem. It is obsolete on Rust master. Switch CEF on screen build from glfw -> glutin. Add more key mappings. Add libosmesa6-dev to debian dependencies Needs to be updated for arch / fedora too, but I'm not sure what the relevant packages are. Share supported CSS properties between style and CSSStyleDeclaration Avoids duplicated code when implementing the CSS properties accessors in CSSStyleDeclaration WebIDL. Servo internal CSS properties are not accessible. CSS property "float" is unnacessible because we currently lack support for BinaryName IDL annotation (#4435). Fixes #4429, #4430. Switch the default windowing system to glutin. See below for details. This change makes glutin the default windowing system on mac/linux. If you run into any issues with the glutin system, you can temporarily build the GLFW system with the following command: cd components/servo ../../mach cargo build --no-default-features --features=glfw Once any glutin related issues have been sorted out, the GLFW port will be removed. Android doesn't need to explicitly specify glutin now. Switch linux reftests on glutin to use osmesa software rendering. Fix set_ids naming in Constellation The set_ids name is a holdover from a previous design and no longer reflects what this method does. Instead move the content into grant_paint_permission and rename it to send_frame_tree_and_grant_paint_permission. Also move out the handling of evicted iframes into its own method. Fix change of src attributes on iframe (prevents SetLayerOrigin crash). Disable document-lastModified-01.html. It has been failing in automation very frequently. Remove OptionalSettable. It was obsoleted by MutNullableJS. Document js.rs. Stop calling is_not_null. It has been removed from Rust. Document structuredclone.rs. Move to to_owned rather than into_string. into_string has been removed from Rust. Pass a String to spawn_named. IntoString has been removed from Rust, and named() will take a String, so there is no good reason to do otherwise here. Encapsulate to-be-cleaned-up refcounted pointers. This will allow us to make them Send in the future. Port to the new cssparser. https://github.com/servo/rust-cssparser/pull/68 Use std::cmp::Ordering explicitly. Use std::sync::atomic::Ordering explicitly. Use chars().count() rather than char_len(). The latter is obsolete in current Rust. Remove rtinstrument (fixes #4600). The code has been disabled during the last rust upgrade, and has not found an owner. Since the next rust upgrade will bitrot it even more, it is better to remove it for now. If anyone wishes to restore it, the code remains in version history. Stop calling deref() and deref_mut() explicitly. Change glutin headless mode to be a build config, as it breaks some Linux distros linking to both. The majority of this change is simply re-arranging the code in the glutin port so that the windowed/headless code is configured at build time rather than runtime. There shouldn't be any functional difference as a result of this change. Addressed review comments Addressed review comments Added newline at the end of devtools.rs Make UntrustedNodeAddress a newtype. This will allow us to make it Send after the Rust upgrade. Don't call transmute_copy in JS::unsafe_get. It hasn't had borrow flags for quite a while. Return *const T from JS::unsafe_get() (fixes #4712). Removed the if/else loop Update rustc to 00b112c45a604fa6f4b59af2a40c9deeadfdb7c6/rustc-1.0.0-dev. Fix crash due to address significance for JSAPI things. Temporary workaround for change in wait_events behaviour in glutin Don't create an expando holder to delete an expando. If there is no expando object, there will be no expando to delete. Panic if JS_NewObjectWithGivenProto fails. Document proxyhandler.rs. Require documentation for all code in dom::bindings (excluding dom::bindings::codegen). Remove some old impls self import silence fetch warnings raw_pointer_deriving -> raw_pointer_derive Update layers to master. Update azure to master. Don't shadow lifetimes in script. Don't shadow lifetimes in layout. Update dependencies in lock files * openssl * glfw * gleam * skia * mozjs Handle overlapping border-radius corners Conforming to section 5.5 (Rounded Corners/Overlapping Curves) of "CSS Background and Borders Module Level 3", border radii on elements whose border curves would have overlapped are uniformly scaled down to the point that they no longer do. http://dev.w3.org/csswg/css-backgrounds/#corner-overlap Update xlib. Support 'font-style: oblique'. Remove the unused support/time submodule. Fixes #4748. r? @jdm Fix various build warnings. gfx: Implement `font-stretch` per CSS3-FONTS § 3.3 in the Core Text font backend. Update to the latest rust-layers Fixes #4754. Move snapshot dir inside the source dir by default This avoids changing any directories outside the repo, which is better for some automation scenarios. The servobuild.example file has a "cache-dir" setting that restores the previous default location of `~/.servo`, which is useful for developers working with multiple clones on the same machine. layout: Implement `text-overflow: ellipsis` per CSS-UI-3 § 6.2. Only the one-value syntax is supported for now. layout: Implement floated list items. This patch also makes Servo not crash when `generated_containing_block_rect()` is called on a list item (as, for example, GitHub does), and for good measure I added the fix to other flows as well. Update web-platform-tests. Import the util crate as util rather than servo_util. This used to conflict with the util crate from the standard library, which has long since been removed. The import in layout has not been changed because of a conflict with the util mod there. Add layout support and tests for inline iframes. Fixes #1697. Rename getPropertyDescriptor to get_property_descriptor. Rename defineProperty_ to define_property. Rename delete_ to delete. Rename _obj_toString to object_to_string. Rename GetExpandoObject to get_expando_object. Rename EnsureExpandoObject to ensure_expando_object. Rename FillPropertyDescriptor to fill_property_descriptor. Rename getOwnPropertyNames_ and enumerate_ to get_own_property_names and enumerate. Replace the 'GlobalStaticData' free function by a 'new' static member function. Rename GetProtoOrIfaceArray to get_proto_or_iface_array. Use snake case for the members of NativeProperties. Note that the codegen uses the names of the Python fields to initialize the Rust struct. Rename CreateInterfaceObjects2 to do_create_interface_objects. Use snake case for the arguments to do_create_interface_objects. Rename CreateInterfaceObject to create_interface_object. Use snake case for arguments to and locals in create_interface_object. Rename Define{Constants, Methods, Properties} to define_{constants, methods, properties}. Rename CreateInterfacePrototypeObject to create_interface_prototype_object. Use snake case for arguments to and locals in create_interface_prototype_object. Rename ThrowingConstructor to throwing_constructor. Use snake case for the local in initialize_global. Rename GetPropertyOnPrototype to get_property_on_prototype. Use snake case for the local in get_property_on_prototype. Rename GetArrayIndexFromId to get_array_index_from_id. Rename IsPlatformObject to is_platform_object. Rename HasPropertyOnPrototype to has_property_on_prototype. Remove unused IsConvertibleToCallbackInterface. Rename CreateDOMGlobal to create_dom_global. Switch glutin to use servo fork, which contains a crash fix for XCloseDisplay in some X11 drivers. layout: Implement `text-align: justify` and `text-justify` per CSS-TEXT-3 § 7.3. `text-justify: distribute` is not supported. The behavior of `text-justify: none` does not seem to match what Firefox and Chrome do, but it seems to match the spec. Closes #213. Use snake case for the argument to from_jsval for DOMString. Rename GetCallableProperty to get_callable_property. Rename WrapCallThisObject to wrap_call_this_object. Rename GetContext to get_context. Require snake case in bindings code. Use snake case for arguments and locals in CGWrapMethod. Use snake case for arguments and locals in CGCreateInterfaceObjectsMethod. Use snake case for arguments and locals in CGGetPerInterfaceObject. Use snake case in Node. Use snake case in Worker. layout: Fix warnings. PNG library upgrade Re-enable the DOM struct size tests. They were inadvertently disabled in the Rust upgrade. Use NonZero to reduce the size of DOM smart pointers (fixes #4502). Upgrade to rust-cssparser master. * Use associated types * Avoid mutation to gather parsing results. Bring CSS parse error reporting back. (Still off by default. Enable with `RUST_LOG=style`.) End the libstyle 'pub use' madness. style::properties : move generated file out of source tree, use new-style Cargo build script. Split overlong line. Adds borrow_for_script_deallocation and unsafe_mut_js_info method to avoid 'DOMRefCell already mutably borrowed' messages. This is just a temporary fix until the Rust standard library allows borrowing already-borrowed RefCell values during unwinding. It also removes LiveDOMReferences destructor that it's a no-op but it contains an assert that was being violated causing an endless cycle of destructor calls ending up in a stack overflow. Lock crates.io dependencies to specific versions. Specific instances of activatable elements may not be activatable (fixes #4765 Make mutable() use the disabled state Add /.servo .gitignore to ignore the local compiler binary cache. Basic certificate verification (fixes #4119) Add xpcshell script and warning Only SSL CA certs Move RangeIndex to associated types (avoids old impl check) Move FromJSValConvertible to associated types (avoids old impl check) Fix mod_path dependency in CEF and Gonk builds. Introduce LayoutJS<T> LayoutJS<T> implements Layout*Helpers instead of JS<T>. Use LayoutJS<T> in layout crate. Add BarCast::to_layout_js<T>(). Use BarCast::to_layout_js() instead of LayoutJS.to_script(). Add LayoutJS<Node>::from_trusted_node_address() Remove JS<From>.transmute<To>(). Add LayoutJS<T: Reflectable>.get_jsobject(). Create mod.rs files for the dom and dom::bindings modules. This gives us a better place to put DOM documentation, which I'd like to start adding. Remove the glfw port (it doesn't compile since last rustup anyway). Mark HTMLAreaElement and KeyboardEvent as DOM structs. Added error checking on XMLHttpRequest::setWithCredentials
Blocks #2185. |
These might be merged: whatwg/dom#119 |
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
http://dom.spec.whatwg.org/#domtokenlist
Element.classList is a good usecase to work on as well.
The text was updated successfully, but these errors were encountered: