From 9e23f38639edebb9d1508fbc903d9a7e8af74835 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 4 Mar 2024 19:48:22 +0100 Subject: [PATCH] Bugfix FXIOS-8426 [v124] Fix contextual tabs showing incorrectly in Inactive Tabs section (backport #18813) (#18840) * [8426] Ensure newly created tabs default to a sensible firstCreatedTime timestamp instead of 1970 * [8426] Update to testGetInactiveTabs() (cherry picked from commit a6349a66ead67a5e09b2d5b804b837a48400ee6b) Co-authored-by: mattreaganmozilla <145381717+mattreaganmozilla@users.noreply.github.com> --- firefox-ios/Client/TabManagement/Tab.swift | 1 + .../TabManagement/TabManagerTests.swift | 17 +++++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/firefox-ios/Client/TabManagement/Tab.swift b/firefox-ios/Client/TabManagement/Tab.swift index 0ada254a1f1f..3e9cbf8aeba7 100644 --- a/firefox-ios/Client/TabManagement/Tab.swift +++ b/firefox-ios/Client/TabManagement/Tab.swift @@ -418,6 +418,7 @@ class Tab: NSObject, ThemeApplicable { self.logger = logger super.init() self.isPrivate = isPrivate + self.firstCreatedTime = Date().toTimestamp() debugTabCount += 1 TelemetryWrapper.recordEvent( diff --git a/firefox-ios/firefox-ios-tests/Tests/ClientTests/TabManagement/TabManagerTests.swift b/firefox-ios/firefox-ios-tests/Tests/ClientTests/TabManagement/TabManagerTests.swift index 7d760f2b05df..607d2001d515 100644 --- a/firefox-ios/firefox-ios-tests/Tests/ClientTests/TabManagement/TabManagerTests.swift +++ b/firefox-ios/firefox-ios-tests/Tests/ClientTests/TabManagement/TabManagerTests.swift @@ -163,16 +163,21 @@ class TabManagerTests: XCTestCase { func testGetInactiveTabs() { let subject = createSubject() addTabs(to: subject, count: 3) - guard let tab = subject.tabs.first else { - XCTFail("First tab was expected to be found") - return - } - // Override session data to make tab active - tab.sessionData = LegacySessionData(currentPage: 0, urls: [], lastUsedTime: Date.now.toTimestamp()) + XCTAssert(subject.tabs.count == 3, "Expected 3 newly added tabs.") + + // Set createdAt date for all tabs to be distant past (inactive by default) + subject.tabs.forEach { $0.firstCreatedTime = Timestamp(0) } + + // Override session data lastUsedTime of 1st tab to indicate tab active + let tab1 = subject.tabs[0] + tab1.sessionData = LegacySessionData(currentPage: 0, + urls: [], + lastUsedTime: Date.now.toTimestamp()) let inactiveTabs = subject.getInactiveTabs() let expectedInactiveTabs = 2 + // Expect 2 of 3 tabs are inactive (except 1st) XCTAssertEqual(inactiveTabs.count, expectedInactiveTabs) }