diff options
author | TheScarastic <warabhishek@gmail.com> | 2018-06-12 15:10:04 +0530 |
---|---|---|
committer | Luca Stefani <luca.stefani.ge1@gmail.com> | 2018-07-11 22:27:33 +0200 |
commit | 608789ff3675ef02d43f24a53081f5e8c30c829a (patch) | |
tree | bdffd9703cca936e8ea2251a61c53874095254aa | |
parent | 5a93f3f91aad4df87325199c9550fda584e7001b (diff) | |
download | android_packages_apps_Updater-608789ff3675ef02d43f24a53081f5e8c30c829a.tar.gz android_packages_apps_Updater-608789ff3675ef02d43f24a53081f5e8c30c829a.tar.bz2 android_packages_apps_Updater-608789ff3675ef02d43f24a53081f5e8c30c829a.zip |
Updater: Allow toggling A/B perf mode
Change-Id: I380a39bf6008b341c8005ac548d42d2413d0d643
-rw-r--r-- | res/layout/preferences_dialog.xml | 8 | ||||
-rw-r--r-- | res/values/strings.xml | 1 | ||||
-rw-r--r-- | src/org/lineageos/updater/UpdatesActivity.java | 11 | ||||
-rw-r--r-- | src/org/lineageos/updater/controller/ABUpdateInstaller.java | 8 | ||||
-rw-r--r-- | src/org/lineageos/updater/controller/UpdaterController.java | 7 | ||||
-rw-r--r-- | src/org/lineageos/updater/misc/Constants.java | 2 | ||||
-rw-r--r-- | src/org/lineageos/updater/misc/Utils.java | 4 |
7 files changed, 41 insertions, 0 deletions
diff --git a/res/layout/preferences_dialog.xml b/res/layout/preferences_dialog.xml index 999d67f..898f53e 100644 --- a/res/layout/preferences_dialog.xml +++ b/res/layout/preferences_dialog.xml @@ -30,4 +30,12 @@ android:layout_marginBottom="16dp" android:text="@string/menu_mobile_data_warning" android:textSize="16sp" /> + + <Switch + android:id="@+id/preferences_ab_perf_mode" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="16dp" + android:text="@string/menu_ab_perf_mode" + android:textSize="16sp" /> </LinearLayout> diff --git a/res/values/strings.xml b/res/values/strings.xml index d4709c5..74cd18a 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -70,6 +70,7 @@ <string name="menu_export_update">Export update</string> <string name="menu_show_changelog">Show changelog</string> <string name="menu_changelog_url" translatable="false">https://download.lineageos.org/<xliff:g id="device_name">%1$s</xliff:g>/changes</string> + <string name="menu_ab_perf_mode">Install updates faster</string> <string name="snack_updates_found">New updates found</string> <string name="snack_no_updates_found">No new updates found</string> diff --git a/src/org/lineageos/updater/UpdatesActivity.java b/src/org/lineageos/updater/UpdatesActivity.java index fc3e78b..2d3fc57 100644 --- a/src/org/lineageos/updater/UpdatesActivity.java +++ b/src/org/lineageos/updater/UpdatesActivity.java @@ -409,11 +409,17 @@ public class UpdatesActivity extends UpdatesListActivity { Switch autoCheck = view.findViewById(R.id.preferences_auto_updates_check); Switch autoDelete = view.findViewById(R.id.preferences_auto_delete_updates); Switch dataWarning = view.findViewById(R.id.preferences_mobile_data_warning); + Switch abPerfMode = view.findViewById(R.id.preferences_ab_perf_mode); + + if (!Utils.isABDevice()) { + abPerfMode.setVisibility(View.GONE); + } SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); autoCheck.setChecked(prefs.getBoolean(Constants.PREF_AUTO_UPDATES_CHECK, true)); autoDelete.setChecked(prefs.getBoolean(Constants.PREF_AUTO_DELETE_UPDATES, false)); dataWarning.setChecked(prefs.getBoolean(Constants.PREF_MOBILE_DATA_WARNING, true)); + abPerfMode.setChecked(prefs.getBoolean(Constants.PREF_AB_PERF_MODE, false)); new AlertDialog.Builder(this) .setTitle(R.string.menu_preferences) @@ -426,6 +432,8 @@ public class UpdatesActivity extends UpdatesListActivity { autoDelete.isChecked()) .putBoolean(Constants.PREF_MOBILE_DATA_WARNING, dataWarning.isChecked()) + .putBoolean(Constants.PREF_AB_PERF_MODE, + abPerfMode.isChecked()) .apply(); if (autoCheck.isChecked()) { @@ -434,6 +442,9 @@ public class UpdatesActivity extends UpdatesListActivity { UpdatesCheckReceiver.cancelRepeatingUpdatesCheck(this); UpdatesCheckReceiver.cancelUpdatesCheck(this); } + + boolean enableABPerfMode = abPerfMode.isChecked(); + mUpdaterService.getUpdaterController().setPerformanceMode(enableABPerfMode); }) .show(); } diff --git a/src/org/lineageos/updater/controller/ABUpdateInstaller.java b/src/org/lineageos/updater/controller/ABUpdateInstaller.java index 82215f4..0e3e80a 100644 --- a/src/org/lineageos/updater/controller/ABUpdateInstaller.java +++ b/src/org/lineageos/updater/controller/ABUpdateInstaller.java @@ -200,6 +200,10 @@ class ABUpdateInstaller { } } + boolean enableABPerfMode = PreferenceManager.getDefaultSharedPreferences(mContext) + .getBoolean(Constants.PREF_AB_PERF_MODE, false); + mUpdateEngine.setPerformanceMode(enableABPerfMode); + String zipFileUri = "file://" + file.getAbsolutePath(); mUpdateEngine.applyPayload(zipFileUri, offset, 0, headerKeyValuePairs); @@ -265,4 +269,8 @@ class ABUpdateInstaller { return true; } + + public void setPerformanceMode(boolean enable) { + mUpdateEngine.setPerformanceMode(enable); + } } diff --git a/src/org/lineageos/updater/controller/UpdaterController.java b/src/org/lineageos/updater/controller/UpdaterController.java index 12b02dd..8fd5760 100644 --- a/src/org/lineageos/updater/controller/UpdaterController.java +++ b/src/org/lineageos/updater/controller/UpdaterController.java @@ -525,4 +525,11 @@ public class UpdaterController { public boolean isWaitingForReboot(String downloadId) { return ABUpdateInstaller.isWaitingForReboot(mContext, downloadId); } + + public void setPerformanceMode(boolean enable) { + if (!Utils.isABDevice()) { + return; + } + ABUpdateInstaller.getInstance(mContext, this).setPerformanceMode(enable); + } } diff --git a/src/org/lineageos/updater/misc/Constants.java b/src/org/lineageos/updater/misc/Constants.java index 71582ae..521e4ff 100644 --- a/src/org/lineageos/updater/misc/Constants.java +++ b/src/org/lineageos/updater/misc/Constants.java @@ -26,11 +26,13 @@ public final class Constants { public static final String PREF_LAST_UPDATE_CHECK = "last_update_check"; public static final String PREF_AUTO_UPDATES_CHECK = "auto_updates_check"; public static final String PREF_AUTO_DELETE_UPDATES = "auto_delete_updates"; + public static final String PREF_AB_PERF_MODE = "ab_perf_mode"; public static final String PREF_MOBILE_DATA_WARNING = "pref_mobile_data_warning"; public static final String PREF_NEEDS_REBOOT_ID = "needs_reboot_id"; public static final String UNCRYPT_FILE_EXT = ".uncrypt"; + public static final String PROP_AB_DEVICE = "ro.build.ab_update"; public static final String PROP_BUILD_DATE = "ro.build.date.utc"; public static final String PROP_BUILD_VERSION = "ro.lineage.build.version"; public static final String PROP_BUILD_VERSION_INCREMENTAL = "ro.build.version.incremental"; diff --git a/src/org/lineageos/updater/misc/Utils.java b/src/org/lineageos/updater/misc/Utils.java index 67895da..a053aab 100644 --- a/src/org/lineageos/updater/misc/Utils.java +++ b/src/org/lineageos/updater/misc/Utils.java @@ -334,6 +334,10 @@ public class Utils { throw new IllegalStateException(); } + public static boolean isABDevice() { + return SystemProperties.getBoolean(Constants.PROP_AB_DEVICE, false); + } + public static boolean isABUpdate(ZipFile zipFile) { return zipFile.getEntry(Constants.AB_PAYLOAD_BIN_PATH) != null && zipFile.getEntry(Constants.AB_PAYLOAD_PROPERTIES_PATH) != null; |