Commit Graph

139 Commits

Author SHA1 Message Date
Nicholas Nethercote
9063648451 Bug 1200484 (part 10) - Use JS column numbers in indexedDB. r=khuey. 2015-09-01 18:01:02 -07:00
Kyle Huey
32ef97bf28 Bug 1196840: Make IDBTransaction::ObjectStoreNames const. r=baku 2015-08-25 13:30:18 -07:00
Kyle Huey
862b128345 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
Birunthan Mohanathas
a29151dc87 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
Ben Turner
7c9f5447cd Bug 1147942 - Don't warn when aborting finished IndexedDB transactions, r=janv. 2015-06-25 15:22:59 -07:00
Andrea Marchesini
99c17a8938 Bug 1163388 - patch 2 - get rid of nsIDOMFile, r=ehsan 2015-05-18 14:52:26 +01:00
Andrew McCreight
92010d3e4c Bug 1152551, part 2 - Fix mode lines in dom/. r=jst 2015-05-03 15:32:37 -04:00
Ben Turner
f0c0fa394d Bug 1112702 - Make IndexedDB transactions non-durable by default, r=khuey. 2015-01-25 22:30:09 -08:00
Wes Kocher
9c49c487f3 Backed out changeset 3be650e84eea (bug 1112702) 2015-03-30 19:45:56 -07:00
Ben Turner
3d6099187d Bug 1112702 - Make IndexedDB transactions non-durable by default, r=khuey. 2015-01-25 22:30:09 -08:00
Phil Ringnalda
78273cdb09 Backed out 5 changesets (bug 866846, bug 1131776, bug 1131766, bug 1144806, bug 1112702) on suspicion of causing Windows debug devtools-4 storage crashes
CLOSED TREE

Backed out changeset 142d9ae5826c (bug 1131776)
Backed out changeset 0b4de21b759f (bug 1112702)
Backed out changeset 1b4ead852ae0 (bug 1131766)
Backed out changeset cbd862dd036f (bug 866846)
Backed out changeset 178412a2fe8b (bug 1144806)
2015-03-29 12:55:11 -07:00
Ben Turner
bbe14312e6 Bug 1112702 - Make IndexedDB transactions non-durable by default, r=khuey. 2015-01-25 22:30:09 -08:00
Ehsan Akhgari
ea41d8de48 Bug 1145631 - Part 1: Replace MOZ_OVERRIDE and MOZ_FINAL with override and final in the tree; r=froydnj
This patch was automatically generated using the following script:

function convert() {
echo "Converting $1 to $2..."
find . \
       ! -wholename "*/.git*" \
       ! -wholename "obj-ff-dbg*" \
         -type f \
      \( -iname "*.cpp" \
         -o -iname "*.h" \
         -o -iname "*.c" \
         -o -iname "*.cc" \
         -o -iname "*.idl" \
         -o -iname "*.ipdl" \
         -o -iname "*.ipdlh" \
         -o -iname "*.mm" \) | \
    xargs -n 1 sed -i -e "s/\b$1\b/$2/g"
}

convert MOZ_OVERRIDE override
convert MOZ_FINAL final
2015-03-21 12:28:04 -04:00
Boris Zbarsky
3a822d99b4 Bug 1117172 part 3. Change the wrappercached WrapObject methods to allow passing in aGivenProto. r=peterv
The only manual changes here are to BindingUtils.h, BindingUtils.cpp,
Codegen.py, Element.cpp, IDBFileRequest.cpp, IDBObjectStore.cpp,
dom/workers/Navigator.cpp, WorkerPrivate.cpp, DeviceStorageRequestChild.cpp,
Notification.cpp, nsGlobalWindow.cpp, MessagePort.cpp, nsJSEnvironment.cpp,
Sandbox.cpp, XPCConvert.cpp, ExportHelpers.cpp, and DataStoreService.cpp.  The
rest of this diff was generated by running the following commands:

  find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapObjectInternal\(JSContext *\* *(?:aCx|cx|aContext|aCtx|js))\)/\1, JS::Handle<JSObject*> aGivenProto)/g'

  find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapObjectInternal\((?:aCx|cx|aContext|aCtx|js))\)/\1, aGivenProto)/g'

  find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapNode\(JSContext *\* *(?:aCx|cx|aContext|aCtx|js))\)/\1, JS::Handle<JSObject*> aGivenProto)/g'

  find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapNode\((?:aCx|cx|aContext|aCtx|js))\)/\1, aGivenProto)/g'

  find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapObject\(JSContext *\* *(?:aCx|cx|aContext|aCtx|js))\)/\1, JS::Handle<JSObject*> aGivenProto)/g'

  find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(Binding(?:_workers)?::Wrap\((?:aCx|cx|aContext|aCtx|js), [^,)]+)\)/\1, aGivenProto)/g'
