diff --git a/res/values/strings.xml b/res/values/strings.xml
index c25e41a60de..91e22d14a2b 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -9468,7 +9468,7 @@
See notifications quickly
-
+ Assist gesture
On
diff --git a/res/xml/device_info_settings.xml b/res/xml/device_info_settings.xml
index 8aa4d060d58..d364d9e99ab 100644
--- a/res/xml/device_info_settings.xml
+++ b/res/xml/device_info_settings.xml
@@ -26,7 +26,7 @@
android:key="phone_number"
android:order="0"
android:title="@string/status_number"
- android:summary="@string/summary_placeholder"/>
+ android:summary="@string/summary_placeholder" />
+ android:summary="@string/summary_placeholder" />
+ android:summary="@string/summary_placeholder" />
+ android:summary="@string/summary_placeholder" />
+ android:summary="@string/summary_placeholder"
+ settings:controller=
+ "com.android.settings.deviceinfo.firmwareversion.FirmwareVersionPreferenceController" />
+ settings:allowDividerAbove="true" />
+ android:summary="@string/summary_placeholder" />
+ android:summary="@string/summary_placeholder" />
@@ -89,14 +91,14 @@
android:order="37"
android:title="@string/legal_information"
android:fragment="com.android.settings.LegalSettings"
- settings:allowDividerAbove="true"/>
+ settings:allowDividerAbove="true" />
-
+
@@ -104,7 +106,7 @@
android:key="safety_info"
android:order="39"
android:title="@string/safety_and_regulatory_info">
-
+
@@ -112,21 +114,21 @@
android:key="manual"
android:order="40"
android:title="@string/manual">
-
+
+ android:title="@string/device_feedback" />
+ android:summary="@string/summary_placeholder" />
+ settings:allowDividerAbove="true" />
\ No newline at end of file
diff --git a/res/xml/my_device_info.xml b/res/xml/my_device_info.xml
index 213ff1c1b7b..b3a6b89404e 100644
--- a/res/xml/my_device_info.xml
+++ b/res/xml/my_device_info.xml
@@ -99,11 +99,13 @@
+ android:summary="@string/summary_placeholder"
+ settings:controller=
+ "com.android.settings.deviceinfo.firmwareversion.FirmwareVersionPreferenceController" />
buildPreferenceControllers(
- Context context,
- Activity activity,
- MyDeviceInfoFragment fragment,
+ Context context, Activity activity, MyDeviceInfoFragment fragment,
Lifecycle lifecycle) {
final List controllers = new ArrayList<>();
controllers.add(new EmergencyInfoPreferenceController(context));
@@ -120,7 +124,6 @@ public class MyDeviceInfoFragment extends DashboardFragment
controllers.add(new SimStatusPreferenceController(context, fragment));
controllers.add(new DeviceModelPreferenceController(context, fragment));
controllers.add(new ImeiInfoPreferenceController(context, fragment));
- controllers.add(new FirmwareVersionPreferenceController(context, fragment));
controllers.add(new IpAddressPreferenceController(context, lifecycle));
controllers.add(new WifiMacAddressPreferenceController(context, lifecycle));
controllers.add(new BluetoothAddressPreferenceController(context, lifecycle));
@@ -137,7 +140,7 @@ public class MyDeviceInfoFragment extends DashboardFragment
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
final BuildNumberPreferenceController buildNumberPreferenceController =
- use(BuildNumberPreferenceController.class);
+ use(BuildNumberPreferenceController.class);
if (buildNumberPreferenceController.onActivityResult(requestCode, resultCode, data)) {
return;
}
@@ -151,7 +154,7 @@ public class MyDeviceInfoFragment extends DashboardFragment
final View appSnippet = headerPreference.findViewById(R.id.entity_header);
final Activity context = getActivity();
final Bundle bundle = getArguments();
- EntityHeaderController controller = EntityHeaderController
+ final EntityHeaderController controller = EntityHeaderController
.newInstance(context, this, appSnippet)
.setRecyclerView(getListView(), getLifecycle())
.setButtonActions(EntityHeaderController.ActionType.ACTION_NONE,
@@ -160,9 +163,10 @@ public class MyDeviceInfoFragment extends DashboardFragment
// TODO: There may be an avatar setting action we can use here.
final int iconId = bundle.getInt("icon_id", 0);
if (iconId == 0) {
- UserManager userManager = (UserManager) getActivity().getSystemService(
+ final UserManager userManager = (UserManager) getActivity().getSystemService(
Context.USER_SERVICE);
- UserInfo info = Utils.getExistingUser(userManager, android.os.Process.myUserHandle());
+ final UserInfo info = Utils.getExistingUser(userManager,
+ android.os.Process.myUserHandle());
controller.setLabel(info.name);
controller.setIcon(
com.android.settingslib.Utils.getUserIcon(getActivity(), userManager, info));
diff --git a/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionPreferenceController.java b/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionPreferenceController.java
index 785ec595b09..9019c6e9e95 100644
--- a/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionPreferenceController.java
@@ -19,48 +19,37 @@ package com.android.settings.deviceinfo.firmwareversion;
import android.app.Fragment;
import android.content.Context;
import android.os.Build;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
import android.text.TextUtils;
-import com.android.settings.core.PreferenceControllerMixin;
-import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settings.core.BasePreferenceController;
-public class FirmwareVersionPreferenceController extends AbstractPreferenceController implements
- PreferenceControllerMixin {
+import androidx.preference.Preference;
- private final static String FIRMWARE_VERSION_KEY = "firmware_version";
+public class FirmwareVersionPreferenceController extends BasePreferenceController {
- private final Fragment mFragment;
+ private Fragment mFragment;
- public FirmwareVersionPreferenceController(Context context, Fragment fragment) {
- super(context);
+ public FirmwareVersionPreferenceController(Context context, String key) {
+ super(context, key);
+ }
+ public void setHost(Fragment fragment) {
mFragment = fragment;
}
@Override
- public boolean isAvailable() {
- return true;
+ public int getAvailabilityStatus() {
+ return AVAILABLE;
}
@Override
- public void displayPreference(PreferenceScreen screen) {
- super.displayPreference(screen);
- final Preference pref = screen.findPreference(getPreferenceKey());
- if (pref != null) {
- pref.setSummary(Build.VERSION.RELEASE);
- }
- }
-
- @Override
- public String getPreferenceKey() {
- return FIRMWARE_VERSION_KEY;
+ public CharSequence getSummary() {
+ return Build.VERSION.RELEASE;
}
@Override
public boolean handlePreferenceTreeClick(Preference preference) {
- if (!TextUtils.equals(preference.getKey(), getPreferenceKey())) {
+ if (!TextUtils.equals(preference.getKey(), mPreferenceKey)) {
return false;
}
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionPreferenceControllerTest.java
index 05bbdb14452..bf049bcddde 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionPreferenceControllerTest.java
@@ -17,74 +17,105 @@
package com.android.settings.deviceinfo.firmwareversion;
import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
import android.app.Fragment;
-import android.app.FragmentManager;
import android.content.Context;
import android.os.Build;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
+import com.android.settings.core.BasePreferenceController;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
+import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.mockito.Answers;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
@RunWith(SettingsRobolectricTestRunner.class)
public class FirmwareVersionPreferenceControllerTest {
- @Mock
- private Preference mPreference;
- @Mock
- private PreferenceScreen mScreen;
+ private final String KEY = "firmware_key";
+
@Mock
private Fragment mFragment;
- private Context mContext;
+ private Preference mPreference;
+ private PreferenceScreen mScreen;
private FirmwareVersionPreferenceController mController;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
- mContext = RuntimeEnvironment.application;
- mController = new FirmwareVersionPreferenceController(mContext, mFragment);
- when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
+ final Context context = RuntimeEnvironment.application;
+ final PreferenceManager preferenceManager = new PreferenceManager(context);
+ mController = new FirmwareVersionPreferenceController(context, KEY);
+ mController.setHost(mFragment);
+ mPreference = new Preference(context);
+ mPreference.setKey(KEY);
+ mScreen = preferenceManager.createPreferenceScreen(context);
+ mScreen.addPreference(mPreference);
+ }
+
+ @After
+ public void tearDown() {
+ ShadowFirmwareVersionDialogFragment.reset();
}
@Test
- public void displayPreference_shouldSetSummaryToBuildNumber() {
- mController.displayPreference(mScreen);
-
- verify(mPreference).setSummary(Build.VERSION.RELEASE);
+ public void firmwareVersion_shouldAlwaysBeShown() {
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(
+ BasePreferenceController.AVAILABLE);
}
@Test
+ public void updatePreference_shouldSetSummaryToBuildNumber() {
+ mController.updateState(mPreference);
+
+ assertThat(mPreference.getSummary()).isEqualTo(Build.VERSION.RELEASE);
+ }
+
+ @Test
+ @Config(shadows = ShadowFirmwareVersionDialogFragment.class)
public void handlePreferenceTreeClick_samePreferenceKey_shouldStartDialogFragment() {
- when(mPreference.getKey()).thenReturn(mController.getPreferenceKey());
- when(mFragment.getChildFragmentManager()).thenReturn(
- mock(FragmentManager.class, Answers.RETURNS_DEEP_STUBS));
+ final boolean result = mController.handlePreferenceTreeClick(mPreference);
- mController.handlePreferenceTreeClick(mPreference);
-
- verify(mFragment).getChildFragmentManager();
+ assertThat(ShadowFirmwareVersionDialogFragment.isShowing).isTrue();
+ assertThat(result).isTrue();
}
@Test
public void handlePreferenceTreeClick_unknownPreferenceKey_shouldDoNothingAndReturnFalse() {
- when(mPreference.getKey()).thenReturn("foobar");
+ mPreference.setKey("foobar");
final boolean result = mController.handlePreferenceTreeClick(mPreference);
+ assertThat(ShadowFirmwareVersionDialogFragment.isShowing).isFalse();
assertThat(result).isFalse();
- verify(mFragment, never()).getChildFragmentManager();
+ }
+
+ @Implements(FirmwareVersionDialogFragment.class)
+ public static class ShadowFirmwareVersionDialogFragment {
+
+ private static boolean isShowing = false;
+
+ @Implementation
+ public static void show(Fragment fragemnt) {
+ isShowing = true;
+ }
+
+ @Resetter
+ public static void reset() {
+ isShowing = false;
+ }
}
}