Commit graph

9090 commits

Author SHA1 Message Date
bors-servo
f093620922 auto merge of #5193 : nnethercote/servo/measure-display-list, r=jdm
These changeset implements the beginnings of fine-grained measurement of Servo's data structures.

@pcwalton, @jdm: are you likely reviewers for this?
2015-03-16 21:33:50 -06:00
bors-servo
990a965ddf auto merge of #5244 : mattnenterprise/servo/page_load_thread_name, r=jdm 2015-03-16 20:36:49 -06:00
Matt McCoy
f083583132 Fixes #5215 Serializing the thread name for the page load task to make it a simple url 2015-03-16 22:08:37 -04:00
Nicholas Nethercote
fa9ca206ef Remove the fake memory profiler thread.
Currently if you don't specify the '-m' option, a fake do-nothing memory
profiler thread gets created instead of the real one. It ignores all
events except for `Exit`. And the timer thread doesn't get created so no
`Print` events are sent.

This changeset instead always creates the real thread. If you specify
'-m' the *timer* thread is still absent and it won't print anything.
However, the memory profiler thread will respond to register/unregister
events, which is good, because if there's a bug in those (e.g.
double-registration of a particular name) it'll show up in invocations
that lack '-m'.
2015-03-16 18:12:28 -07:00
Nicholas Nethercote
ece2711185 Add memory reporting infrastructure and use it to measure the display list.
This changeset implements the beginnings of fine-grained measurement of
Servo's data structures.

- It adds a new `SizeOf` trait, which is used to measure the memory used
  by heap data structures, and implements it for some std types: Box,
  String, Option, Arc, Vec, and DList.

- It adds a new `MemoryReporter` trait which is used to report memory
  measurements from other threads to the memory profiler. Reporters are
  registered and unregistered with the memory profiler, and the memory
  profiler makes measurement requests of reporters when necessary.

- It plumbs a MemoryProfilerChan through to the layout task so it can
  register a memory reporter.

- It implements the `SizeOf` trait for `DisplayList` and associated
  types, and adds a memory reporter that uses it.

The display list hits 14.77 MiB when viewing
tests/html/perf-rainbow.html, and 2.51 MiB when viewing the Guardians of
the Galaxy Wikipedia page from servo-static-suite. Example output:

  0.29: display-list::http://www.reddit.com/
  0.00: display-list::http://static.adzerk.net/reddit/ads.html?sr=-reddit.com,loggedout&bust2#http://www.reddit.com
  0.00: display-list::http://www.reddit.com/static/createadframe.html

There are a number of FIXME comments indicating sub-optimal things. This
is a big enough change for now that doing them as follow-ups seems best.
2015-03-16 18:12:26 -07:00
Nicholas Nethercote
5865d5f717 Rename LayoutTask::handle_script_request.
Because it handles requests from tasks other than the Script Task.
2015-03-16 18:05:36 -07:00
bors-servo
1092ca1019 auto merge of #5205 : glennw/servo/iframe-nav, r=jdm
The history is now recorded per frame, but needs to be exposed in a followup PR.
2015-03-16 17:54:50 -06:00
Glenn Watson
939a89568e First part of refactoring constellation to support iframe navigation.
The history is now recorded per frame, but needs to be exposed in a followup PR.

Also fixes a race condition that occurs loading iframes under heavy CPU load.

This ensures that iframes never do a reflow / layout until they have a valid
window size set from their parent frame.
2015-03-17 09:35:41 +10:00
bors-servo
0888a3a16d auto merge of #5226 : glennw/servo/fix-compositor-layers, r=larsbergstrom 2015-03-16 16:57:50 -06:00
Glenn Watson
591b10aa58 Fix for race condition causing reftests to hang under load.
If the root layer has a zero size rectangle, it will never be
painted, so assume the pipeline is idle in that case.

Re-enable two reftests that were disabled due to this issue.
2015-03-17 08:48:45 +10:00
bors-servo
b8e87ea020 auto merge of #5217 : zslayton/servo/master, r=jdm
@jdm This initial version has a few outstanding issues that I wanted to invite input on. Specifically:

1. I had some difficulty finding a home for the `StorageType` enum. Structs defined outside of the `script` module don't seem to be able to use the `#[jstraceable]` annotation and the `net` module (where `StorageTask` lives) doesn't have access to `script`. Per Simon Sapin's suggestion, I worked around this temporarily by creating a `TraceableStorageType` stand-in struct that was traceable and which could be translated into a regular `StorageType` when being sent to the `StorageTask`. Unsure of the best way to resolve this hack. Thoughts?

