Commit Graph

208 Commits

Author SHA1 Message Date
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
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
Ben Kelly
5940533c35 Bug 1175138 P2 Expose dom.serviceWorkers.testing.enabled to workers. r=ehsan 2015-06-27 23:19:24 -04:00
Ben Kelly
74e7e7f196 Bug 1175138 P1 Make the dom.caches.testing.enabled pref available in workers. r=ehsan 2015-06-27 23:19:23 -04:00
Nikhil Marathe
091eef6ff6 Bug 916893 - Patch 1 - Notification on workers. r=khuey,wchen
Does not implement the Service Worker API - https://notifications.spec.whatwg.org/#service-worker-api
***
Folded:
Bug 916893 - Better ownership model. r=khuey
Fix for bug found by ASan where we were touching the NotificationFeature after releasing it.

--HG--
extra : transplant_source : %3C%09F%99%CASF%1A%25%89X%D9%8C%0B%FAu%9D%27%E8w
2015-06-25 18:53:02 -07: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
84d140a54b Backed out 11 changesets (bug 916893, bug 1114554) for various mochitest and Gij failures.
Backed out changeset 247ca4bf258e (bug 1114554)
Backed out changeset 5578d5c280a6 (bug 1114554)
Backed out changeset 404830c1ecf7 (bug 1114554)
Backed out changeset 15bdf9c78e6e (bug 1114554)
Backed out changeset f92abe5ec784 (bug 1114554)
Backed out changeset 75324b6862a8 (bug 1114554)
Backed out changeset ce8a768782f2 (bug 1114554)
Backed out changeset 0d860fd12534 (bug 1114554)
Backed out changeset 7dc2448065a9 (bug 916893)
Backed out changeset c3b07f0d1a60 (bug 916893)
Backed out changeset 61c3f24cc908 (bug 916893)

CLOSED TREE
2015-06-25 19:52:40 -04:00
Nikhil Marathe
6ecdd193cc Bug 916893 - Patch 1 - Notification on workers. r=khuey,wchen
Does not implement the Service Worker API - https://notifications.spec.whatwg.org/#service-worker-api
***
Folded:
Bug 916893 - Better ownership model. r=khuey
Fix for bug found by ASan where we were touching the NotificationFeature after releasing it.

--HG--
extra : rebase_source : 7522a4a51fda41726e7cf26b61fbf535c260fab3
2015-06-25 11:36:53 -07:00
Nikhil Marathe
0db24a2c7c Bug 1173389 - Disable ServiceWorker network interception by default. r=ehsan
--HG--
extra : rebase_source : 6309f011f978f08c4f104123910f7d8d9e56045a
2015-06-12 16:28:13 -07: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
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
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
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
80f0a3700f Bug 1156875 - patch 2 - Unify the registration of blob URIs in WorkerPrivate and nsIGlobalObject, r=bent 2015-05-07 08:06:24 +01:00
Andrew McCreight
9e8f4b219e Bug 1152551, part 2 - Fix mode lines in dom/. r=jst 2015-05-03 15:32:37 -04:00
Ehsan Akhgari
9d614e4dc8 Bug 1156847 - Part 2: Store the security info for a service worker on its WorkerPrivate; r=bent,khuey 2015-04-29 20:22:27 -04:00
Nikhil Marathe
5b54bf699f Bug 1131327 - Patch 2 - Expose to workers. r=baku
This patch exposes ServiceWorkerRegistration (and ServiceWorker to satisfy constraints) to workers.

For now, a null registration is returned in the worker.

--HG--
extra : rebase_source : ae1b59d5ee3b3522826ed59fcfcb31e009018ac3
2015-04-03 22:46:07 -07:00
Ehsan Akhgari
1d0a36b48b Bug 1154563 - Drop the unused argument of WorkerPrivate::Close(); r=baku 2015-04-15 09:24:22 -04:00
Ben Turner
f6cb233b56 Bug 1151646 - Spin the event loop one extra time to clean up all CC'd objects before worker shutdown, r=khuey. 2015-04-08 15:20:59 -07:00
Christoph Kerschbaumer
4653f5de8c Bug 1143848 - Query Document from Parent in case of nested workers (r=bent)
--HG--
extra : rebase_source : bfdc5979488a489e4adf66fccbdce8fd65255db3
2015-04-07 09:19:19 -07:00
Andrea Marchesini
670fb6a86b Bug 1150805 - WorkerPrivate should use nsTObserverArray for the WorkerFeatures, r=bent CLOSED TREE 2015-04-07 18:31:51 +01:00
Nikhil Marathe
78132f902f Bug 931249 - Patch 8 - Provide direct getter to the fact that we are loading a worker instead of relying on cache name. r=khuey
--HG--
extra : rebase_source : ad85e2de17f562449f041fcb66a061a319da45f0
2015-03-19 16:39:01 -07:00
Nikhil Marathe
238374c507 Bug 931249 - patch 1 - Scriptloader use cache if needed. r=khuey
--HG--
extra : rebase_source : c81b13a05ec04a68c3acd25807fcf997bd9db81e
2015-03-19 11:41:42 -07:00