| Index: ios/chrome/browser/ui/bookmarks/bookmark_collection_view.mm
|
| diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_collection_view.mm b/ios/chrome/browser/ui/bookmarks/bookmark_collection_view.mm
|
| index 28cc755dbb44cc7bc27c3d588966e6491437fb92..03043e7ddf684349e76f15b5ad30c7740416abec 100644
|
| --- a/ios/chrome/browser/ui/bookmarks/bookmark_collection_view.mm
|
| +++ b/ios/chrome/browser/ui/bookmarks/bookmark_collection_view.mm
|
| @@ -19,10 +19,12 @@
|
| #include "components/favicon/core/large_icon_service.h"
|
| #include "components/favicon_base/fallback_icon_style.h"
|
| #include "components/favicon_base/favicon_types.h"
|
| +#include "components/pref_registry/pref_registry_syncable.h"
|
| #include "ios/chrome/browser/bookmarks/bookmark_model_factory.h"
|
| #include "ios/chrome/browser/bookmarks/bookmarks_utils.h"
|
| #include "ios/chrome/browser/experimental_flags.h"
|
| #include "ios/chrome/browser/favicon/ios_chrome_large_icon_service_factory.h"
|
| +#include "ios/chrome/browser/pref_names.h"
|
| #import "ios/chrome/browser/ui/authentication/signin_promo_view.h"
|
| #import "ios/chrome/browser/ui/authentication/signin_promo_view_configurator.h"
|
| #import "ios/chrome/browser/ui/authentication/signin_promo_view_consumer.h"
|
| @@ -77,6 +79,18 @@ CGFloat minFaviconSizePt = 16;
|
| // This delay should not be too small to let enough time to load bookmarks
|
| // from network.
|
| const NSTimeInterval kShowEmptyBookmarksBackgroundRefreshDelay = 1.0;
|
| +
|
| +// The histogram used to record the number of time was seen before the bookmark
|
| +// view has been closed.
|
| +const char kBookmarksDismissalCount[] =
|
| + "MobileSignInPromo.BookmarkManager.DismissalCount";
|
| +// The histogram used to record the number of time was seen before the user uses
|
| +// the sign-in promo.
|
| +const char kBookmarksCountTilSignin[] =
|
| + "MobileSignInPromo.BookmarkManager.CountTilSignin";
|
| +// The histogram used to record the number of time was seen before the user
|
| +// dissmisses the sign-in promo.
|
| +const char kBookmarkCountTilX[] = "MobileSignInPromo.BookmarkManager.CountTilX";
|
| }
|
|
|
| @interface BookmarkCollectionView ()<BookmarkPromoCellDelegate,
|
| @@ -142,6 +156,11 @@ const NSTimeInterval kShowEmptyBookmarksBackgroundRefreshDelay = 1.0;
|
| @synthesize browserState = _browserState;
|
| @synthesize shadow = _shadow;
|
|
|
| ++ (void)registerBrowserStatePrefs:(user_prefs::PrefRegistrySyncable*)registry {
|
| + registry->RegisterIntegerPref(prefs::kIosBookmarkSigninPromoDisplayedCount,
|
| + 0);
|
| +}
|
| +
|
| #pragma mark - Initialization
|
|
|
| - (void)setupViews {
|
| @@ -335,16 +354,35 @@ const NSTimeInterval kShowEmptyBookmarksBackgroundRefreshDelay = 1.0;
|
| _signinPromoViewMediator.consumer = nil;
|
| _signinPromoViewMediator = nil;
|
| } else {
|
| - _signinPromoViewMediator = [[SigninPromoViewMediator alloc] init];
|
| + _signinPromoViewMediator = [[SigninPromoViewMediator alloc]
|
| + initWithBrowserState:_browserState];
|
| _signinPromoViewMediator.consumer = self;
|
| + _signinPromoViewMediator.displayedCountPreferenceKey =
|
| + prefs::kIosBookmarkSigninPromoDisplayedCount;
|
| + _signinPromoViewMediator.alreadySeenSigninViewPreferenceKey =
|
| + prefs::kIosBookmarkPromoAlreadySeen;
|
| + _signinPromoViewMediator.dismissalCountHistogramName =
|
| + kBookmarksDismissalCount;
|
| + _signinPromoViewMediator.countTilXHistogramName = kBookmarkCountTilX;
|
| + _signinPromoViewMediator.countTilSigninHistogramName =
|
| + kBookmarksCountTilSignin;
|
| _signinPromoViewMediator.accessPoint =
|
| signin_metrics::AccessPoint::ACCESS_POINT_BOOKMARK_MANAGER;
|
| + [_signinPromoViewMediator signinPromoViewVisible];
|
| }
|
| }
|
| [self.collectionView reloadData];
|
| }
|
| }
|
|
|
| +- (void)wasShown {
|
| + [_signinPromoViewMediator signinPromoViewVisible];
|
| +}
|
| +
|
| +- (void)wasHidden {
|
| + [_signinPromoViewMediator signinPromoViewHidden];
|
| +}
|
| +
|
| #pragma mark - Sections
|
|
|
| - (NSInteger)promoSection {
|
| @@ -773,7 +811,7 @@ const NSTimeInterval kShowEmptyBookmarksBackgroundRefreshDelay = 1.0;
|
| configureSigninPromoView:signinPromoCell.signinPromoView];
|
| __weak BookmarkCollectionView* weakSelf = self;
|
| signinPromoCell.closeButtonAction = ^() {
|
| - [weakSelf.delegate bookmarkCollectionViewDismissPromo:self];
|
| + [weakSelf signinPromoCloseButtonAction];
|
| };
|
| return signinPromoCell;
|
| } else {
|
| @@ -794,6 +832,12 @@ const NSTimeInterval kShowEmptyBookmarksBackgroundRefreshDelay = 1.0;
|
| return cell;
|
| }
|
|
|
| +// Removes the sign-in promo view.
|
| +- (void)signinPromoCloseButtonAction {
|
| + [_signinPromoViewMediator signinPromoViewDismissed];
|
| + [_delegate bookmarkCollectionViewDismissPromo:self];
|
| +}
|
| +
|
| // Create a header view for the element at |indexPath|.
|
| - (UICollectionReusableView*)headerAtIndexPath:(NSIndexPath*)indexPath {
|
| if (![self needsSectionHeaderForSection:indexPath.section])
|
|
|