Skip to content

Commit fa26ecc

Browse files
authored
Add FXIOS-13124 [Terms of Use] Add prefs for links and remind me later interactions (#29242)
1 parent 55470ee commit fa26ecc

File tree

3 files changed

+36
-0
lines changed

3 files changed

+36
-0
lines changed

BrowserKit/Sources/Shared/Prefs.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ public struct PrefsKeys {
3131
public static let TermsOfUseImpressionCount = "TermsOfUseImpressionCount"
3232
public static let TermsOfUseRemindMeLaterCount = "TermsOfUseRemindMeLaterCount"
3333
public static let TermsOfUseDismissCount = "TermsOfUseDismissCount"
34+
public static let TermsOfUseRemindMeLaterTapDate = "TermsOfUseRemindMeLaterTapDate"
35+
public static let TermsOfUseLearnMoreTapDate = "TermsOfUseLearnMoreTapDate"
36+
public static let TermsOfUsePrivacyNoticeTapDate = "TermsOfUsePrivacyNoticeTapDate"
37+
public static let TermsOfUseTermsLinkTapDate = "TermsOfUseTermsLinkTapDate"
3438
public static let HomePageTab = "HomePageTab"
3539
public static let HomeButtonHomePageURL = "HomeButtonHomepageURL"
3640
public static let NumberOfTopSiteRows = "NumberOfTopSiteRows"

firefox-ios/Client/Frontend/Browser/TermsOfUse/TermsOfUseMiddleware.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,19 @@ class TermsOfUseMiddleware {
4848
self.recordAcceptance()
4949
case TermsOfUseActionType.remindMeLaterTapped:
5050
self.prefs.setTimestamp(Date.now(), forKey: PrefsKeys.TermsOfUseDismissedDate)
51+
self.prefs.setTimestamp(Date.now(), forKey: PrefsKeys.TermsOfUseRemindMeLaterTapDate)
5152
self.telemetry.termsOfUseRemindMeLaterButtonTapped()
5253
case TermsOfUseActionType.gestureDismiss:
5354
self.prefs.setTimestamp(Date.now(), forKey: PrefsKeys.TermsOfUseDismissedDate)
5455
self.telemetry.termsOfUseDismissed()
5556
case TermsOfUseActionType.learnMoreLinkTapped:
57+
self.prefs.setTimestamp(Date.now(), forKey: PrefsKeys.TermsOfUseLearnMoreTapDate)
5658
self.telemetry.termsOfUseLearnMoreButtonTapped()
5759
case TermsOfUseActionType.privacyLinkTapped:
60+
self.prefs.setTimestamp(Date.now(), forKey: PrefsKeys.TermsOfUsePrivacyNoticeTapDate)
5861
self.telemetry.termsOfUsePrivacyNoticeLinkTapped()
5962
case TermsOfUseActionType.termsLinkTapped:
63+
self.prefs.setTimestamp(Date.now(), forKey: PrefsKeys.TermsOfUseTermsLinkTapDate)
6064
self.telemetry.termsOfUseTermsOfUseLinkTapped()
6165
}
6266
}

firefox-ios/firefox-ios-tests/Tests/ClientTests/TermsOfUse/TermsOfUseMiddlewareTests.swift

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,32 @@ final class TermsOfUseMiddlewareTests: XCTestCase {
7676
XCTAssertTrue(Calendar.current.isDate(acceptedDate, inSameDayAs: Date()))
7777
}
7878
}
79+
func testMiddleware_remindMeLaterTapped_tracksTapTimestamp() {
80+
let action = TermsOfUseAction(windowUUID: .XCTestDefaultUUID, actionType: TermsOfUseActionType.remindMeLaterTapped)
81+
middleware.termsOfUseProvider(AppState(), action)
82+
83+
let timestamp = profile.prefs.timestampForKey(PrefsKeys.TermsOfUseRemindMeLaterTapDate)
84+
XCTAssertNotNil(timestamp)
85+
}
86+
func testMiddleware_learnMoreLinkTapped_tracksTapTimestamp() {
87+
let action = TermsOfUseAction(windowUUID: .XCTestDefaultUUID, actionType: TermsOfUseActionType.learnMoreLinkTapped)
88+
middleware.termsOfUseProvider(AppState(), action)
89+
90+
let timestamp = profile.prefs.timestampForKey(PrefsKeys.TermsOfUseLearnMoreTapDate)
91+
XCTAssertNotNil(timestamp)
92+
}
93+
func testMiddleware_privacyLinkTapped_tracksTapTimestamp() {
94+
let action = TermsOfUseAction(windowUUID: .XCTestDefaultUUID, actionType: TermsOfUseActionType.privacyLinkTapped)
95+
middleware.termsOfUseProvider(AppState(), action)
96+
97+
let timestamp = profile.prefs.timestampForKey(PrefsKeys.TermsOfUsePrivacyNoticeTapDate)
98+
XCTAssertNotNil(timestamp)
99+
}
100+
func testMiddleware_termsLinkTapped_tracksTapTimestamp() {
101+
let action = TermsOfUseAction(windowUUID: .XCTestDefaultUUID, actionType: TermsOfUseActionType.termsLinkTapped)
102+
middleware.termsOfUseProvider(AppState(), action)
103+
104+
let timestamp = profile.prefs.timestampForKey(PrefsKeys.TermsOfUseTermsLinkTapDate)
105+
XCTAssertNotNil(timestamp)
106+
}
79107
}

0 commit comments

Comments
 (0)