summaryrefslogtreecommitdiffstats
path: root/toolkit/components/cookiebanners/nsCookieBannerTelemetryService.h
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/cookiebanners/nsCookieBannerTelemetryService.h')
-rw-r--r--toolkit/components/cookiebanners/nsCookieBannerTelemetryService.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/toolkit/components/cookiebanners/nsCookieBannerTelemetryService.h b/toolkit/components/cookiebanners/nsCookieBannerTelemetryService.h
new file mode 100644
index 0000000000..1236343ad9
--- /dev/null
+++ b/toolkit/components/cookiebanners/nsCookieBannerTelemetryService.h
@@ -0,0 +1,47 @@
+/* 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 mozilla_nsCookieBannerTelemetryService_h__
+#define mozilla_nsCookieBannerTelemetryService_h__
+
+#include "nsICookieBannerTelemetryService.h"
+
+#include "nsIObserver.h"
+
+class nsICookie;
+
+namespace mozilla {
+class nsCookieBannerTelemetryService final
+ : public nsICookieBannerTelemetryService,
+ public nsIObserver {
+ NS_DECL_ISUPPORTS
+ NS_DECL_NSIOBSERVER
+
+ NS_DECL_NSICOOKIEBANNERTELEMETRYSERVICE
+
+ public:
+ static already_AddRefed<nsCookieBannerTelemetryService> GetSingleton();
+
+ private:
+ nsCookieBannerTelemetryService() = default;
+ ~nsCookieBannerTelemetryService() = default;
+
+ bool mIsInitialized = false;
+ bool mIsSearchServiceInitialized = false;
+
+ [[nodiscard]] nsresult Init();
+
+ [[nodiscard]] nsresult Shutdown();
+
+ // Record the telemetry regarding the GDPR choice on Google Search domains.
+ // We only record if the default search engine is Google. When passing no
+ // cookie, we will walk through all cookies under Google Search domains.
+ // Otherwise, we will report the GDPR choice according to the given cookie.
+ [[nodiscard]] nsresult MaybeReportGoogleGDPRChoiceTelemetry(
+ nsICookie* aCookie = nullptr, bool aReportEvent = false);
+};
+
+} // namespace mozilla
+
+#endif