Commit graph

21295 commits

Author SHA1 Message Date
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
Chris Double
82c52a7a1c Implement view-source protocol. Fixes #4181.
This follows the recommendation from issue #4181. A handler
for 'view-source' delegates to the HTTP loader. In that
loader I check for view-source, adjust the URL to be the
URL to be viewed and modify the Content-Type header to be
text/plain.

This doesn't actually result in the source being
viewed as rendering text/plain is not yet implemented.
2015-03-17 11:06:44 +13: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
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
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
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
Manish Goregaokar
9119bb2041 Add --no-ssl flag for bypassing SSL checking 2015-03-14 19:17:07 +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
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
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
Guro Bokum
8de3c01fe4 RootCollection doesn't check if its SmallVec has spilled #5037 2015-03-13 15:43:11 +07:00
bors-servo
8e811229ba auto merge of #4417 : pcwalton/servo/border-spacing, r=larsbergstrom
Table layout code has been refactored to push the spacing down to
rowgroups and rows; this will aid the implementation of
`border-collapse` as well.

r? @SimonSapin
2015-03-12 13:03:49 -06:00
Patrick Walton
586c12ccc4 layout: Implement border-spacing per CSS 2.1 § 17.6.1 and the legacy
`cellspacing` attribute per HTML5 § 14.3.9.

Table layout code has been refactored to push the spacing down to
rowgroups and rows; this will aid the implementation of
`border-collapse` as well.

This commit also fixes two nasty issues in table layout:

* In fixed layout, extra space would not be divided among columns that
  had auto width but had nonzero minimum width.

* In automatic layout, extra space would be distributed to constrained
  columns as well even if unconstrained columns with percentage equal to
  zero were present.
2015-03-12 12:00:40 -07:00
bors-servo
6593cf9ec4 auto merge of #5194 : hirschenberger/servo/gif_alpha_background, r=larsbergstrom
This is GIF specific. It's also done when the image is PNG but PNG is
handled separately with the PNG crate, whereas GIFs are handled by the
stb-image crate and the distinction between alpha and non-alpha-supporting
images was missing.
2015-03-12 05:51:48 -06:00
bors-servo
d7e9b8b96b auto merge of #5202 : doublec/servo/rename_unwrap, r=Ms2ger
Fix for issue #2108. That issue mentions an `unwrap_object` which doesn't seem to exist so I renamed `unwrap` to `native_from_reflector` and `unwrap_jsmanaged` to `native_from_reflector_jsmanaged`. The latter is a bit unweildy - maybe a shorter name might be better?
2015-03-12 01:51:49 -06:00
Chris Double
2af19b2675 Fix #2108 by renaming unwrap functions to native_from_reflector
As noted by @bholley. "unwrap" is confusing because we are
both stripping off wrappers *and* getting a native from a
reflector. Changing the "unwrap" usage to "native_from_reflector"
for clarity.

This renames 'unwrap' to 'native_from_reflector' and
'unwrap_jsmanaged' to 'native_from_reflector_jsmanaged'.
2015-03-12 19:15:12 +13:00
Ms2ger
8223f695fb Remove plugin attributes from extern crates. 2015-03-11 23:45:16 +01:00
Md. Enzam Hossain
6d13361c64 Remove redundant force_relayout calls. 2015-03-11 19:42:59 +00:00
hirschenberger
ab4b34d423 Fix #5176 by premultiplying the alpha channel to the color channels
This is GIF specific. It's also done when the image is PNG but PNG is
handled separately with the PNG crate, whereas GIFs are handled by the
stb-image crate and the distinction between alpha and non-alpha-supporting
images was missing.
2015-03-11 14:52:16 +01:00
Glenn Watson
e265b6b15b Remove unused subpage field from page 2015-03-11 14:13:30 +10:00
Glenn Watson
ec91fa2cfd Remove now unused id field for frame tree. 2015-03-11 13:41:55 +10:00
bors-servo
e581648c75 auto merge of #5189 : glennw/servo/page-url, r=larsbergstrom
This doesn't have any effect on functionality, it just simplifies a few upcoming changes with how FrameIds work.
2015-03-10 18:12:47 -06:00
Glenn Watson
3befc8ce0b Make change page url message consistent with other compositor messages.
This doesn't have any effect on functionality, it just simplifies a few upcoming changes with how FrameIds work.
2015-03-11 08:54:36 +10:00
Glenn Watson
33829c0254 Perform reflow if load events dirty any nodes.
This fixes some test failures that begin occurring when other events (such as resize) are fixed to only occur when needed.
2015-03-11 08:43:47 +10:00
bors-servo
e8f1a046c6 auto merge of #5185 : mmatyas/servo/canvas_arc, r=pcwalton
This patch enables the use of `arc()` on the canvas.
I couldn't add reftest this time, as it involves some antialiasing issues, and so the reference doesn't match.
2015-03-10 09:45:49 -06:00
bors-servo
d31e80f894 auto merge of #5182 : zslayton/servo/master, r=jdm
Opening this PR to invite feedback. 

Of the many `match` statement candidates for conversion to `if let`, several included `if` guards. Since `if let` doesn't support this syntax, I used nested if statements. If this is undesirable, say the word and I can revert those cases to `match`.
2015-03-10 07:51:50 -06:00
Zack Slayton
08ac0766ed Use new if let syntax wherever possible. Fixes #4153. 2015-03-10 09:18:55 -04:00
bors-servo
fd1bb49a65 auto merge of #5160 : pcwalton/servo/counters-redux, r=SimonSapin
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
2015-03-09 23:24:47 -06:00
Patrick Walton
f9cdd05d58 layout: Implement ordered lists, CSS counters, and quotes per CSS 2.1
§ 12.3-12.5.

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.
2015-03-09 17:13:45 -07:00
bors-servo
f4a362725f auto merge of #5183 : aweinstock314/servo/master, r=saneyuki
...via introduction of Worker::WorkerErrorHandler (Closes #5171).
2015-03-09 17:00:51 -06:00
Matt Brubeck
cabbbcc978 Keep track of the containing block writing mode.
This is necessary for correctly converting `relative_containing_block_size`
to physical coordinates.
2015-03-09 14:22:36 -07:00
Matt Brubeck
8221bfc3ef Layout fixes for RTL child flows in LTR parents
...and vice-versa.  This is not a complete fix for all mixed-direction layout
cases, but it fixes enough problems to make some simple test cases pass, like
tha attached reftest.

There are FIXME comments for many of the remaining issues.  In particular,
this does not yet handle RTL layout of fixed/absolute elements.
2015-03-09 14:21:26 -07:00