Commit graph

69 commits

Author SHA1 Message Date
Martin Robinson
8e14dc298f servo: Merge #4536 - Stall PaintTask exit until it can release all buffers (from mrobinson:pixmap); r=pcwalton
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.

Source-Repo: https://github.com/servo/servo
Source-Revision: a31acffb0405b2c38b39c39c6d552f2ba79b6326
2015-01-02 20:21:47 -07:00
Ms2ger
3d0a04c20a servo: Merge #4526 - Move away from Root::deref (from servo:deref-1); r=Manishearth
This is a start towards fixing #3868. Not all callers have been fixed yet, so the `Deref` implementation remains for now.

Source-Repo: https://github.com/servo/servo
Source-Revision: 141b5d038fad3c0c44a6f1b309b8ca9edea54580
2015-01-02 09:22:51 -07:00
Ms2ger
3f568d3a37 servo: Merge #4528 - Stop using ptr.is_not_null() in script (from Ms2ger:is_not_null); r=larsbergstrom
This method is deprecated in rust master; removing its users in advance will
make a future rust upgrade smoother.

Source-Repo: https://github.com/servo/servo
Source-Revision: a61417e2a87004e30e2a02f2e6ae58629062e3d5
2015-01-01 14:42:44 -07:00
Manish Goregaokar
3615fd0c7e servo: Merge #4488 - Add a lint for usages of to_string() (from servo:into_string-lint); r=jdm
This is a rebase of #4366.

Source-Repo: https://github.com/servo/servo
Source-Revision: 0da57abec6014f8a6edde9781598053deab996c7
2014-12-31 05:00:52 -07:00
Josh Matthews
3df7a65e2a servo: Merge #4057 - Enable refcounting arbitrary DOM types (from jdm:refcountdom); r=Ms2ger
This replaces the specialized TrustedXHRAddress and TrustedWorkerAddress code that was used for the same purpose. A non-zero refcount pins the given DOM object's reflector and prevents it from being GCed even when there are no other outstanding references visible to SpiderMonkey. This will enable us to implement asynchronous operations that refer to particular DOM objects (such as "queue a task to fire a simple event named load at the iframe element" from the spec) safely and conveniently, and paves the way for things like asynchronous network responses.

Some concerns about the resulting size of XHR progress messages have been expressed, but I believe optimizations to reduce that can be implemented in subsequent PRs.

r? @Ms2ger - note in particular the changes to the worker lifetime code. I couldn't figure out how to achieve an identical lifetime to the previous addref/release pairing, and I also was having trouble figuring out why the existing setup was safe. The new implementation now holds the main script task Worker object alive via the TrustedWorkerAddress field in the dedicated worker global scope, which is a significant difference.

Source-Repo: https://github.com/servo/servo
Source-Revision: 2c259f477c41331e66beab8bda865971982a1ff4
2014-12-29 11:57:45 -07:00
Ms2ger
2bf5b63539 servo: Merge #4501 - Simplify some code in handle_click_event (from Ms2ger:script_task); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 1539051896c5c4093e7a7bb5a52939b31bb0d7da
2014-12-29 09:54:45 -07:00
Manish Goregaokar
905ce805f5 servo: Merge #4485 - Replace most to_string calls by into_string calls (from servo:into_string); r=Ms2ger
`str::to_string()` goes through a `Formatter`, `str::into_string()` is a direct copy and is apparently 5× faster.

This is a rebase of the boring and bitrot-prone parts of #4366.

Source-Repo: https://github.com/servo/servo
Source-Revision: 9857ea26cb9ee262654bee97322dbbf373486bff
2014-12-27 06:51:44 -07:00
thiagopnts
8ca1b964dd servo: Merge #4474 - Replace XHR events for generic ones in ScriptTask (from thiagopnts:generic-msgs); r=jdm
This refs #3735. As discussed in the issue, I did it cloning when I couldn't dereference an attribute. The trait method should be on `&self` for object-safety reasons.

Source-Repo: https://github.com/servo/servo
Source-Revision: 194ce20969f04bf2d077ebed106fc1bfb5eb32ee
2014-12-24 03:45:44 -07:00
Matt McCoy
c01796101f servo: Merge #4453 - This will fix #4259. Dispatch mousemove when the mouse is moved (from mattnenterprise:dispatch-mousemove); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: fb59e7929998facb292ed606255a665c74cf9416
2014-12-23 23:15:47 -07:00
Ms2ger
97e31c7099 servo: Merge #4444 - Simplify some code in ScriptTask::load (from Ms2ger:load-simplify); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: b9edc2243a98f2d71408430fe68716bdbbd015d7
2014-12-19 08:09:48 -07:00
Ms2ger
1d72ea6a6b servo: Merge #4443 - Make the argument to dispatch_event_with_target non-optional (from Ms2ger:dispatch_event_with_target); r=Manishearth
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.

