Cache API is currently not consistent regarding unknown files. Some unknown
files are reported and ignored, other unknown files are reported and deleted or
just silently deleted without a warning.
Quota Manager, IndexedDB, SimpleDB and LocalStorage currently report and ignore
such files. We should try to unify this in future.
Differential Revision: https://phabricator.services.mozilla.com/D76718
All unknown files in the files and journals directory are now properly filtered
out if the filename can't be converted to an integer.
Differential Revision: https://phabricator.services.mozilla.com/D76703
The functionality needs to be verified for all initialization states (modes)
since some methods don't automatically trigger temporary storage initialization
which results in calling different quota client methods (for example
GetUsageForOrigin calls either Client::InitOrigin or Client::GetUsageForOrigin).
Depends on D76701
Differential Revision: https://phabricator.services.mozilla.com/D76702
A generated profile now matches real world profiles:
- contains directory metadata
- contains real quota client specific files
- contains unique non-empty unknown files (instead of empty foo.bar files)
- contains unique non-empty unknown directories (instead of empty foo dirs)
There's now only one origin directory which contains unknown files and
directories. All methods that take a principal are verified to work with the
origin direcrtory.
Depends on D76095
Differential Revision: https://phabricator.services.mozilla.com/D76700
We plan to replace this test with more thorough tests in bug 1620277, but for
now it's still needed and will be part of a short term fix for ignoring
unknown files and directories.
Differential Revision: https://phabricator.services.mozilla.com/D75948
For now, only test_listOrigins.js, test_originWithCaret.js and test_simpledb.js
can run in a child process because they don't need to set preferences or access
files in the profile directory.
We will be able to run more tests in a child process once we have SpecialPowers
for xpcshell implemented using JSProcessActors and when we expose the base
directory used by QuotaManager through a new QuotaManagerService method (to
avoid getting the profile directory using nsIDirectoryService because that
doesn't work in a child process).
Differential Revision: https://phabricator.services.mozilla.com/D75281
The refactoring consists of:
- moving tests into dedicated directories for given test type
(browser, mochitest, xpcshell)
- replacing add_test with addTest in browser tests to share common setup code
- adding a way to synchronously load scripts in all test types by providing a
path relative to the top level directory
- adding a way to explicitely run a mochitest inside a worker context
(loadWorkerScript)
- removing the need to declare testGenerator in tests
- removing the need to set some common preferences in individual tests
- sharing common functions for:
- system context (system.js)
- content context (content.js)
- browser tests (browser.js)
- mochitest tests (mochitest.js)
- xpcshell tests (xpcshell.js)
- nested content test inside a browser test (nestedtest.js)
- buffer/view/blob/file (file.js)
Differential Revision: https://phabricator.services.mozilla.com/D73149
Also adds missing includes in some files, these were previously only transivitely
included through mozilla/TypeTraits.h.
Differential Revision: https://phabricator.services.mozilla.com/D68561
--HG--
extra : moz-landing-system : lando
To correctly implement this, it must be known on instantiation whether E is
copy-constructible, which is not the case if only a forward declaration is
available. This can be resolved either by making sure a full definition of E is
available, which is preferable. But in cases where this is not (easily) possible,
the information can be explicitly provided by the MOZ_DECLARE_COPY_CONSTRUCTIBLE
and MOZ_DECLARE_NON_COPY_CONSTRUCTIBLE macros. In particular, declarations for
IPDL-declared types are added to nsTArray.h itself, like it was already done
for MOZ_DECLARE_RELOCATE_USING_MOVE_CONSTRUCTOR.
Differential Revision: https://phabricator.services.mozilla.com/D66244
--HG--
extra : moz-landing-system : lando
Specifically, this renames
* nsTArray_CopyChooser to nsTArray_RelocationStrategy
* the Copy template argument of nsTArray_base to RelocationStrategy
* nsTArray_CopyWithConstructors to nsTArray_RelocateUsingMoveConstructor
* nsTArray_CopyWithMemutils to nsTArray_RelocateUsingMemutils
* DECLARE_USE_COPY_CONSTRUCTORS to MOZ_DECLARE_RELOCATE_USING_MOVE_CONSTRUCTOR
Differential Revision: https://phabricator.services.mozilla.com/D66243
--HG--
extra : moz-landing-system : lando
All initialization related operations, the clear all operation and reset
operations now fail if storage is not initialized. All other operations make
sure storage is initialized by setting the mNeedsStorageInit flag.
DirectoryWork() for these operations now assert that storage is initialized.
Differential Revision: https://phabricator.services.mozilla.com/D65938
--HG--
extra : moz-landing-system : lando
The aResetAll param has been removed from resetStoragesForPrincipal since
there's no use case for it right now (if there's a use case for it in future, it
should be handled by a separate method like resetOriginsByPrefix).
Differential Revision: https://phabricator.services.mozilla.com/D66951
--HG--
extra : moz-landing-system : lando
ResetOriginOp has been separated from ClearOriginOp for better readibility of
code.
Differential Revision: https://phabricator.services.mozilla.com/D66949
--HG--
extra : moz-landing-system : lando
This patch moves client type checks to the parameter validation phase. The checks are now done using new Client::IsValidType method.
Differential Revision: https://phabricator.services.mozilla.com/D66948
--HG--
extra : moz-landing-system : lando
This patch makes use of the IsValidPersistenceType function it adds at places where individual checks were done before. It also moves some checks to the parameter validation phase.
Differential Revision: https://phabricator.services.mozilla.com/D66947
--HG--
extra : moz-landing-system : lando
These methods never return false, so they can be safely converted to return void.
Differential Revision: https://phabricator.services.mozilla.com/D64987
--HG--
extra : moz-landing-system : lando
This removes the need for explicit #ifdef NS_BUILD_REFCNT_LOGGING without
introducing user-defined destructors when it is not defined.
Also, some uses of virtual for declaring destructors are replaced by the
appropriate override declaration through these changes.
Differential Revision: https://phabricator.services.mozilla.com/D62604
--HG--
extra : moz-landing-system : lando
This removes the need for explicit #ifdef NS_BUILD_REFCNT_LOGGING without
introducing user-defined destructors when it is not defined.
Also, some uses of virtual for declaring destructors are replaced by the
appropriate override declaration through these changes.
Differential Revision: https://phabricator.services.mozilla.com/D62604
--HG--
extra : moz-landing-system : lando
This is a preparation for "afterInitTemporaryStorage" key which requires initialized storage.
Differential Revision: https://phabricator.services.mozilla.com/D62055
--HG--
extra : moz-landing-system : lando
The new verifyStorage() function takes current storage structure on disk and compares it with the expected structure. The expected structure is defined in JSON and consists of a per test package definition and a shared package definition. The shared package definition contains unknown files and directories which need to be ignored in all upgrade methods.
The new infrastructure for checking storage structure will be used later in other tests to verify handling of unknown or obsolete stuff for example during temporary storage initialization.
Differential Revision: https://phabricator.services.mozilla.com/D61450
--HG--
extra : moz-landing-system : lando
CLOSED TREE
Backed out changeset cb706e608d58 (bug 1608759)
Backed out changeset f2a08319ac10 (bug 1608759)
--HG--
extra : amend_source : 251fcc6d6304fe6a4ed240f6d1d409fc168f1c31
The new verifyStorage() function takes current storage structure on disk and compares it with the expected structure. The expected structure is defined in JSON and consists of a per test package definition and a shared package definition. The shared package definition contains unknown files and directories which need to be ignored in all upgrade methods.
The new infrastructure for checking storage structure will be used later in other tests to verify handling of unknown or obsolete stuff for example during temporary storage initialization.
Differential Revision: https://phabricator.services.mozilla.com/D61450
--HG--
extra : moz-landing-system : lando
This patch also refactors relevant upgrade methods to do the removal directly.
Differential Revision: https://phabricator.services.mozilla.com/D59702
--HG--
extra : moz-landing-system : lando
Changes:
- use separate directory for testing of telemetry
- use separate zip packages
- test entire histogram snapshots (not just particular key)
- a test doesn't need to do own cleanup anymore
- general cleanup
Differential Revision: https://phabricator.services.mozilla.com/D58382
--HG--
rename : dom/quota/test/unit/head.js => dom/quota/test/unit/head-shared.js
rename : dom/quota/test/unit/test_qm_first_initialization_attempt.js => dom/quota/test/unit/telemetry/test_qm_first_initialization_attempt.js
rename : dom/quota/test/unit/version2_0upgrade_profile.zip => dom/quota/test/unit/telemetry/version1_0_profile.zip
rename : dom/quota/test/unit/version2_1upgrade_profile.zip => dom/quota/test/unit/telemetry/version2_0_profile.zip
rename : dom/quota/test/unit/version2_2upgrade_profile.zip => dom/quota/test/unit/telemetry/version2_1_profile.zip
extra : moz-landing-system : lando
This changeset is a simple find and replace of `MOZ_FALLTHROUGH` and `[[fallthrough]]`.
Unfortunately, the MOZ_FALLTHROUGH_ASSERT macro (to assert on case fallthrough in debug builds) is still necessary after switching from [[clang::fallthrough]] to [[fallthrough]] because:
* MOZ_ASSERT(false) followed by [[fallthrough]] triggers a -Wunreachable-code warning in DEBUG builds
* but MOZ_ASSERT(false) without [[fallthrough]] triggers a -Wimplicit-fallthrough warning in NDEBUG builds.
Differential Revision: https://phabricator.services.mozilla.com/D56440
--HG--
extra : moz-landing-system : lando
This is generally pretty straightforward, and rewrites nearly all calls. It
skips the ones that it can detect using frame script globals like
`sendAsyncMessage`, though.
Differential Revision: https://phabricator.services.mozilla.com/D53740
--HG--
extra : moz-landing-system : lando