Index: ios/chrome/browser/content_suggestions/content_suggestions_mediator.mm |
diff --git a/ios/chrome/browser/content_suggestions/content_suggestions_mediator.mm b/ios/chrome/browser/content_suggestions/content_suggestions_mediator.mm |
index 9adb45bcd6c787f09cfc199f5bc8c18613144dc2..1fba1201dddfa66a7e021ea3db4d7e92670687b3 100644 |
--- a/ios/chrome/browser/content_suggestions/content_suggestions_mediator.mm |
+++ b/ios/chrome/browser/content_suggestions/content_suggestions_mediator.mm |
@@ -53,9 +53,10 @@ const NSInteger kMaxNumMostVisitedTiles = 8; |
std::unique_ptr<ntp_tiles::MostVisitedSitesObserverBridge> _mostVisitedBridge; |
} |
-// Most visited data from the MostVisitedSites service (copied upon receiving |
+// Most visited items from the MostVisitedSites service (copied upon receiving |
// the callback). |
-@property(nonatomic, assign) std::vector<ntp_tiles::NTPTile> mostVisitedData; |
+@property(nonatomic, strong) |
+ NSMutableArray<ContentSuggestionsMostVisitedItem*>* mostVisitedItems; |
// Section Info for the Most Visited section. |
@property(nonatomic, strong) |
ContentSuggestionsSectionInformation* mostVisitedSectionInfo; |
@@ -77,7 +78,7 @@ const NSInteger kMaxNumMostVisitedTiles = 8; |
@implementation ContentSuggestionsMediator |
-@synthesize mostVisitedData = _mostVisitedData; |
+@synthesize mostVisitedItems = _mostVisitedItems; |
@synthesize mostVisitedSectionInfo = _mostVisitedSectionInfo; |
@synthesize recordedPageImpression = _recordedPageImpression; |
@synthesize contentService = _contentService; |
@@ -130,7 +131,7 @@ initWithContentService:(ntp_snippets::ContentSuggestionsService*)contentService |
NSMutableArray<ContentSuggestionsSectionInformation*>* sectionsInfo = |
[NSMutableArray array]; |
- if (!self.mostVisitedData.empty()) { |
+ if (self.mostVisitedItems.count > 0) { |
[sectionsInfo addObject:self.mostVisitedSectionInfo]; |
} |
@@ -155,10 +156,7 @@ initWithContentService:(ntp_snippets::ContentSuggestionsService*)contentService |
[NSMutableArray array]; |
if (sectionInfo == self.mostVisitedSectionInfo) { |
- for (const ntp_tiles::NTPTile& tile : self.mostVisitedData) { |
- [convertedSuggestions |
- addObject:ConvertNTPTile(tile, self.mostVisitedSectionInfo)]; |
- } |
+ [convertedSuggestions addObjectsFromArray:self.mostVisitedItems]; |
} else { |
ntp_snippets::Category category = |
[[self categoryWrapperForSectionInfo:sectionInfo] category]; |
@@ -363,7 +361,12 @@ initWithContentService:(ntp_snippets::ContentSuggestionsService*)contentService |
- (void)onMostVisitedURLsAvailable: |
(const ntp_tiles::NTPTilesVector&)mostVisited { |
- self.mostVisitedData = mostVisited; |
+ self.mostVisitedItems = [NSMutableArray array]; |
+ for (const ntp_tiles::NTPTile& tile : mostVisited) { |
+ [self.mostVisitedItems |
+ addObject:ConvertNTPTile(tile, self.mostVisitedSectionInfo)]; |
+ } |
+ |
[self.dataSink reloadSection:self.mostVisitedSectionInfo]; |
if (mostVisited.size() && !self.recordedPageImpression) { |
@@ -373,7 +376,12 @@ initWithContentService:(ntp_snippets::ContentSuggestionsService*)contentService |
} |
- (void)onIconMadeAvailable:(const GURL&)siteURL { |
- [self.dataSink faviconAvailableForURL:siteURL]; |
+ for (ContentSuggestionsMostVisitedItem* item in self.mostVisitedItems) { |
+ if (item.URL == siteURL) { |
+ [self.dataSink faviconAvailableForItem:item]; |
+ return; |
+ } |
+ } |
} |
#pragma mark - Private |