diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 0c5c6eff3ed..a6d066ba6e6 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1890,7 +1890,7 @@ + android:value="com.android.settings.development.DevelopmentSettings" /> diff --git a/res/layout/preference_home_app.xml b/res/layout/preference_home_app.xml deleted file mode 100644 index 5c74aa81a86..00000000000 --- a/res/layout/preference_home_app.xml +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/res/values/strings.xml b/res/values/strings.xml index ae2ee092c01..ddb1bf17ac5 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -5716,9 +5716,6 @@ Expand settings for application - - Uninstall this application - This setting affects all users on this tablet. diff --git a/res/xml/development_prefs.xml b/res/xml/development_prefs.xml index 955802dc470..8422f3eb515 100644 --- a/res/xml/development_prefs.xml +++ b/res/xml/development_prefs.xml @@ -69,7 +69,7 @@ android:summary="@string/convert_to_file_encryption_enabled" android:fragment="com.android.settings.applications.ConvertToFbe" /> - diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index 73561a66d28..11190d57086 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -60,6 +60,7 @@ import com.android.settings.core.instrumentation.MetricsFeatureProvider; import com.android.settings.core.instrumentation.SharedPreferencesLogger; import com.android.settings.dashboard.DashboardFeatureProvider; import com.android.settings.dashboard.DashboardSummary; +import com.android.settings.development.DevelopmentSettings; import com.android.settings.enterprise.EnterprisePrivacySettings; import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.DynamicIndexableContentMonitor; diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java index f267640008e..909ddfe7f8f 100644 --- a/src/com/android/settings/Utils.java +++ b/src/com/android/settings/Utils.java @@ -750,30 +750,6 @@ public final class Utils extends com.android.settingslib.Utils { || um.getUserProfiles().contains(otherUser); } - - /** - * Returns whether or not this device is able to be OEM unlocked. - */ - static boolean isOemUnlockEnabled(Context context) { - PersistentDataBlockManager manager =(PersistentDataBlockManager) - context.getSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE); - return manager.getOemUnlockEnabled(); - } - - /** - * Allows enabling or disabling OEM unlock on this device. OEM unlocked - * devices allow users to flash other OSes to them. - */ - static void setOemUnlockEnabled(Context context, boolean enabled) { - try { - PersistentDataBlockManager manager = (PersistentDataBlockManager) - context.getSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE); - manager.setOemUnlockEnabled(enabled); - } catch (SecurityException e) { - Log.e(TAG, "Fail to set oem unlock.", e); - } - } - /** * Return whether or not the user should have a SIM Cards option in Settings. * TODO: Change back to returning true if count is greater than one after testing. diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java index 8514e8f16d5..fb2c9cef31e 100644 --- a/src/com/android/settings/core/gateway/SettingsGateway.java +++ b/src/com/android/settings/core/gateway/SettingsGateway.java @@ -22,7 +22,6 @@ import com.android.settings.ChooseLockPassword; import com.android.settings.ChooseLockPattern; import com.android.settings.CryptKeeperSettings; import com.android.settings.DateTimeSettings; -import com.android.settings.DevelopmentSettings; import com.android.settings.DeviceAdminSettings; import com.android.settings.DeviceInfoSettings; import com.android.settings.DisplaySettings; @@ -65,6 +64,7 @@ import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment; import com.android.settings.dashboard.SupportFragment; import com.android.settings.datausage.DataUsageSummary; import com.android.settings.deletionhelper.AutomaticStorageManagerSettings; +import com.android.settings.development.DevelopmentSettings; import com.android.settings.deviceinfo.ImeiInformation; import com.android.settings.deviceinfo.PrivateVolumeForget; import com.android.settings.deviceinfo.PrivateVolumeSettings; diff --git a/src/com/android/settings/dashboard/DashboardFragmentRegistry.java b/src/com/android/settings/dashboard/DashboardFragmentRegistry.java index 8935ee38b54..c65c31655dd 100644 --- a/src/com/android/settings/dashboard/DashboardFragmentRegistry.java +++ b/src/com/android/settings/dashboard/DashboardFragmentRegistry.java @@ -18,7 +18,6 @@ package com.android.settings.dashboard; import android.util.ArrayMap; -import com.android.settings.DevelopmentSettings; import com.android.settings.DisplaySettings; import com.android.settings.SecuritySettings; import com.android.settings.accounts.AccountDetailDashboardFragment; @@ -26,6 +25,7 @@ import com.android.settings.accounts.UserAndAccountDashboardFragment; import com.android.settings.applications.AdvancedAppSettings; import com.android.settings.applications.AppAndNotificationDashboardFragment; import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment; +import com.android.settings.development.DevelopmentSettings; import com.android.settings.deviceinfo.StorageDashboardFragment; import com.android.settings.fuelgauge.PowerUsageSummary; import com.android.settings.language.LanguageAndInputSettings; diff --git a/src/com/android/settings/ColorModePreference.java b/src/com/android/settings/development/ColorModePreference.java similarity index 98% rename from src/com/android/settings/ColorModePreference.java rename to src/com/android/settings/development/ColorModePreference.java index 74abf5d361a..e0b0837d800 100644 --- a/src/com/android/settings/ColorModePreference.java +++ b/src/com/android/settings/development/ColorModePreference.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.settings; +package com.android.settings.development; import android.content.Context; import android.content.res.Resources; @@ -25,6 +25,8 @@ import android.support.v14.preference.SwitchPreference; import android.util.AttributeSet; import android.view.Display; +import com.android.settings.R; + import java.util.ArrayList; public class ColorModePreference extends SwitchPreference implements DisplayListener { diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/development/DevelopmentSettings.java similarity index 98% rename from src/com/android/settings/DevelopmentSettings.java rename to src/com/android/settings/development/DevelopmentSettings.java index 6aae587ee61..2a4a2312668 100644 --- a/src/com/android/settings/DevelopmentSettings.java +++ b/src/com/android/settings/development/DevelopmentSettings.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings; +package com.android.settings.development; import android.Manifest; import android.app.Activity; @@ -55,7 +55,6 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.os.StrictMode; import android.os.SystemProperties; -import android.os.UserHandle; import android.os.UserManager; import android.os.storage.IStorageManager; import android.provider.SearchIndexableResource; @@ -84,11 +83,12 @@ import android.widget.Toast; import com.android.internal.app.LocalePicker; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; +import com.android.settings.ChooseLockSettingsHelper; +import com.android.settings.R; +import com.android.settings.RestrictedSettingsFragment; +import com.android.settings.SettingsActivity; +import com.android.settings.Utils; import com.android.settings.dashboard.DashboardFeatureProvider; -import com.android.settings.development.AppPicker; -import com.android.settings.development.BugReportInPowerPreferenceController; -import com.android.settings.development.BugReportPreferenceController; -import com.android.settings.development.TelephonyMonitorPreferenceController; import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; @@ -1082,12 +1082,13 @@ public class DevelopmentSettings extends RestrictedSettingsFragment } private boolean enableOemUnlockPreference() { - return !isBootloaderUnlocked() && isOemUnlockAllowed(); + return !isBootloaderUnlocked() && OemUnlockUtils.isOemUnlockAllowed(mUm); } private void updateOemUnlockOptions() { if (mEnableOemUnlock != null) { - updateSwitchPreference(mEnableOemUnlock, Utils.isOemUnlockEnabled(getActivity())); + updateSwitchPreference(mEnableOemUnlock, + OemUnlockUtils.isOemUnlockEnabled(getActivity())); updateOemUnlockSettingDescription(); // Showing mEnableOemUnlock preference as device has persistent data block. mEnableOemUnlock.setDisabledByAdmin(null); @@ -2297,7 +2298,7 @@ public class DevelopmentSettings extends RestrictedSettingsFragment @Override public void onClick(DialogInterface dialog, int which) { if (which == DialogInterface.BUTTON_POSITIVE) { - Utils.setOemUnlockEnabled(getActivity(), true); + OemUnlockUtils.setOemUnlockEnabled(getActivity(), true); } } }; @@ -2369,7 +2370,7 @@ public class DevelopmentSettings extends RestrictedSettingsFragment if (mEnableOemUnlock.isChecked()) { confirmEnableOemUnlock(); } else { - Utils.setOemUnlockEnabled(getActivity(), false); + OemUnlockUtils.setOemUnlockEnabled(getActivity(), false); } } } else { @@ -2439,7 +2440,7 @@ public class DevelopmentSettings extends RestrictedSettingsFragment confirmEnableOemUnlock(); } } else { - Utils.setOemUnlockEnabled(getActivity(), false); + OemUnlockUtils.setOemUnlockEnabled(getActivity(), false); } } else if (preference == mMockLocationAppPref) { Intent intent = new Intent(getActivity(), AppPicker.class); @@ -2807,7 +2808,7 @@ public class DevelopmentSettings extends RestrictedSettingsFragment oemUnlockSummary = R.string.oem_unlock_enable_disabled_summary_bootloader_unlocked; } else if (isSimLockedDevice()) { oemUnlockSummary = R.string.oem_unlock_enable_disabled_summary_sim_locked_device; - } else if (!isOemUnlockAllowed()) { + } else if (!OemUnlockUtils.isOemUnlockAllowed(mUm)) { // If the device isn't SIM-locked but OEM unlock is disabled by the system via the // user restriction, this means either some other carrier restriction is in place or // the device hasn't been able to confirm which restrictions (SIM-lock or otherwise) @@ -2842,14 +2843,5 @@ public class DevelopmentSettings extends RestrictedSettingsFragment return flashLockState == PersistentDataBlockManager.FLASH_LOCK_UNLOCKED; } - /** - * Returns {@code true} if OEM unlock is disallowed by user restriction - * {@link UserManager#DISALLOW_FACTORY_RESET} or {@link UserManager#DISALLOW_OEM_UNLOCK}. - * Otherwise, returns {@code false}. - */ - private boolean isOemUnlockAllowed() { - UserHandle userHandle = UserHandle.of(UserHandle.myUserId()); - return !(mUm.hasBaseUserRestriction(UserManager.DISALLOW_OEM_UNLOCK, userHandle) - || mUm.hasBaseUserRestriction(UserManager.DISALLOW_FACTORY_RESET, userHandle)); - } + } diff --git a/src/com/android/settings/development/OemUnlockUtils.java b/src/com/android/settings/development/OemUnlockUtils.java new file mode 100644 index 00000000000..cee3679ea89 --- /dev/null +++ b/src/com/android/settings/development/OemUnlockUtils.java @@ -0,0 +1,61 @@ +/* + * 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.development; + +import android.content.Context; +import android.os.UserHandle; +import android.os.UserManager; +import android.service.persistentdata.PersistentDataBlockManager; +import android.util.Log; + +public class OemUnlockUtils { + private static final String TAG = "OemUnlockUtils"; + + /** + * Returns whether or not this device is able to be OEM unlocked. + */ + static boolean isOemUnlockEnabled(Context context) { + PersistentDataBlockManager manager = (PersistentDataBlockManager) + context.getSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE); + return manager.getOemUnlockEnabled(); + } + + /** + * Allows enabling or disabling OEM unlock on this device. OEM unlocked + * devices allow users to flash other OSes to them. + */ + static void setOemUnlockEnabled(Context context, boolean enabled) { + try { + PersistentDataBlockManager manager = (PersistentDataBlockManager) + context.getSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE); + manager.setOemUnlockEnabled(enabled); + } catch (SecurityException e) { + Log.e(TAG, "Fail to set oem unlock.", e); + } + } + + /** + * Returns {@code true} if OEM unlock is disallowed by user restriction + * {@link UserManager#DISALLOW_FACTORY_RESET} or {@link UserManager#DISALLOW_OEM_UNLOCK}. + * Otherwise, returns {@code false}. + */ + static boolean isOemUnlockAllowed(UserManager um) { + final UserHandle userHandle = UserHandle.of(UserHandle.myUserId()); + return !(um.hasBaseUserRestriction(UserManager.DISALLOW_OEM_UNLOCK, userHandle) + || um.hasBaseUserRestriction(UserManager.DISALLOW_FACTORY_RESET, userHandle)); + } +} diff --git a/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java index a46a62e524b..4062be8045a 100644 --- a/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java +++ b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java @@ -31,7 +31,6 @@ import android.widget.Toast; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.ChooseLockSettingsHelper; -import com.android.settings.DevelopmentSettings; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.core.PreferenceController; @@ -39,6 +38,7 @@ import com.android.settings.core.instrumentation.MetricsFeatureProvider; import com.android.settings.core.lifecycle.Lifecycle; import com.android.settings.core.lifecycle.LifecycleObserver; import com.android.settings.core.lifecycle.events.OnResume; +import com.android.settings.development.DevelopmentSettings; import com.android.settings.overlay.FeatureFactory; import com.android.settings.search2.SearchFeatureProvider; import com.android.settingslib.RestrictedLockUtils; diff --git a/src/com/android/settings/qstile/DevelopmentTiles.java b/src/com/android/settings/qstile/DevelopmentTiles.java index 635e9f06e1c..ad60827c221 100644 --- a/src/com/android/settings/qstile/DevelopmentTiles.java +++ b/src/com/android/settings/qstile/DevelopmentTiles.java @@ -27,7 +27,7 @@ import android.view.View; import android.view.WindowManagerGlobal; import com.android.internal.app.LocalePicker; -import com.android.settings.DevelopmentSettings; +import com.android.settings.development.DevelopmentSettings; public abstract class DevelopmentTiles extends TileService { diff --git a/src/com/android/settings/search/SearchIndexableResources.java b/src/com/android/settings/search/SearchIndexableResources.java index 329451c7b3d..b37b91be98f 100644 --- a/src/com/android/settings/search/SearchIndexableResources.java +++ b/src/com/android/settings/search/SearchIndexableResources.java @@ -22,7 +22,6 @@ import android.support.annotation.VisibleForTesting; import android.support.annotation.XmlRes; import com.android.settings.DateTimeSettings; -import com.android.settings.DevelopmentSettings; import com.android.settings.DeviceInfoSettings; import com.android.settings.DisplaySettings; import com.android.settings.EncryptionAndCredential; @@ -42,6 +41,7 @@ import com.android.settings.bluetooth.BluetoothSettings; import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment; import com.android.settings.datausage.DataUsageMeteredSettings; import com.android.settings.datausage.DataUsageSummary; +import com.android.settings.development.DevelopmentSettings; import com.android.settings.deviceinfo.StorageDashboardFragment; import com.android.settings.deviceinfo.StorageSettings; import com.android.settings.display.ScreenZoomSettings; @@ -165,7 +165,8 @@ public final class SearchIndexableResources { R.drawable.ic_settings_notifications); addIndex(SystemDashboardFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_about); addIndex(StorageDashboardFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_storage); - addIndex(ConnectedDeviceDashboardFragment.class, NO_DATA_RES_ID, R.drawable.ic_devices_other); + addIndex(ConnectedDeviceDashboardFragment.class, NO_DATA_RES_ID, + R.drawable.ic_devices_other); addIndex(EnterprisePrivacySettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_about); addIndex(PaymentSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_nfc_payment); addIndex( diff --git a/tests/robotests/src/com/android/settings/DevelopmentSettingsTest.java b/tests/robotests/src/com/android/settings/development/DevelopmentSettingsTest.java similarity index 96% rename from tests/robotests/src/com/android/settings/DevelopmentSettingsTest.java rename to tests/robotests/src/com/android/settings/development/DevelopmentSettingsTest.java index 3e7d4acfddd..485a5394e29 100644 --- a/tests/robotests/src/com/android/settings/DevelopmentSettingsTest.java +++ b/tests/robotests/src/com/android/settings/development/DevelopmentSettingsTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings; +package com.android.settings.development; import android.app.Activity; import android.content.Context; @@ -22,6 +22,8 @@ import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceManager; import android.support.v7.preference.PreferenceScreen; +import com.android.settings.SettingsRobolectricTestRunner; +import com.android.settings.TestConfig; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settingslib.drawer.CategoryKey; diff --git a/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java index c162aec0646..4475d189151 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java @@ -26,7 +26,7 @@ import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import com.android.internal.logging.nano.MetricsProto; -import com.android.settings.DevelopmentSettings; +import com.android.settings.development.DevelopmentSettings; import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; import com.android.settings.core.lifecycle.Lifecycle; @@ -48,7 +48,6 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Answers.RETURNS_DEEP_STUBS; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy;