/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set ts=8 sts=2 et sw=2 tw=80: */ /* 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 "UrlClassifierFeatureGlobalCache.h" #include "mozilla/StaticPrefs_browser.h" #include "mozilla/StaticPtr.h" #include "nsCOMPtr.h" namespace mozilla { namespace net { namespace { #define GLOBAL_CACHE_FEATURE_NAME "globalCache" #define URLCLASSIFIER_GLOBAL_CACHE_TABLE "urlclassifier.globalCacheTable" StaticRefPtr gFeatureGlobalCache; } // namespace UrlClassifierFeatureGlobalCache::UrlClassifierFeatureGlobalCache() : UrlClassifierFeatureBase( nsLiteralCString(GLOBAL_CACHE_FEATURE_NAME), nsLiteralCString(URLCLASSIFIER_GLOBAL_CACHE_TABLE), ""_ns, // aPrefEntitylistTables ""_ns, // aPrefBlocklistHosts ""_ns, // aPrefEntitylistHosts ""_ns, // aPrefBlocklistTableName ""_ns, // aPrefEntitylistTableName ""_ns) // aPrefExceptionHosts {} /* static */ const char* UrlClassifierFeatureGlobalCache::Name() { return GLOBAL_CACHE_FEATURE_NAME; } /* static */ void UrlClassifierFeatureGlobalCache::MaybeInitialize() { if (!gFeatureGlobalCache) { gFeatureGlobalCache = new UrlClassifierFeatureGlobalCache(); gFeatureGlobalCache->InitializePreferences(); } } /* static */ void UrlClassifierFeatureGlobalCache::MaybeShutdown() { if (gFeatureGlobalCache) { gFeatureGlobalCache->ShutdownPreferences(); gFeatureGlobalCache = nullptr; } } /* static */ already_AddRefed UrlClassifierFeatureGlobalCache::MaybeCreate() { if (!StaticPrefs::browser_safebrowsing_globalCache_enabled()) { return nullptr; } MaybeInitialize(); MOZ_ASSERT(gFeatureGlobalCache); RefPtr self = gFeatureGlobalCache; return self.forget(); } /* static */ already_AddRefed UrlClassifierFeatureGlobalCache::GetIfNameMatches(const nsACString& aName) { if (!aName.EqualsLiteral(GLOBAL_CACHE_FEATURE_NAME)) { return nullptr; } MaybeInitialize(); MOZ_ASSERT(gFeatureGlobalCache); nsCOMPtr self = gFeatureGlobalCache.get(); return self.forget(); } NS_IMETHODIMP UrlClassifierFeatureGlobalCache::ProcessChannel( nsIChannel* aChannel, const nsTArray& aList, const nsTArray& aHashes, bool* aShouldContinue) { return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP UrlClassifierFeatureGlobalCache::GetURIByListType( nsIChannel* aChannel, nsIUrlClassifierFeature::listType aListType, nsIUrlClassifierFeature::URIType* aURIType, nsIURI** aURI) { return NS_ERROR_NOT_IMPLEMENTED; } } // namespace net } // namespace mozilla