From 61d8920ef2c406c6e308398682059e175a397b47 Mon Sep 17 00:00:00 2001 From: Tad Date: Mon, 23 Jan 2017 17:00:28 -0500 Subject: [PATCH] Disable GMS setup page --- .../0002-No_GMS.patch | 388 ++++++++++++++++++ Scripts/LAOS-14.1_Patches.sh | 4 +- 2 files changed, 391 insertions(+), 1 deletion(-) create mode 100644 Patches/LineageOS-14.1/android_packages_apps_SetupWizard/0002-No_GMS.patch diff --git a/Patches/LineageOS-14.1/android_packages_apps_SetupWizard/0002-No_GMS.patch b/Patches/LineageOS-14.1/android_packages_apps_SetupWizard/0002-No_GMS.patch new file mode 100644 index 00000000..7afbefd1 --- /dev/null +++ b/Patches/LineageOS-14.1/android_packages_apps_SetupWizard/0002-No_GMS.patch @@ -0,0 +1,388 @@ +From c6832ae47a5c0b3fa6b0862509c4ebae0f1ec08d Mon Sep 17 00:00:00 2001 +From: Tad +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() { +- @Override +- public void run(AccountManagerFuture 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 + diff --git a/Scripts/LAOS-14.1_Patches.sh b/Scripts/LAOS-14.1_Patches.sh index ae53a7a3..00786237 100644 --- a/Scripts/LAOS-14.1_Patches.sh +++ b/Scripts/LAOS-14.1_Patches.sh @@ -9,7 +9,7 @@ #rm -rf build vendor/cm device/motorola/clark device/oneplus/bacon device/lge/mako kernel/lge/mako kernel/oneplus/msm8974 kernel/motorola/msm8992 packages/apps/Settings frameworks/base build system/core external/sqlite packages/apps/Nfc packages/apps/Settings packages/apps/FDroid packages/apps/FDroidPrivilegedExtension packages/apps/GmsCore packages/apps/GsfProxy packages/apps/FakeStore kernel/lge/hammerhead kernel/moto/shamu bootable/recovery packages/apps/CMParts packages/apps/SetupWizard #Start a build -#repo sync -j24 --force-sync && sh ../../Scripts/LAOS-14.1_Patches.sh && source device/motorola/clark/setup-makefiles.sh && source build/envsetup.sh && export WITH_SU=true && export ANDROID_HOME="/home/tad/Android/SDK" && export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m" && brunch clark && brunch mako && export OTA_PACKAGE_SIGNING_KEY=../../Signing_Keys/releasekey && export SIGNING_KEY_DIR=../../Signing_Keys && brunch bacon && brunch thor +#repo sync -j24 --force-sync && sh ../../Scripts/LAOS-14.1_Patches.sh && source device/motorola/clark/setup-makefiles.sh && source build/envsetup.sh && export WITH_SU=true && export ANDROID_HOME="/home/tad/Android/SDK" && export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m" && brunch mako && export OTA_PACKAGE_SIGNING_KEY=../../Signing_Keys/releasekey && export SIGNING_KEY_DIR=../../Signing_Keys && brunch clark && brunch bacon && brunch thor # #START OF PREPRATION @@ -106,9 +106,11 @@ patch -p1 < $patches"android_vendor_cm/0002-Monochromium.patch" #Add Chromium we enter "packages/apps/CMParts" git fetch https://review.lineageos.org/LineageOS/android_packages_apps_CMParts refs/changes/15/113415/11 && git cherry-pick FETCH_HEAD #Network Traffic patch -p1 < $patches"android_packages_apps_CMParts/0001-Remove_Analytics.patch" #Remove analytics +rm res/xml/parts_catalog.xml.orig res/values/strings.xml.orig enter "packages/apps/SetupWizard" patch -p1 < $patches"android_packages_apps_SetupWizard/0001-Remove_Analytics.patch" #Remove analytics +patch -p1 < $patches"android_packages_apps_SetupWizard/0002-No_GMS.patch" #Disable GMS page enter "frameworks/base" git fetch https://review.lineageos.org/LineageOS/android_frameworks_base refs/changes/75/151975/7 && git cherry-pick FETCH_HEAD #Network Traffic