aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTheScarastic <warabhishek@gmail.com>2018-06-12 15:10:04 +0530
committerLuca Stefani <luca.stefani.ge1@gmail.com>2018-07-11 22:27:33 +0200
commit608789ff3675ef02d43f24a53081f5e8c30c829a (patch)
treebdffd9703cca936e8ea2251a61c53874095254aa
parent5a93f3f91aad4df87325199c9550fda584e7001b (diff)
downloadandroid_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.xml8
-rw-r--r--res/values/strings.xml1
-rw-r--r--src/org/lineageos/updater/UpdatesActivity.java11
-rw-r--r--src/org/lineageos/updater/controller/ABUpdateInstaller.java8
-rw-r--r--src/org/lineageos/updater/controller/UpdaterController.java7
-rw-r--r--src/org/lineageos/updater/misc/Constants.java2
-rw-r--r--src/org/lineageos/updater/misc/Utils.java4
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;