Add cancel button to Erase all data (factory reset)
Bug: 300634367 Test: unit test & manual test Change-Id: I860955291b27ea1f7c748ac746b91153224eacb7
This commit is contained in:
8
aconfig/settings_flag_declarations.aconfig
Normal file
8
aconfig/settings_flag_declarations.aconfig
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
package: "com.android.settings.flags"
|
||||||
|
|
||||||
|
flag {
|
||||||
|
name: "show_factory_reset_cancel_button"
|
||||||
|
namespace: "android_settings"
|
||||||
|
description: "This flag controls whether to show a Cancel button when factory reset"
|
||||||
|
bug: "300634367"
|
||||||
|
}
|
@@ -63,6 +63,7 @@ import androidx.annotation.VisibleForTesting;
|
|||||||
|
|
||||||
import com.android.settings.core.InstrumentedFragment;
|
import com.android.settings.core.InstrumentedFragment;
|
||||||
import com.android.settings.enterprise.ActionDisabledByAdminDialogHelper;
|
import com.android.settings.enterprise.ActionDisabledByAdminDialogHelper;
|
||||||
|
import com.android.settings.flags.Flags;
|
||||||
import com.android.settings.network.SubscriptionUtil;
|
import com.android.settings.network.SubscriptionUtil;
|
||||||
import com.android.settings.password.ChooseLockSettingsHelper;
|
import com.android.settings.password.ChooseLockSettingsHelper;
|
||||||
import com.android.settings.password.ConfirmLockPattern;
|
import com.android.settings.password.ConfirmLockPattern;
|
||||||
@@ -431,14 +432,24 @@ public class MainClear extends InstrumentedFragment implements OnGlobalLayoutLis
|
|||||||
|
|
||||||
final GlifLayout layout = mContentView.findViewById(R.id.setup_wizard_layout);
|
final GlifLayout layout = mContentView.findViewById(R.id.setup_wizard_layout);
|
||||||
final FooterBarMixin mixin = layout.getMixin(FooterBarMixin.class);
|
final FooterBarMixin mixin = layout.getMixin(FooterBarMixin.class);
|
||||||
|
final Activity activity = getActivity();
|
||||||
mixin.setPrimaryButton(
|
mixin.setPrimaryButton(
|
||||||
new FooterButton.Builder(getActivity())
|
new FooterButton.Builder(activity)
|
||||||
.setText(R.string.main_clear_button_text)
|
.setText(R.string.main_clear_button_text)
|
||||||
.setListener(mInitiateListener)
|
.setListener(mInitiateListener)
|
||||||
.setButtonType(ButtonType.OTHER)
|
.setButtonType(ButtonType.OTHER)
|
||||||
.setTheme(com.google.android.setupdesign.R.style.SudGlifButton_Primary)
|
.setTheme(com.google.android.setupdesign.R.style.SudGlifButton_Primary)
|
||||||
.build()
|
.build());
|
||||||
);
|
if (Flags.showFactoryResetCancelButton()) {
|
||||||
|
mixin.setSecondaryButton(
|
||||||
|
new FooterButton.Builder(activity)
|
||||||
|
.setText(android.R.string.cancel)
|
||||||
|
.setListener(view -> activity.onBackPressed())
|
||||||
|
.setButtonType(ButtonType.CANCEL)
|
||||||
|
.setTheme(
|
||||||
|
com.google.android.setupdesign.R.style.SudGlifButton_Secondary)
|
||||||
|
.build());
|
||||||
|
}
|
||||||
mInitiateButton = mixin.getPrimaryButton();
|
mInitiateButton = mixin.getPrimaryButton();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -21,6 +21,7 @@ android_test {
|
|||||||
"aconfig_settings_flags_lib",
|
"aconfig_settings_flags_lib",
|
||||||
"androidx.arch.core_core-testing",
|
"androidx.arch.core_core-testing",
|
||||||
"androidx.test.core",
|
"androidx.test.core",
|
||||||
|
"androidx.test.espresso.core",
|
||||||
"androidx.test.rules",
|
"androidx.test.rules",
|
||||||
"androidx.test.ext.junit",
|
"androidx.test.ext.junit",
|
||||||
"androidx.preference_preference",
|
"androidx.preference_preference",
|
||||||
|
68
tests/unit/src/com/android/settings/MainClearTest.kt
Normal file
68
tests/unit/src/com/android/settings/MainClearTest.kt
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2023 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
|
||||||
|
|
||||||
|
import android.platform.test.flag.junit.SetFlagsRule
|
||||||
|
import androidx.test.core.app.ActivityScenario
|
||||||
|
import androidx.test.espresso.Espresso.onView
|
||||||
|
import androidx.test.espresso.action.ViewActions.click
|
||||||
|
import androidx.test.espresso.assertion.ViewAssertions.doesNotExist
|
||||||
|
import androidx.test.espresso.assertion.ViewAssertions.matches
|
||||||
|
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
|
||||||
|
import androidx.test.espresso.matcher.ViewMatchers.withText
|
||||||
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
|
import com.android.settings.Settings.FactoryResetActivity
|
||||||
|
import com.android.settings.flags.Flags
|
||||||
|
import com.google.common.truth.Truth.assertThat
|
||||||
|
import org.junit.Rule
|
||||||
|
import org.junit.Test
|
||||||
|
import org.junit.runner.RunWith
|
||||||
|
|
||||||
|
/** Test [MainClear]. */
|
||||||
|
@RunWith(AndroidJUnit4::class)
|
||||||
|
class MainClearTest {
|
||||||
|
@get:Rule
|
||||||
|
val mSetFlagsRule = SetFlagsRule()
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun factoryResetCancelButton_flagDisabled_noCancelButton() {
|
||||||
|
mSetFlagsRule.disableFlags(Flags.FLAG_SHOW_FACTORY_RESET_CANCEL_BUTTON)
|
||||||
|
ActivityScenario.launch(FactoryResetActivity::class.java).use {
|
||||||
|
ensurePrimaryButton()
|
||||||
|
onView(withText(android.R.string.cancel)).check(doesNotExist())
|
||||||
|
it.onActivity { activity -> assertThat(activity.isFinishing).isFalse() }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun factoryResetCancelButton_flagEnabled_showCancelButton() {
|
||||||
|
mSetFlagsRule.enableFlags(Flags.FLAG_SHOW_FACTORY_RESET_CANCEL_BUTTON)
|
||||||
|
ActivityScenario.launch(FactoryResetActivity::class.java).use {
|
||||||
|
ensurePrimaryButton()
|
||||||
|
it.onActivity { activity -> assertThat(activity.isFinishing).isFalse() }
|
||||||
|
|
||||||
|
// Note: onView CANNOT be called within onActivity block, which runs in the main thread
|
||||||
|
onView(withText(android.R.string.cancel)).check(matches(isDisplayed())).perform(click())
|
||||||
|
|
||||||
|
it.onActivity { activity -> assertThat(activity.isFinishing).isTrue() }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun ensurePrimaryButton() {
|
||||||
|
onView(withText(R.string.main_clear_button_text)).check(matches(isDisplayed()))
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user