forked from mirrors/gecko-dev
This patch enables SafeBrowsing in Safe Mode because features based on SafeBrowsing are essential for Firefox(For example, Enhanced Tracking Protection). Since Safe Browsing update is nondeterministic, we disable periodical SafeBrowsing update to make troubleshooting easier. Manually trigger an update via about:classifier is still enabled. Last, SafeBrowsing tables provided by Google will be ignored in Safe Mode to ensure the SafeBrowsing warnings are update-to-date. Differential Revision: https://phabricator.services.mozilla.com/D62708 --HG-- extra : moz-landing-system : lando
72 lines
2.4 KiB
C++
72 lines
2.4 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 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;
|
|
};
|
|
|
|
#endif // nsUrlClassifierUtils_h_
|