New commits added.

Rename LoadIframeUrlMsg to CreateIFrameAndLoadUrlMsg

This better reflects what the message does.

Small fix to variable name

This is a more accurate name for the script pipeline.

Add some factory methods for frame tree types

Send incremental frame tree updates to the compositor

This allows the compositor to add frames after the call to SetIds,
where the initial frame tree is created. There are still some issues
preventing proper late frame creation, but this prevents crashes when
it happens.

Fixes #3738.

Rebase commit

Move code related to json packet reading to JsonPacketSender trait

fixup! Move code related to json packet reading to JsonPacketSender trait

Fix #3933

Clip display list based on frame viewport

Instead of creating a display list for the entire page, only create one
for an area that expands around the viewport. On my machine this makes
incremental layout of http://timecube.com 50% faster.

Rust upgrade to rustc hash b03a2755193cd756583bcf5831cf4545d75ecb8a

Fix unit test compile error.

Fix CEF build cargo.lock file

Disable cors tests for now as they break the rust upgrade.

Rebase and fix up compile errors for rust upgrade.

Disable event-timeout for rustc upgrade. See #3396.

Pass all key events to the current constellation frame.

Add KeyboardEvent stub.

Fill in KeyboardEvent.

Dispatch keydown, keyup, and keypress events at appropriate  times.

Implement document focus context and hook it up to click events.

Add single-line text input with no visible cursor.

Flush layout after executing timers.

More documentation.

Fix interfaces test

Short-circuit initFooEvent while dispatching events.

Update html5ever ref in Android Cargo.lock

Download Cargo over HTTPS. Fix #3582.

embedding: rename string_list internal function to string_list instead of string_map

embedding: cef_string_utf8_cmp()

embedding: replace transmutes with manual casts in cef_string_utf8_cmp()

embedding: fix conflicts from rustup

embedding: begin cef string_map api

cef_string_map_alloc()

embedding: cef_string_map_size()

embedding: cef_string_map_append()

embedding: cef_string_map_find()

embedding: cef_string_map_key()

embedding: cef_string_map_value()

embedding: cef_string_map_clear()

embedding: cef_string_map_free()

embedding: address various review nitpicks for string_map

embedding: add eutil::slice_to_str() convenience function

converts a *u8+length to &str and returns c_int

embedding: replace all occurrences of slicing to &str with slice_to_str()

embedding: address most recent critic review

Don't overwrite redirected URL in script_task (fixes #3970)

Remove unused arguments from LoadComplete and LoadCompleteMsg

Add contentDocument support for HTMLIFrameElement. Fixes #3808.

Iframe resource file moved to resources dir so it's not picked up by test harness (and does not fail).

Update Cargo.lock files for Android rustup fixes

r? @glennw

Update GLUT for rustup fixes

Pulls in servo/rust-glut#49

Use Cell::as_unsafe_cell in Reflector::rootable.

Use RefCell in DOMRefCell to reduce duplicated code.

empty enum replaces c_void

fix incorrect type aliasing logic

remove trailing semicolons

remove trailing semicolons

embedding: empty enum replaces c_void

embedding: remove eutil::fptr_is_null, fix #3967, add Option<> to fptrs

embedding: change Option<> unwrapping for fptrs to use match

embedding: convert callback Option<> matching to map()

Mark vertical-lr-blocks.html as flaky to ease the pain while it's being investigated. #3926

Disable the iframe content test due to #3986.

M1456, Implement MIME sniffing initial Step

Fix binding generation for Callback Functions and Callback Interfaces

Allow passing arguments to setTimeout/setInterval callbacks

Update web-platform-tests.

Fix wpt readme for mach changes

Use freetype-sys on Linux.

See:
https://github.com/servo/libfreetype2/pull/2
https://github.com/servo/skia/pull/38
https://github.com/servo/rust-azure/pull/114

Let’s close #3867, even though this only works around and doesn’t fix the underlying issue.

List bzip2 as a requirement in README.md

… but not for Homebrew or MacPorts, OS X which apparently ships with it.

Fix Table Caption infinite recursion.

Add test.

Correct the checks in step 5 of Node::pre_insert.

Including webstorage folder in tests

Update gleam submodule, and use glfw to load OpenGL function pointers.

gfx: Rewrite display list construction to make stacking-contexts more
first-class.

