Commit Graph

237 Commits

Author SHA1 Message Date
Andrea Marchesini
5855a7439f Bug 1226147 - WorkerPrivate->CreationTime() and CreationTimeStamp(), r=bz 2015-11-19 20:32:49 +00:00
Phil Ringnalda
568d5025ba Back out bf4205bd5198 (bug 1216175) for Android hangs in test_fetch_cors.html 2015-11-17 19:45:43 -08:00
Olli Pettay
8b883f3ed3 Bug 1216175, ensure we GC/CC often enough on workers, r=baku
--HG--
extra : rebase_source : 04d97418c729087cbad157a35c6f57fa2f2edc60
2015-11-18 00:03:01 +02:00
Ehsan Akhgari
c43ad45f05 Bug 1218119 - Simplify defining worker prefs; r=baku 2015-10-26 14:06:28 -04:00
Olli Pettay
a062f00aab Bug 1218190 - Add a pref to enable Clients.openWindow, r=catalinb 2015-10-25 22:36:27 +02:00
Ehsan Akhgari
383397be38 Bug 1216697 - Unship Request.cache until the implementation is finished; r=bzbarsky 2015-10-23 15:38:47 -04:00
Nathan Froyd
01583602a9 Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat
The bulk of this commit was generated with a script, executed at the top
level of a typical source code checkout.  The only non-machine-generated
part was modifying MFBT's moz.build to reflect the new naming.

CLOSED TREE makes big refactorings like this a piece of cake.

 # The main substitution.
find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \
    xargs perl -p -i -e '
 s/nsRefPtr\.h/RefPtr\.h/g; # handle includes
 s/nsRefPtr ?</RefPtr</g;   # handle declarations and variables
'

 # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h.
perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h

 # Handle nsRefPtr.h itself, a couple places that define constructors
 # from nsRefPtr, and code generators specially.  We do this here, rather
 # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename
 # things like nsRefPtrHashtable.
perl -p -i -e 's/nsRefPtr/RefPtr/g' \
     mfbt/nsRefPtr.h \
     xpcom/glue/nsCOMPtr.h \
     xpcom/base/OwningNonNull.h \
     ipc/ipdl/ipdl/lower.py \
     ipc/ipdl/ipdl/builtin.py \
     dom/bindings/Codegen.py \
     python/lldbutils/lldbutils/utils.py

 # In our indiscriminate substitution above, we renamed
 # nsRefPtrGetterAddRefs, the class behind getter_AddRefs.  Fix that up.
find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \
    xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g'

if [ -d .git ]; then
    git mv mfbt/nsRefPtr.h mfbt/RefPtr.h
else
    hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h
fi

