Snap for 7185571 from c08943784c to sc-v2-release

Change-Id: Ib21143107a76c64146aa2bc8fd57fd164a01aad0
This commit is contained in:
android-build-team Robot
2021-03-05 02:08:01 +00:00
7 changed files with 63 additions and 24 deletions

View File

@@ -309,6 +309,7 @@ public class SettingsActivity extends SettingsBaseActivity
mMainSwitch = findViewById(R.id.switch_bar); mMainSwitch = findViewById(R.id.switch_bar);
if (mMainSwitch != null) { if (mMainSwitch != null) {
mMainSwitch.setMetricsTag(getMetricsTag()); mMainSwitch.setMetricsTag(getMetricsTag());
mMainSwitch.setTranslationZ(findViewById(R.id.main_content).getTranslationZ() + 1);
} }
// see if we should show Back/Next buttons // see if we should show Back/Next buttons

View File

@@ -200,8 +200,6 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra
mSwitchBar = ((SettingsActivity) getActivity()).getSwitchBar(); mSwitchBar = ((SettingsActivity) getActivity()).getSwitchBar();
mSwitchBar.setTitle(getContext().getString(R.string.developer_options_main_switch_title)); mSwitchBar.setTitle(getContext().getString(R.string.developer_options_main_switch_title));
mSwitchBar.show(); mSwitchBar.show();
mSwitchBar.setTranslationZ(
getActivity().findViewById(R.id.main_content).getTranslationZ() + 1);
mSwitchBarController = new DevelopmentSwitchBarController( mSwitchBarController = new DevelopmentSwitchBarController(
this /* DevelopmentSettings */, mSwitchBar, mIsAvailable, this /* DevelopmentSettings */, mSwitchBar, mIsAvailable,
getSettingsLifecycle()); getSettingsLifecycle());

View File

@@ -26,8 +26,13 @@ import android.graphics.drawable.Drawable;
import android.os.Bundle; import android.os.Bundle;
import android.os.UserHandle; import android.os.UserHandle;
import android.provider.Settings; import android.provider.Settings;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.ClickableSpan;
import android.util.Log; import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
@@ -97,15 +102,6 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements
mPrivacyPreference.setTitle(R.string.adaptive_sleep_privacy); mPrivacyPreference.setTitle(R.string.adaptive_sleep_privacy);
mPrivacyPreference.setSelectable(false); mPrivacyPreference.setSelectable(false);
mPrivacyPreference.setLayoutResource(R.layout.preference_footer); mPrivacyPreference.setLayoutResource(R.layout.preference_footer);
mDisableOptionsPreference = new FooterPreference(context);
mDisableOptionsPreference.setLayoutResource(R.layout.preference_footer);
mDisableOptionsPreference.setTitle(R.string.admin_disabled_other_options);
mDisableOptionsPreference.setIcon(R.drawable.ic_info_outline_24dp);
// The 'disabled by admin' preference should always be at the end of the setting page.
mDisableOptionsPreference.setOrder(DEFAULT_ORDER_OF_LOWEST_PREFERENCE);
mPrivacyPreference.setOrder(DEFAULT_ORDER_OF_LOWEST_PREFERENCE - 1);
} }
@Override @Override
@@ -138,14 +134,6 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements
final PreferenceScreen screen = getPreferenceScreen(); final PreferenceScreen screen = getPreferenceScreen();
screen.removeAll(); screen.removeAll();
if (mAdmin != null) {
mDisableOptionsPreference.setOnPreferenceClickListener(p -> {
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getContext(), mAdmin);
return true;
});
screen.addPreference(mDisableOptionsPreference);
}
final List<? extends CandidateInfo> candidateList = getCandidates(); final List<? extends CandidateInfo> candidateList = getCandidates();
if (candidateList == null) { if (candidateList == null) {
return; return;
@@ -165,14 +153,43 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements
} }
if (mAdmin != null) { if (mAdmin != null) {
mDisableOptionsPreference.setOnPreferenceClickListener(p -> { setupDisabledFooterPreference();
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getContext(), mAdmin);
return true;
});
screen.addPreference(mDisableOptionsPreference); screen.addPreference(mDisableOptionsPreference);
} }
} }
@VisibleForTesting
void setupDisabledFooterPreference() {
final String textDisabledByAdmin = getResources().getString(
R.string.admin_disabled_other_options);
final String textMoreDetails = getResources().getString(R.string.admin_more_details);
final SpannableString spannableString = new SpannableString(
textDisabledByAdmin + System.lineSeparator() + textMoreDetails);
final ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(@NonNull View widget) {
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getContext(), mAdmin);
}
};
if (textDisabledByAdmin != null && textMoreDetails != null) {
spannableString.setSpan(clickableSpan, textDisabledByAdmin.length() + 1,
textDisabledByAdmin.length() + textMoreDetails.length() + 1,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
mDisableOptionsPreference = new FooterPreference(getContext());
mDisableOptionsPreference.setLayoutResource(R.layout.preference_footer);
mDisableOptionsPreference.setTitle(spannableString);
mDisableOptionsPreference.setSelectable(false);
mDisableOptionsPreference.setIcon(R.drawable.ic_info_outline_24dp);
// The 'disabled by admin' preference should always be at the end of the setting page.
mDisableOptionsPreference.setOrder(DEFAULT_ORDER_OF_LOWEST_PREFERENCE);
mPrivacyPreference.setOrder(DEFAULT_ORDER_OF_LOWEST_PREFERENCE - 1);
}
@Override @Override
protected String getDefaultKey() { protected String getDefaultKey() {
return getCurrentSystemScreenTimeout(getContext()); return getCurrentSystemScreenTimeout(getContext());

View File

@@ -16,11 +16,14 @@
package com.android.settings.network.ims; package com.android.settings.network.ims;
import static android.telephony.ims.ProvisioningManager.KEY_VOIMS_OPT_IN_STATUS;
import android.content.Context; import android.content.Context;
import android.telecom.TelecomManager; import android.telecom.TelecomManager;
import android.telephony.AccessNetworkConstants; import android.telephony.AccessNetworkConstants;
import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager;
import android.telephony.ims.ImsException; import android.telephony.ims.ImsException;
import android.telephony.ims.ProvisioningManager;
import android.telephony.ims.feature.MmTelFeature; import android.telephony.ims.feature.MmTelFeature;
import android.telephony.ims.stub.ImsRegistrationImplBase; import android.telephony.ims.stub.ImsRegistrationImplBase;
import android.util.Log; import android.util.Log;
@@ -133,4 +136,15 @@ public class VolteQueryImsState extends ImsQueryController {
} }
return isEnabledByUser(mSubId); return isEnabledByUser(mSubId);
} }
/**
* Get VoIMS opt-in configuration.
*
* @return true when VoIMS opt-in has been enabled, otherwise false
*/
public boolean isVoImsOptInEnabled() {
int voImsOptInStatus = ProvisioningManager.createForSubscriptionId(mSubId)
.getProvisioningIntValue(KEY_VOIMS_OPT_IN_STATUS);
return voImsOptInStatus == ProvisioningManager.PROVISIONING_VALUE_ENABLED;
}
} }

