From 250201219bda5b50cc7fd329c481d6054d4fa489 Mon Sep 17 00:00:00 2001 From: Nick Alexander Date: Tue, 1 Sep 2015 13:18:48 -0700 Subject: [PATCH] Bug 1204937 - Part 4: Add "pass-through to web" versions of native account activities. r=sebastian This always loads about:accounts with an 'action' query parameter. This indirection allows Gecko to manage the fxa-content-server pref independently of Java. --HG-- rename : mobile/android/base/fxa/activities/FxAccountConfirmAccountActivity.java => mobile/android/base/fxa/activities/FxAccountConfirmAccountActivityWeb.java rename : mobile/android/base/fxa/activities/FxAccountFinishMigratingActivity.java => mobile/android/base/fxa/activities/FxAccountFinishMigratingActivityWeb.java rename : mobile/android/base/fxa/activities/FxAccountUpdateCredentialsActivity.java => mobile/android/base/fxa/activities/FxAccountUpdateCredentialsActivityWeb.java extra : commitid : 4TMvCIutRhS extra : rebase_source : ba8d8d0d4617b4ae85504468e458bdc0ff4990fe --- mobile/android/base/android-services.mozbuild | 5 ++ .../FxAccountConfirmAccountActivityWeb.java | 11 ++++ .../FxAccountFinishMigratingActivityWeb.java | 11 ++++ .../FxAccountGetStartedActivityWeb.java | 11 ++++ ...FxAccountUpdateCredentialsActivityWeb.java | 11 ++++ .../activities/FxAccountWebFlowActivity.java | 64 +++++++++++++++++++ ...FxAccountAndroidManifest_activities.xml.in | 38 +++++++++++ 7 files changed, 151 insertions(+) create mode 100644 mobile/android/base/fxa/activities/FxAccountConfirmAccountActivityWeb.java create mode 100644 mobile/android/base/fxa/activities/FxAccountFinishMigratingActivityWeb.java create mode 100644 mobile/android/base/fxa/activities/FxAccountGetStartedActivityWeb.java create mode 100644 mobile/android/base/fxa/activities/FxAccountUpdateCredentialsActivityWeb.java create mode 100644 mobile/android/base/fxa/activities/FxAccountWebFlowActivity.java diff --git a/mobile/android/base/android-services.mozbuild b/mobile/android/base/android-services.mozbuild index 093862a94017..fa76bb24ecc0 100644 --- a/mobile/android/base/android-services.mozbuild +++ b/mobile/android/base/android-services.mozbuild @@ -853,16 +853,21 @@ sync_java_files = [ 'fxa/activities/FxAccountAbstractSetupActivity.java', 'fxa/activities/FxAccountAbstractUpdateCredentialsActivity.java', 'fxa/activities/FxAccountConfirmAccountActivity.java', + 'fxa/activities/FxAccountConfirmAccountActivityWeb.java', 'fxa/activities/FxAccountCreateAccountActivity.java', 'fxa/activities/FxAccountCreateAccountNotAllowedActivity.java', 'fxa/activities/FxAccountFinishMigratingActivity.java', + 'fxa/activities/FxAccountFinishMigratingActivityWeb.java', 'fxa/activities/FxAccountGetStartedActivity.java', + 'fxa/activities/FxAccountGetStartedActivityWeb.java', 'fxa/activities/FxAccountMigrationFinishedActivity.java', 'fxa/activities/FxAccountSignInActivity.java', 'fxa/activities/FxAccountStatusActivity.java', 'fxa/activities/FxAccountStatusFragment.java', 'fxa/activities/FxAccountUpdateCredentialsActivity.java', + 'fxa/activities/FxAccountUpdateCredentialsActivityWeb.java', 'fxa/activities/FxAccountVerifiedAccountActivity.java', + 'fxa/activities/FxAccountWebFlowActivity.java', 'fxa/activities/PicassoPreferenceIconTarget.java', 'fxa/authenticator/AccountPickler.java', 'fxa/authenticator/AndroidFxAccount.java', diff --git a/mobile/android/base/fxa/activities/FxAccountConfirmAccountActivityWeb.java b/mobile/android/base/fxa/activities/FxAccountConfirmAccountActivityWeb.java new file mode 100644 index 000000000000..b5af855d0354 --- /dev/null +++ b/mobile/android/base/fxa/activities/FxAccountConfirmAccountActivityWeb.java @@ -0,0 +1,11 @@ +/* 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; + +public class FxAccountConfirmAccountActivityWeb extends FxAccountWebFlowActivity { + public FxAccountConfirmAccountActivityWeb() { + super(CANNOT_RESUME_WHEN_NO_ACCOUNTS_EXIST, "settings"); + } +} diff --git a/mobile/android/base/fxa/activities/FxAccountFinishMigratingActivityWeb.java b/mobile/android/base/fxa/activities/FxAccountFinishMigratingActivityWeb.java new file mode 100644 index 000000000000..0e66f1d6c11e --- /dev/null +++ b/mobile/android/base/fxa/activities/FxAccountFinishMigratingActivityWeb.java @@ -0,0 +1,11 @@ +/* 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; + +public class FxAccountFinishMigratingActivityWeb extends FxAccountWebFlowActivity { + public FxAccountFinishMigratingActivityWeb() { + super(CANNOT_RESUME_WHEN_NO_ACCOUNTS_EXIST, "signin", "migration=sync11"); + } +} diff --git a/mobile/android/base/fxa/activities/FxAccountGetStartedActivityWeb.java b/mobile/android/base/fxa/activities/FxAccountGetStartedActivityWeb.java new file mode 100644 index 000000000000..984fcb376b65 --- /dev/null +++ b/mobile/android/base/fxa/activities/FxAccountGetStartedActivityWeb.java @@ -0,0 +1,11 @@ +/* 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; + +public class FxAccountGetStartedActivityWeb extends FxAccountWebFlowActivity { + public FxAccountGetStartedActivityWeb() { + super(CANNOT_RESUME_WHEN_ACCOUNTS_EXIST, "signin"); + } +} diff --git a/mobile/android/base/fxa/activities/FxAccountUpdateCredentialsActivityWeb.java b/mobile/android/base/fxa/activities/FxAccountUpdateCredentialsActivityWeb.java new file mode 100644 index 000000000000..5a2ea79c8397 --- /dev/null +++ b/mobile/android/base/fxa/activities/FxAccountUpdateCredentialsActivityWeb.java @@ -0,0 +1,11 @@ +/* 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; + +public class FxAccountUpdateCredentialsActivityWeb extends FxAccountWebFlowActivity { + public FxAccountUpdateCredentialsActivityWeb() { + super(CANNOT_RESUME_WHEN_NO_ACCOUNTS_EXIST, "force_auth"); + } +} diff --git a/mobile/android/base/fxa/activities/FxAccountWebFlowActivity.java b/mobile/android/base/fxa/activities/FxAccountWebFlowActivity.java new file mode 100644 index 000000000000..685eed88675b --- /dev/null +++ b/mobile/android/base/fxa/activities/FxAccountWebFlowActivity.java @@ -0,0 +1,64 @@ +/* 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.os.Bundle; +import org.mozilla.gecko.Locales; +import org.mozilla.gecko.background.common.log.Logger; +import org.mozilla.gecko.fxa.FxAccountConstants; +import org.mozilla.gecko.fxa.authenticator.AndroidFxAccount; +import org.mozilla.gecko.sync.setup.activities.ActivityUtils; + +/** + * Activity which shows the status activity or passes through to web flow. + */ +public class FxAccountWebFlowActivity extends FxAccountAbstractActivity { + protected static final String LOG_TAG = FxAccountWebFlowActivity.class.getSimpleName(); + + protected static final String ABOUT_ACCOUNTS = "about:accounts"; + private final String action; + private final String extras; + + public FxAccountWebFlowActivity(int resume, String action) { + this(resume, action, null); + } + + public FxAccountWebFlowActivity(int resume, String action, String extras) { + super(resume); + this.action = action; + this.extras = (extras != null) ? ("&" + extras) : ""; + } + + /** + * {@inheritDoc} + */ + @Override + public void onCreate(Bundle icicle) { + Logger.setThreadLogTag(FxAccountConstants.GLOBAL_LOG_TAG); + Logger.debug(LOG_TAG, "onCreate(" + icicle + ")"); + + Locales.initializeLocale(getApplicationContext()); + + super.onCreate(icicle); + } + + protected boolean redirectIfAppropriate() { + final boolean redirected = super.redirectIfAppropriate(); + if (redirected) { + return true; + } + ActivityUtils.openURLInFennec(getApplicationContext(), + ABOUT_ACCOUNTS + "?action=" + action + extras); + return true; + } + + @Override + public void onResume() { + super.onResume(); + + // We are always redirected. + this.finish(); + } +} diff --git a/mobile/android/services/manifests/FxAccountAndroidManifest_activities.xml.in b/mobile/android/services/manifests/FxAccountAndroidManifest_activities.xml.in index 71a6790cf55c..90095c5ef395 100644 --- a/mobile/android/services/manifests/FxAccountAndroidManifest_activities.xml.in +++ b/mobile/android/services/manifests/FxAccountAndroidManifest_activities.xml.in @@ -133,3 +133,41 @@ + +#ifndef MOZ_ANDROID_NATIVE_ACCOUNT_UI + + + + + + + + + + + + + + + + + + + + + + + + + + + +#endif