Add "Reboot with MTE" option for supported devices.
Test: make -j64 RunSettingsRoboTests ROBOTEST_FILTER="com.android.settings.development.RebootWithMteDialogTest" Test: make -j64 RunSettingsRoboTests ROBOTEST_FILTER="com.android.settings.development.RebootWithMtePreferenceControllerTest" Bug: 206895651 Change-Id: I38ef2c5aeb5c5d805afd4f1ab860f7a0a4d18e1c
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
* Copyright (C) 2022 The Android Open Source 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.android.settings.development;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.os.Bundle;
|
||||
import android.os.PowerManager;
|
||||
import android.os.SystemProperties;
|
||||
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||
|
||||
public class RebootWithMteDialog extends InstrumentedDialogFragment
|
||||
implements DialogInterface.OnClickListener {
|
||||
|
||||
public static final String TAG = "RebootWithMteDlg";
|
||||
private Context mContext;
|
||||
|
||||
public RebootWithMteDialog(Context context) {
|
||||
mContext = context;
|
||||
}
|
||||
|
||||
public static void show(Context context, Fragment host) {
|
||||
FragmentManager manager = host.getActivity().getSupportFragmentManager();
|
||||
if (manager.findFragmentByTag(TAG) == null) {
|
||||
RebootWithMteDialog dialog = new RebootWithMteDialog(context);
|
||||
dialog.setTargetFragment(host, 0 /* requestCode */);
|
||||
dialog.show(manager, TAG);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMetricsCategory() {
|
||||
return SettingsEnums.REBOOT_WITH_MTE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||
return new AlertDialog.Builder(getActivity())
|
||||
.setTitle(R.string.reboot_with_mte_title)
|
||||
.setMessage(R.string.reboot_with_mte_message)
|
||||
.setPositiveButton(android.R.string.ok, this /* onClickListener */)
|
||||
.setNegativeButton(android.R.string.cancel, null /* onClickListener */)
|
||||
.setIcon(android.R.drawable.ic_dialog_alert)
|
||||
.create();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
PowerManager pm = mContext.getSystemService(PowerManager.class);
|
||||
SystemProperties.set("arm64.memtag.bootctl", "memtag-once");
|
||||
pm.reboot(null);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user