summaryrefslogtreecommitdiffstats
path: root/toolkit/components/url-classifier/nsUrlClassifierUtils.h
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/url-classifier/nsUrlClassifierUtils.h')
-rw-r--r--toolkit/components/url-classifier/nsUrlClassifierUtils.h72
1 files changed, 72 insertions, 0 deletions
diff --git a/toolkit/components/url-classifier/nsUrlClassifierUtils.h b/toolkit/components/url-classifier/nsUrlClassifierUtils.h
new file mode 100644
index 0000000000..5ff9d97fdc
--- /dev/null
+++ b/toolkit/components/url-classifier/nsUrlClassifierUtils.h
@@ -0,0 +1,72 @@
+/* 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 nsUrlClassifierUtils_h_
+#define nsUrlClassifierUtils_h_
+
+#include "mozilla/Mutex.h"
+#include "mozilla/Base64.h"
+#include "nsIUrlClassifierUtils.h"
+#include "nsClassHashtable.h"
+#include "nsIObserver.h"
+
+#define TESTING_TABLE_PROVIDER_NAME "test"
+
+class nsUrlClassifierUtils final : public nsIUrlClassifierUtils,
+ public nsIObserver {
+ public:
+ typedef nsClassHashtable<nsCStringHashKey, nsCString> ProviderDictType;
+
+ NS_DECL_THREADSAFE_ISUPPORTS
+ NS_DECL_NSIURLCLASSIFIERUTILS
+ NS_DECL_NSIOBSERVER
+
+ static already_AddRefed<nsUrlClassifierUtils> GetXPCOMSingleton();
+ static nsUrlClassifierUtils* GetInstance();
+
+ nsresult CanonicalizeHostname(const nsACString& hostname,
+ nsACString& _retval);
+ nsresult CanonicalizePath(const nsACString& url, nsACString& _retval);
+
+ // This function will encode all "special" characters in typical url encoding,
+ // that is %hh where h is a valid hex digit. The characters which are encoded
+ // by this function are any ascii characters under 32(control characters and
+ // space), 37(%), and anything 127 or above (special characters). Url is the
+ // string to encode, ret is the encoded string. Function returns true if
+ // ret != url.
+ bool SpecialEncode(const nsACString& url, bool foldSlashes,
+ nsACString& _retval);
+
+ void ParseIPAddress(const nsACString& host, nsACString& _retval);
+ void CanonicalNum(const nsACString& num, uint32_t bytes, bool allowOctal,
+ nsACString& _retval);
+
+ static bool IsMozTestTable(const nsACString& aTableName);
+
+ static bool IsTestTable(const nsACString& aTableName);
+
+ static bool IsInSafeMode();
+
+ private:
+ nsUrlClassifierUtils();
+ ~nsUrlClassifierUtils();
+
+ nsresult Init();
+
+ // Disallow copy constructor
+ nsUrlClassifierUtils(const nsUrlClassifierUtils&);
+
+ // Function to tell if we should encode a character.
+ bool ShouldURLEscape(const unsigned char c) const;
+
+ void CleanupHostname(const nsACString& host, nsACString& _retval);
+
+ nsresult ReadProvidersFromPrefs(ProviderDictType& aDict);
+
+ // The provider lookup table and its mutex.
+ ProviderDictType mProviderDict;
+ mozilla::Mutex mProviderDictLock MOZ_UNANNOTATED;
+};
+
+#endif // nsUrlClassifierUtils_h_