This implements the scheme described here:

    https://groups.google.com/forum/#!topic/mozilla.dev.servo/sZVPSfPVfkg

This commit changes Servo to generate one display list per stacking
context instead of one display list per layer. This is purely a
refactoring; there are no functional changes. Performance is essentially
the same as before. However, there should be numerous future benefits
that this is intended to allow for:

* It makes the code simpler to understand because the "new layer needed"
  vs. "no new layer needed" code paths are more consolidated.

* It makes it easy to support CSS properties that did not fit into our
  previous flat display list model (without unconditionally layerizing
  them):

  o `opacity` should be easy to support because the stacking context
    provides the higher-level grouping of display items to which opacity
    is to be applied.

  o `transform` can be easily supported because the stacking context
    provides a place to stash the transformation matrix. This has the side
    benefit of nicely separating the transformation matrix from the
    clipping regions.

* The `flatten` logic is now O(1) instead of O(n) and now only needs to
  be invoked for pseudo-stacking contexts (right now: just floats),
  instead of for every stacking context.

* Layers are now a proper tree instead of a flat list as far as layout
  is concerned, bringing us closer to a production-quality
  compositing/layers framework.

* This commit opens the door to incremental display list construction at
  the level of stacking contexts.

Future performance improvements could come from optimizing allocation of
display list items, and, of course, incremental display list
construction.

Redirect android resource folder (user-agent.css and friends) to /sdcard/servo. This is a temporary solution, until they are packaged properly.

Update green-rs submodule to get android tls fix.

Add missing gfx dependency, that was causing a race in cargo on the build machine.

key[board]event args for Document#createEvent

Sending exit message to devtools to exit.

Accepted and closed incoming streams

Added header to for constant use.

Removed extra spaces.

Corrected spacing to conform to coding standards.

Corrected spacing to conform to coding standards.

Corrected spacing to conform with coding standards.

Moving new import next to old import for devtools_traits as specified in comment.

Removed method definition to include as inline code and changed to iter_mut.

Using loops to exit devtools on server exit message and disconnected message to simply break as suggested in the comment.

Removing TODO comment for completed functionality.

Moved the operation for exit of devtools on servo closing outside the match loop.

Removing trailing ';' and adding new line before connection closing loop.

Spacing changes corrected.

 Update README for Homebrew.

glfw3 is in the `homebrew/homebrew-versions` repository.

Reformat sniffer_task.rs.

Fix freetype build, pick up https://github.com/servo/libfreetype2/pull/3

Use the correct Rust path in Android packaging

Various cleanup in constellation.rs.

Lower case the type attribute before checking if it's JS

Update behavior of Document.createElement

Fixes #4009.

Only lower-case the argument to Document#createElement if it's a HTML document.

Implement DOMImplementation.hasFeature

Fixes #4010.

Stop including the element during Element.getElementsByClassName.

https://github.com/servo/servo/issues/3995

wide form buttons fixes #3972

Remove bitfield! macro in favour of bitflags!

embedding: begin cef string_multimap api

cef_string_multimap_alloc()

embedding: cef_string_multimap_size()

embedding: cef_string_multimap_find_count()

embedding: cef_string_multimap_append()

embedding: cef_string_multimap_enumerate()

embedding: cef_string_multimap_key()

embedding: cef_string_multimap_value()

embedding: cef_string_multimap_clear()

embedding: cef_string_multimap_free()

embedding: replace usage of deprecated find*() with get*()

address review comments

Add glutin port (supported on Linux only currently).

Default build uses glfw, but glutin can be enabled via:

./mach cargo build --no-default-features --features=glutin

layout: Eliminate the virtual `is_float()` in favor of the flow flags

layout: Incrementalize reflow of block formatting contexts impacted by
floats, and make float placement idempotent.

This moves float placement outside sequential block size computation.

Improves the maze solver.

Remove rust-alert as it's broken on mac, and unimplemented on other platforms.

Remove some code duplication in the Compositor

It is possible to share the code which creates root layers.

cef: Don't link against librustc in the final build artifact

Update web-platform-tests.

Added libbz2-dev to Debian based prerequisites

Encountered this when building for the first time today:

```
note: /usr/bin/ld: cannot find -lbz2
collect2: error: ld returned 1 exit status

error: aborting due to previous error
Could not compile `servo`.
```

