Files
Randell Jesup 5ceef1eef2 Bug 2049534 - Add cache2 disk index corruption-recovery test r=necko-reviewers,valentin
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
2026-07-01 21:47:05 +00:00

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);
};