--HG--
rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 01:24:48 -04:00
Eddy Bruel
f7c6589364 Bug 1178726 - Simplify how we deal with freezing/thawing workers;r=jlongster,khuey 2015-10-16 18:48:26 +02:00
Morris Tseng
d1d37e3f9b Bug 709490 - Part 10: Using mechanism in RuntimeService to get pref in worker thread instead of gfxPref. r=baku
--HG--
extra : rebase_source : 55ae1e1fc1f88bffd43800eefaed4506789e608c
2015-10-12 11:21:04 +08:00
Eddy Bruel
41c0e5355c Bug 1178721 - Implement SuspendWorkersForWindow;r=khuey 2015-10-07 12:20:59 +02:00
Wes Kocher
c1750b75c7 Backed out 11 changesets (bug 709490) for webgl-color-test.html failures a=backout
Backed out changeset fc04c5d43550 (bug 709490)
Backed out changeset cd8f9410d335 (bug 709490)
Backed out changeset 6e687c9143c1 (bug 709490)
Backed out changeset 9b20f2c833c4 (bug 709490)
Backed out changeset f9d130aea88e (bug 709490)
Backed out changeset fc513b410949 (bug 709490)
Backed out changeset acf6220b431a (bug 709490)
Backed out changeset 9bceaf913791 (bug 709490)
Backed out changeset 37fba20111e2 (bug 709490)
Backed out changeset 2285ce1596b8 (bug 709490)
Backed out changeset fb4e09920569 (bug 709490)
2015-10-05 08:28:25 -07:00
Morris Tseng
f5a52e7dea Bug 709490 - Part 10: Using mechanism in RuntimeService to get pref in worker thread instead of gfxPref. r=baku
--HG--
extra : rebase_source : 07b470b9a8865b7d833932c5425e796b852ab466
2015-10-05 10:50:17 +08:00
Catalin Badea
294f7838e4 Bug 1188545 - Cosmetic changes regarding workerPrivate properties shared between shared workers and service workers. r=nsm 2015-09-30 19:11:03 -04:00
Catalin Badea
76c7d43fd9 Bug 1188545 - Disentangle service workers from shared workers and refactor event dispatching code into a separate class. r=nsm,mrbkap 2015-09-30 19:11:03 -04:00
Wes Kocher
6fbdec2422 Backed out 12 changesets (bug 1188545) for test_fetch_cors failures CLOSED TREE
Backed out changeset e04738ee72a3 (bug 1188545)
Backed out changeset 1989893b59de (bug 1188545)
Backed out changeset 11ff29cc25d8 (bug 1188545)
Backed out changeset 4b6bdf859845 (bug 1188545)
Backed out changeset 76eb7ffeca2a (bug 1188545)
Backed out changeset 4473e036b52e (bug 1188545)
Backed out changeset 2a28cb794b23 (bug 1188545)
Backed out changeset 1fa2f55727f3 (bug 1188545)
Backed out changeset 032f4c24fc34 (bug 1188545)
Backed out changeset 4be675dc1b37 (bug 1188545)
Backed out changeset d5d05def5b17 (bug 1188545)
Backed out changeset e94f12b0bcf3 (bug 1188545)
2015-09-30 11:11:47 -07:00
Catalin Badea
dbf90d6367 Bug 1188545 - Cosmetic changes regarding workerPrivate properties shared between shared workers and service workers. r=nsm 2015-09-30 10:14:33 -04:00
Catalin Badea
c537f8c503 Bug 1188545 - Disentangle service workers from shared workers and refactor event dispatching code into a separate class. r=nsm,mrbkap 2015-09-30 10:14:33 -04:00
Andrea Marchesini
7373ebaca0 Bug 1209919 - Improving naming and comments in StructuredCloneHelper, r=smaug
--HG--
rename : dom/base/StructuredCloneHelper.cpp => dom/base/StructuredCloneHolder.cpp
rename : dom/base/StructuredCloneHelper.h => dom/base/StructuredCloneHolder.h
2015-09-30 13:22:08 +01:00
Wes Kocher
8631de9c2b Backed out 13 changesets (bug 709490) for android webgl-color-test.html failures
Backed out changeset 5be7514914b6 (bug 709490)
Backed out changeset 04b6f94fbe8a (bug 709490)
Backed out changeset 00c0e85dd8cd (bug 709490)
Backed out changeset 221385b7b81a (bug 709490)
Backed out changeset ecc38c18734f (bug 709490)
Backed out changeset 22878c936384 (bug 709490)
Backed out changeset 0edcbb60eee3 (bug 709490)
Backed out changeset 5feceec2014b (bug 709490)
Backed out changeset 835b655cb873 (bug 709490)
Backed out changeset 6fbb4a3f8cf7 (bug 709490)
Backed out changeset a5f8646fa156 (bug 709490)
Backed out changeset 2ae1386916b3 (bug 709490)
Backed out changeset 6b29a2a0a8fb (bug 709490)
2015-09-29 08:57:36 -07:00
Morris Tseng
d99c93a009 Bug 709490 - Part 10: Using mechanism in RuntimeService to get pref in worker thread instead of gfxPref, r=baku 2015-09-29 11:51:25 +01:00
Kyle Huey
ca2010bbb9 Bug 1208687: Only discard events from the outermost queue. r=ehsan
When workers shut down we discard the event queue rather than running it to completion.  Originally workers managed their event queue themselves and would simply iterate through the array of events and cancel them all.  After bug 914762 this was done by setting a (thread-)global "canceling" flag and then calling NS_ProcessPendingEvents.  But this neglects that a shut down request can be received while the worker is in a sync queue.  In this case, calling NS_ProcessPendingEvents will process any events pending in the sync queue, which is *not* the queue we need to cancel.

