mirror of
https://github.com/mozilla-firefox/firefox
synced 2026-08-12 12:35:33 +00:00
A corrupt on-disk index is detected on the next startup by its failed integrity check; the cache then rebuilds the index from the entry files, leaving all entries accessible. Add an xpcshell test that corrupts the index across a simulated restart and verifies recovery, and register the new cache2 index tests in the manifest. Differential Revision: https://phabricator.services.mozilla.com/D308163
54 lines
1.9 KiB
Plaintext
54 lines
1.9 KiB
Plaintext
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include "nsISupports.idl"
|
|
|
|
interface nsIObserver;
|
|
|
|
/**
|
|
* This is an internal interface used only for testing purposes.
|
|
*
|
|
* THIS IS NOT AN API TO BE USED BY EXTENSIONS! ONLY USED BY MOZILLA TESTS.
|
|
*/
|
|
[scriptable, builtinclass, uuid(4e8ba935-92e1-4a74-944b-b1a2f02a7480)]
|
|
interface nsICacheTesting : nsISupports
|
|
{
|
|
void suspendCacheIOThread(in uint32_t aLevel);
|
|
void resumeCacheIOThread();
|
|
void flush(in nsIObserver aObserver);
|
|
|
|
/**
|
|
* Shut down and restart the disk cache IO subsystem in-process, to simulate a
|
|
* browser restart without firing the (guarded) shutdown observer topics.
|
|
* shutdownCacheForTesting() closes all handles and writes a clean index;
|
|
* startupCacheForTesting() re-initializes and re-reads the index from disk. A
|
|
* test can corrupt the on-disk index between the two calls to exercise the
|
|
* startup integrity-check / rebuild path. Callers should flush() before
|
|
* shutting down, and wait for the index to become ready after startup (e.g.
|
|
* via asyncGetDiskConsumption).
|
|
*/
|
|
void shutdownCacheForTesting();
|
|
void startupCacheForTesting();
|
|
|
|
/**
|
|
* Clear the in-memory DictionaryCache but keep disk data intact.
|
|
* This forces dictionary entries to be reloaded from disk on next access.
|
|
*/
|
|
void clearDictionaryCacheMemory();
|
|
|
|
/**
|
|
* Corrupt the hash of a stored dictionary for testing hash mismatch handling.
|
|
* @param aURI The URI of the dictionary to corrupt
|
|
*/
|
|
void corruptDictionaryHash(in ACString aURI);
|
|
|
|
/**
|
|
* Clear the loaded dictionary data for a specific entry while keeping the
|
|
* entry metadata (including hash). This forces the data to be reloaded from
|
|
* disk on next prefetch.
|
|
* @param aURI The URI of the dictionary
|
|
*/
|
|
void clearDictionaryDataForTesting(in ACString aURI);
|
|
};
|