Граф коммитов

138 Коммитов

Автор SHA1 Сообщение Дата
Jan Varga 8eef834961 Bug 1533789 - LSRequestBase::Finish is not called in some edge cases; r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D24649
2019-03-24 15:02:05 +01:00
Jan Varga 1ce29b4c3b Bug 1535221 - Add infrastructure for hang debugging; r=asuth
This patch adds a timer for synchronous local storage requests. Once the timer
fires the request is canceled. The parent reports debugging information upon receiving cancellation.

Differential Revision: https://phabricator.services.mozilla.com/D24006
2019-03-19 12:23:16 +01:00
Jan Varga 1678e32e36 Bug 1535995 - Quick followup patch to fix an ESlint failure; r=asuth 2019-03-18 18:12:09 +01:00
Jan Varga 9db88adebf Bug 1535995 - Check that group information is up to date; r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D23822
2019-03-18 07:14:26 +01:00
Sebastian Hengst 78d58dd656 Bug 1535619 - add meta information to create bugs for files in dom/localstorage/ in 'Core :: DOM: Web Storage' r=janv
Differential Revision: https://phabricator.services.mozilla.com/D23670

--HG--
extra : moz-landing-system : lando
2019-03-15 14:01:58 +00:00
Sylvestre Ledru 4aa92e3091 Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D22514
2019-03-13 10:19:06 +01:00
Jan Varga 559e8234e4 Bug 1534208 - LSNG: DOM File thread and PBackground child for it must be created as soon as possible; r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D22976
2019-03-11 15:35:04 +01:00
Jan Varga 8b4670b550 Bug 1533541 - dom/localstorage/test/unit/test_groupLimit.js fails with LSNG enabled; r=asuth
Reviewers: asuth

Reviewed By: asuth

Bug #: 1533541

Differential Revision: https://phabricator.services.mozilla.com/D22599

--HG--
extra : rebase_source : fd352191fec915b68bb9161e1de7c89a0522be52
2019-03-07 20:46:46 -05:00
Jan Varga c2058d3bc4 Bug 1526891 - Part 10: Fix a content process leak by closing databases at xpcom-shutdown; r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D20919
2019-02-23 17:19:35 +01:00
Jan Varga 6b68f4dc07 Bug 1526891 - Part 5: Allow calling NextGenLocalStorageEnabled on any thread in the parent process; r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D20914
2019-02-23 17:06:40 +01:00
Jan Varga ea4f36b735 Bug 1526615 - Part 3: Avoid main thread during origin clearing; r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D19284
2019-02-10 10:20:14 +01:00
Jan Varga 62cb092a89 Bug 1526615 - Part 2: Implement GenerateOriginKey2 which can be used on any thread; r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D19283
2019-02-10 10:20:12 +01:00
Jan Varga 1ee1cd1c2d Bug 1517089 - Part 17: Avoid main thread during LSRequestBase/LSSimpleRequestBase processing; r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D19214
2019-02-08 21:02:28 +01:00
Jan Varga f150c82b06 Bug 1517089 - Part 14: Use ClientManagerService for client validation; r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D19208
2019-02-08 21:02:14 +01:00
Jan Varga 2e11851013 Bug 1517089 - Part 13: Use separate IPC params and response for datastore preloading; r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D19207
2019-02-08 21:02:11 +01:00
Jan Varga 993ecafb04 Bug 1517089 - Part 11: Verify principalInfo before creating any parent actors; r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D19205
2019-02-08 21:02:03 +01:00
Jan Varga 7fa5c4663a Bug 1517089 - Part 7: Pass originKey through IPC and get privateBrowsingId directly from ContentPrincipalInfo; r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D19201
2019-02-08 21:01:31 +01:00
Yaron Tausky 43054fe975 Bug 1516277 - Add local execution mode to nsThread r=janv,froydnj
Differential Revision: https://phabricator.services.mozilla.com/D21241