2015-03-19 10:13:33 -04:00
Ben Turner
252480014d Bug 1143885 - Fix transaction handling when requests are killed prematurely, r=khuey. 2015-03-18 14:20:59 -07:00
Ben Turner
c8ed07d8be Bug 701634 - Support IndexedDB in Workers, r=khuey+baku. 2014-12-16 22:26:15 -08:00
Ben Turner
2b90bf55ad Bug 1092311 - Fix IndexedDB profiler markers and logging, r=khuey. 2014-10-15 21:56:52 -07:00
Ben Turner
b7423f44e1 Bug 1083285 - Fix noisy IndexedDB error, replace with better warning. r=khuey. 2014-11-13 18:20:38 -08:00
Wes Kocher
19b68ba036 Backed out changeset f5ed560d297f (bug 1083285) for build bustage 2014-11-18 15:47:57 -08:00
Ben Turner
ba39a2d1e0 Bug 1083285 - Fix noisy IndexedDB error, replace with better warning. r=khuey. 2014-11-13 18:20:38 -08:00
Ben Turner
e30152a851 Bug 994190 - 'Modify main-thread IndexedDB to use PBackground', r=khuey. 2014-09-26 16:21:57 -07:00
Ben Turner
4937da099f Backout bug 994190 and merge over some stuff that landed afterwards on a CLOSED TREE. 2014-09-17 19:36:01 -04:00
Ben Turner
aede706b17 Bug 994190 - 'Modify main-thread IndexedDB to use PBackground', r=khuey. 2014-09-13 12:12:19 -04:00
Victor Porof
298ca2ed1b Bug 1007203 - Always add categories when pushing to the pseudostack, r=djvj 2014-05-23 17:12:29 -04:00
Jon Morton
25ec9afeeb Bug 1013221: Remove duplicate object store names when a transaction is created. r=khuey 2014-05-29 13:07:35 -07:00
Ben Turner
ef0cf2cc10 Bug 929274 - 'InvalidStateError when accessing transaction.error after aborted transaction'. Patch by bent & Shihua Zheng <szheng@mozilla.com>, r=janv, r=khuey. 2014-05-20 10:39:31 -07:00
Birunthan Mohanathas
eeb9aaaa94 Bug 900908 - Part 3: Change uses of numbered macros in nsIClassInfoImpl.h/nsISupportsImpl.h to the variadic variants. r=froydnj 2014-04-27 03:06:00 -04:00
Boris Zbarsky
b95c359828 Bug 991742 part 8. Remove the "aScope" argument of WebIDL/nsWrapperCache WrapObject() methods. r=bholley
This patch was mostly generated with the following command:

find . -name "*.h" -o -name "*.cpp" | xargs sed -e '/WrapObject(JSContext/ {; N; s/\(WrapObject(JSContext *\* *a\{0,1\}[Cc]x\),\n\{0,1\} *JS::Handle<JSObject\*> a\{0,1\}[sS]cope/\1/ ; }' -i ""

and then reverting the changes that made to
dom/bindings/BindingUtils.h, since those WrapObject methods are not
the ones we're trying to change here, plus a bunch of manual fixups
for cases that this command did not catch (including all the callsites
of WrapObject()).
2014-04-08 18:27:18 -04:00
Boris Zbarsky
ae0180ee85 Bug 991742 part 6. Remove the "aScope" argument of binding Wrap() methods. r=bholley
This patch was mostly generated with this command:

find . -name "*.h" -o -name "*.cpp" | xargs sed -e 's/Binding::Wrap(aCx, aScope, this/Binding::Wrap(aCx, this/' -e 's/Binding_workers::Wrap(aCx, aScope, this/Binding_workers::Wrap(aCx, this/' -e 's/Binding::Wrap(cx, scope, this/Binding::Wrap(cx, this/' -i ""

