This patch adds support for setting the line cap and join. However, it seems there's a problem on the azure-side, as the line cap setting doesn't work. Changing either the default values or using the new function has no effect. Line join works fine though.
Source-Repo: https://github.com/servo/servo
Source-Revision: fe81ce942a36b08ece8ef6d58de72624a961eeaa
All of the commits by brson have been reviewed. Just the android fixups and Rustup one (which also cleans up some of the duplication due to a complete rewrite of code that had been moved in the original PR).
Source-Repo: https://github.com/servo/servo
Source-Revision: 72a0fb683871365e86febbefb72be9fb136381af
This goes hand in hand with servo/glutin#18 to get our scrolling performance back on Mac.
r? @glennw
Source-Repo: https://github.com/servo/servo
Source-Revision: f017a4459c4d1067dec74ce1bf00cc6ce0612859
Switched from opts.urls from being of type Vec to type String and changing the name to `url` as well. Changed the other files that are using opts.urls accordingly.
Source-Repo: https://github.com/servo/servo
Source-Revision: df57af1fc41814389ab246f9a199ab868b1ecd74
Fixes#5460. This supports for simple focusable elements that are their own DOM anchors, like text `input` fields.
Requires servo/rust-selectors#20. r? @SimonSapin
Source-Repo: https://github.com/servo/servo
Source-Revision: b63fb0c0a7e9cd9208d66319c910750aaaac844c
This impl made it possible to put raw pointers in ConstellationControlMsg and
send them across threads without considering the consequences.
This required making SmallVec1<T> Send if T is Send.
Source-Repo: https://github.com/servo/servo
Source-Revision: 74f8c0eeb714fb7ca7964b36f1b82849e8a345ee
There are several optimizations here:
* We make font families atoms, to allow for quicker comparisons.
* We precalculate an FNV hash of the relevant fields of the font style
structure.
* When obtaining a platform font group, we first check pointer equality
for the font style. If there's no match, we go to the FNV hash. Only
if both caches miss do we construct and cache a font group. Note that
individual fonts are *also* cached; thus there are two layers of
caching here.
15% improvement in total layout thread time for Facebook Timeline.
r? @glennw (since you last worked on `get_layout_font_group_for_style()` IIRC)
Source-Repo: https://github.com/servo/servo
Source-Revision: ba0d28e0023fce2003d64b9caf97fcdbeb7cdb28
Transition events are not yet supported, and the only animatable
properties are `top`, `right`, `bottom`, and `left`. However, all other
features of transitions are supported. There are no automated tests at
present because I'm not sure how best to test it, but three manual tests
are included.
r? @glennw
Source-Repo: https://github.com/servo/servo
Source-Revision: ebdf1d494b6c986e6dfcb7d8fd3f0ffa126523ed
I decided to use the old Netscape broken image link icon (later we may
replace the image asset for something more trendier).
Source-Repo: https://github.com/servo/servo
Source-Revision: 1e282d55d7e36f0e488a395b90e961e9200c3817
I accidentally left it in after removing the calls to stdout/stderr in
d926b8342b492cfa442a72b4d4da01e7e23d9cba.
Source-Repo: https://github.com/servo/servo
Source-Revision: 5ead929fea34ca6d05d6bc4f0a07eeab4dfae207
For the majority of these cases, `as_slice` can be removed due to
`Deref`. In particular, `Deref` for:
* `String` -> `str`
* `Atom` -> `str`
The latter of those two requires, a bump of the locked `string-cache`
library
Source-Repo: https://github.com/servo/servo
Source-Revision: 0fd41847a39be387c03bd5d8b6f2aec2b1bb6f66
- Most of util::memory has been moved into profile::mem, though the
`SizeOf` trait and related things remain in util::memory. The
`SystemMemoryReporter` code is now in a submodule
profile::mem::system_reporter.
- util::time has been moved entirely into profile::time.
Source-Repo: https://github.com/servo/servo
Source-Revision: d1268ec9c6633684270015e7b2619181aeb47b8b
--HG--
rename : servo/components/util/time.rs => servo/components/profile/time.rs
This fixes a bunch of warnings in the gonk code. Not all of them, but we're only left with three now.
Source-Repo: https://github.com/servo/servo
Source-Revision: 8906d485703a5c975bcd6709c8ad9c25a51e1e8f
PIE is required on lollipop. PIE has been supported since jellybean.
Source-Repo: https://github.com/servo/servo
Source-Revision: 4dc5287b4eac2debe3ac5fc69037c8a5dc25c6dc
These changeset implements the beginnings of fine-grained measurement of Servo's data structures.
@pcwalton, @jdm: are you likely reviewers for this?
Source-Repo: https://github.com/servo/servo
Source-Revision: f093620922621e1877393b03968ed0ce767fdf12
Only simple alphabetic and numeric counter styles are supported. (This
is most of them though.)
Although this PR adds a sequential pass to layout, I verified that on
pages that contain a reasonable number of ordered lists (Reddit
`/r/rust`), the time spent in generated content resolution is dwarfed by
the time spent in the parallelizable parts of layout. So I don't expect
this to negatively affect our parallelism expect perhaps in pathological
cases.
Reconstructed from #5138 via raw diffing.
r? @SimonSapin
Source-Repo: https://github.com/servo/servo
Source-Revision: fd1bb49a65dd998c8ef9890a1576aaf62ddfdba1
This just requires updating glutin and cocoa to pick up some backported fixes.
Source-Repo: https://github.com/servo/servo
Source-Revision: da880af7428e3b76a9a5e7d3a5ff2c80a32d63f0
Adds hostsfile parsing support for:
* Tabs
* Comments (line and end of line)
* IPv4 address validation
* Basic IPv6 address validation
* End of line whitespaces
* Host name alias (multiple host names per address)
Fixes#5063
Source-Repo: https://github.com/servo/servo
Source-Revision: 1a73766db2442476190f3dcec321f452aa122055
Only simple alphabetic and numeric counter styles are supported. (This
is most of them though.)
Although this PR adds a sequential pass to layout, I verified that on
pages that contain a reasonable number of ordered lists (Reddit
`/r/rust`), the time spent in generated content resolution is dwarfed by
the time spent in the parallelizable parts of layout. So I don't expect
this to negatively affect our parallelism expect perhaps in pathological
cases.
Moved from #4544, because Critic.
Fixes#4544.
Source-Repo: https://github.com/servo/servo
Source-Revision: 5cd6316addc1acf145ed3220719387ef6ef08d2f
Rust still reports that the `*mut ANativeWindow` argument in `gnw_perform` in `gonk/src/window.rs` is ffi unsafe,
however `ANativeWindow` is marked as `#[repr(C)]` and should be okay.
Source-Repo: https://github.com/servo/servo
Source-Revision: 8bc4d07e50aa38371ef383b8f22ec9f7cacaae96
Here's example -m output after these changesets are applied:
```
_size (MiB)_: _category_
2798.61: vsize
136.80: resident
142.89: resident-according-to-smaps
97.84: - anonymous (rw-p)
23.98: - /home/njn/moz/servo/components/servo/target/servo (r-xp)
6.58: - [heap] (rw-p)
5.36: - other
3.51: - /usr/lib/x86_64-linux-gnu/dri/i965_dri.so (r-xp)
1.33: - /lib/x86_64-linux-gnu/libc-2.19.so (r-xp)
0.93: - /home/njn/moz/servo/components/servo/target/servo (r--p)
0.76: - /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20 (r-xp)
0.74: - /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0 (r-xp)
0.50: - /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (r-xp)
0.50: - /lib/x86_64-linux-gnu/libglib-2.0.so.0.4200.1 (r-xp)
0.45: - /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0 (r-xp)
0.43: - /lib/x86_64-linux-gnu/libm-2.19.so (r-xp)
30.85: system-heap-allocated
4.91: jemalloc-heap-allocated
6.11: jemalloc-heap-active
120.00: jemalloc-heap-mapped
```
The `resident-according-to-smaps` line is new, as are all the indented lines beneath it. This is useful particularly because it shows how much memory is taken up by code, e.g. the line ending in `servo (r-xp)` shows that the `servo` executable's code alone takes up 24 MiB of physical memory.
Source-Repo: https://github.com/servo/servo
Source-Revision: eb7e86ac4e21334e807a81ed01348a82ac7610b5
As it depends on the crates.io libc crate, the feature gate doesn't apply.
Source-Repo: https://github.com/servo/servo
Source-Revision: e0af48426980dd067dba00c98d6c2e9b8ebe1695
Ready for review.
Final link step on android fails, but we know how to fix it and will add it to this branch soon.
Source-Repo: https://github.com/servo/servo
Source-Revision: 2cc08f289ab909de44fa09a07b2c43b70ce379b9
--HG--
rename : servo/ports/gonk/build.rs => servo/support/rust-task_info/build.rs
Update to latest rust-layers and send back all buffers to their
original pipeline.
Source-Repo: https://github.com/servo/servo
Source-Revision: bc6882bdefc318402a46ede1494eb79339705c21
This does a rustup to our current rustc.
Gonk now compiles, but doesn't run. Trying to fix this, but thought I'd PR my progress.
This needs a couple of things to work:
- An override of time (7f105d4dd2), with `timegm(struct tm *tm)` from `src/time_helpers.c` commented out
- An override of openssl (1a60bccb6a), with [this patch](http://hastebin.com/onovacofuj.diff)
- An override of gl-rs (230e6c9ed6), with submodules updated. This is because the lockfile is messed up due to conflicting github and registry deps. While I could fix this by forking things, this goes away next rustup anyway (the deps all move to a common source), so I just worked around it with a clone.
- Env vars similar to [this](http://hastebin.com/hawadubolu.bash)
- After the last failed link step, run `../../mach rustc` with the same args (extracted from `../../mach cargo -v`), along with `-C link-args="$LDFLAGS -lGLESv2 -L $GONKDIR/backup-flame/system/lib/"`
- (Steps for creating a B2G build [here](https://www.irccloud.com/pastebin/VG2lHBVP))
r? @larsbergstrom
(No need for a merge, just a check on the unsafe stuff would be fine)
Source-Repo: https://github.com/servo/servo
Source-Revision: 11edfdc9353362161b0ff9a654d61dccd1d438f0
r? @jdm
The in-progress Rust upgrade will go on top of this.
Source-Repo: https://github.com/servo/servo
Source-Revision: f5cb1690bfa20c1eccffe2f94a2155d2321e69fa
For now, this can only be tested by replacing `resources/certs` with `resources/cert-google-only` (an Equifax certificate -- will work for Google but not Wikipedia or Stack Exchange)
I can replace the error page with something less frivolous, but since we already have the "I tried" star (and this stuff is the job of the chrome anyway), I thought this would be more fun to have.
This also contains a partial hyper upgrade.
Fixes#4119
Source-Repo: https://github.com/servo/servo
Source-Revision: 2010fbf0ddabdaf3bcb52c5f2075e7d994fc63ec
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.
Source-Repo: https://github.com/servo/servo
Source-Revision: 27e0f16407629422b5e047e067d458142372c97e
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.
Source-Repo: https://github.com/servo/servo
Source-Revision: 1b496d80dec4f202e0f318ee60ac156ad74256ff
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.
Source-Repo: https://github.com/servo/servo
Source-Revision: efae66bccb116ddf41857436718ef1556243a3f2
Rebased version of #4399 that addresses points 2 & 5 from https://critic.hoppipolla.co.uk/showcomment?chain=9848 . Introduction of an AutoJSAPI equivalent and setting the error reporter to null will come later, as they are much larger changes and we're currently blocking any further updates to rust-mozjs that are unrelated to error reporting.
Source-Repo: https://github.com/servo/servo
Source-Revision: 4bb5822f9189b7c04101ba2fdfc99535ecd4bc27
With the latest rustup, we can use std::io::File since as_raw_fd() is available.
Source-Repo: https://github.com/servo/servo
Source-Revision: d9a26ad595ee94361ce20064355fd77061eda625
Content of the canvas is drawn, tests/html/test_canvas.html now works.
Source-Repo: https://github.com/servo/servo
Source-Revision: da400a7a453eacf6f3089cc07e5dc61f385a0909
`blur` and `drop-shadow` are not yet supported, because the
`text-shadow` PR makes some fundamental changes to blur rendering that
are needed first.
r? @mbrubeck
Source-Repo: https://github.com/servo/servo
Source-Revision: ffdbf29db28ba334e8baf8d35141b5e8ad289459
My local android build is a bit wonky so I'm not sure if all warnings have been fixed, though. I'll try to poke around and fix it.
Source-Repo: https://github.com/servo/servo
Source-Revision: d9751c0fbb13d04b27c42a9ba5065b5af26f1286
This was making `box-shadow` not show up in many cases, in particular,
but the effects were not limited to that.
r? @glennw
Source-Repo: https://github.com/servo/servo
Source-Revision: 499d17f564d699e5e290e8a3859f64e7536827a7
In particular, this contains changes to qualify enums where rust will require it, and to stop using some features that will be removed.
Source-Repo: https://github.com/servo/servo
Source-Revision: ba8cf6b0e6145265f9472d4855f078d8b5943fe7
This just updates rust-openssl and hyper to use cherry-picked commits that fix this particular issue. I think it's worth it because the experience of trying Servo for the first time right now is pretty terrible.
Source-Repo: https://github.com/servo/servo
Source-Revision: 070008b4c43337b3ef4ef78b09f73e64b4d0be23
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.
Source-Repo: https://github.com/servo/servo
Source-Revision: b83b4932dac9c0f4fbd6ad6a5b5a0232362c504b
Only the recommended, comma-separated syntax is supported.
r? @SimonSapin
Source-Repo: https://github.com/servo/servo
Source-Revision: a80d88897d176630c79f929e8b1fd661b2e1a17c
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).
If you test this in the wild you will probably hit #4357 until that PR lands.
Source-Repo: https://github.com/servo/servo
Source-Revision: e2267e0a0749e27046ee8a26ba514cc6865e0345
This patch provides some of the groundwork for column spans greater than
1. It implements the column-span CSS property 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.
The parsing for the legacy bgcolor and border attributes is
implemented according to the WHATWG HTML specification.
Additionally, this patch cleans up some miscellaneous formatting issues,
refactors layout/css somewhat to eliminate needless levels of
indirection, and cleans up the handling of table rowgroups.
New Hacker News screenshot: http://i.imgur.com/hnl2a7E.png
Source-Repo: https://github.com/servo/servo
Source-Revision: 8e31e5f98747e4b42dafcc4b076fac46aeb09310
This makes the gonk port build/work again after the recent CEF port update.
Source-Repo: https://github.com/servo/servo
Source-Revision: 5b53d5a163fb8b32e109d5dea4eddddf64caad08
@glennw, is it possible to rebase your stuff on top of this? Sorry for the mess.
r? @metajack
Source-Repo: https://github.com/servo/servo
Source-Revision: ba06d50e3a611d1c27c6c9aa0b21441282911c3f
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.
Source-Repo: https://github.com/servo/servo
Source-Revision: 2741fd2e139b9cb8e9f14857877f567ecae3bced
--HG--
rename : servo/ports/android/openssl.sh => servo/support/android/openssl.sh
#4275
* This changeset rename "render"/"rendering" to "paint"/"painting" under `components/`.
* This does not rename words which are used as general browser's working.
* So this doesn't change `reftest.rs`.
Source-Repo: https://github.com/servo/servo
Source-Revision: 0b486b12109ab765ecee4cbcc684e5d99e8ad5ad
--HG--
rename : servo/components/canvas/canvas_render_task.rs => servo/components/canvas/canvas_paint_task.rs
rename : servo/components/gfx/render_context.rs => servo/components/gfx/paint_context.rs
rename : servo/components/gfx/render_task.rs => servo/components/gfx/paint_task.rs
This is the Hyper pull request, plus the set up for OpenSSL on Android to make it merge.
Sean's commits have been reviewed in #4065 (My Android changes were reviewed by Glenn)
Source-Repo: https://github.com/servo/servo
Source-Revision: 6bd9bf979bcfa96ea14e666b59eab01a6d6c373e
This adds the infrastructure necessary to support stacking contexts that
are not containing blocks for absolutely-positioned elements. Our
infrastructure did not support that before. This minor revamp actually
ended up simplifying the logic around display list building and
stacking-relative position computation for absolutely-positioned flows,
which was nice.
This will need this PR: https://github.com/servo/rust-azure/pull/112 I have not updated the Cargo.lock file yet because I want the merge commit.
r? @glennw
f? @SimonSapin
Source-Repo: https://github.com/servo/servo
Source-Revision: 68c90e27970808bddcb8c8a4e782bd4405e67a5c
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.
r? @zmike or @larsbergstrom
Source-Repo: https://github.com/servo/servo
Source-Revision: 02c2f53ccd8b75ff0b87edfce4f2f9315a6417bd
This allows using `.cargo/config` at the root of the repository for local path override, without risk of accidentally committing it.
However I don’t have the environment to test the Android build. Would this break it?
Source-Repo: https://github.com/servo/servo
Source-Revision: b5d6864de1000d6d54c2d5ebfd90ea9f6a596c54
--HG--
rename : servo/.cargo/config => servo/ports/android/.cargo/config
rust-layers will now avoid sending empty buffer requests which can
cause failures when Servo tries to create empty platform surfaces.
Fixes#4060.
Source-Repo: https://github.com/servo/servo
Source-Revision: b33c31b5748ddfe4f1aec5f0813b47dc74adf604
This simplifies some upcoming changes to how event handling works.
Source-Repo: https://github.com/servo/servo
Source-Revision: 32d765fb049318f2ff22f39fdeb9fa258ec8a174
Default build uses glfw, but glutin can be enabled via:
./mach cargo build --no-default-features --features=glutin
Remaining work:
* Mac
* Android
* hi-dpi
* nested event loop
This PR also enables true headless (without X) rendering on Linux by specifying the rendering API as Mesa.
Source-Repo: https://github.com/servo/servo
Source-Revision: f5c6146de0b3bfda97edff6662033f4a981df3f6
implements a string map which is 100% identical to CEF
r+ @larsbergstrom @jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 99fc4ab634738136daa993443042a4cbf68c510c
adds a missing string api function and renames an existing string_list function
r+ @larsbergstrom @jdm ?
Source-Repo: https://github.com/servo/servo
Source-Revision: 1773198e8d4c5ebe82b4780ebf0828833aa61846
This attempts to implement a bunch of the DOM Level 3 Events spec by implementing the KeyboardEvent interface, the document focus context, and dispatching keyup/keydown/keypress events appropriately. There's also some support for multiline text input that's untested.
Source-Repo: https://github.com/servo/servo
Source-Revision: 2ffa845cf463b14b19322d477a77ffd20efa89a9