The fix is, if we are in a sync queue when NotifyInternal is called, to defer clearing the queue until the top-most sync queue is destroyed and we are about to return to the regular event queue.  Only then can we call NS_ProcessPendingEvents to clear out the queue.  Because we can never process any events from this queue while sync queues are active, the timing of the mass cancellation is unchanged from the perspective of events in the regular queue.
2015-09-28 14:34:28 -07:00
Nigel Babu
85f8d8c65e Backed out changeset ee27fc2f6a1d (bug 1208687) for W(4) bustage
ON A CLOSED TREE
2015-09-28 12:23:36 +05:30
Kyle Huey
ea0bfdd061 Bug 1208687: Only discard events from the outermost queue. r=ehsan
When workers shut down we discard the event queue rather than running it to completion.  Originally workers managed their event queue themselves and would simply iterate through the array of events and cancel them all.  After bug 914762 this was done by setting a (thread-)global "canceling" flag and then calling NS_ProcessPendingEvents.  But this neglects that a shut down request can be received while the worker is in a sync queue.  In this case, calling NS_ProcessPendingEvents will process any events pending in the sync queue, which is *not* the queue we need to cancel.

The fix is, if we are in a sync queue when NotifyInternal is called, to defer clearing the queue until the top-most sync queue is destroyed and we are about to return to the regular event queue.  Only then can we call NS_ProcessPendingEvents to clear out the queue.  Because we can never process any events from this queue while sync queues are active, the timing of the mass cancellation is unchanged from the perspective of events in the regular queue.

--HG--
extra : rebase_source : f67fbee27c0751068a4e7aaf692cbfc1d3c9aa7c
2015-09-27 21:57:36 -07:00
Andrea Marchesini
abdc1eebce Bug 1193414 - SharedWorkers thread should be kept alive also when the SharedWorker object is CCed, r=khuey 2015-09-23 06:54:29 +01:00
Nikhil Marathe
6d235278db Bug 1203324 - disable notifications on serviceworkers. r=ehsan,wchen
Per the product discussion, the Notification API should be disabled in
ServiceWorker in release builds for 42 since the UX isn't great [1].

The aim is to release in 44.

Apologies for the code duplication for pref checking in Notification and
ServiceWorkerRegistration. There isn't a easy way to get
ServiceWorkerRegistration's generated binding to include Notification.h without
having an attribute/method that uses Notification.

[1]: https://mana.mozilla.org/wiki/x/TgAJAw