Source-Repo: https://github.com/servo/servo
Source-Revision: 11b27361c9f6af08ed78fa1a3fe58732b4c69cd4
2014-12-19 04:33:46 -07:00
Tetsuharu OHZEKI
8bc1f6376b servo: Merge #4434 - script: Remove glob imports added in #4405 (from saneyuki:glob_script); r=jdm
#4406

Source-Repo: https://github.com/servo/servo
Source-Revision: 803e5ef7904f2843d8e44184f9154af079eea9fa
2014-12-18 15:57:48 -07:00
Patrick Walton
be135fd302 servo: Merge #4403 - script: Fix double borrow error when going back. Closes #4402 (from pcwalton:back-borrow); r=jdm
I have verified that back and forward work once again.

Sorry about this one. r? @jdm

Source-Repo: https://github.com/servo/servo
Source-Revision: 8626be6ab00d966cb4abed2a2fef691d286df32d
2014-12-18 14:39:50 -07:00
Patrick Walton
cda269baf7 servo: Merge #4358 - compositing: Implement cursor per CSS3-UI § 8.1.1 in the CEF/Mac port (from pcwalton:cursor); r=mbrubeck
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
2014-12-18 00:24:49 -07:00
Glenn Watson
b185394a0f servo: Merge #4405 - Update rustc to revision 3dcd2157403163789aaf21a9ab3c4d30a7c6494d (from servo:rustup_20141124); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: fbf42c951b2f53d91e2f32f8035484a07ea83493
2014-12-17 18:45:49 -07:00
thiagopnts
02dc0e1e27 servo: Merge #4374 - Add auxiliary method to EventTargetHelpers for events without target (from thiagopnts:dispatch-event); r=Ms2ger
servo/pull/4369 with the right commit.

Source-Repo: https://github.com/servo/servo
Source-Revision: 746b262ff4e23db11586f74ef1a03e98cb12bb52
2014-12-16 06:36:47 -07:00
Patrick Walton
ea62373791 servo: Merge #4385 - script: Fix double-borrow error (from pcwalton:page-double-borrow); r=jdm
This was my fault. It comes up on almost any page after scrolling a bit.

r? @jdm

Source-Repo: https://github.com/servo/servo
Source-Revision: fb5c1bef6fe48b7bd2c1dd9e73069d5b00b20aad
2014-12-15 20:54:44 -07:00
Patrick Walton
ee36da2b11 servo: Merge #3844 - script: Improve dirty propagation and fix script-layout synchronization (from pcwalton:script-layout-synchronization); r=jdm
This fixes race conditions whereby layout and script could be running
simultaneously.

r? @jdm
cc @cgaebel

Source-Repo: https://github.com/servo/servo
Source-Revision: 5f2684d2f81046abd7548fb22d996d1e506a104a
2014-12-15 15:31:21 -07:00
Gilbert Röhrbein
340fb4dc53 servo: Merge #4356 - refactor script_task.rs fn handle_msgs (from servo:msgs); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: ea39b878ac619e68907e27c486660dd4bc3fc618
2014-12-12 17:30:47 -07:00
Greg Weng
bc50bc529d servo: Merge #4355 - Return real page titles and URLs for devtools tab choices (from servo:devtools-title); r=metajack
Fixes #4167.

Source-Repo: https://github.com/servo/servo
Source-Revision: 6362d060e16aa006877b2920c5de2fad7db3dace
2014-12-12 17:03:45 -07:00
Nathan E. Egge
1d5fe80591 servo: Merge #4347 - Sending key events through script task before processing them in the com (from negge:backspace4); r=jdm
...positor.

Fixes #4163

