// Copyright 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. package org.chromium.chrome.browser.signin; import android.app.Activity; import android.text.TextUtils; import org.chromium.base.annotations.CalledByNative; import org.chromium.chrome.browser.multiwindow.MultiWindowUtils; import org.chromium.chrome.browser.preferences.ChromePreferenceManager; import org.chromium.chrome.browser.preferences.PrefServiceBridge; import org.chromium.components.signin.ChromeSigninController; import org.chromium.ui.base.WindowAndroid; /** * Helper functions for promoting sign in. */ public class SigninPromoUtil { private SigninPromoUtil() {} /** * Launches the signin promo if it needs to be displayed. * @param activity The parent activity. * @return Whether the signin promo is shown. */ public static boolean launchSigninPromoIfNeeded(final Activity activity) { // The promo is displayed if Chrome is launched directly (i.e., not with the intent to // navigate to and view a URL on startup), the instance is part of the field trial, // and the promo has been marked to display. ChromePreferenceManager preferenceManager = ChromePreferenceManager.getInstance(activity); if (MultiWindowUtils.getInstance().isLegacyMultiWindow(activity)) return false; if (!preferenceManager.getShowSigninPromo()) return false; preferenceManager.setShowSigninPromo(false); String lastSyncName = PrefServiceBridge.getInstance().getSyncLastAccountName(); if (ChromeSigninController.get(activity).isSignedIn() || !TextUtils.isEmpty(lastSyncName)) { return false; } AccountSigninActivity.startAccountSigninActivity(activity, SigninAccessPoint.SIGNIN_PROMO); preferenceManager.setSigninPromoShown(); return true; } /** * A convenience method to create an AccountSigninActivity, passing the access point as an * intent extra. * @param window WindowAndroid from which to get the Activity/Context. * @param accessPoint for metrics purposes. */ @CalledByNative private static void openAccountSigninActivityForPromo(WindowAndroid window, int accessPoint) { Activity activity = window.getActivity().get(); if (activity != null) { AccountSigninActivity.startIfAllowed(activity, accessPoint); } } }