/* 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_ClearDataCallback_h__ #define mozilla_ClearDataCallback_h__ #include "BounceTrackingMapEntry.h" #include "mozilla/MozPromise.h" #include "mozilla/glean/bindings/GleanMetric.h" #include "nsIClearDataService.h" #include "nsIURIClassifier.h" namespace mozilla { // Pending clear operations are stored as ClearDataMozPromise, one per host. using ClearDataMozPromise = MozPromise, uint32_t, true>; extern LazyLogModule gBounceTrackingProtectionLog; // Helper for clear data callbacks used for purge bounce trackers. // Wraps nsIClearDataCallback in MozPromise. class ClearDataCallback final : public nsIClearDataCallback, public nsIUrlClassifierFeatureCallback { public: NS_DECL_ISUPPORTS NS_DECL_NSICLEARDATACALLBACK NS_DECL_NSIURLCLASSIFIERFEATURECALLBACK explicit ClearDataCallback(ClearDataMozPromise::Private* aPromise, const OriginAttributes& aOriginAttributes, const nsACString& aHost, PRTime aBounceTime); private: virtual ~ClearDataCallback(); // Entry containing the site host which was cleared and the timestamp of when // the bounce occurred that led to the tracker being purged. RefPtr mEntry; // Promise which is resolved or rejected when the clear operation completes. RefPtr mPromise; // Clear duration telemetry void RecordClearDurationTelemetry(); glean::TimerId mClearDurationTimer; // Purge count telemetry void RecordPurgeCountTelemetry(bool aFailed); // URL Classifier telemetry void RecordURLClassifierTelemetry(); // Event telemetry for purges. void RecordPurgeEventTelemetry(bool aSuccess); }; } // namespace mozilla #endif