Bug 1216723 - Add a new -forbid- Safe Browsing list type. r=gcp,r=smaug
This commit is contained in:
@@ -72,6 +72,9 @@ PRLogModuleInfo *gUrlClassifierDbServiceLog = nullptr;
|
||||
#define CHECK_TRACKING_PB_PREF "privacy.trackingprotection.pbmode.enabled"
|
||||
#define CHECK_TRACKING_PB_DEFAULT false
|
||||
|
||||
#define CHECK_FORBIDDEN_PREF "browser.safebrowsing.forbiddenURIs.enabled"
|
||||
#define CHECK_FORBIDDEN_DEFAULT false
|
||||
|
||||
#define GETHASH_NOISE_PREF "urlclassifier.gethashnoise"
|
||||
#define GETHASH_NOISE_DEFAULT 4
|
||||
|
||||
@@ -80,6 +83,7 @@ PRLogModuleInfo *gUrlClassifierDbServiceLog = nullptr;
|
||||
#define PHISH_TABLE_PREF "urlclassifier.phishTable"
|
||||
#define TRACKING_TABLE_PREF "urlclassifier.trackingTable"
|
||||
#define TRACKING_WHITELIST_TABLE_PREF "urlclassifier.trackingWhitelistTable"
|
||||
#define FORBIDDEN_TABLE_PREF "urlclassifier.forbiddenTable"
|
||||
#define DOWNLOAD_BLOCK_TABLE_PREF "urlclassifier.downloadBlockTable"
|
||||
#define DOWNLOAD_ALLOW_TABLE_PREF "urlclassifier.downloadAllowTable"
|
||||
#define DISALLOW_COMPLETION_TABLE_PREF "urlclassifier.disallow_completions"
|
||||
@@ -187,6 +191,9 @@ TablesToResponse(const nsACString& tables)
|
||||
if (FindInReadable(NS_LITERAL_CSTRING("-unwanted-"), tables)) {
|
||||
return NS_ERROR_UNWANTED_URI;
|
||||
}
|
||||
if (FindInReadable(NS_LITERAL_CSTRING("-forbid-"), tables)) {
|
||||
return NS_ERROR_FORBIDDEN_URI;
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@@ -1001,7 +1008,8 @@ public:
|
||||
nsUrlClassifierClassifyCallback(nsIURIClassifierCallback *c,
|
||||
bool checkMalware,
|
||||
bool checkPhishing,
|
||||
bool checkTracking)
|
||||
bool checkTracking,
|
||||
bool checkForbidden)
|
||||
: mCallback(c)
|
||||
{}
|
||||
|
||||
@@ -1061,6 +1069,7 @@ nsUrlClassifierDBService::nsUrlClassifierDBService()
|
||||
: mCheckMalware(CHECK_MALWARE_DEFAULT)
|
||||
, mCheckPhishing(CHECK_PHISHING_DEFAULT)
|
||||
, mCheckTracking(CHECK_TRACKING_DEFAULT)
|
||||
, mCheckForbiddenURIs(CHECK_FORBIDDEN_DEFAULT)
|
||||
, mInUpdate(false)
|
||||
{
|
||||
}
|
||||
@@ -1107,6 +1116,12 @@ nsUrlClassifierDBService::ReadTablesFromPrefs()
|
||||
allTables.Append(tables);
|
||||
}
|
||||
|
||||
Preferences::GetCString(FORBIDDEN_TABLE_PREF, &tables);
|
||||
if (!tables.IsEmpty()) {
|
||||
allTables.Append(',');
|
||||
allTables.Append(tables);
|
||||
}
|
||||
|
||||
Classifier::SplitTables(allTables, mGethashTables);
|
||||
|
||||
Preferences::GetCString(DISALLOW_COMPLETION_TABLE_PREF, &tables);
|
||||
@@ -1138,6 +1153,8 @@ nsUrlClassifierDBService::Init()
|
||||
mCheckTracking =
|
||||
Preferences::GetBool(CHECK_TRACKING_PREF, CHECK_TRACKING_DEFAULT) ||
|
||||
Preferences::GetBool(CHECK_TRACKING_PB_PREF, CHECK_TRACKING_PB_DEFAULT);
|
||||
mCheckForbiddenURIs = Preferences::GetBool(CHECK_FORBIDDEN_PREF,
|
||||
CHECK_FORBIDDEN_DEFAULT);
|
||||
uint32_t gethashNoise = Preferences::GetUint(GETHASH_NOISE_PREF,
|
||||
GETHASH_NOISE_DEFAULT);
|
||||
gFreshnessGuarantee = Preferences::GetInt(CONFIRM_AGE_PREF,
|
||||
@@ -1149,12 +1166,14 @@ nsUrlClassifierDBService::Init()
|
||||
Preferences::AddStrongObserver(this, CHECK_PHISHING_PREF);
|
||||
Preferences::AddStrongObserver(this, CHECK_TRACKING_PREF);
|
||||
Preferences::AddStrongObserver(this, CHECK_TRACKING_PB_PREF);
|
||||
Preferences::AddStrongObserver(this, CHECK_FORBIDDEN_PREF);
|
||||
Preferences::AddStrongObserver(this, GETHASH_NOISE_PREF);
|
||||
Preferences::AddStrongObserver(this, CONFIRM_AGE_PREF);
|
||||
Preferences::AddStrongObserver(this, PHISH_TABLE_PREF);
|
||||
Preferences::AddStrongObserver(this, MALWARE_TABLE_PREF);
|
||||
Preferences::AddStrongObserver(this, TRACKING_TABLE_PREF);
|
||||
Preferences::AddStrongObserver(this, TRACKING_WHITELIST_TABLE_PREF);
|
||||
Preferences::AddStrongObserver(this, FORBIDDEN_TABLE_PREF);
|
||||
Preferences::AddStrongObserver(this, DOWNLOAD_BLOCK_TABLE_PREF);
|
||||
Preferences::AddStrongObserver(this, DOWNLOAD_ALLOW_TABLE_PREF);
|
||||
Preferences::AddStrongObserver(this, DISALLOW_COMPLETION_TABLE_PREF);
|
||||
@@ -1239,6 +1258,12 @@ nsUrlClassifierDBService::BuildTables(bool aTrackingProtectionEnabled,
|
||||
tables.Append(trackingWhitelist);
|
||||
}
|
||||
}
|
||||
nsAutoCString forbidden;
|
||||
Preferences::GetCString(FORBIDDEN_TABLE_PREF, &forbidden);
|
||||
if (mCheckForbiddenURIs && !forbidden.IsEmpty()) {
|
||||
tables.Append(',');
|
||||
tables.Append(forbidden);
|
||||
}
|
||||
|
||||
if (StringBeginsWith(tables, NS_LITERAL_CSTRING(","))) {
|
||||
tables.Cut(0, 1);
|
||||
@@ -1255,14 +1280,15 @@ nsUrlClassifierDBService::Classify(nsIPrincipal* aPrincipal,
|
||||
NS_ENSURE_ARG(aPrincipal);
|
||||
NS_ENSURE_TRUE(gDbBackgroundThread, NS_ERROR_NOT_INITIALIZED);
|
||||
|
||||
if (!(mCheckMalware || mCheckPhishing || aTrackingProtectionEnabled)) {
|
||||
if (!(mCheckMalware || mCheckPhishing || aTrackingProtectionEnabled ||
|
||||
mCheckForbiddenURIs)) {
|
||||
*result = false;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
RefPtr<nsUrlClassifierClassifyCallback> callback =
|
||||
new nsUrlClassifierClassifyCallback(c, mCheckMalware, mCheckPhishing,
|
||||
mCheckTracking);
|
||||
mCheckTracking, mCheckForbiddenURIs);
|
||||
if (!callback) return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
nsAutoCString tables;
|
||||
@@ -1564,11 +1590,15 @@ nsUrlClassifierDBService::Observe(nsISupports *aSubject, const char *aTopic,
|
||||
mCheckTracking =
|
||||
Preferences::GetBool(CHECK_TRACKING_PREF, CHECK_TRACKING_DEFAULT) ||
|
||||
Preferences::GetBool(CHECK_TRACKING_PB_PREF, CHECK_TRACKING_PB_DEFAULT);
|
||||
} else if (NS_LITERAL_STRING(CHECK_FORBIDDEN_PREF).Equals(aData)) {
|
||||
mCheckForbiddenURIs = Preferences::GetBool(CHECK_FORBIDDEN_PREF,
|
||||
CHECK_FORBIDDEN_DEFAULT);
|
||||
} else if (
|
||||
NS_LITERAL_STRING(PHISH_TABLE_PREF).Equals(aData) ||
|
||||
NS_LITERAL_STRING(MALWARE_TABLE_PREF).Equals(aData) ||
|
||||
NS_LITERAL_STRING(TRACKING_TABLE_PREF).Equals(aData) ||
|
||||
NS_LITERAL_STRING(TRACKING_WHITELIST_TABLE_PREF).Equals(aData) ||
|
||||
NS_LITERAL_STRING(FORBIDDEN_TABLE_PREF).Equals(aData) ||
|
||||
NS_LITERAL_STRING(DOWNLOAD_BLOCK_TABLE_PREF).Equals(aData) ||
|
||||
NS_LITERAL_STRING(DOWNLOAD_ALLOW_TABLE_PREF).Equals(aData) ||
|
||||
NS_LITERAL_STRING(DISALLOW_COMPLETION_TABLE_PREF).Equals(aData)) {
|
||||
@@ -1605,10 +1635,12 @@ nsUrlClassifierDBService::Shutdown()
|
||||
prefs->RemoveObserver(CHECK_PHISHING_PREF, this);
|
||||
prefs->RemoveObserver(CHECK_TRACKING_PREF, this);
|
||||
prefs->RemoveObserver(CHECK_TRACKING_PB_PREF, this);
|
||||
prefs->RemoveObserver(CHECK_FORBIDDEN_PREF, this);
|
||||
prefs->RemoveObserver(PHISH_TABLE_PREF, this);
|
||||
prefs->RemoveObserver(MALWARE_TABLE_PREF, this);
|
||||
prefs->RemoveObserver(TRACKING_TABLE_PREF, this);
|
||||
prefs->RemoveObserver(TRACKING_WHITELIST_TABLE_PREF, this);
|
||||
prefs->RemoveObserver(FORBIDDEN_TABLE_PREF, this);
|
||||
prefs->RemoveObserver(DOWNLOAD_BLOCK_TABLE_PREF, this);
|
||||
prefs->RemoveObserver(DOWNLOAD_ALLOW_TABLE_PREF, this);
|
||||
prefs->RemoveObserver(DISALLOW_COMPLETION_TABLE_PREF, this);
|
||||
|
||||
Reference in New Issue
Block a user