void CUserReporter::Initialize() { ENSURE(!m_Worker); // must only be called once std::string userID = LoadUserID(); std::string url; CFG_GET_VAL("userreport.url", url); // Initialise everything except Win32 sockets (because our networking // system already inits those) curl_global_init(CURL_GLOBAL_ALL & ~CURL_GLOBAL_WIN32); m_Worker = new CUserReporterWorker(userID, url); m_Worker->SetEnabled(IsReportingEnabled()); }
void ContentBlockingLog::ReportLog() { MOZ_ASSERT(NS_IsMainThread()); if (!IsReportingEnabled()) { return; } LOG("ContentBlockingLog::ReportLog [this=%p]", this); const bool testMode = StaticPrefs::telemetry_origin_telemetry_test_mode_enabled(); OriginMetricID metricId = testMode ? OriginMetricID::ContentBlocking_Blocked_TestOnly : OriginMetricID::ContentBlocking_Blocked; ReportOriginSingleHash(metricId, kDummyOriginHash); nsTArray<HashNumber> lookupTable; for (const auto& originEntry : mLog) { if (!originEntry.mData) { continue; } for (const auto& logEntry : Reversed(originEntry.mData->mLogs)) { if (logEntry.mType != nsIWebProgressListener::STATE_COOKIES_BLOCKED_TRACKER || logEntry.mTrackingFullHashes.IsEmpty()) { continue; } const bool isBlocked = logEntry.mBlocked; Maybe<StorageAccessGrantedReason> reason = logEntry.mReason; metricId = testMode ? OriginMetricID::ContentBlocking_Blocked_TestOnly : OriginMetricID::ContentBlocking_Blocked; if (!isBlocked) { MOZ_ASSERT(reason.isSome()); switch (reason.value()) { case StorageAccessGrantedReason::eStorageAccessAPI: metricId = testMode ? OriginMetricID:: ContentBlocking_StorageAccessAPIExempt_TestOnly : OriginMetricID::ContentBlocking_StorageAccessAPIExempt; break; case StorageAccessGrantedReason::eOpenerAfterUserInteraction: metricId = testMode ? OriginMetricID:: ContentBlocking_OpenerAfterUserInteractionExempt_TestOnly : OriginMetricID:: ContentBlocking_OpenerAfterUserInteractionExempt; break; case StorageAccessGrantedReason::eOpener: metricId = testMode ? OriginMetricID::ContentBlocking_OpenerExempt_TestOnly : OriginMetricID::ContentBlocking_OpenerExempt; break; default: MOZ_ASSERT_UNREACHABLE("Unknown StorageAccessGrantedReason"); } } for (const auto& hash : logEntry.mTrackingFullHashes) { HashNumber key = AddToHash(HashString(hash.get(), hash.Length()), static_cast<uint32_t>(metricId)); if (lookupTable.Contains(key)) { continue; } lookupTable.AppendElement(key); ReportOriginSingleHash(metricId, hash); } break; } } }