Skip to content

Commit

Permalink
[iOS] Set selected feed before NTP coordinator starts
Browse files Browse the repository at this point in the history
The selected feed type was being selected when the web state was
inserted, which happens after the NTP coordinator has started.

(cherry picked from commit 1ade636)

Bug: 1395680
Change-Id: If9e85a8899f3fd4fed32174fa0bb24ca49f65b08
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4075368
Reviewed-by: edchin <edchin@google.com>
Commit-Queue: edchin <edchin@google.com>
Cr-Original-Commit-Position: refs/heads/main@{#1079341}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4086311
Commit-Queue: Adam Arcaro <adamta@google.com>
Auto-Submit: Adam Arcaro <adamta@google.com>
Cr-Commit-Position: refs/branch-heads/5359@{#1130}
Cr-Branched-From: 27d3765-refs/heads/main@{#1058933}
  • Loading branch information
adamta authored and Chromium LUCI CQ committed Dec 8, 2022
1 parent 3a02cde commit 97d699d
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 9 deletions.
19 changes: 10 additions & 9 deletions ios/chrome/browser/ui/browser_view/browser_view_controller.mm
Expand Up @@ -3213,15 +3213,6 @@ - (void)webStateList:(WebStateList*)webStateList
NewTabPageTabHelper* NTPHelper =
NewTabPageTabHelper::FromWebState(newWebState);
if (NTPHelper && NTPHelper->IsActive()) {
// If a new web state is inserted, the user has opened a new NTP. Since we
// share the NTP coordinator across web states, the feed type could be
// different from default, so we reset it.
// TODO(crbug.com/1352935): Use NTPHelper in NTPCoordinator.
FeedType defaultFeedType = NTPHelper->DefaultFeedType();
if (reason == ActiveWebStateChangeReason::Inserted &&
self.ntpCoordinator.selectedFeed != defaultFeedType) {
[self.ntpCoordinator selectFeedType:defaultFeedType];
}
[self.ntpCoordinator ntpDidChangeVisibility:YES];
}

Expand Down Expand Up @@ -3276,6 +3267,16 @@ - (void)webStateList:(WebStateList*)webStateList
return;
}

// Since we share the NTP coordinator across web states, the feed type could
// be different from default, so we reset it.
NewTabPageTabHelper* NTPHelper = NewTabPageTabHelper::FromWebState(webState);
if (NTPHelper && NTPHelper->IsActive()) {
FeedType defaultFeedType = NTPHelper->DefaultFeedType();
if (self.ntpCoordinator.selectedFeed != defaultFeedType) {
[self.ntpCoordinator selectFeedType:defaultFeedType];
}
}

BOOL inBackground =
!activating ||
NewTabPageTabHelper::FromWebState(webState)->ShouldShowStartSurface();
Expand Down
4 changes: 4 additions & 0 deletions ios/chrome/browser/ui/ntp/new_tab_page_coordinator.mm
Expand Up @@ -864,6 +864,10 @@ - (FollowingFeedSortType)followingFeedSortType {
- (void)handleFeedSelected:(FeedType)feedType {
DCHECK([self isFollowingFeedAvailable]);

if (self.selectedFeed == feedType) {
return;
}

self.selectedFeed = feedType;

// Saves scroll position before changing feed.
Expand Down

0 comments on commit 97d699d

Please sign in to comment.