This patch mainly whitelist all the dot-files in the persistence directories and
origin directories. Ignore dot-files was first proposed in
Bug 944918 comment 39. ".desktop" was also mentioned in that comment Besides,
"desktop.ini" was first mentioned in Bug 944918 comment 42, "Thumbs.db" was
mentioned in 1493262 comment 11, and "Desktop.ini" was first mentioned
Bug 1423917 comment 46.Thus, this patch also whitelist them all during
initialization.
--HG--
extra : rebase_source : 6dc372c7e4bfc6dbe9774b5a9c72b95d20b7bea9
This patch uses nsLiteralCString instead of nsCString for avoiding increasing
the number of static constructors. Also, it removes the declaration of
kInternalError and kExternalError on Beta and Release since they won't be use
in these channels.
Differential Revision: https://phabricator.services.mozilla.com/D16981
--HG--
extra : moz-landing-system : lando
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
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.
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.)
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.
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.
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.
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().
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).
This field was originally added for the b2g-only DeviceStorage API,
and isn't used for anything else right now.
This reverts the remaining parts of bug 1043136 and bug 1043136
as well as some support code for mobile.
Differential Revision: https://phabricator.services.mozilla.com/D10014
--HG--
extra : moz-landing-system : lando
This patch moves MaybeUpgradeClients to RepositoryOperationBase class from
UpgradeStorageFrom1_0To2_0Helper and UpgradeStorageFrom2_0To2_1Helper so that
lines of code can be reused.
--HG--
extra : rebase_source : 1131ed8b01ed91b7bc5b362a7b1aaf15aa681a95
This patch adds a new function QM::UpgradeStorage() to reuse lines of code in
QM:UpgradeStorageFrom0_0To1_0(), QM:UpgradeStorageFrom1_0To2_0(), and
QM:UpgradeStorageFrom2_0To2_1().
--HG--
extra : rebase_source : 7b1cba884d375e0609f5c622a798c9c0f8129b90
To do this, it also rename the StorageDirectoryHelper to StorageOperationBase to
align with classes naming. Bsides, this patch renames
RepositoryOperationBase::DoUpgrade() to
RepositoryOperationBase::ProcessRepository().
--HG--
extra : rebase_source : a7f57a6b670e18b88cf3484bfdfd86f98b23e43a
This patch mainly create a new helper class and it inherits from
StorageDirectoraryHelper to reuse the code in
CreateOrUpgradeDirectoryMetadataHelper::CreateOrUpgradeMetadataFiles(),
UpgradeStorageFrom0_0To1_0Helper::DoUpgrade(),
UpgradeStorageFrom1_0To2_0Helper::DoUpgrade(),
UpgradeStorageFrom2_0To2_1Helper::DoUpgrade().
--HG--
extra : rebase_source : cace0f54689cb13d42fb797833a13c861750be18
This patch adds a telemetry probe to track the time for initializing both
the default and the temporary repositories.
--HG--
extra : rebase_source : f879a3bc53c41f209a2a09b322db43d27f9af4f8
A storage pressure event should be fired when the current usage is greater than
the global limit. Currently, the QuotaManger checks the usage and the limit in
two different cases, and this test verfiies both cases do fire a storage
pressure event with a correct value of usage. The first one is that a quota
client is asking for writting a new storage into the disk, but it will
make the currnet usage become greater than the global limit. The other one is
that the calculating limit is less than the current usage while initilaizing the
temporary storage.
--HG--
extra : rebase_source : 0ce65ee177175462ac8928f70972699c428a1135
Bug 1372116 reported that PersistOp() didn't create an originInfo object for the
persisting origin if the temporary storage had been initialized. The test
verifies that no matter the temporary storage was initialized or not the
PersistOp should hanlde the originInfo object properly so that the persisting
origin will be bounded by the global limit.
--HG--
extra : rebase_source : b2bd9553094f03a89cc8e9e733fe6909ade1f430
Bug 1298392 introduced persist() to QuotaManager. This patch intends to verify
that normally the oldest origin will be evicted if the global limit is reached,
but if the oldest origin is persisted, then it won't be evicted.
--HG--
extra : rebase_source : 72fc4cda25545df28cb15bffd9255ba51fe628ab
Bug 1482812 enabled the check for whether origin is valid in both Beta and
Release channels, but it didn't enable the test under the quota folder. That
test verified the check does work while executing storage.persist() if the
origin hasn't been initialized yet. Thus, this patch removes the pref to verify
this check does work for storage.persist() on Beta and the Release channels.
--HG--
extra : rebase_source : c454c57189fbc0557e9c83783adce5efb40304a7
In order to allow JS callers to use nsISimpleEnumerator instances with the JS
iteration protocol, we'll need to additional methods to every instance. Since
we currently have a large number of unrelated implementations, it would be
best if they could share the same implementation for the JS portion of the
protocol.
This patch adds a stub nsSimpleEnumerator base class, and updates all existing
implementations to inherit from it. A follow-up will add a new base interface
to this class, and implement the additional functionality required for JS
iteration.
Differential Revision: https://phabricator.services.mozilla.com/D3725
--HG--
extra : rebase_source : ad66d7b266856d5a750c772e4710679fab9434b1
extra : histedit_source : a83ebffbf2f0b191ba7de9007f73def6b9a955b8
This patch, basically, turns the check. To avoid checking the same direcotries
multiple time, it creates a member hashtable |mValidOrigins| in QuotaManager and
use it in EnsureOriginDirectory(). Since it needs to use the member hashtable,
this patch also moves EnsureOriginDirectory() to become a QuotaManager member
function.
--HG--
extra : rebase_source : 170f749b07ca955e1dc41a627d339709381ffcad
While showing a doorhanger permisison prompt, if the user presses the ESC key
we call the secondary action callback, passing in whether any checkbox on
the popup notification was checked.
In the case of an autoplay-media permission prompt, we have a "remember"
checkbox, which is checked by default. So pressing ESC means the user will
remember a "block" result for the current site.
We believe that users don't expect pressing ESC to result in a remembered
decision, they expect pressing ESC to avoid making a decision. So we want to
ignore the checkbox when ESC is pressed for autoplay-media.
So this patch adds a new PopupNotification behaviour which reports the source
of event which caused the action callback to be called. This enables the ESC
key press to ignore storing a permission.
Note: the change here to not store a permission on ESC press applies to all
permissions, not just autoplay-media.
MozReview-Commit-ID: IUWFN8LG9VF
--HG--
extra : rebase_source : b004bc211177a7bfb6dcea563d75db9a6750b214
Fix clang-tidy warning about bool pointers:
[misc-bool-pointer-implicit-conversion] dom/quota/ActorsParent.cpp:4168:7: warning: dubious check of 'bool *' against 'nullptr', did you mean to dereference it?
MozReview-Commit-ID: C6QdeJlf71C
--HG--
extra : rebase_source : cb2e19e41bed6cc1456e89acce65747558306bcf
This patch is an automatic replacement of s/NS_NOTREACHED/MOZ_ASSERT_UNREACHABLE/. Reindenting long lines and whitespace fixups follow in patch 6b.
MozReview-Commit-ID: 5UQVHElSpCr
--HG--
extra : rebase_source : 4c1b2fc32b269342f07639266b64941e2270e9c4
extra : source : 907543f6eae716f23a6de52b1ffb1c82908d158a
This was done automatically replacing:
s/mozilla::Move/std::move/
s/ Move(/ std::move(/
s/(Move(/(std::move(/
Removing the 'using mozilla::Move;' lines.
And then with a few manual fixups, see the bug for the split series..
MozReview-Commit-ID: Jxze3adipUh
The change to RootAccessible.cpp fixes an obvious bug introduced in bug 741707.
The visibility changes in gfx/thebes are because NS_DECL_ISUPPORTS has a
trailing "public:" that those classes were relying on to have public
constructors.
MozReview-Commit-ID: IeB8KIJCGhU
This patch was autogenerated by my decomponents.py
It covers almost every file with the extension js, jsm, html, py,
xhtml, or xul.
It removes blank lines after removed lines, when the removed lines are
preceded by either blank lines or the start of a new block. The "start
of a new block" is defined fairly hackily: either the line starts with
//, ends with */, ends with {, <![CDATA[, """ or '''. The first two
cover comments, the third one covers JS, the fourth covers JS embedded
in XUL, and the final two cover JS embedded in Python. This also
applies if the removed line was the first line of the file.
It covers the pattern matching cases like "var {classes: Cc,
interfaces: Ci, utils: Cu, results: Cr} = Components;". It'll remove
the entire thing if they are all either Ci, Cr, Cc or Cu, or it will
remove the appropriate ones and leave the residue behind. If there's
only one behind, then it will turn it into a normal, non-pattern
matching variable definition. (For instance, "const { classes: Cc,
Constructor: CC, interfaces: Ci, utils: Cu } = Components" becomes
"const CC = Components.Constructor".)
MozReview-Commit-ID: DeSHcClQ7cG
--HG--
extra : rebase_source : d9c41878036c1ef7766ef5e91a7005025bc1d72b