Show progress bar till the applyPayload returns am: 9be05afc88
am: 0aebae8d79
Original change: https://android-review.googlesource.com/c/platform/packages/apps/Settings/+/2766345 Change-Id: Ibaf92a15e52ad5e7f1834210196c94d521ad90d4 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -11339,8 +11339,9 @@
|
|||||||
<string name="confirm_enable_4k_pages_text">Device will reboot after confirmation.</string>
|
<string name="confirm_enable_4k_pages_text">Device will reboot after confirmation.</string>
|
||||||
<!-- Toast message when 16k OTA update fails -->
|
<!-- Toast message when 16k OTA update fails -->
|
||||||
<string name="toast_16k_update_failed_text">Failed to update kernel to 16KB pages compatible kernel.</string>
|
<string name="toast_16k_update_failed_text">Failed to update kernel to 16KB pages compatible kernel.</string>
|
||||||
|
<string name="progress_16k_ota_title">Applying change</string>
|
||||||
<!-- DSU Loader. Do not translate. -->
|
<!-- DSU Loader. Do not translate. -->
|
||||||
|
|
||||||
<string name="dsu_loader_title" translatable="false">DSU Loader</string>
|
<string name="dsu_loader_title" translatable="false">DSU Loader</string>
|
||||||
<!-- DSU Loader Description. Do not translate. -->
|
<!-- DSU Loader Description. Do not translate. -->
|
||||||
<string name="dsu_loader_description" translatable="false">Load a Dynamic System Update Image</string>
|
<string name="dsu_loader_description" translatable="false">Load a Dynamic System Update Image</string>
|
||||||
|
@@ -26,11 +26,14 @@ import android.os.UpdateEngineStable;
|
|||||||
import android.os.UpdateEngineStableCallback;
|
import android.os.UpdateEngineStableCallback;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
import android.widget.ProgressBar;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
|
import androidx.appcompat.app.AlertDialog;
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.SwitchPreference;
|
import androidx.preference.SwitchPreference;
|
||||||
@@ -86,6 +89,8 @@ public class Enable16kPagesPreferenceController extends DeveloperOptionsPreferen
|
|||||||
private final ListeningExecutorService mExecutorService =
|
private final ListeningExecutorService mExecutorService =
|
||||||
MoreExecutors.listeningDecorator(Executors.newSingleThreadExecutor());
|
MoreExecutors.listeningDecorator(Executors.newSingleThreadExecutor());
|
||||||
|
|
||||||
|
private AlertDialog mProgressDialog;
|
||||||
|
|
||||||
public Enable16kPagesPreferenceController(
|
public Enable16kPagesPreferenceController(
|
||||||
@NonNull Context context, @Nullable DevelopmentSettingsDashboardFragment fragment) {
|
@NonNull Context context, @Nullable DevelopmentSettingsDashboardFragment fragment) {
|
||||||
super(context);
|
super(context);
|
||||||
@@ -122,7 +127,7 @@ public class Enable16kPagesPreferenceController extends DeveloperOptionsPreferen
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onDeveloperOptionsSwitchDisabled() {
|
protected void onDeveloperOptionsSwitchDisabled() {
|
||||||
// TODO(b/295573133):Directly reboot into 4k
|
// TODO(295035851) : Revert kernel when dev option turned off
|
||||||
super.onDeveloperOptionsSwitchDisabled();
|
super.onDeveloperOptionsSwitchDisabled();
|
||||||
Settings.Global.putInt(
|
Settings.Global.putInt(
|
||||||
mContext.getContentResolver(),
|
mContext.getContentResolver(),
|
||||||
@@ -134,6 +139,10 @@ public class Enable16kPagesPreferenceController extends DeveloperOptionsPreferen
|
|||||||
/** Called when user confirms reboot dialog */
|
/** Called when user confirms reboot dialog */
|
||||||
@Override
|
@Override
|
||||||
public void on16kPagesDialogConfirmed() {
|
public void on16kPagesDialogConfirmed() {
|
||||||
|
// Show progress bar
|
||||||
|
mProgressDialog = makeProgressDialog();
|
||||||
|
mProgressDialog.show();
|
||||||
|
|
||||||
// Apply update in background
|
// Apply update in background
|
||||||
ListenableFuture future = mExecutorService.submit(() -> installUpdate());
|
ListenableFuture future = mExecutorService.submit(() -> installUpdate());
|
||||||
Futures.addCallback(
|
Futures.addCallback(
|
||||||
@@ -150,6 +159,7 @@ public class Enable16kPagesPreferenceController extends DeveloperOptionsPreferen
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void onFailure(Throwable t) {
|
||||||
|
hideProgressDialog();
|
||||||
Log.e(TAG, "Failed to call applyPayload of UpdateEngineStable!");
|
Log.e(TAG, "Failed to call applyPayload of UpdateEngineStable!");
|
||||||
displayToast(mContext.getString(R.string.toast_16k_update_failed_text));
|
displayToast(mContext.getString(R.string.toast_16k_update_failed_text));
|
||||||
}
|
}
|
||||||
@@ -232,6 +242,13 @@ public class Enable16kPagesPreferenceController extends DeveloperOptionsPreferen
|
|||||||
applyPayload(updateFile, payloadOffset, payloadSize, properties);
|
applyPayload(updateFile, payloadOffset, payloadSize, properties);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void hideProgressDialog() {
|
||||||
|
// Hide progress bar
|
||||||
|
if (mProgressDialog != null && mProgressDialog.isShowing()) {
|
||||||
|
mProgressDialog.hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
void applyPayload(
|
void applyPayload(
|
||||||
@NonNull File updateFile,
|
@NonNull File updateFile,
|
||||||
@@ -269,9 +286,13 @@ public class Enable16kPagesPreferenceController extends DeveloperOptionsPreferen
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPayloadApplicationComplete(int errorCode) {
|
public void onPayloadApplicationComplete(int errorCode) {
|
||||||
|
Log.i(TAG, "Callback from update engine stable received. unbinding..");
|
||||||
// unbind the callback from update engine
|
// unbind the callback from update engine
|
||||||
mUpdateEngineStable.unbind();
|
mUpdateEngineStable.unbind();
|
||||||
|
|
||||||
|
// Hide progress bar
|
||||||
|
hideProgressDialog();
|
||||||
|
|
||||||
if (errorCode == UpdateEngine.ErrorCodeConstants.SUCCESS) {
|
if (errorCode == UpdateEngine.ErrorCodeConstants.SUCCESS) {
|
||||||
Log.i(TAG, "applyPayload successful");
|
Log.i(TAG, "applyPayload successful");
|
||||||
Settings.Global.putInt(
|
Settings.Global.putInt(
|
||||||
@@ -287,4 +308,19 @@ public class Enable16kPagesPreferenceController extends DeveloperOptionsPreferen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private AlertDialog makeProgressDialog() {
|
||||||
|
AlertDialog.Builder builder = new AlertDialog.Builder(mFragment.getActivity());
|
||||||
|
builder.setTitle(R.string.progress_16k_ota_title);
|
||||||
|
|
||||||
|
final ProgressBar progressBar = new ProgressBar(mFragment.getActivity());
|
||||||
|
LinearLayout.LayoutParams params =
|
||||||
|
new LinearLayout.LayoutParams(
|
||||||
|
LinearLayout.LayoutParams.WRAP_CONTENT,
|
||||||
|
LinearLayout.LayoutParams.WRAP_CONTENT);
|
||||||
|
progressBar.setLayoutParams(params);
|
||||||
|
builder.setView(progressBar);
|
||||||
|
builder.setCancelable(false);
|
||||||
|
return builder.create();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user