Bug 1799258 - Fix constexpr issue on base toolchain builds. r=gfx-reviewers,lsalzman
[gecko.git] / netwerk / url-classifier / UrlClassifierFeatureLoginReputation.cpp
blobe9c21e9e00f41e16a5e33810f6c94343802babba
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #include "UrlClassifierFeatureLoginReputation.h"
9 #include "mozilla/StaticPrefs_browser.h"
10 #include "mozilla/StaticPtr.h"
11 #include "UrlClassifierCommon.h"
12 #include "nsCOMPtr.h"
13 #include "nsIChannel.h"
15 namespace mozilla {
16 namespace net {
18 namespace {
20 #define LOGIN_REPUTATION_FEATURE_NAME "login-reputation"
22 #define PREF_PASSWORD_ALLOW_TABLE "urlclassifier.passwordAllowTable"
24 StaticRefPtr<UrlClassifierFeatureLoginReputation> gFeatureLoginReputation;
26 } // namespace
28 UrlClassifierFeatureLoginReputation::UrlClassifierFeatureLoginReputation()
29 : UrlClassifierFeatureBase(nsLiteralCString(LOGIN_REPUTATION_FEATURE_NAME),
30 ""_ns, // blocklist tables
31 nsLiteralCString(PREF_PASSWORD_ALLOW_TABLE),
32 ""_ns, // blocklist pref
33 ""_ns, // entitylist pref
34 ""_ns, // blocklist pref table name
35 ""_ns, // entitylist pref table name
36 ""_ns) // exception host pref
39 /* static */ const char* UrlClassifierFeatureLoginReputation::Name() {
40 return StaticPrefs::browser_safebrowsing_passwords_enabled()
41 ? LOGIN_REPUTATION_FEATURE_NAME
42 : "";
45 /* static */
46 void UrlClassifierFeatureLoginReputation::MaybeShutdown() {
47 UC_LOG_LEAK(("UrlClassifierFeatureLoginReputation::MaybeShutdown"));
49 if (gFeatureLoginReputation) {
50 gFeatureLoginReputation->ShutdownPreferences();
51 gFeatureLoginReputation = nullptr;
55 /* static */
56 nsIUrlClassifierFeature*
57 UrlClassifierFeatureLoginReputation::MaybeGetOrCreate() {
58 if (!StaticPrefs::browser_safebrowsing_passwords_enabled()) {
59 return nullptr;
62 if (!gFeatureLoginReputation) {
63 gFeatureLoginReputation = new UrlClassifierFeatureLoginReputation();
64 gFeatureLoginReputation->InitializePreferences();
67 return gFeatureLoginReputation;
70 /* static */
71 already_AddRefed<nsIUrlClassifierFeature>
72 UrlClassifierFeatureLoginReputation::GetIfNameMatches(const nsACString& aName) {
73 if (!aName.EqualsLiteral(LOGIN_REPUTATION_FEATURE_NAME)) {
74 return nullptr;
77 nsCOMPtr<nsIUrlClassifierFeature> self = MaybeGetOrCreate();
78 return self.forget();
81 NS_IMETHODIMP
82 UrlClassifierFeatureLoginReputation::ProcessChannel(
83 nsIChannel* aChannel, const nsTArray<nsCString>& aList,
84 const nsTArray<nsCString>& aHashes, bool* aShouldContinue) {
85 MOZ_CRASH(
86 "UrlClassifierFeatureLoginReputation::ProcessChannel should never be "
87 "called");
88 return NS_OK;
91 NS_IMETHODIMP
92 UrlClassifierFeatureLoginReputation::GetURIByListType(
93 nsIChannel* aChannel, nsIUrlClassifierFeature::listType aListType,
94 nsIUrlClassifierFeature::URIType* aURIType, nsIURI** aURI) {
95 NS_ENSURE_ARG_POINTER(aChannel);
96 NS_ENSURE_ARG_POINTER(aURIType);
97 NS_ENSURE_ARG_POINTER(aURI);
98 MOZ_ASSERT(aListType == nsIUrlClassifierFeature::entitylist,
99 "UrlClassifierFeatureLoginReputation is meant to be used just to "
100 "entitylist URLs");
101 *aURIType = nsIUrlClassifierFeature::URIType::entitylistURI;
102 return aChannel->GetURI(aURI);
105 } // namespace net
106 } // namespace mozilla