Installing the libbz2-dev packaged fixed it.

Added bzip to Fedora and Arch prereqs

Added a mach command for cargo update

As proposed in #3736

Example usage:

``` sh
$ ./mach update-cargo -p rust-xml
.
    Updating git repository `https://github.com/netvl/rust-xml`
ports/cef
    Updating git repository `https://github.com/netvl/rust-xml`
ports/android/glut_app
    Updating git repository `https://github.com/netvl/rust-xml`
```

Update web-platform-tests.

embedding: add some commonly used string constants from chromium

embedding: implement cef_execute_process() stub

this is missing signal handler functionality in rust and we currently have no use case for actual execution of secondary processes

embedding: cef_string_wide_cmp()

embedding: cef_string_utf8_to_wide()

embedding: cef_string_wide_to_utf8()

embedding: cef_string_ascii_to_utf16()

embedding: cef_string_ascii_to_wide()

Remove unused exit after load option.

This simplifies some upcoming changes to how event handling works.

Implement Attr#nodeValue

Fixes #4047

Updated to expect tests that are now passing

Allow reftests to be run directly w/ relative path

Fixes #3521

No longer need for local variable in PropertyDeclaration::parse

Arc::make_unique is now stable

Make glutin work on mac.

- Update glutin, and update rust-cocoa to use the servo fork now that upstream is up to date.
- Many events and resizing are still not working correctly on mac yet.

embedding: fix type decls

embedding: add cef_display_handler_t decl

embedding: add cef_life_span_handler_t decl

embedding: add cef_client_t decl

embedding: add cef_window_info_t decl

util::opts::default_opts() is now pub

embedding: redo browser creation and message loop code to be more CEF-like

big thanks to @alexcrichton for his help with this

embedding: redo browser creation, split after_created COM to separate function

this causes the callback to run at the expected time for applications that may depend on the browser loop having started or somesuch

Run a single WPT test from a relative path

Fixes #4055

New commit added.

Removing accidental commti.

layout: Fix De Morgan's Law error in incremental reflow, allowing
float/absolute layout layout to be idempotent again.

Fixes the maze solver.

implement Document#createAttribute

Update rust-layers to fix empty BufferRequest failures

rust-layers will now avoid sending empty buffer requests which can
cause failures when Servo tries to create empty platform surfaces.

Fixes #4060.

Fixes 4037. Enable backtrace on run cmd.

Make sure directories aren't getting tested

Adds --release flag to ./mach build-cef

Requested by kmc in IRC.

```
11:36 < kmc> while you're mach-ing about, can you modify build-cef to
accept --release like build does?
```

Use an enum to set set_timeout_or_interval's is_interval field. Fixes #4059

remove comments now that we have more descriptive names

Use atom! in place of Atom::from_slice where necessary

Break out of loop if can't send data

Fixes #4046

Update mach to latest changes from mozilla-central

Updates the way mach mixes unrecognized arguments and predefined
arguments (see [mozilla bug
1076649](https://bugzilla.mozilla.org/show_bug.cgi?id=1076649) for
details on this change).

Remove allow_all_args from mach commands

Implement HTML{Anchor,Area,Link}Element.relList.

https://github.com/servo/servo/issues/3994

mozilla-central modules for debugger detection

Borrows two python modules from mozilla-central to give mach the ability
to detect and pass arguments to a system's preferred debugger.

Links to borrowed files:
http://hg.mozilla.org/mozilla-central/file/c9cfa9b91dea/testing/mozbase/mozinfo/mozinfo/mozinfo.py
http://hg.mozilla.org/mozilla-central/file/c9cfa9b91dea/testing/mozbase/mozdebug/mozdebug/mozdebug.py

Adds --debug and --debugger flags to ./mach run

Panic if DOMTokenList#contains is called for an unparsed attribute.

Previously, if the attribute was not parsed into a token list, and the
tokens() method returned None, DOMTokenList#contains would silently return
false. This issue was encountered in
<https://github.com/servo/servo/pull/4076> and took quite some time to
figure out.

Lets `./mach test` infer testsuite from file

Usage Example:
```
$ ./mach test tests/wpt/web-platform-tests/dom/interfaces.html
 0:00.27 LOG: MainThread INFO Using 1 client processes
 ...
