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

Unified Diff: ios/chrome/browser/ui/settings/settings_collection_view_controller.mm

Issue 2953083005: Implementing sign-in promo histograms for settings (Closed)
Patch Set: Adding "iSO only" Created 3 years, 6 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
« no previous file with comments | « ios/chrome/browser/ui/settings/BUILD.gn ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ios/chrome/browser/ui/settings/settings_collection_view_controller.mm
diff --git a/ios/chrome/browser/ui/settings/settings_collection_view_controller.mm b/ios/chrome/browser/ui/settings/settings_collection_view_controller.mm
index fea44a81e4962499cc31a79add3b5aad20a783bb..e6671a9fd810dacf1a9943dca038622696d4084b 100644
--- a/ios/chrome/browser/ui/settings/settings_collection_view_controller.mm
+++ b/ios/chrome/browser/ui/settings/settings_collection_view_controller.mm
@@ -7,6 +7,7 @@
#include <memory>
#import "base/mac/foundation_util.h"
+#include "base/metrics/histogram_macros.h"
#include "base/metrics/user_metrics.h"
#include "base/scoped_observer.h"
#include "base/strings/sys_string_conversions.h"
@@ -15,6 +16,7 @@
#include "components/keyed_service/core/service_access_type.h"
#include "components/password_manager/core/browser/password_store.h"
#include "components/password_manager/core/common/password_manager_pref_names.h"
+#include "components/pref_registry/pref_registry_syncable.h"
#include "components/prefs/pref_change_registrar.h"
#include "components/prefs/pref_service.h"
#include "components/search_engines/util.h"
@@ -96,6 +98,8 @@ namespace {
const CGFloat kAccountProfilePhotoDimension = 40.0f;
+const int kAutomaticSigninPromoViewDismissCount = 20;
+
typedef NS_ENUM(NSInteger, SectionIdentifier) {
SectionIdentifierSignIn = kSectionIdentifierEnumZero,
SectionIdentifierBasics,
@@ -224,6 +228,9 @@ void SigninObserverBridge::GoogleSignedOut(const std::string& account_id,
CollectionViewDetailItem* _defaultSearchEngineItem;
CollectionViewDetailItem* _savePasswordsDetailItem;
CollectionViewDetailItem* _autoFillDetailItem;
+
+ // YES if the user used at least once the sign-in promo view buttons.
+ BOOL _signinStarted;
}
// Stops observing browser state services. This is required during the shutdown
@@ -310,6 +317,18 @@ void SigninObserverBridge::GoogleSignedOut(const std::string& account_id,
[self updateSearchCell];
}
+- (void)viewDidDisappear:(BOOL)animated {
+ [super viewDidDisappear:animated];
+ if (!_signinStarted && _signinPromoViewMediator) {
+ PrefService* prefs = _browserState->GetPrefs();
+ int displayedCount =
+ prefs->GetInteger(prefs::kIosSettingsSigninPromoDisplayedCount);
+ UMA_HISTOGRAM_COUNTS_100(
+ "MobileSignInPromo.SettingsManager.ImpressionsTilDismiss",
+ displayedCount);
+ }
+}
+
#pragma mark SettingsRootCollectionViewController
- (void)loadModel {
@@ -329,10 +348,16 @@ void SigninObserverBridge::GoogleSignedOut(const std::string& account_id,
base::UserMetricsAction("Signin_Impression_FromSettings"));
_hasRecordedSigninImpression = YES;
}
- if (experimental_flags::IsSigninPromoEnabled()) {
+ PrefService* prefs = _browserState->GetPrefs();
+ int displayedCount =
+ prefs->GetInteger(prefs::kIosSettingsSigninPromoDisplayedCount);
+ if (experimental_flags::IsSigninPromoEnabled() &&
+ displayedCount < kAutomaticSigninPromoViewDismissCount) {
_signinPromoViewMediator =
[[SigninPromoViewMediator alloc] initWithBrowserState:_browserState];
_signinPromoViewMediator.consumer = self;
+ prefs->SetInteger(prefs::kIosSettingsSigninPromoDisplayedCount,
+ displayedCount + 1);
}
[model addItem:[self signInTextItem]
toSectionWithIdentifier:SectionIdentifierSignIn];
@@ -412,8 +437,7 @@ void SigninObserverBridge::GoogleSignedOut(const std::string& account_id,
#pragma mark - Model Items
- (CollectionViewItem*)signInTextItem {
- if (experimental_flags::IsSigninPromoEnabled()) {
- DCHECK(_signinPromoViewMediator);
+ if (_signinPromoViewMediator) {
SigninPromoItem* signinPromoItem =
[[SigninPromoItem alloc] initWithType:ItemTypeSigninPromo];
signinPromoItem.configurator =
@@ -1161,6 +1185,7 @@ void SigninObserverBridge::GoogleSignedOut(const std::string& account_id,
- (void)signinPromoViewDidTapSigninWithNewAccount:
(SigninPromoView*)signinPromoView {
+ [self sendImpressionsTilSigninButtonsHistogram];
DCHECK(!_signinPromoViewMediator.defaultIdentity);
base::RecordAction(
base::UserMetricsAction("Signin_SigninNewAccount_FromSettings"));
@@ -1171,6 +1196,7 @@ void SigninObserverBridge::GoogleSignedOut(const std::string& account_id,
- (void)signinPromoViewDidTapSigninWithDefaultAccount:
(SigninPromoView*)signinPromoView {
+ [self sendImpressionsTilSigninButtonsHistogram];
ChromeIdentity* identity = _signinPromoViewMediator.defaultIdentity;
DCHECK(identity);
base::RecordAction(
@@ -1182,6 +1208,7 @@ void SigninObserverBridge::GoogleSignedOut(const std::string& account_id,
- (void)signinPromoViewDidTapSigninWithOtherAccount:
(SigninPromoView*)signinPromoView {
+ [self sendImpressionsTilSigninButtonsHistogram];
DCHECK(_signinPromoViewMediator.defaultIdentity);
base::RecordAction(
base::UserMetricsAction("Signin_SigninNotDefault_FromSettings"));
@@ -1190,4 +1217,16 @@ void SigninObserverBridge::GoogleSignedOut(const std::string& account_id,
PROMO_ACTION_NOT_DEFAULT];
}
+#pragma mark - Metrics
+
+- (void)sendImpressionsTilSigninButtonsHistogram {
+ _signinStarted = YES;
+ PrefService* prefs = _browserState->GetPrefs();
+ int displayedCount =
+ prefs->GetInteger(prefs::kIosSettingsSigninPromoDisplayedCount);
+ UMA_HISTOGRAM_COUNTS_100(
+ "MobileSignInPromo.SettingsManager.ImpressionsTilSigninButtons",
+ displayedCount);
+}
+
@end
« no previous file with comments | « ios/chrome/browser/ui/settings/BUILD.gn ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698