2. Apart from the `Storage` constructor used in `Window::SessionStorage` and the new `Window::LocalStorage`, there's also a method called `Storage::Constructor`. I'm unclear on what (if anything) will actually invoke this, so I'm not sure which variant of `StorageType` to use here. I've temporarily created an `Unknown` variant of `StorageType` as a placeholder.

3. I discovered that the web platform tests directory's localStorage tests. Many of them now pass despite the configured expectation that they fail. However, several do not pass. Is there a good way for me to add debug logging or otherwise get a sense of which assertion failed / what went wrong?

Thanks for your continued help!
2015-03-16 14:48:51 -06:00
Zack Slayton
323baf92db localStorage shim, fixes #5195 2015-03-16 13:33:55 -07:00
bors-servo
f5ddbcf19f auto merge of #5228 : metajack/servo/memory-debug, r=pcwalton
Cycles were being created in the flow tree since absolutely positioned
descendants had pointers to their containing blocks. This adds
WeakFlowRef (based on Weak<T>) and makes these backpointers weak
references. This also harmonizes our custom Arc<T>, FlowRef, to be
consistent with the upstream implementation.

Fixes #4915.
2015-03-16 13:16:03 -06:00
Jack Moffitt
237150fa49 Fix memory leak in flow tree by adding weak refs.
Cycles were being created in the flow tree since absolutely positioned
descendants had pointers to their containing blocks. This adds
WeakFlowRef (based on Weak<T>) and makes these backpointers weak
references. This also harmonizes our custom Arc<T>, FlowRef, to be
consistent with the upstream implementation.

Fixes #4915.
2015-03-16 12:53:16 -06:00
bors-servo
cf39c672b6 auto merge of #5210 : GreenRecycleBin/servo/#4968, r=jdm
`./mach test tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/security_location_0.sub.htm` is still failing with the same message as reported in #3219.
2015-03-16 11:42:59 -06:00
bors-servo
ccc6faa147 auto merge of #5169 : mschroeder/servo/issue-4981, r=saneyuki
Fixes #4981
2015-03-16 11:03:58 -06:00
Martin Schröder
5c8b617715 Refactored optional argument "last_modified" for Document
Fixes #4981
2015-03-16 17:53:19 +01:00
bors-servo
660ea05ddb auto merge of #5173 : cyndis/servo/media-attr, r=jdm
Don't add a stylesheet if the current device does not match the media
query specified in a link or style tag.

Cheers,
cyndis
2015-03-16 09:54:56 -06:00
Mikko Perttunen
51ceaed0d0 Add reftest for media queries in link and style tags 2015-03-16 17:19:28 +02:00
Mikko Perttunen
e7a06cd241 Consider media attribute on link and style tags
Don't add a stylesheet if the current device does not match the media
query specified in a link or style tag.
2015-03-16 17:19:26 +02:00
bors-servo
1e1c97adb3 auto merge of #5220 : dmarcos/servo/issue4595, r=jdm 2015-03-16 06:57:53 -06:00
Diego Marcos
cd84ab2ddc Fixes the problem with canvas not being rendered when displayed as block level elements 2015-03-15 22:10:06 -07:00
Glenn Watson
7ca3c8d6e3 Restore part of PR #5125 that was accidentally removed in PR #5160. 2015-03-16 15:02:26 +10:00
bors-servo
4f32596cc6 auto merge of #5222 : cojennin/servo/mac-font-face, r=metajack
CGDataProviderCreateWithData just wraps the underlying buffer. The
underlying buffer needs to be kept around until the data provider is
freed. Adding the buffer to the FontTemplateData struct ensures it
sticks around.
2015-03-15 13:30:56 -06:00
bors-servo
7a29991382 auto merge of #5221 : andreastt/servo/ato/wpt-bootstrap, r=Manishearth
`./mach test-wpt` will fail in non-obvious ways unless all wpt submodules have recursively been checked out first.  This ensure they have been when running the command in a checkout of Servo that hasn't been bootstrapped yet.
2015-03-15 12:12:54 -06:00
Andreas Tolfsen
b951c2f963 tests: ensure bootstrapping for wpt 2015-03-15 18:03:40 +00:00
Connor Jennings
f298089f02 Retain buffer for CGDataProviderCreateWithData. Fixes #5084.
CGDataProviderCreateWithData just wraps the underlying buffer. The
underlying buffer needs to be kept around until the data provider is
freed. Adding the buffer to the FontTemplateData struct ensures it
sticks around.
2015-03-15 14:02:27 -04:00
bors-servo
f30faeadd0 auto merge of #5218 : wenderen/servo/enums-for-mouse-ui-event-constructors, r=Ms2ger
... cancelable arguments

