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 000000000..c2f3cafd2
--- /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,
+ nsIFile* aStoreFile)
+ : LookupCache(aTableName, aProvider, aStoreFile) {}
+ ~LookupCacheV4() {}
+
+ virtual nsresult Init() override;
+ virtual nsresult Has(const Completion& aCompletion,
+ bool* aHas, bool* aComplete) override;
+
+ nsresult Build(PrefixStringMap& aPrefixMap);
+
+ nsresult GetPrefixes(PrefixStringMap& aPrefixMap);
+
+ // ApplyUpdate will merge data stored in aTableUpdate with prefixes in aInputMap.
+ nsresult ApplyUpdate(TableUpdateV4* aTableUpdate,
+ PrefixStringMap& aInputMap,
+ PrefixStringMap& aOutputMap);
+
+ nsresult WriteMetadata(TableUpdateV4* aTableUpdate);
+ nsresult LoadMetadata(nsACString& aState, nsACString& aChecksum);
+
+ static const int VER;
+
+protected:
+ virtual nsresult ClearPrefixes() override;
+ virtual nsresult StoreToFile(nsIFile* aFile) override;
+ virtual nsresult LoadFromFile(nsIFile* aFile) override;
+ virtual size_t SizeOfPrefixSet() override;
+
+private:
+ virtual int Ver() const override { return VER; }
+
+ nsresult InitCrypto(nsCOMPtr<nsICryptoHash>& aCrypto);
+ nsresult VerifyChecksum(const nsACString& aChecksum);
+
+ enum UPDATE_ERROR_TYPES {
+ DUPLICATE_PREFIX = 0,
+ INFINITE_LOOP = 1,
+ WRONG_REMOVAL_INDICES = 2,
+ CHECKSUM_MISMATCH = 3,
+ MISSING_CHECKSUM = 4,
+ };
+
+ RefPtr<VariableLengthPrefixSet> mVLPrefixSet;
+};
+
+} // namespace safebrowsing
+} // namespace mozilla
+
+#endif