// Copyright 2015 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.content.Context; import android.content.Intent; import android.provider.Settings; import org.chromium.base.ThreadUtils; import org.chromium.base.annotations.CalledByNative; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.ProfileAccountManagementMetrics; /** * Stub entry points and implementation interface for the account management fragment delegate. */ public class AccountManagementScreenHelper { /* * TODO(guohui): add all Gaia service types. * Enum for the Gaia service types, must match GAIAServiceType in * signin_header_helper.h */ /** * The signin::GAIAServiceType value used in openAccountManagementScreen when the dialog * hasn't been triggered from the content area. */ public static final int GAIA_SERVICE_TYPE_NONE = 0; /** * The signin::GAIAServiceType value used when openAndroidAccountCreationScreen is triggered by * the GAIA service to create a new account */ public static final int GAIA_SERVICE_TYPE_SIGNUP = 5; private static final String EXTRA_ACCOUNT_TYPES = "account_types"; private static final String EXTRA_VALUE_GOOGLE_ACCOUNTS = "com.google"; @CalledByNative private static void openAccountManagementScreen( Context applicationContext, Profile profile, int gaiaServiceType) { ThreadUtils.assertOnUiThread(); if (gaiaServiceType == GAIA_SERVICE_TYPE_SIGNUP) { openAndroidAccountCreationScreen(applicationContext); return; } AccountManagementFragment.openAccountManagementScreen( applicationContext, profile, gaiaServiceType); } /** * Opens the Android account manager for adding or creating a Google account. * @param applicationContext */ private static void openAndroidAccountCreationScreen( Context applicationContext) { logEvent(ProfileAccountManagementMetrics.DIRECT_ADD_ACCOUNT, GAIA_SERVICE_TYPE_SIGNUP); Intent createAccountIntent = new Intent(Settings.ACTION_ADD_ACCOUNT); createAccountIntent.putExtra( EXTRA_ACCOUNT_TYPES, new String[]{EXTRA_VALUE_GOOGLE_ACCOUNTS}); createAccountIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); applicationContext.startActivity(createAccountIntent); } /** * Log a UMA event for a given metric and a signin type. * @param metric One of ProfileAccountManagementMetrics constants. * @param gaiaServiceType A signin::GAIAServiceType. */ public static void logEvent(int metric, int gaiaServiceType) { nativeLogEvent(metric, gaiaServiceType); } // Native methods. private static native void nativeLogEvent(int metric, int gaiaServiceType); }