Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(418)

Unified Diff: ios/chrome/browser/ui/ntp/google_landing_controller.mm

Issue 2791253002: Create an Obj-C bridge for MostVisitedSitesObserver (Closed)
Patch Set: Fix BUILD.gn Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ios/chrome/browser/ui/ntp/google_landing_controller.mm
diff --git a/ios/chrome/browser/ui/ntp/google_landing_controller.mm b/ios/chrome/browser/ui/ntp/google_landing_controller.mm
index 108372f2aedeed57e435b62192f0883d32855b8e..5aef9ab5105d5f974cace8f278c71ea8c938856a 100644
--- a/ios/chrome/browser/ui/ntp/google_landing_controller.mm
+++ b/ios/chrome/browser/ui/ntp/google_landing_controller.mm
@@ -19,6 +19,7 @@
#include "base/strings/sys_string_conversions.h"
#include "components/favicon/core/large_icon_service.h"
#include "components/keyed_service/core/service_access_type.h"
+#import "components/ntp_tiles/ios/most_visited_sites_bridge_observer.h"
#include "components/ntp_tiles/most_visited_sites.h"
#include "components/ntp_tiles/ntp_tile.h"
#include "components/rappor/rappor_service_impl.h"
@@ -108,45 +109,8 @@ const CGFloat kMostVisitedPaddingIPadFavicon = 24;
} // namespace
-@interface GoogleLandingController ()
-- (void)onMostVisitedURLsAvailable:(const ntp_tiles::NTPTilesVector&)data;
-- (void)onIconMadeAvailable:(const GURL&)siteUrl;
-@end
-
namespace google_landing {
-// MostVisitedSitesObserverBridge allow registration as a
-// MostVisitedSites::Observer.
-class MostVisitedSitesObserverBridge
- : public ntp_tiles::MostVisitedSites::Observer {
- public:
- MostVisitedSitesObserverBridge(GoogleLandingController* owner);
- ~MostVisitedSitesObserverBridge() override;
-
- // MostVisitedSites::Observer implementation.
- void OnMostVisitedURLsAvailable(
- const ntp_tiles::NTPTilesVector& most_visited) override;
- void OnIconMadeAvailable(const GURL& site_url) override;
-
- private:
- GoogleLandingController* _owner;
-};
-
-MostVisitedSitesObserverBridge::MostVisitedSitesObserverBridge(
- GoogleLandingController* owner)
- : _owner(owner) {}
-
-MostVisitedSitesObserverBridge::~MostVisitedSitesObserverBridge() {}
-
-void MostVisitedSitesObserverBridge::OnMostVisitedURLsAvailable(
- const ntp_tiles::NTPTilesVector& tiles) {
- [_owner onMostVisitedURLsAvailable:tiles];
-}
-
-void MostVisitedSitesObserverBridge::OnIconMadeAvailable(const GURL& site_url) {
- [_owner onIconMadeAvailable:site_url];
-}
-
// Observer used to hide the Google logo and doodle if the TemplateURLService
// changes.
class SearchEngineObserver : public TemplateURLServiceObserver {
@@ -220,7 +184,8 @@ void SearchEngineObserver::OnTemplateURLServiceChanged() {
@end
-@interface GoogleLandingController ()<OverscrollActionsControllerDelegate,
+@interface GoogleLandingController ()<MostVisitedSitesObserver,
+ OverscrollActionsControllerDelegate,
UICollectionViewDataSource,
UICollectionViewDelegate,
UICollectionViewDelegateFlowLayout,
@@ -267,8 +232,7 @@ void SearchEngineObserver::OnTemplateURLServiceChanged() {
// A MostVisitedSites::Observer bridge object to get notified of most visited
// sites changes.
- std::unique_ptr<google_landing::MostVisitedSitesObserverBridge>
- _most_visited_observer_bridge;
+ std::unique_ptr<ntp_tiles::MostVisitedSitesBridge> _most_visited_bridge;
std::unique_ptr<ntp_tiles::MostVisitedSites> _most_visited_sites;
@@ -929,10 +893,9 @@ void SearchEngineObserver::OnTemplateURLServiceChanged() {
[_view addSubview:_mostVisitedView];
_most_visited_sites =
IOSMostVisitedSitesFactory::NewForBrowserState(_browserState);
- _most_visited_observer_bridge.reset(
- new google_landing::MostVisitedSitesObserverBridge(self));
- _most_visited_sites->SetMostVisitedURLsObserver(
- _most_visited_observer_bridge.get(), kMaxNumMostVisitedFavicons);
+ _most_visited_bridge.reset(new ntp_tiles::MostVisitedSitesBridge(self));
+ _most_visited_sites->SetMostVisitedURLsObserver(_most_visited_bridge.get(),
+ kMaxNumMostVisitedFavicons);
}
- (void)updateSearchField {
@@ -1096,34 +1059,6 @@ void SearchEngineObserver::OnTemplateURLServiceChanged() {
ntp_tiles::metrics::RecordTileClick(visitedIndex, tile.source, tileType);
}
-- (void)onMostVisitedURLsAvailable:(const ntp_tiles::NTPTilesVector&)data {
- _mostVisitedData = data;
- [self reloadData];
-
- if (data.size() && !_recordedPageImpression) {
- _recordedPageImpression = YES;
- std::vector<ntp_tiles::metrics::TileImpression> tiles;
- for (const ntp_tiles::NTPTile& ntpTile : data) {
- tiles.emplace_back(ntpTile.source, ntp_tiles::metrics::UNKNOWN_TILE_TYPE,
- ntpTile.url);
- }
- ntp_tiles::metrics::RecordPageImpression(
- tiles, GetApplicationContext()->GetRapporServiceImpl());
- }
-}
-
-- (void)onIconMadeAvailable:(const GURL&)siteUrl {
- for (size_t i = 0; i < [self numberOfItems]; ++i) {
- const ntp_tiles::NTPTile& ntpTile = _mostVisitedData[i];
- if (ntpTile.url == siteUrl) {
- NSIndexPath* indexPath =
- [NSIndexPath indexPathForRow:i inSection:SectionWithMostVisited];
- [_mostVisitedView reloadItemsAtIndexPaths:@[ indexPath ]];
- break;
- }
- }
-}
-
- (void)reloadData {
// -reloadData updates from |_mostVisitedData|.
// -invalidateLayout is necessary because sometimes the flowLayout has the
@@ -1161,6 +1096,36 @@ void SearchEngineObserver::OnTemplateURLServiceChanged() {
return headerHeight;
}
+#pragma mark - MostVisitedSitesObserver
+
+- (void)onMostVisitedURLsAvailable:(const ntp_tiles::NTPTilesVector&)data {
+ _mostVisitedData = data;
+ [self reloadData];
+
+ if (data.size() && !_recordedPageImpression) {
+ _recordedPageImpression = YES;
+ std::vector<ntp_tiles::metrics::TileImpression> tiles;
+ for (const ntp_tiles::NTPTile& ntpTile : data) {
+ tiles.emplace_back(ntpTile.source, ntp_tiles::metrics::UNKNOWN_TILE_TYPE,
+ ntpTile.url);
+ }
+ ntp_tiles::metrics::RecordPageImpression(
+ tiles, GetApplicationContext()->GetRapporServiceImpl());
+ }
+}
+
+- (void)onIconMadeAvailable:(const GURL&)siteUrl {
+ for (size_t i = 0; i < [self numberOfItems]; ++i) {
+ const ntp_tiles::NTPTile& ntpTile = _mostVisitedData[i];
+ if (ntpTile.url == siteUrl) {
+ NSIndexPath* indexPath =
+ [NSIndexPath indexPathForRow:i inSection:SectionWithMostVisited];
+ [_mostVisitedView reloadItemsAtIndexPaths:@[ indexPath ]];
+ break;
+ }
+ }
+}
+
#pragma mark - UICollectionView Methods.
- (CGSize)collectionView:(UICollectionView*)collectionView

Powered by Google App Engine
This is Rietveld 408576698