--HG--
extra : moz-landing-system : lando
2019-03-06 16:26:07 +00:00
Gurzau Raul d5392415e2 Backed out changeset 44d83d32e254 (bug 1516277) for failing at /test/unit/test_eviction.js on a CLOSED TREE. 2019-03-06 17:50:28 +02:00
Yaron Tausky 3aa9896ebc Bug 1516277 - Add local execution mode to nsThread r=janv,froydnj
Differential Revision: https://phabricator.services.mozilla.com/D21241

--HG--
extra : moz-landing-system : lando
2019-03-06 13:53:16 +00:00
Boris Zbarsky 9c5da5f234 Bug 1489308 part 9. Remove now-unused wyciwyg bits. r=mccr8
Differential Revision: https://phabricator.services.mozilla.com/D17327

--HG--
rename : dom/html/test/browser_refresh_wyciwyg_url.js => dom/html/test/browser_refresh_after_document_write.js
rename : dom/html/test/file_refresh_wyciwyg_url.html => dom/html/test/file_refresh_after_document_write.html
extra : moz-landing-system : lando
2019-02-28 01:09:48 +00:00
Sylvestre Ledru 41d1d79094 Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D19663

--HG--
extra : moz-landing-system : lando
2019-02-15 08:15:57 +00:00
Jan Varga 38f8064388 Bug 1517089 - Part 6: Use BackgroundParent::GetChildID (which doesn't need releasing content parent on the main thread) for getting content parent id; r=asuth 2019-02-07 19:51:27 +01:00
Jan Varga 5302b36c41 Bug 1517089 - Part 5: Move storage service initialization to InitializeLocalStorage; r=asuth 2019-02-07 19:51:22 +01:00
Jan Varga 01b23e7ba8 Bug 1517089 - Part 4: Send an async IPC message instead of dispatching a runnable to the PBackground thread when clearing private browsing; r=asuth 2019-02-07 19:51:16 +01:00
Jan Varga f0a5d09ef7 Bug 1517089 - Part 3: Move observer registration to InitializeLocalStorage; r=asuth 2019-02-07 19:51:12 +01:00
Jan Varga ed1d36b2c0 Bug 1517089 - Part 2: Move pref initialization to InitializeLocalStorage; r=asuth 2019-02-07 19:51:07 +01:00
Jan Varga 913fd9266d Bug 1517089 - Part 1: Introduce InitializeLocalStorage and call it in nsLayoutStatics::Initialize; r=asuth 2019-02-07 19:50:57 +01:00
Jan Varga d0270542f0 Bug 1525291 - LSNG: Chrome observer notifications for session storage are not distributed to content processes; r=asuth,froydnj
Differential Revision: https://phabricator.services.mozilla.com/D18809
2019-02-06 06:09:57 +01:00
Oana Pop Rus f9cf535efc Backed out changeset 04eecadabb48 (bug 1525291) for build bustages at build/src/obj-firefox/ipc/ipdl/PSessionStorageObserverChild.cpp on a CLOSED TREE 2019-02-07 11:33:00 +02:00
Jan Varga 93f5a88427 Bug 1525291 - LSNG: Chrome observer notifications for session storage are not distributed to content processes; r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D18809
2019-02-06 06:09:57 +01:00
Kris Maglione e930b89c34 Bug 1514594: Part 3 - Change ChromeUtils.import API.
***
Bug 1514594: Part 3a - Change ChromeUtils.import to return an exports object; not pollute global. r=mccr8

This changes the behavior of ChromeUtils.import() to return an exports object,
rather than a module global, in all cases except when `null` is passed as a
second argument, and changes the default behavior not to pollute the global
scope with the module's exports. Thus, the following code written for the old
model:

  ChromeUtils.import("resource://gre/modules/Services.jsm");

is approximately the same as the following, in the new model:

  var {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");

Since the two behaviors are mutually incompatible, this patch will land with a
scripted rewrite to update all existing callers to use the new model rather
than the old.
***
Bug 1514594: Part 3b - Mass rewrite all JS code to use the new ChromeUtils.import API. rs=Gijs

This was done using the followng script:

https://bitbucket.org/kmaglione/m-c-rewrites/src/tip/processors/cu-import-exports.jsm
***
Bug 1514594: Part 3c - Update ESLint plugin for ChromeUtils.import API changes. r=Standard8

Differential Revision: https://phabricator.services.mozilla.com/D16747
***
Bug 1514594: Part 3d - Remove/fix hundreds of duplicate imports from sync tests. r=Gijs

Differential Revision: https://phabricator.services.mozilla.com/D16748
***
Bug 1514594: Part 3e - Remove no-op ChromeUtils.import() calls. r=Gijs

Differential Revision: https://phabricator.services.mozilla.com/D16749
***
Bug 1514594: Part 3f.1 - Cleanup various test corner cases after mass rewrite. r=Gijs
***
Bug 1514594: Part 3f.2 - Cleanup various non-test corner cases after mass rewrite. r=Gijs

Differential Revision: https://phabricator.services.mozilla.com/D16750

--HG--
extra : rebase_source : 359574ee3064c90f33bf36c2ebe3159a24cc8895
extra : histedit_source : b93c8f42808b1599f9122d7842d2c0b3e656a594%2C64a3a4e3359dc889e2ab2b49461bab9e27fc10a7
2019-01-17 10:18:31 -08:00
Ehsan Akhgari e5e885ae31 Bug 1521000 - Part 2: Adjust our clang-format rules to include spaces after the hash for nested preprocessor directives r=sylvestre
# ignore-this-changeset

--HG--
extra : amend_source : 7221c8d15a765df71171099468e7c7faa648f37c
extra : histedit_source : a0cce6015636202bff09e35a13f72e03257a7695
2019-01-18 10:16:18 +01:00
Tom Tung a4b7f90f3f Bug 1436188 - Add telemetry probes to collect the number of failures during the QuotaManager initialization; r=asuth, data-review=chutten
This patch uses categorical keyed Historgram to collect data. While the key is
used to determine whether is it an external error or an internal error (Note:
the external error is referred to low level failure, for example: database
corrupt, OS API errors, ... etc; the internal error is referred to errors, like:
not handle file properly, unexpected filenames, ... etc), the labels for
categorical indicates where the error happens.
Furthermore, this patch make QuotaManager keep traversing the profile even if
an error happens so that we can get more information in the telemetry data.
Please note that these things should only happen in the Nightly Channel.

Differential Revision: https://phabricator.services.mozilla.com/D15908

--HG--
extra : moz-landing-system : lando
2019-01-17 17:12:27 +00:00
Emilio Cobos Álvarez d2ed260822 Bug 1517241 - Rename nsIDocument to mozilla::dom::Document. r=smaug
Summary: Really sorry for the size of the patch. It's mostly automatic
s/nsIDocument/Document/ but I had to fix up in a bunch of places manually to
add the right namespacing and such.

Overall it's not a very interesting patch I think.

nsDocument.cpp turns into Document.cpp, nsIDocument.h into Document.h and
nsIDocumentInlines.h into DocumentInlines.h.

I also changed a bunch of nsCOMPtr usage to RefPtr, but not all of it.

While fixing up some of the bits I also removed some unneeded OwnerDoc() null
checks and such, but I didn't do anything riskier than that.
2019-01-03 17:48:33 +01:00
Sylvestre Ledru cccdda3c2a Bug 1516555 - Reformat everything to the Google coding style r=Ehsan
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D15426

--HG--
extra : moz-landing-system : lando
2018-12-28 15:48:06 +00:00
Gurzau Raul 55697e5bce Merge inbound to mozilla-central. a=merge 2018-12-21 18:36:36 +02:00
Mark Banner 925ccf2751 Bug 1515605 - Enable ESLint for dom/localstorage (manual changes). r=janv
Differential Revision: https://phabricator.services.mozilla.com/D15073

--HG--
extra : moz-landing-system : lando
2018-12-21 10:13:00 +00:00
Mark Banner e802d90ab3 Bug 1515605 - Enable ESLint for dom/localstorage (automatic changes). r=janv
Differential Revision: https://phabricator.services.mozilla.com/D15072

--HG--
extra : moz-landing-system : lando
2018-12-21 10:12:45 +00:00
Jan Varga 9f045e03d5 Bug 1513892 - Part 2: Cache usage in a standalone file; r=asuth
This patch significantly speedups origin initialization by having a special file
for current data usage.
2018-12-21 06:26:36 +01:00
Jan Varga 630b46cb1d Bug 1513892 - Part 1: Cache usage in the database table; r=asuth
This patch slightly speedups origin initialization by having a special column in
the database table for current data usage.
This patch also fixes a problem with length computation of some unicode strings.
2018-12-21 06:26:25 +01:00
Narcis Beleuzu 7cfde3000c Merge inbound to mozilla-central. a=merge 2018-12-20 23:56:42 +02:00
Jan Varga 2e452b2b07 Bug 1505798 - The used storage space for saved cookies,site data, cache displayed in about:preferences is abnormal after enabling NextGen Storage; r=asuth
This patch fixes an oversight when an important hashtable lookup was only done
in debug builds.
2018-12-20 19:20:36 +01:00
Alex Gaynor 55e3f21b2b Bug 1515437 - mark several IPC methods as final; r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D15011

--HG--
extra : moz-landing-system : lando
2018-12-19 21:46:49 +00:00
Jan Varga 849998a8e0 Bug 1513859 - CPOWs can still cause a hang with LSNG enabled; r=asuth 2018-12-19 12:38:23 +01:00
Jan Varga f561d97124 Bug 1513892 - Followup for Part 2; r=asuth
Add a comment about not being able to read 64-bit integers.
2018-12-21 06:39:45 +01:00
Sylvestre Ledru 265e672179 Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
# ignore-this-changeset

--HG--
extra : amend_source : 4d301d3b0b8711c4692392aa76088ba7fd7d1022
2018-11-30 11:46:48 +01:00
Andrew Sutherland 6c6e230a77 Bug 1286798 - Part 53: Review code comments; r=janv,mrbkap,mccr8 2018-11-05 14:04:39 -05:00
Jan Varga 35d317c919 Bug 1286798 - Part 52: Rework tests to use async functions; r=asuth 2018-11-29 21:50:01 +01:00
Jan Varga 4220031bba Bug 1286798 - Part 51: Add tests for archive and shadow database clearing; r=asuth 2018-11-29 21:49:58 +01:00
Jan Varga ccca35f7f3 Bug 1286798 - Part 50: Add support for clearing of the archive and shadow database; r=asuth 2018-11-29 21:49:55 +01:00
Jan Varga 03fc857fab Bug 1286798 - Part 46: Add a pref for database shadowing; r=asuth 2018-11-29 21:49:43 +01:00
Jan Varga 3f301fd6c0 Bug 1286798 - Part 45: Delay flushing to disk using a timer; r=asuth
This improves performance even more by grouping database operations from multiple checkpoints and possibly from multiple processes.
2018-11-29 21:49:40 +01:00
Jan Varga cf023d79b4 Bug 1286798 - Part 44: Switch Connection to use WriteOptimizer too; r=asuth
This eliminates some code duplication.
2018-11-29 21:49:37 +01:00
Jan Varga 1e027be676 Bug 1286798 - Part 43: Coalesce database operations before they are applied to disk; r=asuth
This avoids persistence to disk in many cases since sites aften do setItem/removeItem for the same key in one JS function.
2018-11-29 21:49:34 +01:00
Jan Varga 3177670987 Bug 1286798 - Part 42: Implement snapshot reusing; r=asuth
This improves performance by keeping snapshots around for some time if there are no changes done by other processes. If a snapshot is not destroyed immediately after getting into the stable state then there's a chance that it won't have to be synchronously created again when a new opeartion is requested.
2018-11-29 21:49:31 +01:00
Jan Varga 150cf2ce62 Bug 1286798 - Part 41: Implement QuotaClient::AbortOperationsForProcess; r=asuth
Needed for snapshot reusing.
2018-11-29 21:49:27 +01:00
Jan Varga 8d2b3b583d Bug 1286798 - Part 39: Reduce number of hash lookups; r=asuth 2018-11-29 21:49:20 +01:00
Jan Varga f2c1577652 Bug 1286798 - Part 38: Cache items in an array; r=asuth
Items are now cached also in an array (besides a hashtable). This gives us very fast snapshot initizilization for datastores that fit into the prefill limit. String buffers are reference counted, so memory footprint is only affected by the size of nsString.
This patch also introduces a WriteOptimizer which is an abstraction for collecting, coalescing and applying write operations.
2018-11-29 21:49:17 +01:00
Jan Varga 05662ca09e Bug 1286798 - Part 37: Always preallocate quota when initializing a snapshot; r=asuth
Besides always preallocating quota we now also preallocate more. This mitigates number of additional sync calls.
2018-11-29 21:49:14 +01:00
Jan Varga 5809f14bbd Bug 1286798 - Part 36: Allow snapshot initialization to a specific load state; r=asuth
Before this patch, it was only possible to initialize a snapshot to the Partial state or AllOrderedItems state. Now there's a third state AllOrderedKeys.
This improves performance by eliminating sync calls to parent process when we know nothing about a key in content process (in that case we have to use a sync call to the parent process to see if there's a value for it).
With this patch we always try to send all keys to content when a snapshot is being initialized. For this to work efficiently, we cache the size of all keys.
Having cached size of all keys also allows us to just iterate the mValues hashtable when the size of keys is bigger than snapshot prefill threshold (instead of iterating over the mKeys array and joining with mValues for each particular key).
There's some additional cleanup in snapshot info construction and Datastore::SetItem/RemoveItem/Clear methods.
2018-11-29 21:49:10 +01:00
Jan Varga ec6ab2e194 Bug 1286798 - Part 35: Implement database shadowing; r=asuth,janv
This adds synchronization to the global database used by previous local storage implementation.

This patch was enhanced by asuth to bind attached database path.
Places has shown that argument binding is necessary.  (Profiles may include usernames in their path which can have cool emoji and such.)
2018-11-29 21:49:07 +01:00
Jan Varga 4afa59b9c8 Bug 1286798 - Part 34: Queue database operations until update batch ends; r=asuth
This avoids dispatching to the connection thread for every database operation and paves a way for database shadowing.
2018-11-29 21:49:04 +01:00
Jan Varga 06d1c01932 Bug 1286798 - Part 33: Restrict localStorage from being available on some pages; r=asuth
This matches the old implementation. localStorage shouldn't be available on some pages, for example about:home.
2018-11-29 21:49:01 +01:00
Jan Varga d87888fe25 Bug 1286798 - Part 31: Support for lazy loading of items; r=asuth,mrbkap,mccr8
There's now an upper limit for snapshot prefilling. The value is configurable and is currently set to 4096 bytes.
Snapshots can operate in multiple modes depending on if all items have been loaded or all keys have been received. This should provide the best performance for each specific state.
This patch also adds support for creating explicit snapshots which can be used for testing.
2018-11-29 21:48:54 +01:00
Jan Varga 34cd5113f1 Bug 1286798 - Part 30: Preserve key order when sending items to a content process; r=asuth
Keys needs to be redundantly stored in an array, so we can construct identical hashtable of values in a content process.
2018-11-29 21:48:51 +01:00
Jan Varga c4f55013cf Bug 1286798 - Part 29: Implement implicit snapshotting of databases; r=asuth,mccr8
This improves performance a lot in cases when multiple operations are invoked by a single JS function (number of sync IPC calls is reduced to a minimum). It also improves correctness since changes are not visible to other content processes until a JS function finishes.
The patch implements core infrastructure, all items are sent to content when a snapshot is initialized and everything is fully working. However, sending of all items at once is not optimal for bigger databases. Support for lazy loading of items is implemented in a following patch.
2018-11-29 21:48:47 +01:00
Jan Varga 54be9b7307 Bug 1286798 - Part 28: Add more QuotaClient::IsShuttingDownOnBackgroundThread() and MayProceed() checks; r=asuth
The shutdown and actor destroyed flag is now checked after each dispatch.
2018-11-29 21:48:44 +01:00
Jan Varga 1812608353 Bug 1286798 - Part 27: Share database actors; r=asuth
If a database actor already exists for given origin, reuse it instead of creating a new one. This improves memory footprint a bit and also eliminates some round trips to the parent process.
2018-11-29 21:48:41 +01:00
Jan Varga 0649224345 Bug 1286798 - Part 26: Implement a lazy data migration from old webappsstore.sqlite; r=asuth,janv
This patch was enhanced by asuth to bind attached database path.
Places has shown that argument binding is necessary.  (Profiles may include usernames in their path which can have cool emoji and such.)
2018-11-29 21:48:38 +01:00
Jan Varga 7981be440b Bug 1286798 - Part 25: Add checks for the group and global limit; r=asuth 2018-11-29 21:48:34 +01:00
Jan Varga 6e40a9dccb Bug 1286798 - Part 22: Add support for preloading of datastores; r=asuth
Datastores are preloaded only for content principals. The preloading is triggered as soon as possible to lower the chance of blocking the main thread in content process. If there is no physical database on disk for given origin, datastore is not created. Preloaded datastores are kept alive for 20 seconds.
2018-11-29 21:48:25 +01:00
Jan Varga d015b67aae Bug 1286798 - Part 20: Add checks for the 5 MB origin limit; r=asuth
The 5 MB limit is no longer applied to the whole group (eTLD+1). That will be controlled by quota manager.
2018-11-29 21:48:19 +01:00
Jan Varga 81c542fbe6 Bug 1286798 - Part 19: Implement a helper method for datastore preloading verification; r=asuth
A new type of request is introduced, PBackgroundLSSimpleRequest. This protocol is much simpler than PBackgroundLSRequest which needs to be cancelable.
2018-11-29 21:48:15 +01:00
Jan Varga b968ceb813 Bug 1286798 - Part 18: Verify that data is persisted on disk; r=asuth,mrbkap
New methods open() and close() are added to the Storage WebIDL interface. They are only available when a pref is set and are only intended for testing. There's also a new method resetStoragesForPrincipal() which is used as a callback for close() since datastores don't release directory locks immediately. resetStoragesForPrincipal() requests an exclusive lock for given origin, so it must wait for any exising shared locks to be released.
2018-11-29 21:48:11 +01:00
Jan Varga 944443d481 Bug 1286798 - Part 16: Adjust ClearDataService for new local storage implementation; r=asuth
This patch also adds support for creating LSObjects from chrome for any given origin which can be used for example by xpcshell tests.
2018-11-29 21:48:05 +01:00
Jan Varga 65acbea52d Bug 1286798 - Part 13: Preparation for quota checks; r=asuth 2018-11-29 21:47:55 +01:00
Jan Varga ae769dcc6b Bug 1286798 - Part 12: Honor the storage preference and cookie settings in all LocalStorage API methods; r=asuth 2018-11-29 21:47:52 +01:00
Jan Varga 9bbba97e91 Bug 1286798 - Part 11: Enable tests for session only mode (but only for the old local storage implementation); r=asuth
An attribute for checking if the next gen local storage implementation is enabled is exposed via a new interface nsILocalStorageManager which should be used for any other local storage specific stuff.
2018-11-29 21:47:48 +01:00
Jan Varga be167c5e0b Bug 1286798 - Part 10: Support for storage events; r=asuth,janv
Storage events are fired either directly after getting response from synchronous SetItem call or through observers. When a new onstorage event listener is added, we sycnhronously register an observer in the parent process. There's always only one observer actor per content process.
PBackgroundLSDatabase is now managed by a new PBackgroundLSObject protocol. PBackgroundLSObject is needed to eliminate the need to pass the principal info and document URI everytime a write operation occurs.
Preparation of an observer shares some states with preparation of a datastore, so common stuff now lives in LSRequestBase and preparation of a datastore now implements a nested state machine.

This patch was enhanced by asuth to drop observers only when the last storage listener is removed.
EventListenerRemoved is invoked on any removal, not just the final removal, so we need to make sure it's the final removal before dropping observer.
2018-11-29 21:47:45 +01:00
Jan Varga 08a07f2f36 Bug 1286798 - Part 9: Support for private browsing; r=asuth
Since we keep/cache data in memory anyway, private browsing support is mostly about avoiding any persistence related calls and clearing private browsing datastores when we get a notification. The separation between normal and private browsing datastores is done by the privateBrowsingId attribute which is part of the origin string.
2018-11-29 21:47:41 +01:00
Jan Varga 845fc3a991 Bug 1286798 - Part 8: Persist datastores to disk; r=asuth
Introduced a Connection and a ConnectioThread object.
All I/O requests are processed by a new single thread managed by ConnectionThread object.
Connection objects are prepared by the prepare datastore operation and then kept alive by datastores just like directory locks.
All datastore I/O operations are wrapped in a transaction which automaticaly commits after 5 seconds.
Datastore preparation now also loads all items from the database.
2018-11-29 21:47:38 +01:00
Jan Varga c934ad618d Bug 1286798 - Part 6: Fix a dead lock in the single process case; r=asuth,janv
Expose the nested main event target, so it can be used in the single process case by the parent side to process runnables which need to run on the main thread.
After this change we don't have use hacks like getting profile directory path on the child side and sending it to the parent. The parent side can now do it freely even in the single process case.

This patch was enhanced by asuth to not tunnel the nested main event target through IPC.
2018-11-29 21:47:30 +01:00
Jan Varga c5676a58c7 Bug 1286798 - Part 5: More integration with QuotaManager; r=asuth
Preparation of datastores now creates real database files on disk. The LocalStorage directory is protected by a directory lock.
Infrastructure for database schema upgrades is in place too.
Database actors are now explicitely tracked by the datastore. When the last actor finishes the directory lock is released.
Added also implementation for QuotaClient::GetUsageForOrigin() and QuotaClient::AbortOperations().
2018-11-29 21:47:27 +01:00
Jan Varga 9f71846e2a Bug 1286798 - Part 4: Basic integration with QuotaManager; r=asuth
This adds a new quota client implementation, but only implements ShutdownWorkThreads.
At shutdown we wait for all running operations to finish including database actors which are closed by using an extra IPC message which avoids races between the parent and child.
Databases are dropped on the child side as soon as they are not used (e.g. after unlinking by the cycle collector).
2018-11-29 21:47:24 +01:00
Jan Varga 60831f2e38 Bug 1286798 - Part 3: New basic (memory only) implementation of LocalStorage; r=asuth,mccr8
The implementation is based on a cache (datastore) living in the parent process and sync IPC calls initiated from content processes.
IPC communication is done using per principal/origin database actors which connect to the datastore.
The synchronous blocking of the main thread is done by creating a nested event target and spinning the event loop.
2018-11-29 21:47:20 +01:00
Jan Varga cca6633fac Bug 1539750 - LSNG: Add a timer for ShutdownWorkThreads; r=asuth, dr=chutten
Differential Revision: https://phabricator.services.mozilla.com/D25561
2019-04-01 09:57:48 +02:00
Jan Varga 73569a7b74 Bug 1541325 - LSNG: Result of SendFinish call is not checked; r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D25909
2019-04-03 10:27:49 +02:00