gecko-dev/netwerk/cache2/CacheObserver.h
Nicholas Nethercote 18fae65f38 Bug 1563139 - Remove StaticPrefs.h. r=glandium
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
2019-07-26 01:10:23 +00:00

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