Skip to content
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

Transitive dependencies can be imported #1037

Closed
emberian opened this issue Dec 12, 2014 · 0 comments · Fixed by #1123
Closed

Transitive dependencies can be imported #1037

emberian opened this issue Dec 12, 2014 · 0 comments · Fixed by #1123

Comments

@emberian
Copy link
Member

This is an easy way to accidentally create a fragile dependency, as you can link to crates which are "implementation details" of other crates, and use their public API, without ever declaring a version which you depend on. That is, a violation of the guarantee that semver is supposed to give you.

Example:

cargo-repro
├── bar
│   ├── Cargo.toml
│   └── src
│       └── main.rs
└── foo
    ├── Cargo.toml
    └── src
        └── lib.rs

4 directories, 4 files
# bar/Cargo.toml
[package]

name = "bar"
version = "0.0.1"
authors = []

[dependencies.foo]
path = "../foo"
// bar/src/lib.rs
extern crate foo;
extern crate time; // Bad!

fn main() {
    foo::foo();
    println!("{}", time::now());
}
# foo/Cargo.toml
[package]

name = "foo"
version = "0.0.1"
authors = []

[dependencies]
time = "0.1.1"
// foo/src/lib.rs
extern crate time;

pub fn foo() { }
[19:03:59]/tmp/cargo-repro/bar> cargo run   
    Updating registry `https://github.com/rust-lang/crates.io-index`
   Compiling gcc v0.1.1
   Compiling time v0.1.1
   Compiling foo v0.0.1 (file:///tmp/cargo-repro/bar)
   Compiling bar v0.0.1 (file:///tmp/cargo-repro/bar)
     Running `target/bar`
Tm { tm_sec: 4, tm_min: 4, tm_hour: 19, tm_mday: 11, tm_mon: 11, tm_year: 114, tm_wday: 4, tm_yday: 344, tm_isdst: 0, tm_utcoff: -18000, tm_nsec: 474668923 }
SimonSapin added a commit to servo/servo that referenced this issue Dec 21, 2014
Transitive dependencies being available is considered a bug:
rust-lang/cargo#1037
SimonSapin added a commit to servo/servo that referenced this issue Dec 29, 2014
Transitive dependencies being available is considered a bug:
rust-lang/cargo#1037
alexcrichton added a commit to alexcrichton/cargo that referenced this issue Jan 5, 2015
Now that the compiler supports the notion for a "dependency lookup path" Cargo
can specify this information to the compiler in order to prevent transitive
dependencies from being imported.

Closes rust-lang#1037
bors added a commit that referenced this issue Jan 5, 2015
Now that the compiler supports the notion for a "dependency lookup path" Cargo
can specify this information to the compiler in order to prevent transitive
dependencies from being imported.

Closes #1037
alexcrichton added a commit to alexcrichton/cargo that referenced this issue Jan 6, 2015
Now that the compiler supports the notion for a "dependency lookup path" Cargo
can specify this information to the compiler in order to prevent transitive
dependencies from being imported.

Closes rust-lang#1037
bors added a commit that referenced this issue Jan 6, 2015
Now that the compiler supports the notion for a "dependency lookup path" Cargo
can specify this information to the compiler in order to prevent transitive
dependencies from being imported.

Closes #1037
@bors bors closed this as completed in #1123 Jan 6, 2015
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
bors added a commit that referenced this issue Apr 7, 2020
Upgrade to mdBook v0.3.7

This bumps the requirement from Rust v1.34.0 to v1.35.0 for building docs. AFAICT CI is using nightlies so that should be fine, but I thought I'd mention it in case someone thinks this impacts contributors in any way.

Other than that, there are a few changes that might impact some users in a visible way, like automatic dark theme support for those who picked that perference in their browser, possible color changes to the scrollbar and to the font size, change in the spacing in the sidebar entries, and many more changes and fixes that won't be too immediately impactful but very good all around.

I checked changes from transitive dependency bumps as well, AFAICT there is nothing that *should* impact the final rendering.

**tl;dr:** Nothing will explode. Probably.

For completeness, my raw notes of outtakes as I was reviewing the change logs:

```
[cosmetic]
v0.3.2 https://github.com/rust-lang/mdBook/blob/master/CHANGELOG.md#mdbook-032
Added automatic dark-theme detection based on the CSS prefers-color-scheme feature. This may be enabled by setting output.html.preferred-dark-theme to your preferred dark theme. #1037
rust-lang/mdBook#1037

v0.3.3 https://github.com/rust-lang/mdBook/blob/master/CHANGELOG.md#mdbook-033
Improvements to the automatic dark theme selection. #1069
rust-lang/mdBook#1069

v0.3.7 https://github.com/rust-lang/mdBook/blob/master/CHANGELOG.md#mdbook-037
Fixed theme selector focus. #1170
rust-lang/mdBook#1170

* https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme
* users who picked the dark color scheme in their browser will see the cargo doc in dark.

[cosmetic]
v0.3.2 https://github.com/rust-lang/mdBook/blob/master/CHANGELOG.md#mdbook-032
Use standard scrollbar-color CSS along with webkit extension #816
rust-lang/mdBook#816

* https://developer.mozilla.org/en-US/docs/Web/CSS/scrollbar-color
* scroll bar color might change i guess.

[helpful]
v0.3.2 https://github.com/rust-lang/mdBook/blob/master/CHANGELOG.md#mdbook-032
Updated highlight.js for syntax highlighting updates (primarily to add async/await to Rust highlighting). #1041
rust-lang/mdBook#1041

* not sure cargo doc has many code examples with async/await, but there we go.

[warning]
v0.3.2 https://github.com/rust-lang/mdBook/blob/master/CHANGELOG.md#mdbook-032
Raised minimum supported rust version to 1.35. #1003
rust-lang/mdBook#1003

* from 1.34.0.

[cosmetic]
v0.3.4 https://github.com/rust-lang/mdBook/blob/master/CHANGELOG.md#mdbook-034
Switch to relative rem font sizes from px. #894
rust-lang/mdBook#894

* will impact some displays, but px is already an abstract thing so maybe not that big of an impact.

[warning]
v0.3.5 https://github.com/rust-lang/mdBook/blob/master/CHANGELOG.md#mdbook-035
Updated pulldown-cmark to 0.6.1, fixing several issues. #1021
rust-lang/mdBook#1021

* from 0.5, breaking changes.
* parsing only -- the team had to do multiple changes but nothing seems like it would impact final rendering

[cosmetic]
v0.3.6 https://github.com/rust-lang/mdBook/blob/master/CHANGELOG.md#mdbook-036
Adjusted spacing of sidebar entries. #1137
rust-lang/mdBook#1137

[warning]
v0.3.6 https://github.com/rust-lang/mdBook/blob/master/CHANGELOG.md#mdbook-036
Handlebars updated to 3.0. #1130
rust-lang/mdBook#1130

* from 2.0
* https://github.com/sunng87/handlebars-rust/blob/master/CHANGELOG.md
* strictly maintenance and perf AFAICS, no changes to final rendering.

[cosmetic]
v0.3.6 https://github.com/rust-lang/mdBook/blob/master/CHANGELOG.md#mdbook-036
Adjusted the menu bar animation to not immediately obscure the top content. #989
rust-lang/mdBook#989

* personal fave.

[cosmetic]
v0.3.7 https://github.com/rust-lang/mdBook/blob/master/CHANGELOG.md#mdbook-037
Code spans in headers are no longer highlighted as code. #1162

* users will see some headers change, probably.

[fixes]
+ ~13 fixes impacting rendering in less immediately visible ways.
rest should have no impact on end-user experience.
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant