Commit Graph

485 Commits

Author SHA1 Message Date
Bill McCloskey
c2ac89de85 Bug 1163735 - Ensure that we don't hand out a destroyed TabChild from WorkerPrivate::InterfaceRequestor (r=khuey)
If the actor we hand out has been __delete__d, then we'll crash when
Necko tries to send the actor to the parent to open connections.
2015-08-19 09:40:55 -07:00
Andrea Marchesini
5a264a19df Bug 1187470 - ServiceWorker scripts should not be treated parser warnings as errors, r=bkelly
--HG--
rename : dom/workers/test/serviceworkers/strict_mode_error.js => dom/workers/test/serviceworkers/strict_mode_warning.js
rename : dom/workers/test/serviceworkers/test_strict_mode_error.html => dom/workers/test/serviceworkers/test_strict_mode_warning.html
2015-08-13 10:52:15 +01:00
Aryeh Gregor
5aeef0231d Bug 874842 - Return Event instead of nsIDOMEvent 2015-08-12 14:39:31 +03:00
Kyle Huey
76e3009ab8 Bug 1179909: Refactor stable state handling. r=smaug
This is motivated by three separate but related problems:

1. Our concept of recursion depth is broken for things that run from AfterProcessNextEvent observers (e.g. Promises). We decrement the recursionDepth counter before firing observers, so a Promise callback running at the lowest event loop depth has a recursion depth of 0 (whereas a regular nsIRunnable would be 1). This is a problem because it's impossible to distinguish a Promise running after a sync XHR's onreadystatechange handler from a top-level event (since the former runs with depth 2 - 1 = 1, and the latter runs with just 1).

2. The nsIThreadObserver mechanism that is used by a lot of code to run "after" the current event is a poor fit for anything that runs script. First, the order the observers fire in is the order they were added, not anything fixed by spec. Additionally, running script can cause the event loop to spin, which is a big source of pain here (bholley has some nasty bug caused by this).

3. We run Promises from different points in the code for workers and main thread. The latter runs from XPConnect's nsIThreadObserver callbacks, while the former runs from a hardcoded call to run Promises in the worker event loop. What workers do is particularly problematic because it means we can't get the right recursion depth no matter what we do to nsThread.

The solve this, this patch does the following:

1. Consolidate some handling of microtasks and all handling of stable state from appshell and WorkerPrivate into CycleCollectedJSRuntime.
2. Make the recursionDepth counter only available to CycleCollectedJSRuntime (and its consumers) and remove it from the nsIThreadInternal and nsIThreadObserver APIs.
3. Adjust the recursionDepth counter so that microtasks run with the recursionDepth of the task they are associated with.
4. Introduce the concept of metastable state to replace appshell's RunBeforeNextEvent. Metastable state is reached after every microtask or task is completed. This provides the semantics that bent and I want for IndexedDB, where transactions autocommit at the end of a microtask and do not "spill" from one microtask into a subsequent microtask. This differs from appshell's RunBeforeNextEvent in two ways:
a) It fires between microtasks, which was the motivation for starting this.
b) It no longer ensures that we're at the same event loop depth in the native event queue. bent decided we don't care about this.
5. Reorder stable state to happen after microtasks such as Promises, per HTML. Right now we call the regular thread observers, including appshell, before the main thread observer (XPConnect), so stable state tasks happen before microtasks.
2015-08-11 06:10:46 -07:00
Andrea Marchesini
f7220514cc Bug 1186307 - part 2 - Compilation failures fixed, CLOSED TREE 2015-08-10 17:28:43 +01:00
Andrea Marchesini
b4c30ecaf9 Bug 1186307 - part 1 - Unify the StructuredCloneCallbacks in WorkerPrivate.cpp, r=smaug 2015-08-10 16:33:23 +01:00
Nikhil Marathe
25e263af21 Bug 1144660 - client.focus() adds window interaction checks and directly uses DOMServiceWorkerFocusClient to focus window. r=ehsan,dao
client.focus() now directly uses the DOMServiceWorkerFocusClient event. The
platform popup checking is not available on service workers. Instead each
worker maintains a counter of if it is allowed to interact with windows. This
counter is currently only incremented by the notificationclick event and
dropped after the event has been dispatched.

