summaryrefslogtreecommitdiffstats
path: root/mobile/android/services/src/main/java/org/mozilla/gecko/fxa/activities/FxAccountStatusActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/android/services/src/main/java/org/mozilla/gecko/fxa/activities/FxAccountStatusActivity.java')
-rw-r--r--mobile/android/services/src/main/java/org/mozilla/gecko/fxa/activities/FxAccountStatusActivity.java228
1 files changed, 0 insertions, 228 deletions
diff --git a/mobile/android/services/src/main/java/org/mozilla/gecko/fxa/activities/FxAccountStatusActivity.java b/mobile/android/services/src/main/java/org/mozilla/gecko/fxa/activities/FxAccountStatusActivity.java
deleted file mode 100644
index 4bb929f0a..000000000
--- a/mobile/android/services/src/main/java/org/mozilla/gecko/fxa/activities/FxAccountStatusActivity.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-package org.mozilla.gecko.fxa.activities;
-
-import android.accounts.Account;
-import android.accounts.AccountManager;
-import android.accounts.AccountManagerCallback;
-import android.accounts.AccountManagerFuture;
-import android.annotation.SuppressLint;
-import android.annotation.TargetApi;
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.os.Build;
-import android.os.Bundle;
-import android.support.v7.app.ActionBar;
-import android.support.v7.widget.Toolbar;
-import android.util.TypedValue;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.Window;
-import android.widget.Toast;
-import org.mozilla.gecko.AppConstants;
-import org.mozilla.gecko.Locales.LocaleAwareAppCompatActivity;
-import org.mozilla.gecko.R;
-import org.mozilla.gecko.background.common.log.Logger;
-import org.mozilla.gecko.background.fxa.FxAccountUtils;
-import org.mozilla.gecko.fxa.FirefoxAccounts;
-import org.mozilla.gecko.fxa.FxAccountConstants;
-import org.mozilla.gecko.fxa.authenticator.AndroidFxAccount;
-import org.mozilla.gecko.sync.Utils;
-
-/**
- * Activity which displays account status.
- */
-public class FxAccountStatusActivity extends LocaleAwareAppCompatActivity {
- private static final String LOG_TAG = FxAccountStatusActivity.class.getSimpleName();
-
- protected FxAccountStatusFragment statusFragment;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- // Display the fragment as the content.
- statusFragment = new FxAccountStatusFragment();
- getSupportFragmentManager()
- .beginTransaction()
- .replace(android.R.id.content, statusFragment)
- .commit();
-
- maybeSetHomeButtonEnabled();
- }
-
- /**
- * Sufficiently recent Android versions need additional code to receive taps
- * on the status bar to go "up". See <a
- * href="http://stackoverflow.com/a/8953148">this stackoverflow answer</a> for
- * more information.
- */
- @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
- protected void maybeSetHomeButtonEnabled() {
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
- Logger.debug(LOG_TAG, "Not enabling home button; version too low.");
- return;
- }
- final ActionBar actionBar = getSupportActionBar();
- if (actionBar != null) {
- Logger.debug(LOG_TAG, "Enabling home button.");
- actionBar.setHomeButtonEnabled(true);
- actionBar.setDisplayHomeAsUpEnabled(true);
- return;
- }
- Logger.debug(LOG_TAG, "Not enabling home button.");
- }
-
- @Override
- public void onResume() {
- super.onResume();
-
- final AndroidFxAccount fxAccount = getAndroidFxAccount();
- if (fxAccount == null) {
- Logger.warn(LOG_TAG, "Could not get Firefox Account.");
-
- // Gracefully redirect to get started.
- final Intent intent = new Intent(FxAccountConstants.ACTION_FXA_GET_STARTED);
- // Per http://stackoverflow.com/a/8992365, this triggers a known bug with
- // the soft keyboard not being shown for the started activity. Why, Android, why?
- intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
- startActivity(intent);
-
- setResult(RESULT_CANCELED);
- finish();
- return;
- }
- statusFragment.refresh(fxAccount);
- }
-
- /**
- * Helper to fetch (unique) Android Firefox Account if one exists, or return null.
- */
- protected AndroidFxAccount getAndroidFxAccount() {
- Account account = FirefoxAccounts.getFirefoxAccount(this);
- if (account == null) {
- return null;
- }
- return new AndroidFxAccount(this, account);
- }
-
-
- /**
- * Helper function to maybe remove the given Android account.
- */
- @SuppressLint("InlinedApi")
- public static void maybeDeleteAndroidAccount(final Activity activity, final Account account, final Intent intent) {
- if (account == null) {
- Logger.warn(LOG_TAG, "Trying to delete null account; ignoring request.");
- return;
- }
-
- final AccountManagerCallback<Boolean> callback = new AccountManagerCallback<Boolean>() {
- @Override
- public void run(AccountManagerFuture<Boolean> future) {
- Logger.info(LOG_TAG, "Account " + Utils.obfuscateEmail(account.name) + " removed.");
- final String text = activity.getResources().getString(R.string.fxaccount_remove_account_toast, account.name);
- Toast.makeText(activity, text, Toast.LENGTH_LONG).show();
- if (intent != null) {
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- activity.startActivity(intent);
- }
- activity.finish();
- }
- };
-
- /*
- * Get the best dialog icon from the theme on v11+.
- * See http://stackoverflow.com/questions/14910536/android-dialog-theme-makes-icon-too-light/14910945#14910945.
- */
- final int icon;
- final TypedValue typedValue = new TypedValue();
- activity.getTheme().resolveAttribute(android.R.attr.alertDialogIcon, typedValue, true);
- icon = typedValue.resourceId;
-
- final AlertDialog dialog = new AlertDialog.Builder(activity)
- .setTitle(R.string.fxaccount_remove_account_dialog_title)
- .setIcon(icon)
- .setMessage(R.string.fxaccount_remove_account_dialog_message)
- .setPositiveButton(android.R.string.ok, new Dialog.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- AccountManager.get(activity).removeAccount(account, callback, null);
- }
- })
- .setNegativeButton(android.R.string.cancel, new Dialog.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.cancel();
- }
- })
- .create();
-
- dialog.show();
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- int itemId = item.getItemId();
- if (itemId == android.R.id.home) {
- finish();
- return true;
- }
-
- if (itemId == R.id.enable_debug_mode) {
- FxAccountUtils.LOG_PERSONAL_INFORMATION = !FxAccountUtils.LOG_PERSONAL_INFORMATION;
- Toast.makeText(this, (FxAccountUtils.LOG_PERSONAL_INFORMATION ? "Enabled" : "Disabled") +
- " Firefox Account personal information!", Toast.LENGTH_LONG).show();
- item.setChecked(!item.isChecked());
- // Display or hide debug options.
- statusFragment.hardRefresh();
- return true;
- }
-
- return super.onOptionsItemSelected(item);
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- final MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.fxaccount_status_menu, menu);
- // !defined(MOZILLA_OFFICIAL) || defined(NIGHTLY_BUILD) || defined(MOZ_DEBUG)
- boolean enabled = !AppConstants.MOZILLA_OFFICIAL || AppConstants.NIGHTLY_BUILD || AppConstants.DEBUG_BUILD;
- if (!enabled) {
- menu.removeItem(R.id.enable_debug_mode);
- } else {
- final MenuItem debugModeItem = menu.findItem(R.id.enable_debug_mode);
- if (debugModeItem != null) {
- // Update checked state based on internal flag.
- menu.findItem(R.id.enable_debug_mode).setChecked(FxAccountUtils.LOG_PERSONAL_INFORMATION);
- }
- }
- return super.onCreateOptionsMenu(menu);
- };
-
- @Override
- public void openOptionsMenu() {
- // This is a workaround of an Android bug:
- // https://code.google.com/p/android/issues/detail?id=185217
- // openOptionsMenu isn't overriden by WindowDecorActionBar, which is used by AppCompatActivity,
- // meaning getSupportActionbar().openOptionsMenu doesn't work.
- // Based loosely on the code in:
- // http://androidxref.com/6.0.1_r10/xref/frameworks/support/v7/appcompat/src/android/support/v7/internal/app/WindowDecorActionBar.java#getDecorToolbar
-
- final Window window = getWindow();
- final View decor = window.getDecorView();
- final View view = decor.findViewById(R.id.action_bar);
-
- if (view instanceof Toolbar) {
- final Toolbar toolbar = (Toolbar) view;
- toolbar.showOverflowMenu();
- }
- }
-}