Merge "Update the LE audio device into the media device category"
diff --git a/res/layout/manage_applications_apps.xml b/res/layout/manage_applications_apps.xml
index f8f4a76..a9cd72a 100644
--- a/res/layout/manage_applications_apps.xml
+++ b/res/layout/manage_applications_apps.xml
@@ -32,7 +32,10 @@
settings:fastScrollHorizontalTrackDrawable="@drawable/line_drawable"
settings:fastScrollVerticalThumbDrawable="@drawable/thumb_drawable"
settings:fastScrollVerticalTrackDrawable="@drawable/line_drawable"
- settings:layout_constraintTop_toBottomOf="@id/pinned_header"/>
+ settings:layout_constrainedHeight="true"
+ settings:layout_constraintVertical_bias="0.0"
+ settings:layout_constraintTop_toBottomOf="@id/pinned_header"
+ settings:layout_constraintBottom_toBottomOf="parent"/>
<TextView
android:id="@android:id/empty"
@@ -55,7 +58,10 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:colorBackground"
- settings:layout_constraintTop_toTopOf="parent"/>
+ settings:layout_constraintVertical_chainStyle="packed"
+ settings:layout_constraintVertical_bias="0.0"
+ settings:layout_constraintTop_toTopOf="parent"
+ settings:layout_constraintBottom_toTopOf="@id/apps_list"/>
</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/res/layout/preference_expand_divider.xml b/res/layout/preference_expand_divider.xml
index 164419a..ce3d2e7 100644
--- a/res/layout/preference_expand_divider.xml
+++ b/res/layout/preference_expand_divider.xml
@@ -26,9 +26,7 @@
android:paddingRight="?android:attr/listPreferredItemPaddingRight"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:background="?android:attr/selectableItemBackground"
- android:orientation="horizontal"
- android:clipToPadding="false"
- android:baselineAligned="false">
+ android:orientation="horizontal">
<TextView
android:id="@+id/expand_title"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index e9b3fa4..77121a3 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -13626,8 +13626,10 @@
<string name="camera_toggle_title">Camera access</string>
<!-- Label for the camera use toggle [CHAR LIMIT=40] -->
<string name="mic_toggle_title">Microphone access</string>
- <!-- Describes what is affected by the camera or mic toggle [CHAR LIMIT=NONE] -->
- <string name="sensor_toggle_description">For all apps and services</string>
+ <!-- Describes what is affected by the camera toggle [CHAR LIMIT=NONE] -->
+ <string name="cam_toggle_description">For apps and services</string>
+ <!-- Describes what is affected by the mic toggle [CHAR LIMIT=NONE] -->
+ <string name="mic_toggle_description">For apps and services. If this setting is off, microphone data may still be shared when you call an emergency number.</string>
<!-- Title for Game settings entry. [CHAR_LIMIT=NONE] -->
<string name="game_settings_title">Game settings</string>
diff --git a/res/xml/privacy_dashboard_settings.xml b/res/xml/privacy_dashboard_settings.xml
index 236df5e..cd7d798 100644
--- a/res/xml/privacy_dashboard_settings.xml
+++ b/res/xml/privacy_dashboard_settings.xml
@@ -67,14 +67,14 @@
<com.android.settingslib.RestrictedSwitchPreference
android:key="privacy_camera_toggle"
android:title="@string/camera_toggle_title"
- android:summary="@string/sensor_toggle_description"
+ android:summary="@string/cam_toggle_description"
settings:controller="com.android.settings.privacy.CameraToggleController"/>
<!-- Microphone toggle -->
<com.android.settingslib.RestrictedSwitchPreference
android:key="privacy_mic_toggle"
android:title="@string/mic_toggle_title"
- android:summary="@string/sensor_toggle_description"
+ android:summary="@string/mic_toggle_description"
settings:controller="com.android.settings.privacy.MicToggleController"/>
<!-- Show passwords -->
diff --git a/src/com/android/settings/SettingsApplication.java b/src/com/android/settings/SettingsApplication.java
index 7aa5af8..a2f723e 100644
--- a/src/com/android/settings/SettingsApplication.java
+++ b/src/com/android/settings/SettingsApplication.java
@@ -16,13 +16,18 @@
package com.android.settings;
+import android.app.Activity;
import android.app.Application;
import com.android.settings.activityembedding.ActivityEmbeddingRulesController;
+import java.lang.ref.WeakReference;
+
/** Settings application which sets up activity embedding rules for the large screen device. */
public class SettingsApplication extends Application {
+ private WeakReference<Activity> mHomeActivity = new WeakReference<>(null);
+
@Override
public void onCreate() {
super.onCreate();
@@ -31,4 +36,12 @@
new ActivityEmbeddingRulesController(this);
controller.initRules();
}
+
+ public void setHomeActivity(Activity homeActivity) {
+ mHomeActivity = new WeakReference<>(homeActivity);
+ }
+
+ public Activity getHomeActivity() {
+ return mHomeActivity.get();
+ }
}
diff --git a/src/com/android/settings/activityembedding/ActivityEmbeddingProvider.java b/src/com/android/settings/activityembedding/ActivityEmbeddingProvider.java
index 7585dce..7645643 100644
--- a/src/com/android/settings/activityembedding/ActivityEmbeddingProvider.java
+++ b/src/com/android/settings/activityembedding/ActivityEmbeddingProvider.java
@@ -16,6 +16,7 @@
package com.android.settings.activityembedding;
+import android.app.Activity;
import android.content.ContentProvider;
import android.content.ContentValues;
import android.database.Cursor;
@@ -23,13 +24,17 @@
import android.os.Bundle;
import android.text.TextUtils;
+import com.android.settings.SettingsApplication;
+
/**
* A content provider for querying the state of activity embedding feature
*/
public class ActivityEmbeddingProvider extends ContentProvider {
private static final String METHOD_IS_EMBEDDING_ACTIVITY_ENABLED = "isEmbeddingActivityEnabled";
+ private static final String METHOD_IS_IN_SETTINGS_TWO_PANE = "isInSettingsTwoPane";
private static final String EXTRA_ENABLED_STATE = "enabled_state";
+ private static final String EXTRA_TWO_PANE_STATE = "two_pane_state";
@Override
public boolean onCreate() {
@@ -43,6 +48,14 @@
bundle.putBoolean(EXTRA_ENABLED_STATE,
ActivityEmbeddingUtils.isEmbeddingActivityEnabled(getContext()));
return bundle;
+ } else if (TextUtils.equals(method, METHOD_IS_IN_SETTINGS_TWO_PANE)) {
+ final Activity homeActivity =
+ ((SettingsApplication) getContext().getApplicationContext()).getHomeActivity();
+ final Bundle bundle = new Bundle();
+ bundle.putBoolean(EXTRA_TWO_PANE_STATE,
+ homeActivity == null ? false
+ : ActivityEmbeddingUtils.isTwoPaneResolution(homeActivity));
+ return bundle;
}
return null;
}
diff --git a/src/com/android/settings/activityembedding/ActivityEmbeddingUtils.java b/src/com/android/settings/activityembedding/ActivityEmbeddingUtils.java
index 7ecacde..ac3a01d 100644
--- a/src/com/android/settings/activityembedding/ActivityEmbeddingUtils.java
+++ b/src/com/android/settings/activityembedding/ActivityEmbeddingUtils.java
@@ -16,7 +16,10 @@
package com.android.settings.activityembedding;
+import android.app.Activity;
+import android.app.ActivityTaskManager;
import android.content.Context;
+import android.graphics.Rect;
import android.util.DisplayMetrics;
import android.util.FeatureFlagUtils;
import android.util.Log;
@@ -64,10 +67,11 @@
}
/** Whether the screen meets two-pane resolution. */
- public static boolean isTwoPaneResolution(Context context) {
- final Context appContext = context.getApplicationContext();
- final DisplayMetrics dm = appContext.getResources().getDisplayMetrics();
- return dm.widthPixels >= getMinCurrentScreenSplitWidthPx(appContext)
- && dm.heightPixels >= getMinSmallestScreenSplitWidthPx(appContext);
+ public static boolean isTwoPaneResolution(Activity activity) {
+ final Rect currentTaskBounds =
+ ActivityTaskManager.getInstance().getTaskBounds(activity.getTaskId());
+
+ return currentTaskBounds.width() >= getMinCurrentScreenSplitWidthPx(activity)
+ && currentTaskBounds.height() >= getMinSmallestScreenSplitWidthPx(activity);
}
}
diff --git a/src/com/android/settings/applications/intentpicker/AppLaunchSettings.java b/src/com/android/settings/applications/intentpicker/AppLaunchSettings.java
index 43c377a..88ce786 100644
--- a/src/com/android/settings/applications/intentpicker/AppLaunchSettings.java
+++ b/src/com/android/settings/applications/intentpicker/AppLaunchSettings.java
@@ -105,6 +105,11 @@
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ if (mAppEntry == null) {
+ Log.w(TAG, "onCreate: mAppEntry is null, please check the reason!!!");
+ getActivity().finish();
+ return;
+ }
addPreferencesFromResource(R.xml.installed_app_launch_settings);
mDomainVerificationManager = mContext.getSystemService(DomainVerificationManager.class);
initUIComponents();
diff --git a/src/com/android/settings/fuelgauge/ExpandDividerPreference.java b/src/com/android/settings/fuelgauge/ExpandDividerPreference.java
index b89f2d4..4517177 100644
--- a/src/com/android/settings/fuelgauge/ExpandDividerPreference.java
+++ b/src/com/android/settings/fuelgauge/ExpandDividerPreference.java
@@ -65,8 +65,7 @@
@Override
public void onClick() {
- mIsExpanded = !mIsExpanded;
- refreshState();
+ setIsExpanded(!mIsExpanded);
if (mOnExpandListener != null) {
mOnExpandListener.onExpand(mIsExpanded);
}
@@ -74,10 +73,7 @@
void setTitle(final String titleContent) {
mTitleContent = titleContent;
- if (mTextView != null) {
- mTextView.postDelayed(
- () -> mTextView.setText(titleContent), 50);
- }
+ refreshState();
}
void setIsExpanded(boolean isExpanded) {
@@ -90,13 +86,13 @@
}
private void refreshState() {
- final int iconId =
- mIsExpanded
- ? R.drawable.ic_settings_expand_less
- : R.drawable.ic_settings_expand_more;
if (mImageView != null) {
- mImageView.setImageResource(iconId);
+ mImageView.setImageResource(mIsExpanded
+ ? R.drawable.ic_settings_expand_less
+ : R.drawable.ic_settings_expand_more);
}
- setTitle(mTitleContent);
+ if (mTextView != null) {
+ mTextView.setText(mTitleContent);
+ }
}
}
diff --git a/src/com/android/settings/homepage/SettingsHomepageActivity.java b/src/com/android/settings/homepage/SettingsHomepageActivity.java
index ec3589c..a2a6d3c 100644
--- a/src/com/android/settings/homepage/SettingsHomepageActivity.java
+++ b/src/com/android/settings/homepage/SettingsHomepageActivity.java
@@ -42,6 +42,7 @@
import com.android.settings.R;
import com.android.settings.Settings;
import com.android.settings.SettingsActivity;
+import com.android.settings.SettingsApplication;
import com.android.settings.Utils;
import com.android.settings.accounts.AvatarViewMixin;
import com.android.settings.activityembedding.ActivityEmbeddingRulesController;
@@ -95,6 +96,7 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ ((SettingsApplication) getApplication()).setHomeActivity(this);
setContentView(R.layout.settings_homepage_container);
final View appBar = findViewById(R.id.app_bar_container);
diff --git a/src/com/android/settings/homepage/TopLevelSettings.java b/src/com/android/settings/homepage/TopLevelSettings.java
index a819b87..38b2baa 100644
--- a/src/com/android/settings/homepage/TopLevelSettings.java
+++ b/src/com/android/settings/homepage/TopLevelSettings.java
@@ -196,8 +196,8 @@
}
Log.d(TAG, "onCreateAdapter, pref key: " + mHighlightedPreferenceKey);
- mTopLevelAdapter = new HighlightableTopLevelPreferenceAdapter(preferenceScreen,
- getListView(), mHighlightedPreferenceKey);
+ mTopLevelAdapter = new HighlightableTopLevelPreferenceAdapter(
+ getActivity(), preferenceScreen, getListView(), mHighlightedPreferenceKey);
return mTopLevelAdapter;
}
diff --git a/src/com/android/settings/network/apn/ApnEditor.java b/src/com/android/settings/network/apn/ApnEditor.java
index 0b75162..03db1b8 100644
--- a/src/com/android/settings/network/apn/ApnEditor.java
+++ b/src/com/android/settings/network/apn/ApnEditor.java
@@ -1256,7 +1256,8 @@
if (!readOnlyApnTypes.contains(apnType)
&& !apnType.equals(APN_TYPE_IA)
&& !apnType.equals(APN_TYPE_EMERGENCY)
- && !apnType.equals(APN_TYPE_MCX)) {
+ && !apnType.equals(APN_TYPE_MCX)
+ && !apnType.equals(APN_TYPE_IMS)) {
if (first) {
first = false;
} else {
diff --git a/src/com/android/settings/network/telephony/MobileNetworkUtils.java b/src/com/android/settings/network/telephony/MobileNetworkUtils.java
index 894eb68..658f650 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkUtils.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkUtils.java
@@ -509,12 +509,15 @@
if (carrierConfig.getBoolean(CarrierConfigManager.KEY_SUPPORT_TDSCDMA_BOOL)) {
return true;
}
+ final String[] numericArray = carrierConfig.getStringArray(
+ CarrierConfigManager.KEY_SUPPORT_TDSCDMA_ROAMING_NETWORKS_STRING_ARRAY);
+ if (numericArray == null) {
+ return false;
+ }
final ServiceState serviceState = telephonyManager.getServiceState();
final String operatorNumeric =
(serviceState != null) ? serviceState.getOperatorNumeric() : null;
- final String[] numericArray = carrierConfig.getStringArray(
- CarrierConfigManager.KEY_SUPPORT_TDSCDMA_ROAMING_NETWORKS_STRING_ARRAY);
- if (numericArray == null || operatorNumeric == null) {
+ if (operatorNumeric == null) {
return false;
}
for (String numeric : numericArray) {
diff --git a/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java b/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java
index eeaad21..19a91f6 100644
--- a/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java
+++ b/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java
@@ -16,6 +16,7 @@
package com.android.settings.widget;
+import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.text.TextUtils;
@@ -53,6 +54,7 @@
final int mIconColorHighlight;
private final Context mContext;
+ private final Activity mActivity;
private final RecyclerView mRecyclerView;
private final int mNormalBackgroundRes;
private String mHighlightKey;
@@ -61,12 +63,13 @@
private boolean mHighlightNeeded;
private boolean mScrolled;
- public HighlightableTopLevelPreferenceAdapter(PreferenceGroup preferenceGroup,
- RecyclerView recyclerView, String key) {
+ public HighlightableTopLevelPreferenceAdapter(Activity activity,
+ PreferenceGroup preferenceGroup, RecyclerView recyclerView, String key) {
super(preferenceGroup);
mRecyclerView = recyclerView;
mHighlightKey = key;
mContext = preferenceGroup.getContext();
+ mActivity = activity;
final TypedValue outValue = new TypedValue();
mContext.getTheme().resolveAttribute(android.R.attr.selectableItemBackground,
outValue, true /* resolveRefs */);
@@ -233,6 +236,6 @@
}
private boolean isHighlightNeeded() {
- return ActivityEmbeddingUtils.isTwoPaneResolution(mContext);
+ return ActivityEmbeddingUtils.isTwoPaneResolution(mActivity);
}
}
diff --git a/tests/robotests/src/com/android/settings/MainClearTest.java b/tests/robotests/src/com/android/settings/MainClearTest.java
index ec33fad..e2a7ca9 100644
--- a/tests/robotests/src/com/android/settings/MainClearTest.java
+++ b/tests/robotests/src/com/android/settings/MainClearTest.java
@@ -55,6 +55,7 @@
import org.junit.After;
import org.junit.Before;
+import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
@@ -208,6 +209,7 @@
}
@Test
+ @Ignore
public void testShowWipeEuicc_euiccEnabled_unprovisioned() {
prepareEuiccState(
true /* isEuiccEnabled */,
@@ -226,6 +228,7 @@
}
@Test
+ @Ignore
public void testShowWipeEuicc_developerMode_unprovisioned() {
prepareEuiccState(
true /* isEuiccEnabled */,
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/ExpandDividerPreferenceTest.java b/tests/robotests/src/com/android/settings/fuelgauge/ExpandDividerPreferenceTest.java
index 97af282..9e32da4 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/ExpandDividerPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/ExpandDividerPreferenceTest.java
@@ -18,11 +18,7 @@
import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Matchers.anyInt;
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;
@@ -36,8 +32,6 @@
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
@@ -52,7 +46,6 @@
@Before
public void setUp() {
- MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
mImageView = spy(new ImageView(mContext));
mTextView = spy(new TextView(mContext));
@@ -64,9 +57,9 @@
@Test
public void testConstructor_returnExpectedResult() {
assertThat(mExpandDividerPreference.getKey())
- .isEqualTo(ExpandDividerPreference.PREFERENCE_KEY);
+ .isEqualTo(ExpandDividerPreference.PREFERENCE_KEY);
assertThat(mExpandDividerPreference.getLayoutResource())
- .isEqualTo(R.layout.preference_expand_divider);
+ .isEqualTo(R.layout.preference_expand_divider);
}
@Test
@@ -75,9 +68,7 @@
mExpandDividerPreference.mTextView = mTextView;
mExpandDividerPreference.setTitle(titleContent);
- final ArgumentCaptor<Runnable> captor = ArgumentCaptor.forClass(Runnable.class);
- verify(mTextView).postDelayed(captor.capture(), eq(50L));
- captor.getValue().run();
+
verify(mTextView).setText(titleContent);
}
@@ -86,7 +77,7 @@
final boolean[] isExpandedArray = new boolean[] {false};
mExpandDividerPreference.mImageView = mImageView;
mExpandDividerPreference.setOnExpandListener(
- isExpanded -> isExpandedArray[0] = isExpanded);
+ isExpanded -> isExpandedArray[0] = isExpanded);
// Click the item first time from false -> true.
mExpandDividerPreference.onClick();
@@ -106,7 +97,7 @@
final boolean[] isExpandedArray = new boolean[] {false};
mExpandDividerPreference.mImageView = mImageView;
mExpandDividerPreference.setOnExpandListener(
- isExpanded -> isExpandedArray[0] = isExpanded);
+ isExpanded -> isExpandedArray[0] = isExpanded);
mExpandDividerPreference.setIsExpanded(true);