Since acquiring a client is an async operation most service workers will
perform in notificationclick, an additional extension is granted after the event
during which the service worker may focus a client. This extension is only granted
if the script invokes NotificationEvent.waitUntil() at which point the timer begins.
The extension is terminated when the Promise passed to waitUntil() is fulfilled, or
the timer expires, whichever comes first.

--HG--
extra : commitid : 5wavKTRZWcy
extra : rebase_source : fc8ab4ef6c9bf384b5525b0bc979b3cedc4e1d6c
2015-07-23 08:30:27 -07:00
Wes Kocher
5e90ccec17 Backed out 3 changesets (bug 1191495, bug 1153499, bug 1144660) for mochitest-push crashes
Backed out changeset 8917e7323399 (bug 1191495)
Backed out changeset 13ed6f60d3f9 (bug 1144660)
Backed out changeset 95bd6642e4b1 (bug 1153499)
2015-08-05 15:18:05 -07:00
Nikhil Marathe
9c77fa0bcd Bug 1144660 - client.focus() adds window interaction checks and directly uses DOMServiceWorkerFocusClient to focus window. r=ehsan,dao
client.focus() now directly uses the DOMServiceWorkerFocusClient event. The
platform popup checking is not available on service workers. Instead each
worker maintains a counter of if it is allowed to interact with windows. This
counter is currently only incremented by the notificationclick event and
dropped after the event has been dispatched.

Since acquiring a client is an async operation most service workers will
perform in notificationclick, an additional extension is granted after the event
during which the service worker may focus a client. This extension is only granted
if the script invokes NotificationEvent.waitUntil() at which point the timer begins.
The extension is terminated when the Promise passed to waitUntil() is fulfilled, or
the timer expires, whichever comes first.