Source-Repo: https://github.com/servo/servo
Source-Revision: 4b8c9128597a7598ef76a4bebe6d81fb2ff9aa1a
2014-12-12 10:36:55 -07:00
Patrick Walton
8b6e74fa78 servo: Merge #4193 - ports/cef: Implement accelerated compositing for the CEF port (from pcwalton:cef-redux); r=pcwalton,metajack
@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
2014-12-10 09:40:03 -07:00
Ms2ger
b3f23959cf servo: Merge #4305 - Cleanup ScriptTask::load some more (from Ms2ger:script_task); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 3a70a9fa6bdbfda405ff7b027a09596a2a2747f5
2014-12-09 12:16:07 -07:00
Ms2ger
6383ed9edb servo: Merge #4293 - Cleanup ScriptTask::load some more (from Ms2ger:script_task); r=Manishearth
Source-Repo: https://github.com/servo/servo
Source-Revision: 02955d39ccf7fcd8a76279e49c44715b62730c6d
2014-12-09 04:57:56 -07:00
Ms2ger
8222c91fa8 servo: Merge #4268 - Cleanup ScriptTask::load and parse_html (from Ms2ger:script_task); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 3f60bcf2c2de856da9f7b86cc8793e75c99d46d9
2014-12-08 09:43:11 -07:00
Ms2ger
a35fe37703 servo: Merge #4266 - Create the root frame before evaluating the javascript URL (from Ms2ger:js-document-crash); r=Manishearth
This prevents a crash when the script in the javascript URL accesses the
document attribute.

Source-Repo: https://github.com/servo/servo
Source-Revision: ea907c1311051506bc3e7ef6fef8857968c71387
2014-12-08 02:49:06 -07:00
Manish Goregaokar
895099501f servo: Merge #4002 - Implement framework for element activation (fixes #3999) (from Manishearth:activation); r=jdm
Still need to impl `Activatable` on all activatable elements. I'll probably push those changes to this PR, however they can be made separately as well.

Source-Repo: https://github.com/servo/servo
Source-Revision: 19c69b1625dda46d3c5501292e7e2d0328e400b4
2014-12-06 03:55:04 -07:00
Shanil Puri
cc7082126f servo: Merge #4214 - Implemeneted ModifyAttribute handler to update DOM elements (from jdm:modifyattr); r=jdm
Rebased from #4197.

Source-Repo: https://github.com/servo/servo
Source-Revision: 0b5cc3f4aaf62478b097cba5b2676e7ca99b02a3
2014-12-03 20:28:00 -07:00
nkdalmia
b5db4cdee6 servo: Merge #4157 - M1450: Implement Window.sessionStorage: Storage Task, Storage Methods (excluding Storage event, QuotaExceededError) (from nkdalmia:master); r=jdm
Changes
* Implemented Storage Task
* Used Storage Task in methods of storage.rs
* Updated webstorage test expectations

Pending Changes:
* Handle Storage Event
* Throw QuotaExceededError in case of failure for method setItem
* localStorage as alias of sessionStorage

Source-Repo: https://github.com/servo/servo
Source-Revision: 0d2251510fb9ad8f4974c99cadafbd1a9a81e30f
2014-12-03 16:54:57 -07:00
Michael Booth
8b0b657cb0 servo: Merge #4156 - Updated reflect_dom_object to be passed by value fixes #4122 (from Michael03:master); r=Ms2ger
This fixes issue #4122

Source-Repo: https://github.com/servo/servo
Source-Revision: ed45aa9efd6cf238a83fcae6a772886df61771f7
2014-12-02 05:24:49 -07:00
Mukilan Thiyagarajan
f925eec2be servo: Merge #3941 - Allow passing arguments to setTimeout/setInterval callbacks (from mukilan:timeout-arguments); r=Ms2ger
Source-Repo: https://github.com/servo/servo
Source-Revision: 43b452f3b874c4bf0392ceaec27a0e40f18b5e34
2014-11-15 11:09:32 -07:00
Manish Goregaokar
c37a7ffe4c servo: Merge #3973 - Don't overwrite redirected URL in script_task (fixes #3970) (from Manishearth:301-fix); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 10cd7728ff0daa7d2e5e13d002d008b5049f389b
2014-11-13 17:45:29 -07:00
Josh Matthews
4d3016e023 servo: Merge #3585 - Implement single-line text input (from jdm:input); r=gw
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
2014-11-13 10:57:33 -07:00
Glenn Watson
22c4035692 servo: Merge #3948 - Rust upgrade to rustc hash b03a2755193cd756583bcf5831cf4545d75ecb8a (from servo:rustup-20141105_2); r=Manishearth
Source-Repo: https://github.com/servo/servo
Source-Revision: c5e1b0d32e17fad29799023c85e2e73ac89c3af7
2014-11-12 20:48:31 -07:00
Martin Robinson
8cec6a7fbe servo: Merge #3809 - Clip display list based on frame viewport (from mrobinson:display-list-optimization); r=pcwalton
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.

Source-Repo: https://github.com/servo/servo
Source-Revision: 26045d7fcbab8851fbefe2851cd904203f8fd8dd
2014-11-12 17:36:32 -07:00
Shing Lyu
e9f57feaf4 servo: Merge #3915 - Extract the script task handlers code into separate methods (from shinglyu:bug3811); r=jdm
This is a fix for bug #3811 , thank you.