--HG--
extra : commitid : 5dtc2E63kuM
extra : rebase_source : 4265dcd154462aa4f3b915e9e898fe7b82bf9afc
2015-09-15 12:58:32 -07:00
Ehsan Akhgari
59c135c176 Bug 1198078 - Add support for TYPE_INTERNAL_SERVICE_WORKER; r=ckerschb,tanvi 2015-09-16 19:15:30 -04:00
Andrea Marchesini
f0aa7a8c5f Bug 1204775 - SharedWorker.port should be a 'real' MessagePort, r=khuey 2015-09-16 11:27:56 +08:00
Wes Kocher
ab3e843b68 Backed out changeset ccfddcbccdac (bug 1204775) for sharedworker bustage 2015-09-15 11:08:09 -07:00
Andrea Marchesini
ff25288854 Bug 1204775 - SharedWorker.port should be a 'real' MessagePort, r=khuey 2015-09-16 00:47:19 +08:00
Michael Layzell
cd6e65d4d5 Bug 1147821 - Update IndexedDB to use common StorageAllowedForWindow logic, r=khuey 2015-08-28 10:10:30 -04:00
Andrea Marchesini
fdbfd864e7 Bug 1186307 - StructuredCloneHelper in workers.postMessage(), r=smaug 2015-08-27 17:19:13 +01:00
Nigel Babu
d5f46aaf6c Backed out a19daae11647 (Bug 1186307) for W8 and W4 bustage on CLOSED TREE 2015-08-27 15:04:25 +05:30
Andrea Marchesini
b68734b7da Bug 1186307 - StructuredCloneHelper in workers.postMessage(), r=smaug 2015-08-27 09:06:09 +01:00
Nikhil Marathe
b5681e95be Bug 1193911 - Ensure synthetic Responses gets a valid channel info. r=ehsan
Right now, synthetic Responses did not have a valid channel info. When these
were saved in the Cache, and then restored, the restored Response did have
a ChannelInfo, but that ChannelInfo did not have a valid security info.
Passing this to respondWith() then caused the interception to fail.

This patch modifies Response::Constructor() to initialize its ChannelInfo from
the global. ChannelInfo can now initialize itself from a nsIDocument. All
workers now store their ChannelInfo on the WorkerLoadInfo.

--HG--
extra : commitid : L1wltwPICd8
extra : rebase_source : 8dab4c414eb50e02a00dd2cb3ee848b811060e70
2015-08-17 15:08:58 -07: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
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
Ehsan Akhgari
aeacbc159a Bug 1188062 - Unship Request.context; r=baku 2015-07-30 08:14:00 -04:00
Ehsan Akhgari
547404788d Bug 1188091 - Fix the exposure of Push interfaces; r=dougt,bzbarsky,nsm
Currently we don't check the dom.push.enabled pref in some cases for
some of these interfaces.  This patch unifies how all of these
interfaces are exposed to Window, Worker, and ServiceWorker.
2015-07-30 01:06:38 -04:00
Francisco Jordano
4008b170ad Bug 1186880 - Performance timing api in workers should output entries if preference is enabled. r=baku 2015-07-28 17:33:37 +01:00
Ryan VanderMeulen
96b36b5855 Backed out changeset c88d1138bc38 (bug 1188091) for Mulet test_serviceworker_interfaces.html failures.
CLOSED TREE
2015-07-28 13:28:39 -04:00
Ehsan Akhgari
6e916540f5 Bug 1188091 - Fix the exposure of Push interfaces; r=dougt,bzbarsky
Currently we don't check the dom.push.enabled pref in some cases for
some of these interfaces.  This patch unifies how all of these
interfaces are exposed to Window, Worker, and ServiceWorker.
2015-07-28 12:28:53 -04: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
Birunthan Mohanathas
a8939590de Bug 1182996 - Fix and add missing namespace comments. rs=ehsan
The bulk of this commit was generated by running:

  run-clang-tidy.py \
    -checks='-*,llvm-namespace-comment' \
    -header-filter=^/.../mozilla-central/.* \
    -fix
2015-07-13 08:25:42 -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
Ben Kelly
d0a67ebc82 Bug 1167808 P1 Add dom.serviceWorkers.interception.opaque.enabled pref. r=ehsan 2015-07-02 20:09:20 -07:00
Wes Kocher
e9a82d0d8e Backed out 4 changesets (bug 1167808) for mulet mochitest-4 permafail in test_fetch_cors_sw_reroute.html
Backed out changeset 1c9c72d93973 (bug 1167808)
Backed out changeset 9c94c759a0fb (bug 1167808)
Backed out changeset e8ac89eafb1d (bug 1167808)
Backed out changeset 48abf470ef5b (bug 1167808)
2015-07-02 15:30:29 -07:00
Ben Kelly
ca953711c7 Bug 1167808 P1 Add dom.serviceWorkers.interception.opaque.enabled pref. r=ehsan 2015-07-02 14:34:00 -07:00