Skip to content

Commit 357ca57

Browse files
Bugfix FXIOS-12036 [Homepage] scroll to top on opening a new homepage (backport #26210) (#26214)
Bugfix FXIOS-12036 [Homepage] scroll to top on opening a new homepage (#26210) (cherry picked from commit 48fcd50) Co-authored-by: Cyndi Chin <[email protected]>
1 parent 3567edb commit 357ca57

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

firefox-ios/Client/Frontend/Home/Homepage Rebuild/HomepageViewController.swift

+2-1
Original file line numberDiff line numberDiff line change
@@ -295,10 +295,11 @@ final class HomepageViewController: UIViewController,
295295
state: state,
296296
jumpBackInDisplayConfig: getJumpBackInDisplayConfig()
297297
)
298-
// FXIOS-11523 - Trigger impression when user opens homepage view new tab
298+
// FXIOS-11523 - Trigger impression when user opens homepage view new tab + scroll to top
299299
if homepageState.shouldTriggerImpression {
300300
alreadyTrackedItems.removeAll()
301301
trackVisibleItemImpressions()
302+
scrollToTop()
302303
}
303304
}
304305

firefox-ios/firefox-ios-tests/Tests/ClientTests/Frontend/Homepage Rebuild/HomepageViewControllerTests.swift

+23
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,29 @@ final class HomepageViewControllerTests: XCTestCase, StoreTestUtility {
277277
XCTAssertEqual(actionCalled.windowUUID, .XCTestDefaultUUID)
278278
}
279279

280+
func test_newState_didSelectedTabChangeToHomepageAction_forScrollToTop_setsCollectionViewOffsetToZero() {
281+
let mockStatusBarScrollDelegate = MockStatusBarScrollDelegate()
282+
let subject = createSubject(statusBarScrollDelegate: mockStatusBarScrollDelegate)
283+
let newState = HomepageState.reducer(
284+
HomepageState(windowUUID: .XCTestDefaultUUID),
285+
GeneralBrowserAction(
286+
windowUUID: .XCTestDefaultUUID,
287+
actionType: GeneralBrowserActionType.didSelectedTabChangeToHomepage
288+
)
289+
)
290+
291+
guard let collectionView = subject.view.subviews.first(where: {
292+
$0 is UICollectionView
293+
}) as? UICollectionView else {
294+
XCTFail()
295+
return
296+
}
297+
298+
subject.newState(state: newState)
299+
300+
XCTAssertEqual(collectionView.contentOffset, .zero)
301+
}
302+
280303
private func createSubject(statusBarScrollDelegate: StatusBarScrollDelegate? = nil) -> HomepageViewController {
281304
let notificationCenter = MockNotificationCenter()
282305
let themeManager = MockThemeManager()

0 commit comments

Comments
 (0)