Source-Repo: https://github.com/servo/servo
Source-Revision: fc62243f81ba4c5a3585b2a80c859fad16083557
2014-11-09 20:24:31 -07:00
Patrick Walton
35e2f9710a servo: Merge #3761 - Invert control flow, fix resizing, and improve checkerboarding significantly (from pcwalton:smooth-scrolling); r=larsbergstrom
r? @glennw @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: ffae1104989c0177b483d591a482e5cd877183c2
2014-11-04 18:12:32 -07:00
Mukilan Thiyagarajan
bd6bcb98f1 servo: Merge #3732 - Fix race condition in XHR and handle other abort/open scenarios (from mukilan:xhr-issue-3630); r=jdm
This fixes issue #3630
A short summary of the changes:
* Use atomic generation id to cancel inflight requests
* Handles nested calls to abort, open, send inside handlers
* Adds XHRReleaseMsg to delay freeing XHR object till all
  inflight events are processed
* Handles both timeout, errors and abort/open in a symmetric fashion
  i.e All inflight events will be cancelled for timeouts, aborts,
    errors and on calling open.
* Change the ErroredMsg enum to be more symmetric with the returned
  Error enum

I noticed a few possible changes that could make the code for fetch task simpler:
* We can remove the additional timer task and let the fetch task manage
  its own timer (or maybe the resource loader can do this.)
* The CORS related steps could also be moved into the resource loader.
* Right now upload events are not support. This requires some support
  from resource loader.

Source-Repo: https://github.com/servo/servo
Source-Revision: 4e24e4d8e92528a5a6f7bb571c6557b5bca11ea9
2014-11-04 05:06:34 -07:00
Martin Robinson
1628fc65f1 servo: Merge #3857 - Have ContentBox(es)Queries consult the flow tree (from mrobinson:queries); r=pcwalton
Instead of looking at the display tree, have ContentBox(es)Query consult
the flow tree. This allow optimizing away parts of the display tree
later. To do this we need to be more careful about how we send reflow
requests, only querying the flow tree when possible.

Fixes #3790.

Source-Repo: https://github.com/servo/servo
Source-Revision: c9089c45c4b7d40419233b48a192d85a8ad71c99
2014-11-03 12:03:37 -07:00
Matt Brubeck
eb3242aca9 servo: Merge #3721 - Synchronous script loading during HTML parsing (from mbrubeck:script-sync); r=Ms2ger
Fixes #3356.  This makes script elements fetch their source synchronously and execute immediately by default.  It also lays some groundwork for future deferred or async script loading.

