Commit Graph

1250 Commits

Author SHA1 Message Date
Birunthan Mohanathas
a727c82e51 Bug 1192023 - Make UpdateType an enum class. r=khuey 2015-08-06 14:34:39 -07:00
Birunthan Mohanathas
752bf80bb4 Bug 1192023 - Use enum class instead of CheckpointMode_ prefix. r=khuey 2015-08-06 14:34:35 -07:00
Birunthan Mohanathas
69151f6831 Bug 1192023 - Flatten away AppId enum. r=khuey 2015-08-06 14:34:33 -07:00
Birunthan Mohanathas
e95e1e7d13 Bug 1192023 - Use enum class instead of MaintenanceAction_ prefix. r=khuey 2015-08-06 14:34:29 -07:00
Birunthan Mohanathas
9f71a11dba Bug 1192023 - Use enum class instead of State_ prefix. r=khuey 2015-08-06 14:34:27 -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
Jeff Walden
1b62a9d07b Bug 1158399 - Expose the [[DateValue]] field in Date objects only through a ClippedTime class that enforces prior TimeClip-ing on the given value. r=evilpie, r=bz, r=dhylands, r=mt, r=froydnj, r=khuey, r=baku, r=smaug
--HG--
extra : rebase_source : 803fe39f338b6b32cb0fe2be6cf4056bab57283a
2015-05-01 19:12:52 -07:00
Reuben Morais
5066ffe155 Bug 1184667 - Remove some unnecessary const_casts from ActorsParent.cpp. r=janv 2015-08-05 15:25:14 -03:00
Kyle Huey
82f329af94 Bug 1188117: Do not allow IDBCursor.delete while cursor update is in progress. r=baku 2015-07-28 15:59:55 -07:00
Kyle Huey
0c59dad482 Bug 1180978: Don't proceed with opening an invalidated database. r=janv,baku 2015-07-22 14:46:19 +08:00
Kyle Huey
b030401bd9 Bug 1185836. Nuke warnings from orbit. r=me 2015-07-21 17:07:05 +08:00
Kyle Huey
15a5ec1edf Bug 1185836: Fix warnings r=me.
CLOSED TREE
2015-07-21 16:52:44 +08:00
Kyle Huey
5129adf6dd Bug 1185836: Replace several EnumerateRead calls with the new hashtable iterators. r=baku 2015-07-21 16:38:31 +08:00
Brian Birtles
966c333f8b Bug 1182981 part 3 - Use nsTHashtable::Iterator in ActorsParent; r=khuey
--HG--
extra : commitid : 11ASXiomEJ5
2015-07-21 14:46:32 +09:00
Brian Birtles
188b788e88 Bug 1182981 part 4 - Use nsTHashtable::Iterator in IDBDatabase; r=njn
--HG--
extra : commitid : AYXTBTdzFTR
2015-07-21 10:48:54 +09:00
Kyle Huey
c14ad0ee62 Bug 1184410: Track whether or not the transaction has been active on the connection thread. r=janv
Because StartTransactionOp is a TransactionDatabaseOperationBase, it is possible for it to never run DoDatabaseWork, if the transaction is invalidated before StartTransactionOp runs. In the case of a readwrite transaction, we'll never BeginWriteTransaction() on the connection.

CommitOp, on the other hand, is a DatabaseOperationBase. It doesn't check IsInvalidatedOnAnyThread before running, so it will try to commit the transaction and the assertions will fire because we never called BeginWriteTransaction.

Reworking the inheritance here, if possible, would be hard. Keeping track of the active state on both the background and connection threads is easy though, and we do this sort of thing all over dom/workers. So do that.

This should resolve several intermittent oranges where MOZ_ASSERT(!mInReadTransaction) fires upon committing a transaction.

CLOSED TREE
2015-07-16 10:34:49 -07:00
Ben Turner
6262017c4a Bug 1179025 - Protect against using cursors on a deleted objectStore/index, r=janv. 2015-07-02 10:47:53 -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
Ryan VanderMeulen
5109d15769 Backed out changeset d29782c360fe (bug 1180978) for causing indexedDB assertions.
CLOSED TREE
2015-07-10 12:35:15 -04:00
Kyle Huey
c7a5521db6 Bug 1180978: Don't proceed with opening an invalidated database. r=janv,baku 2015-07-10 07:38:53 -07:00
Birunthan Mohanathas
5609390bdb Bug 1168606 - Part 2: Convert DelayedDeleteRunnable into reusable DelayedActionRunnable class. r=bent 2015-06-09 07:57:19 -07:00
Birunthan Mohanathas
d39c90fbcb Bug 1168606 - Part 1: Extract Cursor response data population into shared function. r=bent 2015-07-07 11:27:04 -07:00
Emanuel Hoogeveen
7d1e52f2ff Bug 905127 - Part 1 - Make some functions from nsNetUtil not inline. r=jduell 2015-07-07 04:17:00 +02:00
Ryan VanderMeulen
b47de52156 Backed out changeset d6063656f171 (bug 1179025) for Werror bustage.
CLOSED TREE

