OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #import "ios/chrome/browser/ui/bookmarks/bookmark_promo_controller.h" | 5 #import "ios/chrome/browser/ui/bookmarks/bookmark_promo_controller.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/mac/scoped_nsobject.h" | |
10 #include "base/metrics/histogram_macros.h" | 9 #include "base/metrics/histogram_macros.h" |
11 #include "base/metrics/user_metrics.h" | 10 #include "base/metrics/user_metrics.h" |
12 #include "components/pref_registry/pref_registry_syncable.h" | 11 #include "components/pref_registry/pref_registry_syncable.h" |
13 #include "components/prefs/pref_service.h" | 12 #include "components/prefs/pref_service.h" |
14 #include "components/signin/core/browser/signin_manager.h" | 13 #include "components/signin/core/browser/signin_manager.h" |
15 #include "google_apis/gaia/google_service_auth_error.h" | 14 #include "google_apis/gaia/google_service_auth_error.h" |
16 #include "ios/chrome/browser/browser_state/chrome_browser_state.h" | 15 #include "ios/chrome/browser/browser_state/chrome_browser_state.h" |
17 #include "ios/chrome/browser/pref_names.h" | 16 #include "ios/chrome/browser/pref_names.h" |
18 #include "ios/chrome/browser/signin/signin_manager_factory.h" | 17 #include "ios/chrome/browser/signin/signin_manager_factory.h" |
19 #import "ios/chrome/browser/ui/commands/generic_chrome_command.h" | 18 #import "ios/chrome/browser/ui/commands/generic_chrome_command.h" |
20 #import "ios/chrome/browser/ui/commands/show_signin_command.h" | 19 #import "ios/chrome/browser/ui/commands/show_signin_command.h" |
21 #import "ios/chrome/browser/ui/ui_util.h" | 20 #import "ios/chrome/browser/ui/ui_util.h" |
22 | 21 |
| 22 #if !defined(__has_feature) || !__has_feature(objc_arc) |
| 23 #error "This file requires ARC support." |
| 24 #endif |
| 25 |
23 namespace { | 26 namespace { |
24 // Enum is used to record the actions performed by the user on the promo cell. | 27 // Enum is used to record the actions performed by the user on the promo cell. |
25 // |Stars.PromoActions|. | 28 // |Stars.PromoActions|. |
26 enum { | 29 enum { |
27 // Recorded each time the promo cell is presented to the user. | 30 // Recorded each time the promo cell is presented to the user. |
28 BOOKMARKS_PROMO_ACTION_DISPLAYED, | 31 BOOKMARKS_PROMO_ACTION_DISPLAYED, |
29 // The user selected the NO THANKS button. | 32 // The user selected the NO THANKS button. |
30 BOOKMARKS_PROMO_ACTION_DISMISSED, | 33 BOOKMARKS_PROMO_ACTION_DISMISSED, |
31 // The user selected the SIGN-IN button. | 34 // The user selected the SIGN-IN button. |
32 BOOKMARKS_PROMO_ACTION_COMPLETED, | 35 BOOKMARKS_PROMO_ACTION_COMPLETED, |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 username:username | 82 username:username |
80 password:password]; | 83 password:password]; |
81 } | 84 } |
82 | 85 |
83 void GoogleSignedOut(const std::string& account_id, | 86 void GoogleSignedOut(const std::string& account_id, |
84 const std::string& username) override { | 87 const std::string& username) override { |
85 [controller_ googleSignedOutWithAcountId:account_id username:username]; | 88 [controller_ googleSignedOutWithAcountId:account_id username:username]; |
86 } | 89 } |
87 | 90 |
88 private: | 91 private: |
89 // Weak | 92 __weak BookmarkPromoController* controller_; |
90 BookmarkPromoController* controller_; | |
91 }; | 93 }; |
92 } // namespace | 94 } // namespace |
93 | 95 |
94 @implementation BookmarkPromoController | 96 @implementation BookmarkPromoController |
95 | 97 |
96 @synthesize delegate = _delegate; | 98 @synthesize delegate = _delegate; |
97 @synthesize promoState = _promoState; | 99 @synthesize promoState = _promoState; |
98 | 100 |
99 + (void)registerBrowserStatePrefs:(user_prefs::PrefRegistrySyncable*)registry { | 101 + (void)registerBrowserStatePrefs:(user_prefs::PrefRegistrySyncable*)registry { |
100 registry->RegisterBooleanPref(prefs::kIosBookmarkPromoAlreadySeen, false); | 102 registry->RegisterBooleanPref(prefs::kIosBookmarkPromoAlreadySeen, false); |
(...skipping 20 matching lines...) Expand all Loading... |
121 return self; | 123 return self; |
122 } | 124 } |
123 | 125 |
124 - (void)dealloc { | 126 - (void)dealloc { |
125 if (!_isIncognito) { | 127 if (!_isIncognito) { |
126 DCHECK(_browserState); | 128 DCHECK(_browserState); |
127 SigninManager* signinManager = | 129 SigninManager* signinManager = |
128 ios::SigninManagerFactory::GetForBrowserState(_browserState); | 130 ios::SigninManagerFactory::GetForBrowserState(_browserState); |
129 signinManager->RemoveObserver(_signinObserver.get()); | 131 signinManager->RemoveObserver(_signinObserver.get()); |
130 } | 132 } |
131 [super dealloc]; | |
132 } | 133 } |
133 | 134 |
134 - (void)showSignIn { | 135 - (void)showSignIn { |
135 UMA_HISTOGRAM_ENUMERATION(kBookmarksPromoActionsHistogram, | 136 UMA_HISTOGRAM_ENUMERATION(kBookmarksPromoActionsHistogram, |
136 BOOKMARKS_PROMO_ACTION_COMPLETED, | 137 BOOKMARKS_PROMO_ACTION_COMPLETED, |
137 BOOKMARKS_PROMO_ACTION_COUNT); | 138 BOOKMARKS_PROMO_ACTION_COUNT); |
138 base::RecordAction( | 139 base::RecordAction( |
139 base::UserMetricsAction("Signin_Signin_FromBookmarkManager")); | 140 base::UserMetricsAction("Signin_Signin_FromBookmarkManager")); |
140 base::scoped_nsobject<ShowSigninCommand> command([[ShowSigninCommand alloc] | 141 ShowSigninCommand* command = [[ShowSigninCommand alloc] |
141 initWithOperation:AUTHENTICATION_OPERATION_SIGNIN | 142 initWithOperation:AUTHENTICATION_OPERATION_SIGNIN |
142 signInAccessPoint:signin_metrics::AccessPoint:: | 143 signInAccessPoint:signin_metrics::AccessPoint:: |
143 ACCESS_POINT_BOOKMARK_MANAGER]); | 144 ACCESS_POINT_BOOKMARK_MANAGER]; |
144 [self chromeExecuteCommand:command]; | 145 [self chromeExecuteCommand:command]; |
145 } | 146 } |
146 | 147 |
147 - (void)hidePromoCell { | 148 - (void)hidePromoCell { |
148 DCHECK(!_isIncognito); | 149 DCHECK(!_isIncognito); |
149 DCHECK(_browserState); | 150 DCHECK(_browserState); |
150 | 151 |
151 UMA_HISTOGRAM_ENUMERATION(kBookmarksPromoActionsHistogram, | 152 UMA_HISTOGRAM_ENUMERATION(kBookmarksPromoActionsHistogram, |
152 BOOKMARKS_PROMO_ACTION_DISMISSED, | 153 BOOKMARKS_PROMO_ACTION_DISMISSED, |
153 BOOKMARKS_PROMO_ACTION_COUNT); | 154 BOOKMARKS_PROMO_ACTION_COUNT); |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
207 self.promoState = NO; | 208 self.promoState = NO; |
208 } | 209 } |
209 | 210 |
210 // Called when the currently signed-in user for a user has been signed out. | 211 // Called when the currently signed-in user for a user has been signed out. |
211 - (void)googleSignedOutWithAcountId:(const std::string&)account_id | 212 - (void)googleSignedOutWithAcountId:(const std::string&)account_id |
212 username:(const std::string&)username { | 213 username:(const std::string&)username { |
213 [self updatePromoState]; | 214 [self updatePromoState]; |
214 } | 215 } |
215 | 216 |
216 @end | 217 @end |
OLD | NEW |