(Depends on #3716 to fix a content test failure caused by running script during parsing.)

Source-Repo: https://github.com/servo/servo
Source-Revision: 272ae0cc1beb83c839d5fbd746e67f4ae746db99
2014-10-29 15:51:41 -06:00
Keegan McAllister
972824c647 servo: Merge #3797 - Debug-only dynamic checks for layout and GC use of DOMRefCell (from kmcallister:domrefcell); r=jdm
r? @mbrubeck, @jdm

Alternative to #3770 and #3716.

Source-Repo: https://github.com/servo/servo
Source-Revision: 0c12f630e6352fc2aa00b638d014b2505f68af1f
2014-10-24 18:09:27 -06:00
Ray Clanan
527a514878 servo: Merge #3773 - Rename untraceable!() to no_jsmanaged_fields!(). References issue #3671 (from rclanan:rename-untraceable); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 041ab13fcec726bbacc09b3be07e706091625dda
2014-10-23 19:48:28 -06:00
Josh Matthews
9d02aff643 servo: Merge #3759 - Implement Document.readyState. Prevent iframes from notifying the compos (from jdm:readystate); r=Ms2ger
...itor after the initial parse. Fixes #1720. Fixes #3738.

r? @Ms2ger or @Manishearth

Source-Repo: https://github.com/servo/servo
Source-Revision: 2df236376a443d8d031ee7a72379f336f2cd8cc4
2014-10-23 09:18:37 -06:00
Tetsuharu OHZEKI
a1364ae852 servo: Merge #3737 - Use DOMRefCell in script crate (from saneyuki:cell); r=jdm
#3050

Altough LayoutDataRef is touched from layout, we don't use DOMRefCell in it becasuse
it's expected to manipulate in layout task.

Source-Repo: https://github.com/servo/servo
Source-Revision: f5e8df9dac9330f2818906c471ed05f5975828c6
2014-10-22 07:54:36 -06:00
Keegan McAllister
fb40898c55 servo: Merge #3670 - Use html5ever for HTML parsing (from kmcallister:h5e-take2); r=jdm
r? @Ms2ger, @jdm

The parser is now a JS-managed object and we use hooks in html5ever to trace its internal state.  This should be memory-safe even if arbitrary JavaScript can run during a parse.  Please let me know if you think of a reason it wouldn't be!

I think the likely outcome of a garbage collection during parsing is a dynamic `RefCell` borrow failure, but I'm going to look into that after this lands.  It should be safe to trace the parser while it's mutably borrowed, as long as it's not shared between threads, so we can probably switch to `UnsafeCell`.

Source-Repo: https://github.com/servo/servo
Source-Revision: 8d3b107568ab965b518b8003b702a5db993fa7d0

--HG--
rename : servo/tests/content/test_document_characterSet_long.html => servo/tests/content/test_document_characterSet_long.html.disabled
rename : servo/tests/content/test_document_characterSet_short.html => servo/tests/content/test_document_characterSet_short.html.disabled
2014-10-16 14:15:21 -06:00
Mukilan Thiyagarajan
1a8adf4234 servo: Merge #3662 - Implement timers (setTimeout/setInterval) for workers (from mukilan:worker_timer); r=jdm
Closes issue #3236

Source-Repo: https://github.com/servo/servo
Source-Revision: f94228d9f95327aac987103806b6ed452c96f16a
2014-10-15 20:48:22 -06:00
Tim Taubert
cad59b0ab2 servo: Merge #3651 - Make Event::new take enumerated values instead of booleans (fixes #3643) (from ttaubert:issue/3643-event-new-enums); r=Manishearth
r? @jdm

Source-Repo: https://github.com/servo/servo
Source-Revision: 293e06fd7cf3c79e377fc1ce619ee790c46f9858
2014-10-13 19:12:38 -06:00
Manish Goregaokar
f32cdad867 servo: Merge #3642 - Implement extremely basic form submission (from Manishearth:form-submit); r=jdm
This is missing a lot of parts, so it doesn't really make any real-world form submission work yet. It provides a skeleton on which the missing bits can be filled in.

What works:
 - `<input>` elements except for `type=file`
 - GET/POST methods
 - URLencoded `enctype`s (default)
 - Submission via `<form>.submit()` only

Stuff that needs to be done for most simple real-world cases to work:
 - [Working text input](https://github.com/servo/servo/pull/3585)
 - Click handlers for `<submit>`
 - Possibly `<textarea>` support
 - Support for the other two enctypes (#3649)

Todo:
 - Correctly implement [planned navigation](https://html.spec.whatwg.org/multipage/forms.html#planned-navigation) using `TrustedFormAddress`  (#3648)
 - [Correctly implement form owners.](https://github.com/servo/servo/issues/3553) Requires html5ever and some discussion of the spec.
 - `<input type=file>` support
 - Image submit support
 - Browsing contexts/targets
 - Support for non-`<input>` controls
 - Validation (?)
 - Dirname (?)

Source-Repo: https://github.com/servo/servo
Source-Revision: 9dfd5e7fcd2011a411b219e8c45aadc0ecb270bd
2014-10-11 07:45:39 -06:00
Manish Goregaokar
3c4a81d56f servo: Merge #3626 - Allow passing a method, request body, and headers to the pipeline in LoadUrlMsg (from Manishearth:form-prep); r=jdm
Framework for form submission

Source-Repo: https://github.com/servo/servo
Source-Revision: 2f9808e1306a6468dea0de8657a4fa5868e1a126
2014-10-09 16:00:34 -06:00
Clark Gaebel
e1fa32f008 servo: Merge #3590 - Incremental Style Recalc (from cgaebel:slow-incremental-reflow-rebase); r=pcwalton
This patch puts in the initial framework for incremental reflow. Nodes' styles
are no longer recalculated unless the node has changed.

I've been hacking on the general problem of incremental reflow for the past
couple weeks, and I've yet to get a full implementation that actually passes all
the reftests + wikipedia + cnn. Therefore, I'm going to try to land the different
parts of it one by one.

This patch only does incremental style recalc, without incremental flow
construction, inline-size bubbling, reflow, or display lists. Those will be coming
in that order as I finish them.

At least with this strategy, I can land a working version of incremental reflow,
even if not yet complete.

r? @pcwalton

Source-Repo: https://github.com/servo/servo
Source-Revision: 85b277655f07db1cb99c4d3dee93804735ed0470
2014-10-09 11:21:32 -06:00