View File

@@ -107,12 +107,18 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc
if (!isModeMatched()) { if (!isModeMatched()) {
return CONDITIONALLY_UNAVAILABLE; return CONDITIONALLY_UNAVAILABLE;
} }
final VolteQueryImsState queryState = queryImsState(subId);
// Show VoLTE settings if VoIMS opt-in has been enabled irrespective of other VoLTE settings
if (queryState.isVoImsOptInEnabled()) {
return AVAILABLE;
}
final PersistableBundle carrierConfig = getCarrierConfigForSubId(subId); final PersistableBundle carrierConfig = getCarrierConfigForSubId(subId);
if ((carrierConfig == null) if ((carrierConfig == null)
|| carrierConfig.getBoolean(CarrierConfigManager.KEY_HIDE_ENHANCED_4G_LTE_BOOL)) { || carrierConfig.getBoolean(CarrierConfigManager.KEY_HIDE_ENHANCED_4G_LTE_BOOL)) {
return CONDITIONALLY_UNAVAILABLE; return CONDITIONALLY_UNAVAILABLE;
} }
final VolteQueryImsState queryState = queryImsState(subId);
if (!queryState.isReadyToVoLte()) { if (!queryState.isReadyToVoLte()) {
return CONDITIONALLY_UNAVAILABLE; return CONDITIONALLY_UNAVAILABLE;
} }

View File

@@ -176,6 +176,7 @@ public class SettingsMainSwitchPreference extends TwoStatePreference {
* Update the status of switch but doesn't notify the mOnBeforeListener. * Update the status of switch but doesn't notify the mOnBeforeListener.
*/ */
public void setCheckedInternal(boolean checked) { public void setCheckedInternal(boolean checked) {
super.setChecked(checked);
if (mMainSwitchBar != null) { if (mMainSwitchBar != null) {
mMainSwitchBar.setCheckedInternal(checked); mMainSwitchBar.setCheckedInternal(checked);
} }

View File

@@ -23,6 +23,7 @@ import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never; import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
@@ -138,6 +139,7 @@ public class ScreenTimeoutSettingsTest {
public void updateCandidates_enforcedAdmin_showDisabledByAdminPreference() { public void updateCandidates_enforcedAdmin_showDisabledByAdminPreference() {
mSettings.mAdmin = new RestrictedLockUtils.EnforcedAdmin(); mSettings.mAdmin = new RestrictedLockUtils.EnforcedAdmin();
mSettings.mDisableOptionsPreference = mDisableOptionsPreference; mSettings.mDisableOptionsPreference = mDisableOptionsPreference;
doNothing().when(mSettings).setupDisabledFooterPreference();
mSettings.updateCandidates(); mSettings.updateCandidates();