Loading res/xml/device_info_settings.xml +1 −8 Original line number Diff line number Diff line Loading @@ -19,13 +19,6 @@ android:title="@string/about_settings"> <!-- System update settings - launches activity --> <Preference android:key="system_update_settings" android:title="@string/system_update_settings_list_item_title" android:summary="@string/system_update_settings_list_item_summary"> <intent android:action="android.settings.SYSTEM_UPDATE_SETTINGS" /> </Preference> <Preference android:key="additional_system_update_settings" android:title="@string/additional_system_update_settings_list_item_title"> <intent android:action="android.intent.action.MAIN" Loading @@ -48,7 +41,7 @@ <!-- Legal Information --> <Preference android:key="container" android:key="legal_container" android:title="@string/legal_information" android:fragment="com.android.settings.LegalSettings" /> Loading src/com/android/settings/DeviceInfoSettings.java +31 −48 Original line number Diff line number Diff line Loading @@ -28,18 +28,19 @@ import android.os.UserHandle; import android.os.UserManager; import android.provider.SearchIndexableResource; import android.provider.Settings; import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceGroup; import android.text.TextUtils; import android.util.Log; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.core.PreferenceController; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.SummaryLoader; import com.android.settings.deviceinfo.AdditionalSystemUpdatePreferenceController; import com.android.settings.deviceinfo.BuildNumberPreferenceController; import com.android.settings.deviceinfo.ManualPreferenceController; import com.android.settings.deviceinfo.SystemUpdatePreferenceController; import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; import com.android.settingslib.DeviceInfoUtils; Loading @@ -51,13 +52,11 @@ import java.util.List; import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; public class DeviceInfoSettings extends SettingsPreferenceFragment implements Indexable { public class DeviceInfoSettings extends DashboardFragment implements Indexable { private static final String LOG_TAG = "DeviceInfoSettings"; private static final String KEY_MANUAL = "manual"; private static final String KEY_REGULATORY_INFO = "regulatory_info"; private static final String KEY_SYSTEM_UPDATE_SETTINGS = "system_update_settings"; private static final String PROPERTY_URL_SAFETYLEGAL = "ro.url.safetylegal"; private static final String PROPERTY_SELINUX_STATUS = "ro.build.selinux"; private static final String KEY_KERNEL_VERSION = "kernel_version"; Loading @@ -73,8 +72,6 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In long[] mHits = new long[3]; private SystemUpdatePreferenceController mSystemUpdatePreferenceController; private AdditionalSystemUpdatePreferenceController mAdditionalSystemUpdatePreferenceController; private BuildNumberPreferenceController mBuildNumberPreferenceController; private UserManager mUm; Loading @@ -92,6 +89,12 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In return R.string.help_uri_about; } @Override public void onAttach(Context context) { super.onAttach(context); mUm = (UserManager) context.getSystemService(Context.USER_SERVICE); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (mBuildNumberPreferenceController.onActivityResult(requestCode, resultCode, data)) { Loading @@ -103,14 +106,6 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); final Activity activity = getActivity(); mUm = UserManager.get(activity); mAdditionalSystemUpdatePreferenceController = new AdditionalSystemUpdatePreferenceController(activity); mBuildNumberPreferenceController = new BuildNumberPreferenceController(activity, activity, this /* fragment */); getLifecycle().addObserver(mBuildNumberPreferenceController); addPreferencesFromResource(R.xml.device_info_settings); setStringSummary(KEY_FIRMWARE_VERSION, Build.VERSION.RELEASE); findPreference(KEY_FIRMWARE_VERSION).setEnabled(true); Loading @@ -125,7 +120,6 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In setValueSummary(KEY_BASEBAND_VERSION, "gsm.version.baseband"); setStringSummary(KEY_DEVICE_MODEL, Build.MODEL + DeviceInfoUtils.getMsvSuffix()); setValueSummary(KEY_EQUIPMENT_ID, PROPERTY_EQUIPMENT_ID); mBuildNumberPreferenceController.displayPreference(getPreferenceScreen()); findPreference(KEY_KERNEL_VERSION).setSummary(DeviceInfoUtils.getFormattedKernelVersion()); if (!SELinux.isSELinuxEnabled()) { Loading Loading @@ -158,16 +152,6 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In getPreferenceScreen().removePreference(findPreference(KEY_DEVICE_FEEDBACK)); } /* * Settings is a generic app and should not contain any device-specific * info. */ displaySystemUpdates(activity); mAdditionalSystemUpdatePreferenceController.displayPreference(getPreferenceScreen()); // Remove manual entry if none present. removePreferenceIfBoolFalse(KEY_MANUAL, R.bool.config_show_manual); // Remove regulatory labels if no activity present to handle intent. removePreferenceIfActivityMissing( KEY_REGULATORY_INFO, Settings.ACTION_SHOW_REGULATORY_INFO); Loading Loading @@ -222,21 +206,29 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In } else if (preference.getKey().equals(KEY_DEVICE_FEEDBACK)) { sendFeedback(); } if (mSystemUpdatePreferenceController != null) { mSystemUpdatePreferenceController.handlePreferenceTreeClick(preference); } return super.onPreferenceTreeClick(preference); } @VisibleForTesting void displaySystemUpdates(Context context) { if (!FeatureFactory.getFactory(context).getDashboardFeatureProvider(context).isEnabled()) { mSystemUpdatePreferenceController = new SystemUpdatePreferenceController(context, UserManager.get(context)); mSystemUpdatePreferenceController.displayPreference(getPreferenceScreen()); } else { getPreferenceScreen().removePreference(findPreference(KEY_SYSTEM_UPDATE_SETTINGS)); @Override protected String getLogTag() { return LOG_TAG; } @Override protected int getPreferenceScreenResId() { return R.xml.device_info_settings; } @Override protected List<PreferenceController> getPreferenceControllers(Context context) { final List<PreferenceController> controllers = new ArrayList<>(); mBuildNumberPreferenceController = new BuildNumberPreferenceController(context, getActivity(), this /* fragment */); getLifecycle().addObserver(mBuildNumberPreferenceController); controllers.add(mBuildNumberPreferenceController); controllers.add(new AdditionalSystemUpdatePreferenceController(context)); controllers.add(new ManualPreferenceController(context)); return controllers; } private void removePreferenceIfPropertyMissing(PreferenceGroup preferenceGroup, Loading @@ -262,15 +254,6 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In } } private void removePreferenceIfBoolFalse(String preference, int resId) { if (!getResources().getBoolean(resId)) { Preference pref = findPreference(preference); if (pref != null) { getPreferenceScreen().removePreference(pref); } } } private void setStringSummary(String preference, String value) { try { findPreference(preference).setSummary(value); Loading src/com/android/settings/deviceinfo/ManualPreferenceController.java 0 → 100644 +41 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 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.deviceinfo; import android.content.Context; import com.android.settings.R; import com.android.settings.core.PreferenceController; public class ManualPreferenceController extends PreferenceController { private static final String KEY_MANUAL = "manual"; public ManualPreferenceController(Context context) { super(context); } @Override public boolean isAvailable() { return mContext.getResources().getBoolean(R.bool.config_show_manual); } @Override public String getPreferenceKey() { return KEY_MANUAL; } } tests/robotests/src/com/android/settings/DeviceInfoSettingsTest.java +35 −50 Original line number Diff line number Diff line Loading @@ -18,28 +18,24 @@ package com.android.settings; import android.content.Context; import android.os.UserManager; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.SmallTest; import com.android.settingslib.DeviceInfoUtils; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settingslib.DeviceInfoUtils; import org.junit.Before; import org.junit.runner.RunWith; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.annotation.Config; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static com.google.common.truth.Truth.assertWithMessage; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @RunWith(SettingsRobolectricTestRunner.class) Loading Loading @@ -67,57 +63,46 @@ public class DeviceInfoSettingsTest extends AndroidTestCase { } @Test public void testGetFormattedKernelVersion() throws Exception { if ("Unavailable".equals(DeviceInfoUtils.getFormattedKernelVersion())) { fail("formatKernelVersion can't cope with this device's /proc/version"); public void getPrefXml_shoudlReturnDeviceInfoXml() { assertThat(mSettings.getPreferenceScreenResId()).isEqualTo(R.xml.device_info_settings); } @Test public void testGetFormattedKernelVersion() throws Exception { assertWithMessage("formatKernelVersion can't cope with this device's /proc/version") .that(DeviceInfoUtils.getFormattedKernelVersion()) .isNotEqualTo("Unavailable"); } @Test public void testFormatKernelVersion() throws Exception { assertEquals("Unavailable", DeviceInfoUtils.formatKernelVersion("")); assertEquals("2.6.38.8-gg784\n" + "root@hpao4.eem.corp.google.com #2\n" + "Fri Feb 24 03:31:23 PST 2012", DeviceInfoUtils.formatKernelVersion("Linux version 2.6.38.8-gg784 " + assertThat(DeviceInfoUtils.formatKernelVersion("")).isEqualTo("Unavailable"); assertThat(DeviceInfoUtils.formatKernelVersion("Linux version 2.6.38.8-gg784 " + "(root@hpao4.eem.corp.google.com) " + "(gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) ) #2 SMP " + "Fri Feb 24 03:31:23 PST 2012")); assertEquals("3.0.31-g6fb96c9\n" + "android-build@vpbs1.mtv.corp.google.com #1\n" + "Thu Jun 28 11:02:39 PDT 2012", DeviceInfoUtils.formatKernelVersion("Linux version 3.0.31-g6fb96c9 " + "Fri Feb 24 03:31:23 PST 2012")) .isEqualTo("2.6.38.8-gg784\n" + "root@hpao4.eem.corp.google.com #2\n" + "Fri Feb 24 03:31:23 PST 2012"); assertThat(DeviceInfoUtils.formatKernelVersion("Linux version 3.0.31-g6fb96c9 " + "(android-build@vpbs1.mtv.corp.google.com) " + "(gcc version 4.6.x-google 20120106 (prerelease) (GCC) ) #1 " + "SMP PREEMPT Thu Jun 28 11:02:39 PDT 2012")); assertEquals("2.6.38.8-a-b-jellybean+\n" + "x@y #1\n" + "Tue Aug 28 22:10:46 CDT 2012", DeviceInfoUtils.formatKernelVersion("Linux version " + "SMP PREEMPT Thu Jun 28 11:02:39 PDT 2012")) .isEqualTo("3.0.31-g6fb96c9\n" + "android-build@vpbs1.mtv.corp.google.com #1\n" + "Thu Jun 28 11:02:39 PDT 2012"); assertThat(DeviceInfoUtils.formatKernelVersion("Linux version " + "2.6.38.8-a-b-jellybean+ (x@y) " + "(gcc version 4.4.3 (GCC) ) #1 PREEMPT Tue Aug 28 22:10:46 CDT 2012")); assertEquals("3.18.31-g3ce5faa-dirty\n" + "x@y #5\n" + "Fri Oct 28 14:38:13 PDT 2016", DeviceInfoUtils.formatKernelVersion("Linux version " + "(gcc version 4.4.3 (GCC) ) #1 PREEMPT Tue Aug 28 22:10:46 CDT 2012")) .isEqualTo("2.6.38.8-a-b-jellybean+\n" + "x@y #1\n" + "Tue Aug 28 22:10:46 CDT 2012"); assertThat(DeviceInfoUtils.formatKernelVersion("Linux version " + "3.18.31-g3ce5faa-dirty (x@y) (Android clang " + "version 3.8.275480 (based on LLVM 3.8.275480)) " + "#5 SMP PREEMPT Fri Oct 28 14:38:13 PDT 2016")); } @Test public void testShowSystemUpdatesWhenIADisabled() throws Exception { when(mFeatureFactory.dashboardFeatureProvider.isEnabled()).thenReturn(true); mSettings.displaySystemUpdates(mContext); verify(mScreen).removePreference(any(Preference.class)); } @Test public void testHideSystemUpdatesWhenIAEnabled() throws Exception { when(mFeatureFactory.dashboardFeatureProvider.isEnabled()).thenReturn(false); mSettings.displaySystemUpdates(mContext); verify(mScreen, never()).removePreference(any(Preference.class)); "#5 SMP PREEMPT Fri Oct 28 14:38:13 PDT 2016")) .isEqualTo("3.18.31-g3ce5faa-dirty\n" + "x@y #5\n" + "Fri Oct 28 14:38:13 PDT 2016"); } } tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java +6 −11 Original line number Diff line number Diff line Loading @@ -131,8 +131,7 @@ public class DashboardFeatureProviderImplTest { @Test public void bindPreference_noFragmentMetadata_shouldBindToProfileSelector() { final Preference preference = new Preference( ShadowApplication.getInstance().getApplicationContext()); final Preference preference = new Preference(RuntimeEnvironment.application); final Tile tile = new Tile(); tile.metaData = new Bundle(); tile.userHandle = new ArrayList<>(); Loading @@ -141,7 +140,7 @@ public class DashboardFeatureProviderImplTest { tile.intent = new Intent(); tile.intent.setComponent(new ComponentName("pkg", "class")); when(mActivity.getSystemService(Context.USER_SERVICE)) when(mActivity.getApplicationContext().getSystemService(Context.USER_SERVICE)) .thenReturn(mUserManager); mImpl.bindPreferenceToTile(mActivity, MetricsProto.MetricsEvent.SETTINGS_GESTURES, Loading @@ -153,8 +152,7 @@ public class DashboardFeatureProviderImplTest { @Test public void bindPreference_noFragmentMetadataSingleUser_shouldBindToDirectLaunchIntent() { final Preference preference = new Preference( ShadowApplication.getInstance().getApplicationContext()); final Preference preference = new Preference(RuntimeEnvironment.application); final Tile tile = new Tile(); tile.metaData = new Bundle(); tile.userHandle = new ArrayList<>(); Loading Loading @@ -205,8 +203,7 @@ public class DashboardFeatureProviderImplTest { @Test public void bindPreference_withNullKeyNullPriority_shouldGenerateKeyAndPriority() { final Preference preference = new Preference( ShadowApplication.getInstance().getApplicationContext()); final Preference preference = new Preference(RuntimeEnvironment.application); final Tile tile = new Tile(); tile.intent = new Intent(); tile.intent.setComponent(new ComponentName("pkg", "class")); Loading @@ -219,8 +216,7 @@ public class DashboardFeatureProviderImplTest { @Test public void bindPreference_withNullKeyTileKey_shouldUseTileKey() { final Preference preference = new Preference( ShadowApplication.getInstance().getApplicationContext()); final Preference preference = new Preference(RuntimeEnvironment.application); final Tile tile = new Tile(); tile.key = "key"; tile.intent = new Intent(); Loading @@ -234,8 +230,7 @@ public class DashboardFeatureProviderImplTest { @Test public void bindPreference_withBaseOrder_shouldOffsetPriority() { final int baseOrder = 100; final Preference preference = new Preference( ShadowApplication.getInstance().getApplicationContext()); final Preference preference = new Preference(RuntimeEnvironment.application); final Tile tile = new Tile(); tile.metaData = new Bundle(); tile.priority = 10; Loading Loading
res/xml/device_info_settings.xml +1 −8 Original line number Diff line number Diff line Loading @@ -19,13 +19,6 @@ android:title="@string/about_settings"> <!-- System update settings - launches activity --> <Preference android:key="system_update_settings" android:title="@string/system_update_settings_list_item_title" android:summary="@string/system_update_settings_list_item_summary"> <intent android:action="android.settings.SYSTEM_UPDATE_SETTINGS" /> </Preference> <Preference android:key="additional_system_update_settings" android:title="@string/additional_system_update_settings_list_item_title"> <intent android:action="android.intent.action.MAIN" Loading @@ -48,7 +41,7 @@ <!-- Legal Information --> <Preference android:key="container" android:key="legal_container" android:title="@string/legal_information" android:fragment="com.android.settings.LegalSettings" /> Loading
src/com/android/settings/DeviceInfoSettings.java +31 −48 Original line number Diff line number Diff line Loading @@ -28,18 +28,19 @@ import android.os.UserHandle; import android.os.UserManager; import android.provider.SearchIndexableResource; import android.provider.Settings; import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceGroup; import android.text.TextUtils; import android.util.Log; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.core.PreferenceController; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.SummaryLoader; import com.android.settings.deviceinfo.AdditionalSystemUpdatePreferenceController; import com.android.settings.deviceinfo.BuildNumberPreferenceController; import com.android.settings.deviceinfo.ManualPreferenceController; import com.android.settings.deviceinfo.SystemUpdatePreferenceController; import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; import com.android.settingslib.DeviceInfoUtils; Loading @@ -51,13 +52,11 @@ import java.util.List; import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; public class DeviceInfoSettings extends SettingsPreferenceFragment implements Indexable { public class DeviceInfoSettings extends DashboardFragment implements Indexable { private static final String LOG_TAG = "DeviceInfoSettings"; private static final String KEY_MANUAL = "manual"; private static final String KEY_REGULATORY_INFO = "regulatory_info"; private static final String KEY_SYSTEM_UPDATE_SETTINGS = "system_update_settings"; private static final String PROPERTY_URL_SAFETYLEGAL = "ro.url.safetylegal"; private static final String PROPERTY_SELINUX_STATUS = "ro.build.selinux"; private static final String KEY_KERNEL_VERSION = "kernel_version"; Loading @@ -73,8 +72,6 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In long[] mHits = new long[3]; private SystemUpdatePreferenceController mSystemUpdatePreferenceController; private AdditionalSystemUpdatePreferenceController mAdditionalSystemUpdatePreferenceController; private BuildNumberPreferenceController mBuildNumberPreferenceController; private UserManager mUm; Loading @@ -92,6 +89,12 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In return R.string.help_uri_about; } @Override public void onAttach(Context context) { super.onAttach(context); mUm = (UserManager) context.getSystemService(Context.USER_SERVICE); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (mBuildNumberPreferenceController.onActivityResult(requestCode, resultCode, data)) { Loading @@ -103,14 +106,6 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); final Activity activity = getActivity(); mUm = UserManager.get(activity); mAdditionalSystemUpdatePreferenceController = new AdditionalSystemUpdatePreferenceController(activity); mBuildNumberPreferenceController = new BuildNumberPreferenceController(activity, activity, this /* fragment */); getLifecycle().addObserver(mBuildNumberPreferenceController); addPreferencesFromResource(R.xml.device_info_settings); setStringSummary(KEY_FIRMWARE_VERSION, Build.VERSION.RELEASE); findPreference(KEY_FIRMWARE_VERSION).setEnabled(true); Loading @@ -125,7 +120,6 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In setValueSummary(KEY_BASEBAND_VERSION, "gsm.version.baseband"); setStringSummary(KEY_DEVICE_MODEL, Build.MODEL + DeviceInfoUtils.getMsvSuffix()); setValueSummary(KEY_EQUIPMENT_ID, PROPERTY_EQUIPMENT_ID); mBuildNumberPreferenceController.displayPreference(getPreferenceScreen()); findPreference(KEY_KERNEL_VERSION).setSummary(DeviceInfoUtils.getFormattedKernelVersion()); if (!SELinux.isSELinuxEnabled()) { Loading Loading @@ -158,16 +152,6 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In getPreferenceScreen().removePreference(findPreference(KEY_DEVICE_FEEDBACK)); } /* * Settings is a generic app and should not contain any device-specific * info. */ displaySystemUpdates(activity); mAdditionalSystemUpdatePreferenceController.displayPreference(getPreferenceScreen()); // Remove manual entry if none present. removePreferenceIfBoolFalse(KEY_MANUAL, R.bool.config_show_manual); // Remove regulatory labels if no activity present to handle intent. removePreferenceIfActivityMissing( KEY_REGULATORY_INFO, Settings.ACTION_SHOW_REGULATORY_INFO); Loading Loading @@ -222,21 +206,29 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In } else if (preference.getKey().equals(KEY_DEVICE_FEEDBACK)) { sendFeedback(); } if (mSystemUpdatePreferenceController != null) { mSystemUpdatePreferenceController.handlePreferenceTreeClick(preference); } return super.onPreferenceTreeClick(preference); } @VisibleForTesting void displaySystemUpdates(Context context) { if (!FeatureFactory.getFactory(context).getDashboardFeatureProvider(context).isEnabled()) { mSystemUpdatePreferenceController = new SystemUpdatePreferenceController(context, UserManager.get(context)); mSystemUpdatePreferenceController.displayPreference(getPreferenceScreen()); } else { getPreferenceScreen().removePreference(findPreference(KEY_SYSTEM_UPDATE_SETTINGS)); @Override protected String getLogTag() { return LOG_TAG; } @Override protected int getPreferenceScreenResId() { return R.xml.device_info_settings; } @Override protected List<PreferenceController> getPreferenceControllers(Context context) { final List<PreferenceController> controllers = new ArrayList<>(); mBuildNumberPreferenceController = new BuildNumberPreferenceController(context, getActivity(), this /* fragment */); getLifecycle().addObserver(mBuildNumberPreferenceController); controllers.add(mBuildNumberPreferenceController); controllers.add(new AdditionalSystemUpdatePreferenceController(context)); controllers.add(new ManualPreferenceController(context)); return controllers; } private void removePreferenceIfPropertyMissing(PreferenceGroup preferenceGroup, Loading @@ -262,15 +254,6 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In } } private void removePreferenceIfBoolFalse(String preference, int resId) { if (!getResources().getBoolean(resId)) { Preference pref = findPreference(preference); if (pref != null) { getPreferenceScreen().removePreference(pref); } } } private void setStringSummary(String preference, String value) { try { findPreference(preference).setSummary(value); Loading
src/com/android/settings/deviceinfo/ManualPreferenceController.java 0 → 100644 +41 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 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.deviceinfo; import android.content.Context; import com.android.settings.R; import com.android.settings.core.PreferenceController; public class ManualPreferenceController extends PreferenceController { private static final String KEY_MANUAL = "manual"; public ManualPreferenceController(Context context) { super(context); } @Override public boolean isAvailable() { return mContext.getResources().getBoolean(R.bool.config_show_manual); } @Override public String getPreferenceKey() { return KEY_MANUAL; } }
tests/robotests/src/com/android/settings/DeviceInfoSettingsTest.java +35 −50 Original line number Diff line number Diff line Loading @@ -18,28 +18,24 @@ package com.android.settings; import android.content.Context; import android.os.UserManager; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.SmallTest; import com.android.settingslib.DeviceInfoUtils; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settingslib.DeviceInfoUtils; import org.junit.Before; import org.junit.runner.RunWith; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.annotation.Config; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static com.google.common.truth.Truth.assertWithMessage; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @RunWith(SettingsRobolectricTestRunner.class) Loading Loading @@ -67,57 +63,46 @@ public class DeviceInfoSettingsTest extends AndroidTestCase { } @Test public void testGetFormattedKernelVersion() throws Exception { if ("Unavailable".equals(DeviceInfoUtils.getFormattedKernelVersion())) { fail("formatKernelVersion can't cope with this device's /proc/version"); public void getPrefXml_shoudlReturnDeviceInfoXml() { assertThat(mSettings.getPreferenceScreenResId()).isEqualTo(R.xml.device_info_settings); } @Test public void testGetFormattedKernelVersion() throws Exception { assertWithMessage("formatKernelVersion can't cope with this device's /proc/version") .that(DeviceInfoUtils.getFormattedKernelVersion()) .isNotEqualTo("Unavailable"); } @Test public void testFormatKernelVersion() throws Exception { assertEquals("Unavailable", DeviceInfoUtils.formatKernelVersion("")); assertEquals("2.6.38.8-gg784\n" + "root@hpao4.eem.corp.google.com #2\n" + "Fri Feb 24 03:31:23 PST 2012", DeviceInfoUtils.formatKernelVersion("Linux version 2.6.38.8-gg784 " + assertThat(DeviceInfoUtils.formatKernelVersion("")).isEqualTo("Unavailable"); assertThat(DeviceInfoUtils.formatKernelVersion("Linux version 2.6.38.8-gg784 " + "(root@hpao4.eem.corp.google.com) " + "(gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) ) #2 SMP " + "Fri Feb 24 03:31:23 PST 2012")); assertEquals("3.0.31-g6fb96c9\n" + "android-build@vpbs1.mtv.corp.google.com #1\n" + "Thu Jun 28 11:02:39 PDT 2012", DeviceInfoUtils.formatKernelVersion("Linux version 3.0.31-g6fb96c9 " + "Fri Feb 24 03:31:23 PST 2012")) .isEqualTo("2.6.38.8-gg784\n" + "root@hpao4.eem.corp.google.com #2\n" + "Fri Feb 24 03:31:23 PST 2012"); assertThat(DeviceInfoUtils.formatKernelVersion("Linux version 3.0.31-g6fb96c9 " + "(android-build@vpbs1.mtv.corp.google.com) " + "(gcc version 4.6.x-google 20120106 (prerelease) (GCC) ) #1 " + "SMP PREEMPT Thu Jun 28 11:02:39 PDT 2012")); assertEquals("2.6.38.8-a-b-jellybean+\n" + "x@y #1\n" + "Tue Aug 28 22:10:46 CDT 2012", DeviceInfoUtils.formatKernelVersion("Linux version " + "SMP PREEMPT Thu Jun 28 11:02:39 PDT 2012")) .isEqualTo("3.0.31-g6fb96c9\n" + "android-build@vpbs1.mtv.corp.google.com #1\n" + "Thu Jun 28 11:02:39 PDT 2012"); assertThat(DeviceInfoUtils.formatKernelVersion("Linux version " + "2.6.38.8-a-b-jellybean+ (x@y) " + "(gcc version 4.4.3 (GCC) ) #1 PREEMPT Tue Aug 28 22:10:46 CDT 2012")); assertEquals("3.18.31-g3ce5faa-dirty\n" + "x@y #5\n" + "Fri Oct 28 14:38:13 PDT 2016", DeviceInfoUtils.formatKernelVersion("Linux version " + "(gcc version 4.4.3 (GCC) ) #1 PREEMPT Tue Aug 28 22:10:46 CDT 2012")) .isEqualTo("2.6.38.8-a-b-jellybean+\n" + "x@y #1\n" + "Tue Aug 28 22:10:46 CDT 2012"); assertThat(DeviceInfoUtils.formatKernelVersion("Linux version " + "3.18.31-g3ce5faa-dirty (x@y) (Android clang " + "version 3.8.275480 (based on LLVM 3.8.275480)) " + "#5 SMP PREEMPT Fri Oct 28 14:38:13 PDT 2016")); } @Test public void testShowSystemUpdatesWhenIADisabled() throws Exception { when(mFeatureFactory.dashboardFeatureProvider.isEnabled()).thenReturn(true); mSettings.displaySystemUpdates(mContext); verify(mScreen).removePreference(any(Preference.class)); } @Test public void testHideSystemUpdatesWhenIAEnabled() throws Exception { when(mFeatureFactory.dashboardFeatureProvider.isEnabled()).thenReturn(false); mSettings.displaySystemUpdates(mContext); verify(mScreen, never()).removePreference(any(Preference.class)); "#5 SMP PREEMPT Fri Oct 28 14:38:13 PDT 2016")) .isEqualTo("3.18.31-g3ce5faa-dirty\n" + "x@y #5\n" + "Fri Oct 28 14:38:13 PDT 2016"); } }
tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java +6 −11 Original line number Diff line number Diff line Loading @@ -131,8 +131,7 @@ public class DashboardFeatureProviderImplTest { @Test public void bindPreference_noFragmentMetadata_shouldBindToProfileSelector() { final Preference preference = new Preference( ShadowApplication.getInstance().getApplicationContext()); final Preference preference = new Preference(RuntimeEnvironment.application); final Tile tile = new Tile(); tile.metaData = new Bundle(); tile.userHandle = new ArrayList<>(); Loading @@ -141,7 +140,7 @@ public class DashboardFeatureProviderImplTest { tile.intent = new Intent(); tile.intent.setComponent(new ComponentName("pkg", "class")); when(mActivity.getSystemService(Context.USER_SERVICE)) when(mActivity.getApplicationContext().getSystemService(Context.USER_SERVICE)) .thenReturn(mUserManager); mImpl.bindPreferenceToTile(mActivity, MetricsProto.MetricsEvent.SETTINGS_GESTURES, Loading @@ -153,8 +152,7 @@ public class DashboardFeatureProviderImplTest { @Test public void bindPreference_noFragmentMetadataSingleUser_shouldBindToDirectLaunchIntent() { final Preference preference = new Preference( ShadowApplication.getInstance().getApplicationContext()); final Preference preference = new Preference(RuntimeEnvironment.application); final Tile tile = new Tile(); tile.metaData = new Bundle(); tile.userHandle = new ArrayList<>(); Loading Loading @@ -205,8 +203,7 @@ public class DashboardFeatureProviderImplTest { @Test public void bindPreference_withNullKeyNullPriority_shouldGenerateKeyAndPriority() { final Preference preference = new Preference( ShadowApplication.getInstance().getApplicationContext()); final Preference preference = new Preference(RuntimeEnvironment.application); final Tile tile = new Tile(); tile.intent = new Intent(); tile.intent.setComponent(new ComponentName("pkg", "class")); Loading @@ -219,8 +216,7 @@ public class DashboardFeatureProviderImplTest { @Test public void bindPreference_withNullKeyTileKey_shouldUseTileKey() { final Preference preference = new Preference( ShadowApplication.getInstance().getApplicationContext()); final Preference preference = new Preference(RuntimeEnvironment.application); final Tile tile = new Tile(); tile.key = "key"; tile.intent = new Intent(); Loading @@ -234,8 +230,7 @@ public class DashboardFeatureProviderImplTest { @Test public void bindPreference_withBaseOrder_shouldOffsetPriority() { final int baseOrder = 100; final Preference preference = new Preference( ShadowApplication.getInstance().getApplicationContext()); final Preference preference = new Preference(RuntimeEnvironment.application); final Tile tile = new Tile(); tile.metaData = new Bundle(); tile.priority = 10; Loading