diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 5e4f1e8f110..1951afd82ea 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -92,6 +92,7 @@ + diff --git a/src/com/android/settings/applications/defaultapps/DefaultAutofillPicker.java b/src/com/android/settings/applications/defaultapps/DefaultAutofillPicker.java index d116f91d601..30835fb2297 100644 --- a/src/com/android/settings/applications/defaultapps/DefaultAutofillPicker.java +++ b/src/com/android/settings/applications/defaultapps/DefaultAutofillPicker.java @@ -195,6 +195,14 @@ public class DefaultAutofillPicker extends DefaultAppPickerFragment { candidates.add(new DefaultAppInfo(context, mPm, mUserId, new ComponentName( info.serviceInfo.packageName, info.serviceInfo.name))); } + if (Manifest.permission.BIND_AUTOFILL.equals(permission)) { + // Let it go for now... + Log.w(TAG, "AutofillService from '" + info.serviceInfo.packageName + + "' uses unsupported permission " + Manifest.permission.BIND_AUTOFILL + + ". It works for now, but might not be supported on future releases"); + candidates.add(new DefaultAppInfo(context, mPm, mUserId, new ComponentName( + info.serviceInfo.packageName, info.serviceInfo.name))); + } } return candidates; } diff --git a/src/com/android/settings/deletionhelper/AutomaticStorageManagerDescriptionPreferenceController.java b/src/com/android/settings/deletionhelper/AutomaticStorageManagerDescriptionPreferenceController.java index 261f66cea6e..23fc35b3619 100644 --- a/src/com/android/settings/deletionhelper/AutomaticStorageManagerDescriptionPreferenceController.java +++ b/src/com/android/settings/deletionhelper/AutomaticStorageManagerDescriptionPreferenceController.java @@ -23,6 +23,7 @@ import android.text.format.Formatter; import com.android.settings.R; import com.android.settings.core.PreferenceControllerMixin; +import com.android.settingslib.Utils; import com.android.settingslib.core.AbstractPreferenceController; /** @@ -57,7 +58,7 @@ public class AutomaticStorageManagerDescriptionPreferenceController cr, Settings.Secure.AUTOMATIC_STORAGE_MANAGER_BYTES_CLEARED, 0); long lastRunMillis = Settings.Secure.getLong(cr, Settings.Secure.AUTOMATIC_STORAGE_MANAGER_LAST_RUN, 0); - if (freedBytes == 0 || lastRunMillis == 0 || !isStorageManagerEnabled(cr)) { + if (freedBytes == 0 || lastRunMillis == 0 || !Utils.isStorageManagerEnabled(context)) { preference.setSummary(R.string.automatic_storage_manager_text); } else { preference.setSummary( @@ -68,9 +69,4 @@ public class AutomaticStorageManagerDescriptionPreferenceController context, lastRunMillis, DateUtils.FORMAT_SHOW_DATE))); } } - - private boolean isStorageManagerEnabled(ContentResolver cr) { - return Settings.Secure.getInt(cr, Settings.Secure.AUTOMATIC_STORAGE_MANAGER_ENABLED, 0) - != 0; - } } diff --git a/src/com/android/settings/deletionhelper/AutomaticStorageManagerSettings.java b/src/com/android/settings/deletionhelper/AutomaticStorageManagerSettings.java index 184c0c57ae7..22ecb0939c2 100644 --- a/src/com/android/settings/deletionhelper/AutomaticStorageManagerSettings.java +++ b/src/com/android/settings/deletionhelper/AutomaticStorageManagerSettings.java @@ -5,7 +5,7 @@ * 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 + * 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, @@ -96,7 +96,7 @@ public class AutomaticStorageManagerSettings extends DashboardFragment @Override public void onResume() { super.onResume(); - mDaysToRetain.setEnabled(isStorageManagerEnabled()); + mDaysToRetain.setEnabled(Utils.isStorageManagerEnabled(getContext())); } @Override @@ -153,12 +153,6 @@ public class AutomaticStorageManagerSettings extends DashboardFragment return indices.length - 1; } - private boolean isStorageManagerEnabled() { - return Settings.Secure.getInt( - getContentResolver(), Settings.Secure.AUTOMATIC_STORAGE_MANAGER_ENABLED, 0) - != 0; - } - private static List buildPreferenceControllers(Context context) { final List controllers = new ArrayList<>(); controllers.add(new AutomaticStorageManagerDescriptionPreferenceController(context)); diff --git a/src/com/android/settings/deletionhelper/AutomaticStorageManagerSwitchBarController.java b/src/com/android/settings/deletionhelper/AutomaticStorageManagerSwitchBarController.java index a20afa1060a..c02fb102833 100644 --- a/src/com/android/settings/deletionhelper/AutomaticStorageManagerSwitchBarController.java +++ b/src/com/android/settings/deletionhelper/AutomaticStorageManagerSwitchBarController.java @@ -27,6 +27,7 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.util.Preconditions; import com.android.settings.widget.SwitchBar; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; +import com.android.settingslib.Utils; /** Handles the logic for flipping the storage management toggle on a {@link SwitchBar}. */ public class AutomaticStorageManagerSwitchBarController @@ -56,13 +57,7 @@ public class AutomaticStorageManagerSwitchBarController } private void initializeCheckedStatus() { - boolean isStorageManagerChecked = - Settings.Secure.getInt( - mContext.getContentResolver(), - Settings.Secure.AUTOMATIC_STORAGE_MANAGER_ENABLED, - 0) - != 0; - mSwitchBar.setChecked(isStorageManagerChecked); + mSwitchBar.setChecked(Utils.isStorageManagerEnabled(mContext)); mSwitchBar.addOnSwitchChangeListener(this); } diff --git a/src/com/android/settings/deviceinfo/storage/AutomaticStorageManagementSwitchPreferenceController.java b/src/com/android/settings/deviceinfo/storage/AutomaticStorageManagementSwitchPreferenceController.java index 8ab21b36fdb..7724b009f71 100644 --- a/src/com/android/settings/deviceinfo/storage/AutomaticStorageManagementSwitchPreferenceController.java +++ b/src/com/android/settings/deviceinfo/storage/AutomaticStorageManagementSwitchPreferenceController.java @@ -5,7 +5,7 @@ * 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 + * 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, @@ -23,12 +23,14 @@ import android.os.SystemProperties; import android.provider.Settings; import android.support.annotation.VisibleForTesting; import android.support.v7.preference.PreferenceScreen; + import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.deletionhelper.ActivationWarningFragment; import com.android.settings.widget.MasterSwitchController; import com.android.settings.widget.MasterSwitchPreference; import com.android.settings.widget.SwitchWidgetController; +import com.android.settingslib.Utils; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.lifecycle.LifecycleObserver; @@ -74,9 +76,7 @@ public class AutomaticStorageManagementSwitchPreferenceController extends if (!isAvailable()) { return; } - boolean isStorageManagerEnabled = Settings.Secure.getInt(mContext.getContentResolver(), - Settings.Secure.AUTOMATIC_STORAGE_MANAGER_ENABLED, 0) != 0; - mSwitch.setChecked(isStorageManagerEnabled); + mSwitch.setChecked(Utils.isStorageManagerEnabled(mContext)); if (mSwitch != null) { mSwitchController = new MasterSwitchController(mSwitch); @@ -97,9 +97,9 @@ public class AutomaticStorageManagementSwitchPreferenceController extends SystemProperties.getBoolean(STORAGE_MANAGER_ENABLED_BY_DEFAULT_PROPERTY, false); final boolean storageManagerDisabledByPolicy = Settings.Secure.getInt( - mContext.getContentResolver(), - Settings.Secure.AUTOMATIC_STORAGE_MANAGER_TURNED_OFF_BY_POLICY, - 0) + mContext.getContentResolver(), + Settings.Secure.AUTOMATIC_STORAGE_MANAGER_TURNED_OFF_BY_POLICY, + 0) != 0; // Show warning if it is disabled by default and turning it on or if it was disabled by // policy and we're turning it on. diff --git a/src/com/android/settings/fuelgauge/batterysaver/AutoBatterySeekBarPreferenceController.java b/src/com/android/settings/fuelgauge/batterysaver/AutoBatterySeekBarPreferenceController.java index 1c787abd5d4..1cc72a79fbb 100644 --- a/src/com/android/settings/fuelgauge/batterysaver/AutoBatterySeekBarPreferenceController.java +++ b/src/com/android/settings/fuelgauge/batterysaver/AutoBatterySeekBarPreferenceController.java @@ -20,6 +20,7 @@ import android.content.Context; import android.database.ContentObserver; import android.net.Uri; import android.os.Handler; +import android.os.Looper; import android.provider.Settings; import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; @@ -46,7 +47,7 @@ public class AutoBatterySeekBarPreferenceController extends BasePreferenceContro public AutoBatterySeekBarPreferenceController(Context context, Lifecycle lifecycle) { super(context, KEY_AUTO_BATTERY_SEEK_BAR); - mContentObserver = new AutoBatterySaverSettingObserver(new Handler()); + mContentObserver = new AutoBatterySaverSettingObserver(new Handler(Looper.getMainLooper())); if (lifecycle != null) { lifecycle.addObserver(this); } diff --git a/tests/unit/src/com/android/settings/core/UniquePreferenceTest.java b/tests/unit/src/com/android/settings/core/UniquePreferenceTest.java index aa1b55fc29e..dd275913677 100644 --- a/tests/unit/src/com/android/settings/core/UniquePreferenceTest.java +++ b/tests/unit/src/com/android/settings/core/UniquePreferenceTest.java @@ -90,7 +90,16 @@ public class UniquePreferenceTest { "imei_info", "wifi_ip_address", "wifi_mac_address", - "safety_info" + "safety_info", + // Dupe keys from data usage v2. + "data_usage_screen", + "cellular_data_usage", + "data_usage_wifi_screen", + "status_header", + "billing_preference", + "data_usage_cellular_screen", + "wifi_data_usage", + "data_usage_enable" ); private Context mContext;