--HG--
extra : commitid : 5DUAOg4j41K
extra : rebase_source : 775d36e41c3d3b62e5189b032220fa2469ac237d
extra : source : 8300859f8e9751ca663f96fae3375dfda8b2ad13
2015-07-23 08:30:27 -07:00
Kaku Kuo
9f9f5a83d7 Bug 1044102 - Part 3 - Support StructuredClone. r=baku
--HG--
extra : rebase_source : 714950441e109436a9d70a24a8ab4efb269024c5
2015-07-30 20:50:00 +02:00
Kyle Huey
512e1a6d95 Bug 1188141: Make Worker error events not bubble. r=baku 2015-07-28 15:59:55 -07:00
Ben Kelly
55e3066722 Bug 1181887 Fall back to network if ServiceWorker script fails to load. r=ehsan r=khuey 2015-07-15 12:21:40 -07:00
Randell Jesup
c87c478f4f Bug 1155059: Patch 1&2 - Convert Dispatch() and friends to already_AddRefed<> r=froydnj
Modify Dispatch IDL and code to deal with MSVC issues with overloaded templates r=froydnj
2015-07-09 23:21:46 -04:00
Andrea Marchesini
0bb0e9c317 Bug 1176034 - Implement JSAutoStructuredCloneBuffer::clear(with callbacks and closure), r=sfink 2015-07-06 12:22:08 +01:00
Juan Gomez
258ad59e3f Bug 1171931 - Refactor duplicated code using XRE_IsParent/ContentProcess. r=froydnj 2015-07-03 18:29:00 -07:00
Hiroyuki Ikezoe
47d5b2db66 Bug 1179982 - Fix all compile errors in dom/workers on non-unified build. r=mrbkap 2015-07-02 14:54:00 +02:00
Ehsan Akhgari
a7e0f3e102 Bug 1148935 - Correctly reflect worker and sharedworker RequestContext values; r=smaug 2015-06-30 18:52:42 -04:00
Ryan VanderMeulen
c4367148d1 Backed out changeset 07bf31cca660 (bug 1148935) for Werror bustage.
CLOSED TREE
2015-06-30 15:53:43 -04:00
Ehsan Akhgari
d560d3dcf3 Bug 1148935 - Correctly reflect worker and sharedworker RequestContext values; r=smaug 2015-06-30 15:30:08 -04:00
Ben Kelly
adbd55f907 Bug 1175138 P3 Expose the devtools SW testing flag on workers. r=ehsan 2015-06-27 23:19:24 -04:00
Andrea Marchesini
43fb37cc29 Bug 1177621 - SharedWorkers should not be shared between a private and a non-private documents, r=nsm 2015-06-26 11:18:18 -07:00
Ryan VanderMeulen
5f5c327690 Backed out changeset 8b4e4083639e (bug 1171931) for B2G debug emulator bustage. 2015-06-25 19:48:42 -04:00
Juan Gomez
702a59d135 Bug 1171931 - Refactor duplicated code using XRE_IsParent/ContentProcess. r=froydnj
--HG--
extra : rebase_source : 2ecbe6c1dd8a7ad8dc529b53349ad431cf1116c9
2015-06-24 14:11:00 -04:00
Andrea Marchesini
6713cdfbc5 Bug 1176034 - MessagePort should force a close() if the structured clone algorithm fails, r=bent 2015-06-23 15:50:00 -07:00
Carsten "Tomcat" Book
fa9ac90dde Backed out changeset 4f4ceae7be1a (bug 1176034) for frequent bustages in Windows 8 x64 debug 2015-06-24 10:11:07 +02:00
Andrea Marchesini
676a802cc7 Bug 1176034 - MessagePort should force a close() if the structured clone algorithm fails, r=bent 2015-06-23 15:50:00 -07:00
Ben Turner
a0940b9a26 Bug 1171578 - Avoid crashing if indexedDB is used at a particular point in the worker shutdown sequence, r=baku. 2015-06-22 12:13:38 -07:00
Valentin Gosu
6dd869a927 Bug 1093611 - Stage 2 - Make hash getters not do percent decoding if dom.url.getters_decode_hash is false r=smaug 2015-06-15 15:55:02 +03:00
Andrea Marchesini
8372e7d29d Bug 911972 - MessagePort and MessageChannel in workers, r=smaug, r=bent
--HG--
rename : dom/base/MessageChannel.cpp => dom/messagechannel/MessageChannel.cpp
rename : dom/base/MessageChannel.h => dom/messagechannel/MessageChannel.h
rename : dom/base/MessagePort.cpp => dom/messagechannel/MessagePort.cpp
rename : dom/base/MessagePort.h => dom/messagechannel/MessagePort.h
rename : dom/base/MessagePortList.cpp => dom/messagechannel/MessagePortList.cpp
rename : dom/base/MessagePortList.h => dom/messagechannel/MessagePortList.h
rename : dom/base/test/iframe_messageChannel_chrome.html => dom/messagechannel/tests/iframe_messageChannel_chrome.html
rename : dom/base/test/iframe_messageChannel_cloning.html => dom/messagechannel/tests/iframe_messageChannel_cloning.html
rename : dom/base/test/iframe_messageChannel_pingpong.html => dom/messagechannel/tests/iframe_messageChannel_pingpong.html
rename : dom/base/test/iframe_messageChannel_post.html => dom/messagechannel/tests/iframe_messageChannel_post.html
rename : dom/base/test/test_messageChannel.html => dom/messagechannel/tests/test_messageChannel.html
rename : dom/base/test/test_messageChannel.xul => dom/messagechannel/tests/test_messageChannel.xul
rename : dom/base/test/test_messageChannel_cloning.html => dom/messagechannel/tests/test_messageChannel_cloning.html
rename : dom/base/test/test_messageChannel_pingpong.html => dom/messagechannel/tests/test_messageChannel_pingpong.html
rename : dom/base/test/test_messageChannel_post.html => dom/messagechannel/tests/test_messageChannel_post.html
rename : dom/base/test/test_messageChannel_pref.html => dom/messagechannel/tests/test_messageChannel_pref.html
rename : dom/base/test/test_messageChannel_start.html => dom/messagechannel/tests/test_messageChannel_start.html
rename : dom/base/test/test_messageChannel_transferable.html => dom/messagechannel/tests/test_messageChannel_transferable.html
rename : dom/base/test/test_messageChannel_unshipped.html => dom/messagechannel/tests/test_messageChannel_unshipped.html
2015-06-17 11:44:27 +01:00
Ryan VanderMeulen
83cd9ed67a Backed out changesets a08167680328 and b008f158e91f (bug 1093611) for talos svgr timeouts. 2015-06-16 15:37:37 -04:00
Valentin Gosu
c852d75d5c Bug 1093611 - Stage 2 - Make hash getters not do percent decoding if dom.url.getters_decode_hash is false r=smaug 2015-06-16 19:46:31 +03:00
Ryan VanderMeulen
c366b2c3f3 Backed out changeset 1d67d747b3eb (bug 911972) for frequent linux64 debug e10s test_post_message_advanced.html timeouts.
CLOSED TREE

