OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 package org.chromium.chrome.browser.bookmarks; | 5 package org.chromium.chrome.browser.bookmarks; |
6 | 6 |
7 import android.content.Context; | 7 import android.content.Context; |
8 import android.content.SharedPreferences; | 8 import android.content.SharedPreferences; |
9 import android.support.v7.widget.RecyclerView; | 9 import android.support.v7.widget.RecyclerView; |
10 import android.support.v7.widget.RecyclerView.ViewHolder; | 10 import android.support.v7.widget.RecyclerView.ViewHolder; |
11 import android.view.ViewGroup; | 11 import android.view.ViewGroup; |
12 | 12 |
13 import org.chromium.base.ContextUtils; | 13 import org.chromium.base.ContextUtils; |
| 14 import org.chromium.base.VisibleForTesting; |
14 import org.chromium.base.metrics.RecordUserAction; | 15 import org.chromium.base.metrics.RecordUserAction; |
15 import org.chromium.chrome.browser.signin.SigninAccessPoint; | 16 import org.chromium.chrome.browser.signin.SigninAccessPoint; |
16 import org.chromium.chrome.browser.signin.SigninAndSyncView; | 17 import org.chromium.chrome.browser.signin.SigninAndSyncView; |
17 import org.chromium.chrome.browser.signin.SigninManager; | 18 import org.chromium.chrome.browser.signin.SigninManager; |
18 import org.chromium.chrome.browser.signin.SigninManager.SignInStateObserver; | 19 import org.chromium.chrome.browser.signin.SigninManager.SignInStateObserver; |
19 import org.chromium.components.sync.AndroidSyncSettings; | 20 import org.chromium.components.sync.AndroidSyncSettings; |
20 import org.chromium.components.sync.AndroidSyncSettings.AndroidSyncSettingsObser
ver; | 21 import org.chromium.components.sync.AndroidSyncSettings.AndroidSyncSettingsObser
ver; |
21 | 22 |
22 /** | 23 /** |
23 * Class that manages all the logic and UI behind the signin promo header in the
bookmark | 24 * Class that manages all the logic and UI behind the signin promo header in the
bookmark |
(...skipping 12 matching lines...) Expand all Loading... |
36 void onPromoHeaderShowingChanged(boolean isShowing); | 37 void onPromoHeaderShowingChanged(boolean isShowing); |
37 } | 38 } |
38 | 39 |
39 private static final String PREF_SIGNIN_PROMO_DECLINED = | 40 private static final String PREF_SIGNIN_PROMO_DECLINED = |
40 "enhanced_bookmark_signin_promo_declined"; | 41 "enhanced_bookmark_signin_promo_declined"; |
41 private static final String PREF_SIGNIN_PROMO_SHOW_COUNT = | 42 private static final String PREF_SIGNIN_PROMO_SHOW_COUNT = |
42 "enhanced_bookmark_signin_promo_show_count"; | 43 "enhanced_bookmark_signin_promo_show_count"; |
43 // TODO(kkimlabs): Figure out the optimal number based on UMA data. | 44 // TODO(kkimlabs): Figure out the optimal number based on UMA data. |
44 private static final int MAX_SIGNIN_PROMO_SHOW_COUNT = 5; | 45 private static final int MAX_SIGNIN_PROMO_SHOW_COUNT = 5; |
45 | 46 |
| 47 private static boolean sShouldShowForTests; |
| 48 |
46 private Context mContext; | 49 private Context mContext; |
47 private SigninManager mSignInManager; | 50 private SigninManager mSignInManager; |
48 private boolean mShouldShow; | 51 private boolean mShouldShow; |
49 private PromoHeaderShowingChangeListener mShowingChangeListener; | 52 private PromoHeaderShowingChangeListener mShowingChangeListener; |
50 | 53 |
51 /** | 54 /** |
52 * Initializes the class. Note that this will start listening to signin rela
ted events and | 55 * Initializes the class. Note that this will start listening to signin rela
ted events and |
53 * update itself if needed. | 56 * update itself if needed. |
54 */ | 57 */ |
55 BookmarkPromoHeader(Context context, | 58 BookmarkPromoHeader(Context context, |
(...skipping 23 matching lines...) Expand all Loading... |
79 AndroidSyncSettings.unregisterObserver(mContext, this); | 82 AndroidSyncSettings.unregisterObserver(mContext, this); |
80 | 83 |
81 mSignInManager.removeSignInStateObserver(this); | 84 mSignInManager.removeSignInStateObserver(this); |
82 mSignInManager = null; | 85 mSignInManager = null; |
83 } | 86 } |
84 | 87 |
85 /** | 88 /** |
86 * @return Whether it should be showing. | 89 * @return Whether it should be showing. |
87 */ | 90 */ |
88 boolean shouldShow() { | 91 boolean shouldShow() { |
89 return mShouldShow; | 92 return mShouldShow || sShouldShowForTests; |
90 } | 93 } |
91 | 94 |
92 /** | 95 /** |
93 * @return Signin promo header {@link ViewHolder} instance that can be used
with | 96 * @return Signin promo header {@link ViewHolder} instance that can be used
with |
94 * {@link RecyclerView}. | 97 * {@link RecyclerView}. |
95 */ | 98 */ |
96 ViewHolder createHolder(ViewGroup parent) { | 99 ViewHolder createHolder(ViewGroup parent) { |
97 SigninAndSyncView.Listener listener = new SigninAndSyncView.Listener() { | 100 SigninAndSyncView.Listener listener = new SigninAndSyncView.Listener() { |
98 @Override | 101 @Override |
99 public void onViewDismissed() { | 102 public void onViewDismissed() { |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
147 | 150 |
148 @Override | 151 @Override |
149 public void onSignedIn() { | 152 public void onSignedIn() { |
150 updateShouldShow(true); | 153 updateShouldShow(true); |
151 } | 154 } |
152 | 155 |
153 @Override | 156 @Override |
154 public void onSignedOut() { | 157 public void onSignedOut() { |
155 updateShouldShow(true); | 158 updateShouldShow(true); |
156 } | 159 } |
| 160 |
| 161 /** |
| 162 * Forces the promo to show for testing purposes. |
| 163 */ |
| 164 @VisibleForTesting |
| 165 public static void setShouldShowForTests() { |
| 166 sShouldShowForTests = true; |
| 167 } |
157 } | 168 } |
OLD | NEW |