diff --git a/Sources/BrowserServicesKit/Autofill/AutofillPixelReporter.swift b/Sources/BrowserServicesKit/Autofill/AutofillPixelReporter.swift index 9f52b75ce..865cc7ea4 100644 --- a/Sources/BrowserServicesKit/Autofill/AutofillPixelReporter.swift +++ b/Sources/BrowserServicesKit/Autofill/AutofillPixelReporter.swift @@ -66,6 +66,7 @@ public final class AutofillPixelReporter { private let passwordManager: PasswordManager? private var installDate: Date? private var autofillEnabled: Bool + private var deviceAuthEnabled: Bool private var autofillSearchDauDate: Date? { userDefaults.object(forKey: Keys.autofillSearchDauDateKey) as? Date ?? .distantPast } private var autofillFillDate: Date? { userDefaults.object(forKey: Keys.autofillFillDateKey) as? Date ?? .distantPast } @@ -75,6 +76,7 @@ public final class AutofillPixelReporter { public init(standardUserDefaults: UserDefaults, appGroupUserDefaults: UserDefaults?, autofillEnabled: Bool, + deviceAuthEnabled: Bool, eventMapping: EventMapping, secureVault: (any AutofillSecureVault)? = nil, reporter: SecureVaultReporting? = nil, @@ -83,6 +85,7 @@ public final class AutofillPixelReporter { ) { self.userDefaults = appGroupUserDefaults ?? standardUserDefaults self.autofillEnabled = autofillEnabled + self.deviceAuthEnabled = deviceAuthEnabled self.eventMapping = eventMapping self.secureVault = secureVault self.reporter = reporter @@ -188,7 +191,7 @@ public final class AutofillPixelReporter { eventMapping.fire(.autofillEnabledUser) } - if let accountsCountBucket = getAccountsCountBucket() { + if deviceAuthEnabled, let accountsCountBucket = getAccountsCountBucket() { eventMapping.fire(autofillEnabled ? .autofillToggledOn : .autofillToggledOff, parameters: [AutofillPixelEvent.Parameter.countBucket: accountsCountBucket]) } diff --git a/Tests/BrowserServicesKitTests/Autofill/AutofillPixelReporterTests.swift b/Tests/BrowserServicesKitTests/Autofill/AutofillPixelReporterTests.swift index 4212aa522..6505c48b9 100644 --- a/Tests/BrowserServicesKitTests/Autofill/AutofillPixelReporterTests.swift +++ b/Tests/BrowserServicesKitTests/Autofill/AutofillPixelReporterTests.swift @@ -140,6 +140,16 @@ final class AutofillPixelReporterTests: XCTestCase { XCTAssertEqual(MockEventMapping.loginsParam, AutofillPixelReporter.BucketName.none.rawValue) } + func testWhenFirstSearchDauAndDeviceAuthDisabledAndFillDateIsNotTodayAndAccountsCountIsZeroThenNoEventIsFired() throws { + let autofillPixelReporter = createAutofillPixelReporter(deviceAuthEnabled: false) + autofillPixelReporter.resetStoreDefaults() + createAccountsInVault(count: 0) + + NotificationCenter.default.post(name: .searchDAU, object: nil) + + XCTAssertEqual(MockEventMapping.events.count, 0) + } + func testWhenFirstSearchDauAndAutofillDisabledAndFillDateIsNotTodayAndAndAccountsCountIsTenThenThenOneEventIsFired() throws { let autofillPixelReporter = createAutofillPixelReporter(autofillEnabled: false) autofillPixelReporter.resetStoreDefaults() @@ -559,10 +569,11 @@ final class AutofillPixelReporterTests: XCTestCase { XCTAssertNil(appGroupDefaults.object(forKey: AutofillPixelReporter.Keys.autofillDauMigratedKey)) } - private func createAutofillPixelReporter(appGroupUserDefaults: UserDefaults? = nil, installDate: Date? = Date(), autofillEnabled: Bool = true) -> AutofillPixelReporter { + private func createAutofillPixelReporter(appGroupUserDefaults: UserDefaults? = nil, installDate: Date? = Date(), autofillEnabled: Bool = true, deviceAuthEnabled: Bool = true) -> AutofillPixelReporter { return AutofillPixelReporter(standardUserDefaults: standardDefaults, appGroupUserDefaults: appGroupUserDefaults, autofillEnabled: autofillEnabled, + deviceAuthEnabled: deviceAuthEnabled, eventMapping: eventMapping, secureVault: vault, installDate: installDate)