```

Note that while there is no functionality for `test-ref` to accept
individual files, `./mach test tests/ref` will still trigger `test-ref`.

Implement a basic WebSocket interface.

Fix deprecation in selector matching test

The 'find' function was changed to 'get'. Changed to reflect this
warning given when running the tests.

Add .cargo/config to .gitignore, move content to ports/android

This allows using .cargo/config at the root of the repository
for local path override, without risk of accidentally committing it.

fixes #4110, can input text without 'value' attribute present

Fix layout on google search results.

Fixes #3962

Bad HTTP responses now have a 0 status code instead of 200 OK.

ports/cef: Use the CEF translator tool to generate the full set of CEF
bindings.

This replaces hand-implemented CEF bindings with proper Rust wrappers
automatically generated from the C++ headers. This means that, whenever
CEF's C++ headers change, we can easily generate both the appropriate C
API and the appropriate Rust API. It eliminates much of the hand-written
unsafe code within the CEF port, because the CEF translator tool now
knows how to generate Rust smart pointer wrappers for each class that
corrently perform reference counting.

Additionally, this commit adds utility macros (located in `macros.rs`)
that make it easier to correctly expose Rust objects as CEF objects.
They handle the marshaling of objects between Rust and CEF properly.
The net result of this is that you can write mostly-natural-looking Rust
in the CEF port and interact with it with a natural-looking C++ API on
the embedding side.

This setup relies on the branch of CEF located here:

    https://github.com/pcwalton/chromium-embedded-framework

To regenerate, follow the instructions in `ports/cef/README.md`. For
convenience, and because I don't anticipate the API to change much, I
have vendored in all of the appropriate interfaces.

Fixes for Linux.

Add back API hashes

Add mostly-correct (albeit leaky) string marshaling

Update to get the reference counting correct

Implemented hidden, removed corresponding passed tests

Remove default value for params in mach doc #4134

Make callers of `${Derived}::${base}()` use casts instead.

Remove UIEvent.event().

Remove HTMLElement.element().

Remove Node.eventtarget().

Remove Element.node().

Fixes #4131

A slight refactor.

Shared Sniffer Task

- Added TargetedLoadResponse and ResponseSenders
- LoadData constructor contains the next consumer which means
  SnifferManager doesn't need the next consumer to start
- New SnifferTask is created at new resource_task creation
- Update Unit Tests

Don't abort the sniffer task whenever an error occurs. Also, switch to blocking recv_opt vs. non-blocking try_recv.

Fix the panic on runnig with --devtools due to a change in how type_id gets resolved since the last rustc upgrade.

style::properties::longhand shouldn’t be public.

Remove dead code

Adds explicit --name argument to test-ref

In addition, `./mach test` will now take advantage of this when
inferring test suites from test files.

Fixes #4123

Fixes #4145

layout: Stop having text alignment stomp on layerization flags.

Fixes the blank spaces showing up in Wikipedia.

[gfx/style] Implement border-radius.

This patch is a first stab at implementing border-radius. It looks fine as long as
the border isn't an ellipse (that might not even parse yet), and the border-widths
around a border-radius are the same.

Here's a cool screenshot!

![](https://www.dropbox.com/s/gdtmgjrlnf82gzz/Screenshot%202014-11-12%2018.03.29.png?dl=0)

r? @pcwalton @SimonSapin

Updated reflect_dom_object to be passed by value

ports/cef: Replace calls to malloc with calloc.

infer_test_by_dir cleanup

No actual change in functionality here. I was just unhappy with the way
test-ref was singled out before, and realized an obvious fix.

Verify that reftest passes valid servo args

Fixes #4101

Fixed test filter

Fix error in layout trace viewer

Move the servo crate from root to components/servo

Warn when Cargo is run directly. Fix #3957.

Make build system more independent of current directory.

Have `./mach cargo` not change to `components/servo`.

`ports/android/glut` relies on it executing on the current directory.

Fix up android/glut port to find its servo dependency.

Don’t try to run unit tests for the servo crate.

There are none, but the contenttest program fails with:

```
task '<main>' panicked at 'Required option 'source-dir' missing.', ../../tests/contenttest.rs:48
```

More target path fixup.

Implemented modifyAttribute message handling

sent acknowledgement of attribute change

M1453: Support for separated client & writing

M1453: addressed review comments r/3291

M1453: Included unaddressed review comment r/3291

M1453: addressd review comments r/3291