summaryrefslogtreecommitdiffstats
path: root/toolkit/components/url-classifier/LookupCacheV4.h
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/url-classifier/LookupCacheV4.h')
-rw-r--r--toolkit/components/url-classifier/LookupCacheV4.h70
1 files changed, 70 insertions, 0 deletions
diff --git a/toolkit/components/url-classifier/LookupCacheV4.h b/toolkit/components/url-classifier/LookupCacheV4.h
new file mode 100644
index 0000000000..b0bfbadcc3
--- /dev/null
+++ b/toolkit/components/url-classifier/LookupCacheV4.h
@@ -0,0 +1,70 @@
+//* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* 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 LookupCacheV4_h__
+#define LookupCacheV4_h__
+
+#include "LookupCache.h"
+
+namespace mozilla {
+namespace safebrowsing {
+
+// Forward declaration.
+class TableUpdateV4;
+
+class LookupCacheV4 final : public LookupCache {
+ public:
+ explicit LookupCacheV4(const nsACString& aTableName,
+ const nsACString& aProvider,
+ nsCOMPtr<nsIFile>& aStoreFile)
+ : LookupCache(aTableName, aProvider, aStoreFile) {}
+
+ virtual nsresult Has(const Completion& aCompletion, bool* aHas,
+ uint32_t* aMatchLength, bool* aConfirmed) override;
+
+ nsresult Build(PrefixStringMap& aPrefixMap);
+
+ nsresult GetPrefixes(PrefixStringMap& aPrefixMap);
+ nsresult GetFixedLengthPrefixes(FallibleTArray<uint32_t>& aPrefixes);
+ nsresult GetFixedLengthPrefixByIndex(uint32_t aIndex,
+ uint32_t* aOutPrefix) const;
+
+ // ApplyUpdate will merge data stored in aTableUpdate with prefixes in
+ // aInputMap.
+ nsresult ApplyUpdate(RefPtr<TableUpdateV4> aTableUpdate,
+ PrefixStringMap& aInputMap, PrefixStringMap& aOutputMap);
+
+ nsresult AddFullHashResponseToCache(const FullHashResponseMap& aResponseMap);
+
+ nsresult WriteMetadata(RefPtr<const TableUpdateV4> aTableUpdate);
+ nsresult LoadMetadata(nsACString& aState, nsACString& aChecksum);
+
+ virtual nsresult LoadMozEntries() override;
+
+ static constexpr int VER = 4;
+ static constexpr uint32_t MAX_METADATA_VALUE_LENGTH = 256;
+ static constexpr uint32_t VLPSET_MAGIC = 1;
+ static constexpr uint32_t VLPSET_VERSION = 0x36044a35;
+
+ protected:
+ virtual nsCString GetPrefixSetSuffix() const override;
+ nsCString GetMetadataSuffix() const;
+
+ private:
+ ~LookupCacheV4() = default;
+
+ virtual int Ver() const override { return VER; }
+
+ virtual nsresult LoadLegacyFile() override;
+ virtual nsresult ClearLegacyFile() override;
+
+ virtual void GetHeader(Header& aHeader) override;
+ virtual nsresult SanityCheck(const Header& aHeader) override;
+};
+
+} // namespace safebrowsing
+} // namespace mozilla
+
+#endif