| 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 |