mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-19 16:25:38 +00:00
18fae65f38
This requires replacing inclusions of it with inclusions of more specific prefs files. The exception is that StaticPrefsAll.h, which is equivalent to StaticPrefs.h, and is used in `Codegen.py` because doing something smarter is tricky and suitable for a follow-up. As a result, any change to StaticPrefList.yaml will still trigger recompilation of all the generated DOM bindings files, but that's still a big improvement over trigger recompilation of every file that uses static prefs. Most of the changes in this commit are very boring. The only changes that are not boring are modules/libpref/*, Codegen.py, and ServoBindings.toml. Differential Revision: https://phabricator.services.mozilla.com/D39138 --HG-- extra : moz-landing-system : lando
132 lines
4.2 KiB
C++
132 lines
4.2 KiB
C++
/* 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/. */
|
|
|
|
#ifndef CacheObserver__h__
|
|
#define CacheObserver__h__
|
|
|
|
#include "nsIObserver.h"
|
|
#include "nsIFile.h"
|
|
#include "nsCOMPtr.h"
|
|
#include "nsWeakReference.h"
|
|
#include "mozilla/StaticPrefs_browser.h"
|
|
#include "mozilla/StaticPrefs_privacy.h"
|
|
#include <algorithm>
|
|
|
|
namespace mozilla {
|
|
namespace net {
|
|
|
|
class CacheObserver : public nsIObserver, public nsSupportsWeakReference {
|
|
virtual ~CacheObserver() = default;
|
|
|
|
NS_DECL_THREADSAFE_ISUPPORTS
|
|
NS_DECL_NSIOBSERVER
|
|
|
|
static nsresult Init();
|
|
static nsresult Shutdown();
|
|
static CacheObserver* Self() { return sSelf; }
|
|
|
|
// Access to preferences
|
|
static bool UseDiskCache() {
|
|
return StaticPrefs::browser_cache_disk_enable();
|
|
}
|
|
static bool UseMemoryCache() {
|
|
return StaticPrefs::browser_cache_memory_enable();
|
|
}
|
|
static uint32_t MetadataMemoryLimit() // result in kilobytes.
|
|
{
|
|
return StaticPrefs::browser_cache_disk_metadata_memory_limit();
|
|
}
|
|
static uint32_t MemoryCacheCapacity(); // result in kilobytes.
|
|
static uint32_t DiskCacheCapacity() // result in kilobytes.
|
|
{
|
|
return sDiskCacheCapacity;
|
|
}
|
|
static void SetDiskCacheCapacity(uint32_t); // parameter in kilobytes.
|
|
static uint32_t DiskFreeSpaceSoftLimit() // result in kilobytes.
|
|
{
|
|
return StaticPrefs::browser_cache_disk_free_space_soft_limit();
|
|
}
|
|
static uint32_t DiskFreeSpaceHardLimit() // result in kilobytes.
|
|
{
|
|
return StaticPrefs::browser_cache_disk_free_space_hard_limit();
|
|
}
|
|
static bool SmartCacheSizeEnabled() {
|
|
return StaticPrefs::browser_cache_disk_smart_size_enabled();
|
|
}
|
|
static uint32_t PreloadChunkCount() {
|
|
return StaticPrefs::browser_cache_disk_preload_chunk_count();
|
|
}
|
|
static uint32_t MaxMemoryEntrySize() // result in kilobytes.
|
|
{
|
|
return StaticPrefs::browser_cache_memory_max_entry_size();
|
|
}
|
|
static uint32_t MaxDiskEntrySize() // result in kilobytes.
|
|
{
|
|
return StaticPrefs::browser_cache_disk_max_entry_size();
|
|
}
|
|
static uint32_t MaxDiskChunksMemoryUsage(
|
|
bool aPriority) // result in kilobytes.
|
|
{
|
|
return aPriority
|
|
? StaticPrefs::
|
|
browser_cache_disk_max_priority_chunks_memory_usage()
|
|
: StaticPrefs::browser_cache_disk_max_chunks_memory_usage();
|
|
}
|
|
static uint32_t HalfLifeSeconds() { return sHalfLifeHours * 60.0F * 60.0F; }
|
|
static bool ClearCacheOnShutdown() {
|
|
return StaticPrefs::privacy_sanitize_sanitizeOnShutdown() &&
|
|
StaticPrefs::privacy_clearOnShutdown_cache();
|
|
}
|
|
static bool CacheFSReported() { return sCacheFSReported; }
|
|
static void SetCacheFSReported();
|
|
static bool HashStatsReported() { return sHashStatsReported; }
|
|
static void SetHashStatsReported();
|
|
static uint32_t TelemetryReportID() { return sTelemetryReportID; }
|
|
static void SetTelemetryReportID(uint32_t);
|
|
static uint32_t CacheAmountWritten() // result in kilobytes
|
|
{
|
|
return sCacheAmountWritten;
|
|
}
|
|
static void SetCacheAmountWritten(uint32_t); // parameter in kilobytes.
|
|
static void ParentDirOverride(nsIFile** aDir);
|
|
|
|
static bool EntryIsTooBig(int64_t aSize, bool aUsingDisk);
|
|
|
|
static uint32_t MaxShutdownIOLag() {
|
|
return StaticPrefs::browser_cache_max_shutdown_io_lag();
|
|
}
|
|
static bool IsPastShutdownIOLag();
|
|
|
|
static bool ShuttingDown() {
|
|
return sShutdownDemandedTime != PR_INTERVAL_NO_TIMEOUT;
|
|
}
|
|
|
|
private:
|
|
static StaticRefPtr<CacheObserver> sSelf;
|
|
|
|
void StoreDiskCacheCapacity();
|
|
void StoreCacheFSReported();
|
|
void StoreHashStatsReported();
|
|
void StoreTelemetryReportID();
|
|
void StoreCacheAmountWritten();
|
|
void AttachToPreferences();
|
|
|
|
static int32_t sAutoMemoryCacheCapacity;
|
|
static Atomic<uint32_t, Relaxed> sDiskCacheCapacity;
|
|
static float sHalfLifeHours;
|
|
static bool sCacheFSReported;
|
|
static bool sHashStatsReported;
|
|
static Atomic<PRIntervalTime> sShutdownDemandedTime;
|
|
static Atomic<uint32_t, Relaxed> sTelemetryReportID;
|
|
static Atomic<uint32_t, Relaxed> sCacheAmountWritten;
|
|
|
|
// Non static properties, accessible via sSelf
|
|
nsCOMPtr<nsIFile> mCacheParentDirectoryOverride;
|
|
};
|
|
|
|
} // namespace net
|
|
} // namespace mozilla
|
|
|
|
#endif
|