for #4807
2015-03-15 03:18:49 -06:00
Rohan Prinja
5651ea06c6 make MouseEvent::new() and UIEvent::new() take enums for the bubbles and cancelable arguments 2015-03-15 10:05:36 +05:30
bors-servo
389338c28f auto merge of #5212 : Manishearth/servo/ssl-off, r=larsbergstrom
SSL is broken-ish (eg tw.yahoo.com, html.spec.whatwg.org don't work since we don't verify SAN properly), this flag can let devs bypass the protection for testing purposes.
2015-03-14 08:39:48 -06:00
bors-servo
2fb5eb8747 auto merge of #5211 : Ms2ger/servo/qitem, r=Manishearth
This is more future-proof.
2015-03-14 07:54:49 -06:00
Manish Goregaokar
9119bb2041 Add --no-ssl flag for bypassing SSL checking 2015-03-14 19:17:07 +05:30
bors-servo
a2ff1aae82 auto merge of #5213 : servo/servo/tidy-travis, r=Ms2ger 2015-03-14 06:54:48 -06:00
Manish Goregaokar
ca058508cd Only for master 2015-03-14 17:16:39 +05:30
Manish Goregaokar
62f7766acb Check tidy in Travis file 2015-03-14 17:09:43 +05:30
Ms2ger
347f395f4f Use qitem rather than QualityItem::new in XHR.
This is more future-proof.
2015-03-14 11:58:25 +01:00
Daniel Le
0aa727e5b6 Add HOST_FILE environment variable for test-wpt 2015-03-14 18:45:34 +08:00
bors-servo
19cd87aefc auto merge of #5208 : Ms2ger/servo/USVString, r=jdm 2015-03-13 14:30:49 -06:00
Ms2ger
2345f5461b Null-check the result of JS_GetStringCharsAndLength. 2015-03-13 21:27:58 +01:00
Ms2ger
0593d77b93 Use USVString for URLUtils and URLUtilsReadOnly. 2015-03-13 21:27:58 +01:00
Ms2ger
bbbdb98897 Implement USVString. 2015-03-13 21:27:58 +01:00
Ms2ger
4157a2b02b Update the WebIDL parser. 2015-03-13 21:27:58 +01:00
bors-servo
2382d71242 auto merge of #5164 : luniv/servo/viewport-length-units-reftests, r=jdm
Looking for some review, due to a couple of issues:
* The vmin/vmax tests fail due to exit status being 1 instead of 0. However, when I manually check them via `./mach run tests/ref/viewport_percentage_vmax_vmin{,a,b,c}.html`, the pages render correctly
* Resizing is incredibly flaky. I've checked (via logging), and the actual calculation of the computed length is correct for a given viewport size. However, the box dimensions end up all over the place. I've attached a screenshot to demonstrate (the box is supposed to cover the top-left quarter of the window).
![screen shot 2015-03-05 at 8 50 50 pm](https://cloud.githubusercontent.com/assets/1111588/6520012/5e5d7ac4-c379-11e4-8d56-f4c57616ac44.png)

Fixes #5165.
2015-03-13 10:42:49 -06:00
James Gilbertson
d80abce13e Reftests for viewport percentage length units 2015-03-13 10:27:27 -06:00
bors-servo
a50807051b auto merge of #5180 : luniv/servo/viewport-length-cached-values-invalidation, r=SimonSapin
When a viewport is resized, the computed values for a style containing viewport percentage length units become stale. However, there's no way for those styles to be invalidated after a resize. As a solution, this commit invalidates the computed values cache after a resize has occurred, which is probably over-kill.

A better solution would probably be to track under what conditions computed values remain valid, and invalidate them as indicated.
2015-03-13 09:36:50 -06:00
bors-servo
c05de08630 auto merge of #5206 : Ms2ger/servo/pre-rustup-codegen-cleanup, r=jdm,SimonSapin 2015-03-13 08:42:49 -06:00
Ms2ger
6eb9607bb9 Don't define empty FooMethods traits. 2015-03-13 14:54:45 +01:00
Ms2ger
b213a80f80 Remove unused lifetime parameters to dictionaries.
They were used for Root members, but those no longer use lifetimes.
2015-03-13 14:49:36 +01:00
bors-servo
5f439e7eaa auto merge of #5204 : ehegnes/servo/squelch_contenttest, r=jdm
This actually fixes 5159.
2015-03-12 20:48:47 -06:00
Eric Hegnes
6208eaa628 Further squelch warnings from contenttest.rs
This actually fixes 5159
2015-03-12 20:38:49 -04:00