--HG--
rename : dom/messagechannel/MessageChannel.cpp => dom/base/MessageChannel.cpp
rename : dom/messagechannel/MessageChannel.h => dom/base/MessageChannel.h
rename : dom/messagechannel/MessagePort.cpp => dom/base/MessagePort.cpp
rename : dom/messagechannel/MessagePort.h => dom/base/MessagePort.h
rename : dom/messagechannel/MessagePortList.cpp => dom/base/MessagePortList.cpp
rename : dom/messagechannel/MessagePortList.h => dom/base/MessagePortList.h
rename : dom/messagechannel/tests/iframe_messageChannel_chrome.html => dom/base/test/iframe_messageChannel_chrome.html
rename : dom/messagechannel/tests/iframe_messageChannel_cloning.html => dom/base/test/iframe_messageChannel_cloning.html
rename : dom/messagechannel/tests/iframe_messageChannel_pingpong.html => dom/base/test/iframe_messageChannel_pingpong.html
rename : dom/messagechannel/tests/iframe_messageChannel_post.html => dom/base/test/iframe_messageChannel_post.html
rename : dom/messagechannel/tests/test_messageChannel.html => dom/base/test/test_messageChannel.html
rename : dom/messagechannel/tests/test_messageChannel.xul => dom/base/test/test_messageChannel.xul
rename : dom/messagechannel/tests/test_messageChannel_cloning.html => dom/base/test/test_messageChannel_cloning.html
rename : dom/messagechannel/tests/test_messageChannel_pingpong.html => dom/base/test/test_messageChannel_pingpong.html
rename : dom/messagechannel/tests/test_messageChannel_post.html => dom/base/test/test_messageChannel_post.html
rename : dom/messagechannel/tests/test_messageChannel_pref.html => dom/base/test/test_messageChannel_pref.html
rename : dom/messagechannel/tests/test_messageChannel_start.html => dom/base/test/test_messageChannel_start.html
rename : dom/messagechannel/tests/test_messageChannel_transferable.html => dom/base/test/test_messageChannel_transferable.html
rename : dom/messagechannel/tests/test_messageChannel_unshipped.html => dom/base/test/test_messageChannel_unshipped.html
2015-06-15 13:06:23 -04:00
Andrea Marchesini
9b1ac68ebb Bug 911972 - MessagePort and MessageChannel in workers, r=smaug, r=bent
--HG--
rename : dom/base/MessageChannel.cpp => dom/messagechannel/MessageChannel.cpp
rename : dom/base/MessageChannel.h => dom/messagechannel/MessageChannel.h
rename : dom/base/MessagePort.cpp => dom/messagechannel/MessagePort.cpp
rename : dom/base/MessagePort.h => dom/messagechannel/MessagePort.h
rename : dom/base/MessagePortList.cpp => dom/messagechannel/MessagePortList.cpp
rename : dom/base/MessagePortList.h => dom/messagechannel/MessagePortList.h
rename : dom/base/test/iframe_messageChannel_chrome.html => dom/messagechannel/tests/iframe_messageChannel_chrome.html
rename : dom/base/test/iframe_messageChannel_cloning.html => dom/messagechannel/tests/iframe_messageChannel_cloning.html
rename : dom/base/test/iframe_messageChannel_pingpong.html => dom/messagechannel/tests/iframe_messageChannel_pingpong.html
rename : dom/base/test/iframe_messageChannel_post.html => dom/messagechannel/tests/iframe_messageChannel_post.html
rename : dom/base/test/test_messageChannel.html => dom/messagechannel/tests/test_messageChannel.html
rename : dom/base/test/test_messageChannel.xul => dom/messagechannel/tests/test_messageChannel.xul
rename : dom/base/test/test_messageChannel_cloning.html => dom/messagechannel/tests/test_messageChannel_cloning.html
rename : dom/base/test/test_messageChannel_pingpong.html => dom/messagechannel/tests/test_messageChannel_pingpong.html
rename : dom/base/test/test_messageChannel_post.html => dom/messagechannel/tests/test_messageChannel_post.html
rename : dom/base/test/test_messageChannel_pref.html => dom/messagechannel/tests/test_messageChannel_pref.html
rename : dom/base/test/test_messageChannel_start.html => dom/messagechannel/tests/test_messageChannel_start.html
rename : dom/base/test/test_messageChannel_transferable.html => dom/messagechannel/tests/test_messageChannel_transferable.html
rename : dom/base/test/test_messageChannel_unshipped.html => dom/messagechannel/tests/test_messageChannel_unshipped.html
2015-06-15 14:08:25 +01:00
Ben Turner
496e2b6920 Bug 1173139 - Reorder global creation on workers, r=khuey. 2015-06-10 14:12:55 -07:00
Ben Turner
215b1e0292 Bug 1173002 - Set worker system principal flag correctly when created from chrome, r=bz, a=kwierso. 2015-06-09 14:34:00 -07:00
Eddy Bruël
9fa7476bb3 Bug 1168853 - Implement WorkerDebugger.isInitialized;r=khuey 2015-06-08 09:08:20 +02:00
Andrea Marchesini
a71e717b67 Bug 1162088 - patch 1 - ServiceWorkerManager should use OriginAttributes from the principal as scopeKey, r=nsm, r=bholley 2015-06-03 09:43:43 +01:00
Eddy Bruël
05c931e961 Bug 1164564 - WorkerDebugger.initialize should not return failure when called more than once;r=khuey 2015-06-02 16:52:17 +02:00
Ehsan Akhgari
4017e4028f Bug 1168208 - Refactor the existing logic for syncing the security info between Response and channel objects into a new helper class; r=nsm,jdm,bkelly
--HG--
rename : dom/fetch/InternalResponse.cpp => dom/fetch/ChannelInfo.cpp
rename : dom/fetch/Response.h => dom/fetch/ChannelInfo.h
2015-05-27 14:22:53 -04:00
Carsten "Tomcat" Book
1f0ef48e79 Backed out changeset ae9c77fa58d1 (bug 1168208) for bustage on a CLOSED TREE 2015-05-27 14:50:43 +02:00
Ehsan Akhgari
c66a858d3a Bug 1168208 - Refactor the existing logic for syncing the security info between Response and channel objects into a new helper class; r=nsm,jdm,bkelly
--HG--
rename : dom/fetch/InternalResponse.cpp => dom/fetch/ChannelInfo.cpp
rename : dom/fetch/Response.h => dom/fetch/ChannelInfo.h
2015-05-27 08:25:03 -04:00
Andrea Marchesini
6a2a4a1aa9 Bug 1155761 - User Timing API in Workers, r=ehsan 2015-05-25 17:53:07 +01:00
Cervantes Yu
55152ad9d9 Backout change 39e167bbd14c, a80140872ea5, adae9be2294d and b71ccef9c674 (bug 970307). 2015-05-19 14:31:25 +08:00
Cervantes Yu
836d8fd8d0 Backout change 3285d8bef13f (bug 1113429) due to backout of bug 970307. 2015-05-19 11:26:26 +08:00
Terrence Cole
161a4c26ba Bug 1164602 - Replace js::NullPtr and JS::NullPtr with nullptr_t; r=sfink 2015-05-13 14:07:34 -07:00
Catalin Badea
8b1fbc7805 Bug 1130684 - Implement Service Worker clients.claim. r=nsm,ehsan
--HG--
extra : rebase_source : ea1da8f6dfd8d31936c0ae495ec262581c9e5775
2015-05-14 12:41:42 -07:00
Andrea Marchesini
f4538bb921 Bug 1163387 - Rename FileImpl to BlobImpl, r=ehsan
--HG--
rename : dom/base/MultipartFileImpl.cpp => dom/base/MultipartBlobImpl.cpp
rename : dom/base/MultipartFileImpl.h => dom/base/MultipartBlobImpl.h
2015-05-12 13:11:03 +01:00
Andrea Marchesini
368a198972 Bug 1159401 - Split Blob and File classes, r=bz 2015-05-12 13:09:51 +01:00
Wes Kocher
983fcabeef Backed out 2 changesets (bug 1159401) for b2g build bustage
Backed out changeset adfee1efb1e1 (bug 1159401)
Backed out changeset 70c63c8546e3 (bug 1159401)
2015-05-11 14:54:02 -07:00
Wes Kocher
6b003ab737 Backed out changeset 56e4c68dc3da (bug 1163387) for build bustage CLOSED TREE
--HG--
rename : dom/base/MultipartBlobImpl.cpp => dom/base/MultipartFileImpl.cpp
rename : dom/base/MultipartBlobImpl.h => dom/base/MultipartFileImpl.h
2015-05-11 13:17:58 -07:00