DivestOS/Patches/LineageOS-14.1/android_packages_apps_SetupWizard/0002-No_GMS.patch
2017-01-23 17:00:28 -05:00

389 lines
17 KiB
Diff

From c6832ae47a5c0b3fa6b0862509c4ebae0f1ec08d Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Mon, 23 Jan 2017 16:58:35 -0500
Subject: [PATCH] Disable GMS page during setup
Change-Id: Ic115cdf15ad31f59200f2286d9e3fd6dc0a7810b
---
.../setupwizard/setup/CMSetupWizardData.java | 6 +-
.../setupwizard/setup/GmsAccountPage.java | 322 ---------------------
.../setupwizard/ui/SetupWizardActivity.java | 9 -
3 files changed, 1 insertion(+), 336 deletions(-)
delete mode 100644 src/com/cyanogenmod/setupwizard/setup/GmsAccountPage.java
diff --git a/src/com/cyanogenmod/setupwizard/setup/CMSetupWizardData.java b/src/com/cyanogenmod/setupwizard/setup/CMSetupWizardData.java
index f0f2c6b..5b2792a 100644
--- a/src/com/cyanogenmod/setupwizard/setup/CMSetupWizardData.java
+++ b/src/com/cyanogenmod/setupwizard/setup/CMSetupWizardData.java
@@ -68,11 +68,7 @@ public class CMSetupWizardData extends AbstractSetupData {
pages.add(new MobileDataPage(mContext, this)
.setHidden(!isSimInserted() || mMobileDataEnabled));
}
- final boolean hasGMS = SetupWizardUtils.hasGMS(mContext);
- if (hasGMS) {
- pages.add(new GmsAccountPage(mContext, this));
- }
- pages.add(new OtherSettingsPage(mContext, this).setHidden(!hasGMS));
+ pages.add(new OtherSettingsPage(mContext, this));
if (SetupWizardUtils.hasFingerprint(mContext) && SetupWizardUtils.isOwner()) {
pages.add(new FingerprintSetupPage(mContext, this));
}
diff --git a/src/com/cyanogenmod/setupwizard/setup/GmsAccountPage.java b/src/com/cyanogenmod/setupwizard/setup/GmsAccountPage.java
deleted file mode 100644
index a646997..0000000
--- a/src/com/cyanogenmod/setupwizard/setup/GmsAccountPage.java
+++ /dev/null
@@ -1,322 +0,0 @@
-/*
- * Copyright (C) 2013 The CyanogenMod Project
- * Copyright (C) 2017 The LineageOS Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.cyanogenmod.setupwizard.setup;
-
-import android.accounts.AccountManager;
-import android.accounts.AccountManagerCallback;
-import android.accounts.AccountManagerFuture;
-import android.accounts.AuthenticatorException;
-import android.accounts.OperationCanceledException;
-import android.app.Activity;
-import android.app.ActivityOptions;
-import android.app.Fragment;
-import android.app.FragmentManager;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.os.Bundle;
-import android.service.persistentdata.PersistentDataBlockManager;
-import android.util.Log;
-
-import com.android.setupwizardlib.util.ResultCodes;
-import com.cyanogenmod.setupwizard.R;
-import com.cyanogenmod.setupwizard.SetupWizardApp;
-import com.cyanogenmod.setupwizard.ui.LoadingFragment;
-import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
-
-import java.io.IOException;
-
-public class GmsAccountPage extends SetupPage {
-
- public static final String TAG = "GmsAccountPage";
-
- public static final String ACTION_RESTORE = "com.google.android.setupwizard.RESTORE";
- public static final String ACTION_PROGRESS = "com.google.android.setupwizard.PROGRESS";
- public static final String ACTION_VENDOR_SETUP = "com.google.android.setupwizard.VENDOR_SETUP";
- public static final String RESTORE_ACTION_ID = "mfm_restore_start";
- public static final String RESTORE_CHECK_ID = "restore_check";
- public static final String FRAGMENT_START_RESTORE =
- "com.google.android.setupwizard.account.StartRestoreFragment";
- public static final String FRAGMENT_CHECK_RESTORE =
- "com.google.android.setupwizard.account.CheckRestoreTokenFragment";
-
- public static final String EXTRA_AUTH_ACCOUNT = "authAccount";
- public static final String EXTRA_RESTORE_ACCOUNT = "restoreAccount";
- public static final String EXTRA_RESTORE_TOKEN = "restoreToken";
-
- private static final String RESTORE_WIZARD_SCRIPT =
- "android.resource://com.google.android.setupwizard/xml/wizard_script";
-
- private Fragment mFragment;
-
- public GmsAccountPage(final Context context, SetupDataCallbacks callbacks) {
- super(context, callbacks);
- }
-
- @Override
- public Fragment getFragment(FragmentManager fragmentManager, int action) {
- mFragment = fragmentManager.findFragmentByTag(getKey());
- if (mFragment == null) {
- Bundle args = new Bundle();
- args.putString(Page.KEY_PAGE_ARGUMENT, getKey());
- args.putInt(Page.KEY_PAGE_ACTION, action);
- mFragment = new LoadingFragment();
- mFragment.setArguments(args);
- }
- return mFragment;
- }
-
- @Override
- public String getKey() {
- return TAG;
- }
-
- @Override
- public int getTitleResId() {
- return R.string.loading;
- }
-
- @Override
- public int getIconResId() {
- return -1;
- }
-
- @Override
- public int getNextButtonTitleResId() {
- return R.string.skip;
- }
-
- @Override
- public void doLoadAction(FragmentManager fragmentManager, int action) {
- if (action == Page.ACTION_PREVIOUS) {
- getCallbacks().onPreviousPage();
- } else {
- super.doLoadAction(fragmentManager, action);
- if (!SetupWizardUtils.isNetworkConnected(mContext) && !SetupWizardUtils.frpEnabled(mContext)) {
- if (SetupWizardApp.DEBUG) {
- Log.d(TAG, "No network, no FRP enforcement, skip GMS account");
- }
- getCallbacks().onNextPage();
- } else if (!SetupWizardUtils.accountExists(mContext, SetupWizardApp.ACCOUNT_TYPE_GMS)) {
- launchGmsAccountSetup();
- } else {
- // This can happen if the user goes from setup -> restore, but chooses to set
- // their device up as "new". Thus we need to not re-prompt this entire flow,
- // skip ahead. CYNGNOS-2459
- if (SetupWizardApp.DEBUG) {
- Log.d(TAG, "Google account already setup, skip gms setup");
- }
- setHidden(true);
- getCallbacks().onNextPage();
- }
- }
- }
-
- @Override
- public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
- if (SetupWizardApp.DEBUG) {
- Log.d(TAG, "Received activity result from requestCode " + requestCode
- + " with a resultCode of " + resultCode);
- if (data != null) {
- Bundle extras = data.getExtras();
- Log.d(TAG, "Within the activity result there were extras:");
- for (String extra : extras.keySet()) {
- Log.d(TAG, "The key " + extra + " has a value of " + extras.get(extra));
- }
- }
- }
- if (requestCode == SetupWizardApp.REQUEST_CODE_SETUP_GMS &&
- resultCode == ResultCodes.RESULT_SKIP) {
- launchGmsVendorSetup();
- } else if (requestCode == SetupWizardApp.REQUEST_CODE_SETUP_GMS && data != null) {
- if (SetupWizardUtils.isOwner() && resultCode == Activity.RESULT_OK) {
-
- // If we don't have a restore token and a restore account, then we need to
- // prompt with the restore picker from googles setup wizard so the user
- // can select what device they would like to restore from. Otherwise,
- // we're coming from a Tap&Go scenario and we should just restore.
- boolean restorePicker = !data.hasExtra(EXTRA_RESTORE_TOKEN)
- && !data.hasExtra(EXTRA_RESTORE_ACCOUNT) &&
- data.hasExtra(EXTRA_AUTH_ACCOUNT);
-
- launchGmsRestorePage(restorePicker);
- } else {
- handleResult(requestCode, resultCode);
- }
- } else {
- if (requestCode == SetupWizardApp.REQUEST_CODE_RESTORE_GMS) {
- setHidden(true);
- }
- handleResult(requestCode, resultCode);
- }
- return true;
- }
-
- @Override
- public boolean doNextAction() {
- final boolean canSkip = canSkip();
- // return true to force this page to handle the next action.
- return !canSkip;
- }
-
- @Override
- public void onFinishSetup() {
-
- }
-
- private void handleResult(int requestCode, int resultCode) {
- if (resultCode == Activity.RESULT_CANCELED) {
- getCallbacks().onPreviousPage();
- } else {
- if (resultCode == Activity.RESULT_OK) {
- getCallbacks().onNextPage();
- } else {
- if (canSkip()) {
- getCallbacks().onNextPage();
- } else {
- getCallbacks().onPreviousPage();
- }
- }
- if (SetupWizardUtils.accountExists(mContext, SetupWizardApp.ACCOUNT_TYPE_GMS)) {
- setHidden(true);
- }
- }
- }
-
- private void launchGmsRestorePage(boolean restorePicker) {
- if (SetupWizardApp.DEBUG) {
- Log.d(TAG, "Launching gms restore page with restorePicker " + restorePicker);
- }
- try {
- // GMS can disable this after logging in sometimes
- if (SetupWizardUtils.enableGMSSetupWizard(mContext)) {
- Intent intent = new Intent(ACTION_PROGRESS);
- if (!restorePicker) {
- intent.setAction(ACTION_PROGRESS);
- intent.putExtra(SetupWizardApp.EXTRA_FRAGMENT, FRAGMENT_START_RESTORE);
- intent.putExtra(SetupWizardApp.EXTRA_ACTION_ID, RESTORE_ACTION_ID);
- } else {
- intent.setAction(ACTION_PROGRESS);
- intent.putExtra(SetupWizardApp.EXTRA_ACTION_ID, RESTORE_CHECK_ID);
- intent.putExtra(SetupWizardApp.EXTRA_FRAGMENT, FRAGMENT_CHECK_RESTORE);
- }
- intent.putExtra(SetupWizardApp.EXTRA_ALLOW_SKIP, true);
- intent.putExtra(SetupWizardApp.EXTRA_USE_IMMERSIVE, true);
- intent.putExtra(SetupWizardApp.EXTRA_FIRST_RUN, true);
- intent.putExtra(SetupWizardApp.EXTRA_THEME, SetupWizardApp.EXTRA_MATERIAL_LIGHT);
- // XXX: Fool G's setup wizard into thinking it is their setup wizard.
- // This is necessary to get the material theme on the restore page.
- intent.putExtra("scriptUri", RESTORE_WIZARD_SCRIPT);
- ActivityOptions options =
- ActivityOptions.makeCustomAnimation(mContext,
- android.R.anim.fade_in,
- android.R.anim.fade_out);
- mFragment.startActivityForResult(
- intent,
- SetupWizardApp.REQUEST_CODE_RESTORE_GMS, options.toBundle());
- return;
- }
- } catch (Exception e) {
- e.printStackTrace();
- // XXX: In open source, we don't know what gms version a user has.
- // Bail if the restore activity is not found.
- getCallbacks().onNextPage();
- }
- }
-
- private void launchGmsVendorSetup() {
- if (SetupWizardApp.DEBUG) {
- Log.d(TAG, "Launching gms vendor setup page");
- }
- try {
- Intent intent = new Intent(ACTION_VENDOR_SETUP);
- intent.setPackage(SetupWizardUtils.GOOGLE_SETUPWIZARD_PACKAGE);
- intent.putExtra(SetupWizardApp.EXTRA_ALLOW_SKIP, true);
- intent.putExtra(SetupWizardApp.EXTRA_USE_IMMERSIVE, true);
- intent.putExtra(SetupWizardApp.EXTRA_FIRST_RUN, true);
- intent.putExtra(SetupWizardApp.EXTRA_THEME, SetupWizardApp.EXTRA_MATERIAL_LIGHT);
- ActivityOptions options =
- ActivityOptions.makeCustomAnimation(mContext,
- android.R.anim.fade_in,
- android.R.anim.fade_out);
- mFragment.startActivityForResult(
- intent,
- SetupWizardApp.REQUEST_CODE_VENDOR_SETUP_GMS, options.toBundle());
- return;
- } catch (Exception e) {
- // Move on if the vendor setup activity is not found.
- getCallbacks().onNextPage();
- }
- }
-
- public boolean canSkip() {
- final PersistentDataBlockManager pdbManager = (PersistentDataBlockManager)
- mContext.getSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE);
- return pdbManager == null
- || pdbManager.getDataBlockSize() == 0
- || pdbManager.getOemUnlockEnabled();
- }
-
- private void launchGmsAccountSetup() {
- if (SetupWizardApp.DEBUG) {
- Log.d(TAG, "Launching gms account page");
- }
- Bundle bundle = new Bundle();
- bundle.putBoolean(SetupWizardApp.EXTRA_FIRST_RUN, true);
- bundle.putBoolean(SetupWizardApp.EXTRA_ALLOW_SKIP, true);
- bundle.putBoolean(SetupWizardApp.EXTRA_USE_IMMERSIVE, true);
- bundle.putBoolean(SetupWizardApp.EXTRA_SUPRESS_D2D_SETUP, !mContext.getPackageManager()
- .hasSystemFeature(PackageManager.FEATURE_NFC));
-
- AccountManager
- .get(mContext).addAccount(SetupWizardApp.ACCOUNT_TYPE_GMS, null, null,
- bundle, null, new AccountManagerCallback<Bundle>() {
- @Override
- public void run(AccountManagerFuture<Bundle> future) {
- boolean error = false;
- try {
- Bundle result = future.getResult();
- Intent intent = result
- .getParcelable(AccountManager.KEY_INTENT);
- ActivityOptions options =
- ActivityOptions.makeCustomAnimation(mContext,
- android.R.anim.fade_in,
- android.R.anim.fade_out);
- mFragment.startActivityForResult(intent,
- SetupWizardApp.REQUEST_CODE_SETUP_GMS, options.toBundle());
- } catch (OperationCanceledException e) {
- error = true;
- } catch (IOException e) {
- error = true;
- } catch (AuthenticatorException e) {
- Log.e(TAG, "Error launching gms account", e);
- error = true;
- } finally {
- if (error && getCallbacks().
- isCurrentPage(GmsAccountPage.this)) {
- if (canSkip()) {
- getCallbacks().onNextPage();
- } else {
- getCallbacks().onPreviousPage();
- }
- }
- }
- }
- }, null);
- }
-}
diff --git a/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java b/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java
index 6cc651a..c027c06 100644
--- a/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java
+++ b/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java
@@ -46,7 +46,6 @@ import com.android.setupwizardlib.util.SystemBarHelper;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
import com.cyanogenmod.setupwizard.setup.CMSetupWizardData;
-import com.cyanogenmod.setupwizard.setup.GmsAccountPage;
import com.cyanogenmod.setupwizard.setup.Page;
import com.cyanogenmod.setupwizard.setup.SetupDataCallbacks;
import com.cyanogenmod.setupwizard.util.EnableAccessibilityController;
@@ -143,14 +142,6 @@ public class SetupWizardActivity extends Activity implements SetupDataCallbacks,
Settings.Secure.BACKUP_AUTO_RESTORE, 0) == 1) ||
(Settings.Secure.getInt(getContentResolver(),
Settings.Secure.BACKUP_ENABLED, 0) == 1);
- if (TextUtils.equals(lastPage, GmsAccountPage.TAG) && backupEnabled) {
- // We probably already restored, skip ahead!
- mSetupData.setCurrentPage(mSetupData.getNextPage(lastPage).getKey());
- } else {
- // else just restore
- mSetupData.setCurrentPage(sharedPreferences.getString(KEY_LAST_PAGE_TAG,
- mSetupData.getCurrentPage().getKey()));
- }
Page page = mSetupData.getCurrentPage();
page.doLoadAction(getFragmentManager(), Page.ACTION_NEXT);
}
--
2.9.3