plus a few manual fixes to dom/bindings/Codegen.py, js/xpconnect/src/event_impl_gen.py, and a few C++ files that were not caught in the search-and-replace above.
2014-04-08 18:27:17 -04:00
Ehsan Akhgari
7ce1aa5eb8 Bug 798158 - Part 1: Use a pointer-sized type to store refcounts internally; r=bsmedberg 2014-03-27 16:38:33 -04:00
Masayuki Nakano
2eb2bd8616 Bug 983049 part.5 Rename nsEventDispatcher to mozilla::EventDispatcher r=smaug 2014-03-18 13:48:21 +09:00
Masayuki Nakano
44a8bd8d65 Bug 983049 part.2 Rename nsEventChainPreVisitor to mozilla::EventChainPreVisitor r=smaug 2014-03-18 13:48:19 +09:00
Peter Van der Beken
511907d28c Bug 803106 part 2. Convert DOMStringList to WebIDL bindings - add WebIDL API and switch. r=bzbarsky 2013-07-09 13:54:21 -04:00
Peter Van der Beken
16624d52d2 Bug 803106 part 1. Convert DOMStringList to WebIDL bindings - move files and rename class. r=bzbarsky 2013-07-09 13:51:03 -04:00
Jan Varga
a6f9443215 Bug 965084 - "ROLLBACK TO SAVEPOINT savepoint" doesn't fire appropriate triggers leaving orphaned files. r=bent 2014-01-31 10:53:37 -08:00
Ted Clancy
4e30323e98 Bug 958359 - IndexedDB should log a message to the console when it returns NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR. r=bent 2014-01-27 19:37:05 -05:00
Boris Zbarsky
d256431a57 Bug 950315 part 2. Convert some idb classes to passing a Window or nsDOMEventTargetHelper directly to the constructor of their ancestor nsDOMEventTargetHelper. r=khuey 2014-01-07 00:32:20 -05:00
Ehsan Akhgari
d4d70d8dd2 Bug 947737 - Build dom/indexedDB in unified mode; r=bent 2013-12-09 00:31:48 -05:00
Ben Turner
ceee2b9ed4 Backout 8e3b6d7159c2, bug 929274, for test failures. 2013-11-14 10:58:05 -08:00
Ben Turner
e553354d82 Bug 929274 - 'InvalidStateError when accessing transaction.error after aborted transaction'. r=janv. 2013-10-22 03:41:56 -07:00
Ehsan Akhgari
d5362ca175 Bug 917299 - Remove some dead code in content/ and dom/; r=bzbarsky 2013-09-17 12:49:07 -04:00
Jan Varga
f354bdf37d Bug 785884 - Implement support for temporary storage (aka shared pool). r=ehsan, r=bent 2013-09-11 06:18:36 +02:00
Robert O'Callahan
51222bdd45 Bug 910989. Remove nsTHashtable::Init, fallible allocation, and MT hashtables. r=ehsan,bsmedberg 2013-09-02 20:41:57 +12:00
Ms2ger
5a51413d49 Bug 901323 - Don't include nsContentUtils.h unnecessarily; r=jlebar 2013-08-14 08:56:21 +02:00
Mike Hommey
0dc9c0ef85 Bug 881323 - Re-implement CycleCollectorParticipant with actual vtables, with constexpr to avoid static initializers. r=mccr8 2013-08-02 10:29:05 +09:00
Andrea Marchesini
fa7e25809e Bug 888596 - Move IDBDatabase to WebIDL, r=janv 2013-07-31 17:48:46 +02:00
Andrea Marchesini
b7828b2762 Bug 888597 - Move IDBObjectStore to WebIDL, r=janv 2013-07-31 17:48:36 +02:00
Andrea Marchesini
f5962d72f8 Bug 888598 - Move IDBTransaction to WebIDL, r=janv 2013-07-29 19:12:21 +02:00
Joshua Cranmer
46b6048262 Bug 884061 - Part 3f: Use NS_DECL_THREADSAFE_ISUPPORTS in dom/, r=smaug,dhylands. 2013-07-18 21:21:20 -05:00
Trevor Saunders
e312db0631 bug 877886 - get rid of a number of static constructors in content/ and dom/ r=smaug 2013-05-30 18:34:53 -04:00