--HG--
extra : rebase_source : 1145bb0bc348b09d14e9239a378ec35d1f474f8e
2015-07-06 14:00:58 -04:00
Ben Turner
dd5d843851 Bug 1179025 - Protect against using cursors on a deleted objectStore/index, r=janv. 2015-07-02 10:47:53 -07:00
Juan Gomez
258ad59e3f Bug 1171931 - Refactor duplicated code using XRE_IsParent/ContentProcess. r=froydnj 2015-07-03 18:29:00 -07:00
Jonathan Watt
aaa5cbde27 Bug 1177688, part 6 - Follow-up to provide a default BlobDirState::eUnknownIfDir arg to BlobImplBase's ctor to avoid excessively specifying the same argument. r=baku 2015-06-23 00:31:40 +01:00
Jonathan Watt
2cd9883d4c Bug 1177688, part 1 - Add API and functionality to the BlobImpl classes so that BlobImpl's that are created from an nsIFile can provide information about whether or not the nsIFile was a directory. r=baku 2015-06-23 00:31:28 +01:00
Martin Thomson
3f054841ce Bug 1176434 - Enabling indexedDB for content JS sandboxes, r=bent
--HG--
extra : commitid : DYgglyPMmSl
2015-07-02 13:30:15 -07:00
Ryan VanderMeulen
3da97f6aee Backed out changeset c725221a7c45 (bug 1179025) for Werror bustage.
CLOSED TREE
2015-07-02 14:22:28 -04:00
Ben Turner
34db19da89 Bug 1179025 - Protect against using cursors on a deleted objectStore/index, r=janv.
--HG--
extra : rebase_source : 47580ae73fea87338eb5a33387e7e1afda47a119
2015-07-02 10:47:53 -07:00
Boris Zbarsky
07d97d9536 Bug 1178806. IndexedDB autoincrement overflow should be throwing ConstraintError per spec. r=bent 2015-07-01 00:15:30 -04:00
Boris Zbarsky
86db80c6f3 Bug 1178803. Fix the handling of the 'length' key in IDB keypaths when operating on a string. r=bent 2015-07-01 00:15:30 -04:00
Jan de Mooij
303b210317 Bug 1177892 part 3 - Remove OBJECT_TO_JSVAL. r=evilpie 2015-06-30 21:09:46 -07:00
Daniel Holbert
7e76a840ac Bug 1130775 followup: Add 'override' keyword to macro-provided AddRef/Release methods for QuotaClient::GetDirectoryLockListener. rs=ehsan 2015-06-30 10:06:24 -07:00
Jan Varga
283acfefd3 Bug 1170021 - Part 2: Move DirectoryLock out of QuotaManager class; r=bent 2015-06-30 14:59:53 +02:00
Jan Varga
baba1643c1 Bug 1130775 - Convert synchronized ops and storage registration into unified directory locks; r=bent
--HG--
rename : dom/quota/OriginOrPatternString.h => dom/quota/OriginScope.h
2015-06-30 14:59:27 +02:00
Ryan VanderMeulen
5f5c327690 Backed out changeset 8b4e4083639e (bug 1171931) for B2G debug emulator bustage. 2015-06-25 19:48:42 -04:00
Ben Turner
73e1c33df4 Bug 1147942 - Don't warn when aborting finished IndexedDB transactions, r=janv.
--HG--
extra : rebase_source : a356e820641dade176d862c6ab2b226a76abad64
2015-06-25 15:22:59 -07: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
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
Ben Turner
6c1e8969cd Bug 1176165 - Fix the exception codes returned from functions that modify the IndexedDB schema, r=janv. 2015-06-20 09:09:27 -07:00
Ben Turner
af54c09757 Bug 1149815 - Properly handle IDBDatabase.close() called during a versionchange transaction, r=janv. 2015-06-20 09:08:30 -07:00
Ben Turner
778f5ee935 Bug 1149815 - Don't assume that index creation always succeeds, r=janv. 2015-06-20 09:08:26 -07:00
Ben Turner
dbe52fd678 Bug 1149815 - Guard against using deleted IDBObjectStore and IDBIndex objects, r=janv. 2015-06-20 09:08:23 -07:00
Jan Varga
4b812b15cf Bug 1142694 - QuotaManager default/temporary initialization fails on some profiles; r=bent 2015-06-16 06:42:06 +02:00
Jonathan Watt
9d4eaf816c Bug 1173314 - Make GetMozFullPath and GetMozFullPathInternal const. r=sicking 2015-06-03 01:11:16 +01:00
Jan Varga
358e071116 Bug 1174113 - QuotaManager: Origin initialization fails on moz-safe-about+++home; r=bent 2015-06-12 12:00:53 +02:00
Jan Varga
2340439ff0 Bug 1161063; r=bent 2015-06-11 22:34:30 +02:00
Fernando Jimenez
dbb95a17ef Bug 1137245 - ServiceWorkerManager should set WorkerPrivate::LoadInfo::mIndexedDBAllowed correctly. r=bent, bkelly 2015-06-11 15:32:54 +02:00