Merge "Sort imports"
diff --git a/src/com/android/settings/DateTimeSettings.java b/src/com/android/settings/DateTimeSettings.java
index bf4299b..149deb1 100644
--- a/src/com/android/settings/DateTimeSettings.java
+++ b/src/com/android/settings/DateTimeSettings.java
@@ -186,10 +186,6 @@
         public List<SearchIndexableResource> getXmlResourcesToIndex(
                 Context context, boolean enabled) {
             List<SearchIndexableResource> result = new ArrayList<>();
-            // Remove data/time settings from search in demo mode
-            if (UserManager.isDeviceInDemoMode(context)) {
-                return result;
-            }
 
             SearchIndexableResource sir = new SearchIndexableResource(context);
             sir.xmlResId = R.xml.date_time_prefs;
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index d268eb6..4ca1c2c 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -688,16 +688,6 @@
                         && !Utils.isMonkeyRunning(), isAdmin)
                 || somethingChanged;
 
-        somethingChanged = setTileEnabled(changedList, new ComponentName(packageName,
-                        Settings.NetworkDashboardActivity.class.getName()),
-                !UserManager.isDeviceInDemoMode(this), isAdmin)
-                || somethingChanged;
-
-        somethingChanged = setTileEnabled(changedList, new ComponentName(packageName,
-                        Settings.DateTimeSettingsActivity.class.getName()),
-                !UserManager.isDeviceInDemoMode(this), isAdmin)
-                || somethingChanged;
-
         final boolean showDev = DevelopmentSettingsEnabler.isDevelopmentSettingsEnabled(this)
                 && !Utils.isMonkeyRunning();
         somethingChanged = setTileEnabled(changedList, new ComponentName(packageName,
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingDetail.java b/src/com/android/settings/bluetooth/BluetoothPairingDetail.java
index 94b41d6..688ac00 100644
--- a/src/com/android/settings/bluetooth/BluetoothPairingDetail.java
+++ b/src/com/android/settings/bluetooth/BluetoothPairingDetail.java
@@ -152,7 +152,7 @@
 
                 addDeviceCategory(mAvailableDevicesCategory,
                         R.string.bluetooth_preference_found_media_devices,
-                        BluetoothDeviceFilter.UNBONDED_DEVICE_FILTER, mInitialScanStarted);
+                        BluetoothDeviceFilter.ALL_FILTER, mInitialScanStarted);
                 updateFooterPreference(mFooterPreference);
                 mAlwaysDiscoverable.start();
                 enableScanning();
@@ -191,6 +191,17 @@
     }
 
     @Override
+    public void onConnectionStateChanged(CachedBluetoothDevice cachedDevice, int state) {
+        if (mSelectedDevice != null) {
+            BluetoothDevice device = cachedDevice.getDevice();
+            if (device != null && mSelectedDevice.equals(device)
+                && state == BluetoothAdapter.STATE_CONNECTED) {
+                finish();
+            }
+        }
+    }
+
+    @Override
     public int getHelpResource() {
         return R.string.help_url_bluetooth;
     }
diff --git a/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java b/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java
index 820bf080..d434637 100644
--- a/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java
+++ b/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java
@@ -192,6 +192,8 @@
             preference = new BluetoothDevicePreference(getPrefContext(), cachedDevice,
                     mShowDevicesWithoutNames);
             preference.setKey(key);
+            //Set hideSecondTarget is true if it's bonded device.
+            preference.hideSecondTarget(true);
             mDeviceListGroup.addPreference(preference);
         } else {
             // Tell the preference it is being re-used in case there is new info in the
diff --git a/src/com/android/settings/dashboard/DashboardAdapter.java b/src/com/android/settings/dashboard/DashboardAdapter.java
index 5e2e57d..307f6ba 100644
--- a/src/com/android/settings/dashboard/DashboardAdapter.java
+++ b/src/com/android/settings/dashboard/DashboardAdapter.java
@@ -115,8 +115,6 @@
         }
 
         mDashboardData = new DashboardData.Builder()
-                .setConditions(
-                        conditionManager == null ? null : conditionManager.getDisplayableCards())
                 .setSuggestions(mSuggestionAdapter.getSuggestions())
                 .setCategory(category)
                 .setConditionExpanded(conditionExpanded)
diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java
index 9f0acaa..be59ca1 100644
--- a/src/com/android/settings/dashboard/DashboardFragment.java
+++ b/src/com/android/settings/dashboard/DashboardFragment.java
@@ -27,9 +27,11 @@
 
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
 import androidx.preference.PreferenceManager;
 import androidx.preference.PreferenceScreen;
 
+import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.core.BasePreferenceController;
 import com.android.settings.core.PreferenceControllerListHelper;
@@ -53,7 +55,7 @@
  */
 public abstract class DashboardFragment extends SettingsPreferenceFragment
         implements SettingsBaseActivity.CategoryListener, Indexable,
-        SummaryLoader.SummaryConsumer {
+        SummaryLoader.SummaryConsumer, PreferenceGroup.OnExpandButtonClickListener {
     private static final String TAG = "DashboardFragment";
 
     private final Map<Class, List<AbstractPreferenceController>> mPreferenceControllers =
@@ -207,6 +209,12 @@
     @Override
     protected abstract int getPreferenceScreenResId();
 
+    @Override
+    public void onExpandButtonClick() {
+        mMetricsFeatureProvider.actionWithSource(getContext(), getMetricsCategory(),
+                MetricsEvent.ACTION_SETTINGS_ADVANCED_BUTTON_EXPAND);
+    }
+
     protected boolean shouldForceRoundedIcon() {
         return false;
     }
@@ -268,6 +276,7 @@
         }
         addPreferencesFromResource(resId);
         final PreferenceScreen screen = getPreferenceScreen();
+        screen.setOnExpandButtonClickListener(this);
         mPreferenceControllers.values().stream().flatMap(Collection::stream).forEach(
                 controller -> controller.displayPreference(screen));
     }
diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
index 9cea62d..630e9cf 100644
--- a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
+++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
@@ -53,6 +53,7 @@
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
 import com.android.settingslib.core.lifecycle.events.OnPause;
 import com.android.settingslib.core.lifecycle.events.OnResume;
+import com.android.settingslib.Utils;
 
 import java.util.List;
 
@@ -253,8 +254,8 @@
     }
 
     private void updateServiceState(ServiceState serviceState) {
-        final int state = serviceState.getState();
-        if (state == ServiceState.STATE_OUT_OF_SERVICE || state == ServiceState.STATE_POWER_OFF) {
+        final int state = Utils.getCombinedServiceState(serviceState);
+        if (!Utils.isInService(serviceState)) {
             resetSignalStrength();
         }
 
@@ -297,10 +298,8 @@
             return;
         }
 
-        final int state = getCurrentServiceState().getState();
-
-        if ((ServiceState.STATE_OUT_OF_SERVICE == state) ||
-                (ServiceState.STATE_POWER_OFF == state)) {
+        ServiceState serviceState = getCurrentServiceState();
+        if (serviceState == null || !Utils.isInService(serviceState)) {
             return;
         }
 
diff --git a/src/com/android/settings/homepage/CardDatabaseHelper.java b/src/com/android/settings/homepage/CardDatabaseHelper.java
index b4dc221..382b71f 100644
--- a/src/com/android/settings/homepage/CardDatabaseHelper.java
+++ b/src/com/android/settings/homepage/CardDatabaseHelper.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 import android.database.sqlite.SQLiteDatabase;
 import android.database.sqlite.SQLiteOpenHelper;
+import android.util.Log;
 
 import androidx.annotation.VisibleForTesting;
 
@@ -26,8 +27,9 @@
  * Defines the schema for the Homepage Cards database.
  */
 public class CardDatabaseHelper extends SQLiteOpenHelper {
+    private static final String TAG = "CardDatabaseHelper";
     private static final String DATABASE_NAME = "homepage_cards.db";
-    private static final int DATABASE_VERSION = 1;
+    private static final int DATABASE_VERSION = 2;
 
     public static final String CARD_TABLE = "cards";
 
@@ -58,11 +60,6 @@
         String CATEGORY = "category";
 
         /**
-         * URI decides the card can be shown.
-         */
-        String AVAILABILITY_URI = "availability_uri";
-
-        /**
          * Keep the card last display's locale.
          */
         String LOCALIZED_TO_LOCALE = "localized_to_locale";
@@ -108,7 +105,7 @@
         String ICON_RES_ID = "icon_res_id";
 
         /**
-         * PendingIntent for for custom view card candidate. Do action when user press card.
+         * Key value mapping to Intent in Settings. Do action when user presses card.
          */
         String CARD_ACTION = "card_action";
 
@@ -116,6 +113,11 @@
          * Expire time of the card. The unit of the value is mini-second.
          */
         String EXPIRE_TIME_MS = "expire_time_ms";
+
+        /**
+         * Decide the card display full-length width or half-width in screen.
+         */
+        String SUPPORT_HALF_WIDTH = "support_half_width";
     }
 
     private static final String CREATE_CARD_TABLE =
@@ -135,8 +137,6 @@
                     " >= 0 AND " +
                     CardColumns.CATEGORY +
                     " <= 3), " +
-                    CardColumns.AVAILABILITY_URI +
-                    " TEXT, " +
                     CardColumns.LOCALIZED_TO_LOCALE +
                     " TEXT, " +
                     CardColumns.PACKAGE_NAME +
@@ -156,9 +156,11 @@
                     CardColumns.ICON_RES_ID +
                     " INTEGER DEFAULT 0, " +
                     CardColumns.CARD_ACTION +
-                    " TEXT, " +
+                    " INTEGER, " +
                     CardColumns.EXPIRE_TIME_MS +
-                    " INTEGER " +
+                    " INTEGER, " +
+                    CardColumns.SUPPORT_HALF_WIDTH +
+                    " INTEGER DEFAULT 0 " +
                     ");";
 
     public CardDatabaseHelper(Context context) {
@@ -173,6 +175,7 @@
     @Override
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
         if (oldVersion < newVersion) {
+            Log.d(TAG, "Reconstructing DB from " + oldVersion + " to " + newVersion);
             db.execSQL("DROP TABLE IF EXISTS " + CARD_TABLE);
             onCreate(db);
         }
diff --git a/src/com/android/settings/homepage/HomepageAdapter.java b/src/com/android/settings/homepage/HomepageAdapter.java
index b442883..9ff5260 100644
--- a/src/com/android/settings/homepage/HomepageAdapter.java
+++ b/src/com/android/settings/homepage/HomepageAdapter.java
@@ -56,7 +56,8 @@
 
     @Override
     public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int cardType) {
-        final HomepageCardRenderer renderer = mControllerRendererPool.getRenderer(mContext, cardType);
+        final HomepageCardRenderer renderer = mControllerRendererPool.getRenderer(mContext,
+                cardType);
         final int viewType = renderer.getViewType();
         final View view = LayoutInflater.from(parent.getContext()).inflate(viewType, parent, false);
 
@@ -66,7 +67,8 @@
     @Override
     public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
         final int cardType = mHomepageCards.get(position).getCardType();
-        final HomepageCardRenderer renderer = mControllerRendererPool.getRenderer(mContext, cardType);
+        final HomepageCardRenderer renderer = mControllerRendererPool.getRenderer(mContext,
+                cardType);
 
         renderer.bindView(holder, mHomepageCards.get(position));
     }
diff --git a/src/com/android/settings/homepage/HomepageCard.java b/src/com/android/settings/homepage/HomepageCard.java
index 1719f57..588c758 100644
--- a/src/com/android/settings/homepage/HomepageCard.java
+++ b/src/com/android/settings/homepage/HomepageCard.java
@@ -44,7 +44,7 @@
     private final String mName;
     @CardType
     private final int mCardType;
-    private final double mScore;
+    private final double mRankingScore;
     private final String mSliceUri;
     private final int mCategory;
     private final String mLocalizedToLocale;
@@ -56,10 +56,10 @@
     private final String mSummaryText;
     private final String mIconResName;
     private final int mIconResId;
-    private final String mCardAction;
+    private final int mCardAction;
     private final long mExpireTimeMS;
-    private final Drawable mDrawable;
-    private final boolean mSupportHalfWidth;
+    private final Drawable mIconDrawable;
+    private final boolean mIsHalfWidth;
 
     String getName() {
         return mName;
@@ -69,8 +69,8 @@
         return mCardType;
     }
 
-    double getScore() {
-        return mScore;
+    double getRankingScore() {
+        return mRankingScore;
     }
 
     String getTextSliceUri() {
@@ -121,7 +121,7 @@
         return mIconResId;
     }
 
-    String getCardAction() {
+    int getCardAction() {
         return mCardAction;
     }
 
@@ -129,18 +129,18 @@
         return mExpireTimeMS;
     }
 
-    Drawable getDrawable() {
-        return mDrawable;
+    Drawable getIconDrawable() {
+        return mIconDrawable;
     }
 
-    boolean getSupportHalfWidth() {
-        return mSupportHalfWidth;
+    boolean isHalfWidth() {
+        return mIsHalfWidth;
     }
 
     HomepageCard(Builder builder) {
         mName = builder.mName;
         mCardType = builder.mCardType;
-        mScore = builder.mScore;
+        mRankingScore = builder.mRankingScore;
         mSliceUri = builder.mSliceUri;
         mCategory = builder.mCategory;
         mLocalizedToLocale = builder.mLocalizedToLocale;
@@ -154,8 +154,8 @@
         mIconResId = builder.mIconResId;
         mCardAction = builder.mCardAction;
         mExpireTimeMS = builder.mExpireTimeMS;
-        mDrawable = builder.mDrawable;
-        mSupportHalfWidth = builder.mSupportHalfWidth;
+        mIconDrawable = builder.mIconDrawable;
+        mIsHalfWidth = builder.mIsHalfWidth;
     }
 
     @Override
@@ -182,7 +182,7 @@
     static class Builder {
         private String mName;
         private int mCardType;
-        private double mScore;
+        private double mRankingScore;
         private String mSliceUri;
         private int mCategory;
         private String mLocalizedToLocale;
@@ -194,10 +194,10 @@
         private String mSummaryText;
         private String mIconResName;
         private int mIconResId;
-        private String mCardAction;
+        private int mCardAction;
         private long mExpireTimeMS;
-        private Drawable mDrawable;
-        private boolean mSupportHalfWidth;
+        private Drawable mIconDrawable;
+        private boolean mIsHalfWidth;
 
         public Builder setName(String name) {
             mName = name;
@@ -209,8 +209,8 @@
             return this;
         }
 
-        public Builder setScore(double score) {
-            mScore = score;
+        public Builder setRankingScore(double rankingScore) {
+            mRankingScore = rankingScore;
             return this;
         }
 
@@ -269,7 +269,7 @@
             return this;
         }
 
-        public Builder setCardAction(String cardAction) {
+        public Builder setCardAction(int cardAction) {
             mCardAction = cardAction;
             return this;
         }
@@ -279,13 +279,13 @@
             return this;
         }
 
-        public Builder setDrawable(Drawable drawable) {
-            mDrawable = drawable;
+        public Builder setIconDrawable(Drawable iconDrawable) {
+            mIconDrawable = iconDrawable;
             return this;
         }
 
-        public Builder setSupportHalfWidth(boolean supportHalfWidth) {
-            mSupportHalfWidth = supportHalfWidth;
+        public Builder setIsHalfWidth(boolean isHalfWidth) {
+            mIsHalfWidth = isHalfWidth;
             return this;
         }
 
diff --git a/src/com/android/settings/homepage/HomepageCardController.java b/src/com/android/settings/homepage/HomepageCardController.java
index c35c3c8..10fc158 100644
--- a/src/com/android/settings/homepage/HomepageCardController.java
+++ b/src/com/android/settings/homepage/HomepageCardController.java
@@ -16,11 +16,10 @@
 
 package com.android.settings.homepage;
 
-import com.android.settingslib.core.lifecycle.Lifecycle;
-
 import java.util.List;
 
 //TODO(b/111821137): add test cases
+
 /**
  * Data controller for {@link HomepageCard}.
  */
@@ -39,7 +38,5 @@
 
     void onActionClick(HomepageCard card);
 
-    void setLifecycle(Lifecycle lifecycle);
-
     void setHomepageCardUpdateListener(HomepageCardUpdateListener listener);
 }
diff --git a/src/com/android/settings/homepage/HomepageCardLookupTable.java b/src/com/android/settings/homepage/HomepageCardLookupTable.java
index 9e941e9..ae3f08b 100644
--- a/src/com/android/settings/homepage/HomepageCardLookupTable.java
+++ b/src/com/android/settings/homepage/HomepageCardLookupTable.java
@@ -44,10 +44,8 @@
     }
 
     private static final Set<HomepageMapping> LOOKUP_TABLE = new TreeSet<HomepageMapping>() {
-        {
             //add(new HomepageMapping(CardType.CONDITIONAL, ConditionHomepageCardController.class,
                    // ConditionHomepageCardRenderer.class));
-        }
     };
 
     public static Class<? extends HomepageCardController> getCardControllerClass(
diff --git a/src/com/android/settings/homepage/HomepageManager.java b/src/com/android/settings/homepage/HomepageManager.java
index cbd5841..61d7ce7 100644
--- a/src/com/android/settings/homepage/HomepageManager.java
+++ b/src/com/android/settings/homepage/HomepageManager.java
@@ -20,6 +20,7 @@
 import android.widget.BaseAdapter;
 
 import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.core.lifecycle.LifecycleObserver;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -82,7 +83,11 @@
                 cardType);
         if (controller != null) {
             controller.setHomepageCardUpdateListener(this);
-            controller.setLifecycle(mLifecycle);
+            if (controller instanceof LifecycleObserver) {
+                if (mLifecycle != null) {
+                    mLifecycle.addObserver((LifecycleObserver) controller);
+                }
+            }
         }
     }
 
diff --git a/src/com/android/settings/search/DeviceIndexFeatureProvider.java b/src/com/android/settings/search/DeviceIndexFeatureProvider.java
index e6b3e93..a55fcff 100644
--- a/src/com/android/settings/search/DeviceIndexFeatureProvider.java
+++ b/src/com/android/settings/search/DeviceIndexFeatureProvider.java
@@ -50,7 +50,9 @@
     // When the device language changes, re-index so Slices trigger in device language.
     Locale LANGUAGE = Locale.getDefault();
 
-    boolean isIndexingEnabled();
+    default boolean isIndexingEnabled() {
+        return false;
+    }
 
     void index(Context context, CharSequence title, Uri sliceUri, Uri launchUri,
             List<String> keywords);
diff --git a/src/com/android/settings/search/DeviceIndexFeatureProviderImpl.java b/src/com/android/settings/search/DeviceIndexFeatureProviderImpl.java
index 087ecf8..8fd1606 100644
--- a/src/com/android/settings/search/DeviceIndexFeatureProviderImpl.java
+++ b/src/com/android/settings/search/DeviceIndexFeatureProviderImpl.java
@@ -22,11 +22,6 @@
 public class DeviceIndexFeatureProviderImpl implements DeviceIndexFeatureProvider {
 
     @Override
-    public boolean isIndexingEnabled() {
-        return false;
-    }
-
-    @Override
     public void index(Context context, CharSequence title, Uri sliceUri, Uri launchUri,
             List<String> keywords) {
         // Not enabled by default.
diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothPairingDetailTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothPairingDetailTest.java
index 7fd82b8..a967566 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothPairingDetailTest.java
+++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothPairingDetailTest.java
@@ -29,6 +29,7 @@
 import static org.mockito.Mockito.verify;
 
 import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
 import android.content.Context;
 import android.content.res.Resources;
 
@@ -38,6 +39,7 @@
 import com.android.settings.testutils.SettingsRobolectricTestRunner;
 import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
 import com.android.settingslib.bluetooth.BluetoothDeviceFilter;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 import com.android.settingslib.bluetooth.LocalBluetoothManager;
 import com.android.settingslib.widget.FooterPreference;
 
@@ -54,6 +56,7 @@
 @RunWith(SettingsRobolectricTestRunner.class)
 @Config(shadows = {ShadowBluetoothAdapter.class})
 public class BluetoothPairingDetailTest {
+    private static final String TEST_DEVICE_ADDRESS = "00:A1:A1:A1:A1:A1";
 
     @Mock
     private Resources mResource;
@@ -61,12 +64,15 @@
     private LocalBluetoothManager mLocalManager;
     @Mock
     private PreferenceGroup mPreferenceGroup;
+    @Mock
+    private CachedBluetoothDevice mCachedBluetoothDevice;
     private BluetoothPairingDetail mFragment;
     private Context mContext;
     private BluetoothProgressCategory mAvailableDevicesCategory;
     private FooterPreference mFooterPreference;
     private BluetoothAdapter mBluetoothAdapter;
     private ShadowBluetoothAdapter mShadowBluetoothAdapter;
+    private BluetoothDevice mBluetoothDevice;
 
     @Before
     public void setUp() {
@@ -81,6 +87,7 @@
         mFooterPreference = new FooterPreference(mContext);
         mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
         mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter());
+        mBluetoothDevice = mBluetoothAdapter.getRemoteDevice(TEST_DEVICE_ADDRESS);
 
         mFragment.mBluetoothAdapter = mBluetoothAdapter;
         mFragment.mLocalManager = mLocalManager;
@@ -89,7 +96,7 @@
     }
 
     @Test
-    public void testInitPreferencesFromPreferenceScreen_findPreferences() {
+    public void initPreferencesFromPreferenceScreen_findPreferences() {
         doReturn(mAvailableDevicesCategory).when(mFragment)
             .findPreference(BluetoothPairingDetail.KEY_AVAIL_DEVICES);
         doReturn(mFooterPreference).when(mFragment)
@@ -102,7 +109,7 @@
     }
 
     @Test
-    public void testStartScanning_startScanAndRemoveDevices() {
+    public void startScanning_startScanAndRemoveDevices() {
         mFragment.mAvailableDevicesCategory = mAvailableDevicesCategory;
         mFragment.mDeviceListGroup = mAvailableDevicesCategory;
 
@@ -113,7 +120,7 @@
     }
 
     @Test
-    public void testUpdateContent_stateOn_addDevices() {
+    public void updateContent_stateOn_addDevices() {
         mFragment.mAvailableDevicesCategory = mAvailableDevicesCategory;
         mFragment.mFooterPreference = mFooterPreference;
         doNothing().when(mFragment).addDeviceCategory(any(), anyInt(), any(), anyBoolean());
@@ -122,20 +129,20 @@
 
         verify(mFragment).addDeviceCategory(mAvailableDevicesCategory,
                 R.string.bluetooth_preference_found_media_devices,
-                BluetoothDeviceFilter.UNBONDED_DEVICE_FILTER, false);
+                BluetoothDeviceFilter.ALL_FILTER, false);
         assertThat(mBluetoothAdapter.getScanMode())
                 .isEqualTo(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE);
     }
 
     @Test
-    public void testUpdateContent_stateOff_finish() {
+    public void updateContent_stateOff_finish() {
         mFragment.updateContent(BluetoothAdapter.STATE_OFF);
 
         verify(mFragment).finish();
     }
 
     @Test
-    public void testUpdateBluetooth_bluetoothOff_turnOnBluetooth() {
+    public void updateBluetooth_bluetoothOff_turnOnBluetooth() {
         mShadowBluetoothAdapter.setEnabled(false);
 
         mFragment.updateBluetooth();
@@ -144,7 +151,7 @@
     }
 
     @Test
-    public void testUpdateBluetooth_bluetoothOn_updateState() {
+    public void updateBluetooth_bluetoothOn_updateState() {
         mShadowBluetoothAdapter.setEnabled(true);
         doNothing().when(mFragment).updateContent(anyInt());
 
@@ -154,7 +161,7 @@
     }
 
     @Test
-    public void testOnScanningStateChanged_restartScanAfterInitialScanning() {
+    public void onScanningStateChanged_restartScanAfterInitialScanning() {
         mFragment.mAvailableDevicesCategory = mAvailableDevicesCategory;
         mFragment.mFooterPreference = mFooterPreference;
         mFragment.mDeviceListGroup = mAvailableDevicesCategory;
@@ -209,4 +216,15 @@
 
         verify(mFragment).showBluetoothTurnedOnToast();
     }
-}
+
+    @Test
+    public void onConnectionStateChanged_connected_finish() {
+        mFragment.mSelectedDevice = mBluetoothDevice;
+        doReturn(mBluetoothDevice).when(mCachedBluetoothDevice).getDevice();
+
+        mFragment.onConnectionStateChanged(mCachedBluetoothDevice,
+                BluetoothAdapter.STATE_CONNECTED);
+
+        verify(mFragment).finish();
+    }
+}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
index 8182a1c..8e9480d 100644
--- a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
@@ -33,10 +33,12 @@
 import androidx.preference.PreferenceManager;
 import androidx.preference.PreferenceScreen;
 
+import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settings.testutils.SettingsRobolectricTestRunner;
 import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
 import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin;
 import com.android.settingslib.drawer.DashboardCategory;
 import com.android.settingslib.drawer.Tile;
@@ -177,6 +179,17 @@
         verify(mockController2).getPreferenceKey();
     }
 
+    @Test
+    public void onExpandButtonClick_shouldLogAdvancedButtonExpand() {
+        final MetricsFeatureProvider metricsFeatureProvider
+                = mFakeFeatureFactory.getMetricsFeatureProvider();
+        mTestFragment.onExpandButtonClick();
+
+        verify(metricsFeatureProvider).actionWithSource(
+                RuntimeEnvironment.application, MetricsEvent.DASHBOARD_CONTAINER,
+                MetricsEvent.ACTION_SETTINGS_ADVANCED_BUTTON_EXPAND);
+    }
+
     public static class TestPreferenceController extends AbstractPreferenceController
             implements PreferenceControllerMixin {
 
@@ -230,7 +243,7 @@
 
         @Override
         public int getMetricsCategory() {
-            return 0;
+            return MetricsEvent.DASHBOARD_CONTAINER;
         }
 
         @Override
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java
index 649b6e2..541e9d3 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java
@@ -179,7 +179,7 @@
     }
 
     @Test
-    public void initialize_updateDataStateWithPowerOff_shouldUpdateSettingAndResetSignalStrength() {
+    public void initialize_updateServiceStateWithPowerOff_shouldUpdateTextAndResetSignalStrength() {
         when(mServiceState.getState()).thenReturn(ServiceState.STATE_POWER_OFF);
         when(mPersistableBundle.getBoolean(
                 CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL)).thenReturn(true);
@@ -192,6 +192,33 @@
     }
 
     @Test
+    public void initialize_updateVoiceDataOutOfService_shouldUpdateSettingAndResetSignalStrength() {
+        when(mServiceState.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE);
+        when(mServiceState.getDataRegState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE);
+        when(mPersistableBundle.getBoolean(
+                CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL)).thenReturn(true);
+
+        mController.initialize();
+
+        final String offServiceText = mContext.getString(R.string.radioInfo_service_out);
+        verify(mDialog).setText(SERVICE_STATE_VALUE_ID, offServiceText);
+        verify(mDialog).setText(SIGNAL_STRENGTH_VALUE_ID, "0");
+    }
+
+    @Test
+    public void initialize_updateVoiceOutOfServiceDataInService_shouldUpdateTextToBeInService() {
+        when(mServiceState.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE);
+        when(mServiceState.getDataRegState()).thenReturn(ServiceState.STATE_IN_SERVICE);
+        when(mPersistableBundle.getBoolean(
+                CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL)).thenReturn(true);
+
+        mController.initialize();
+
+        final String inServiceText = mContext.getString(R.string.radioInfo_service_in);
+        verify(mDialog).setText(SERVICE_STATE_VALUE_ID, inServiceText);
+    }
+
+    @Test
     public void initialize_updateSignalStrengthWith50_shouldUpdateSignalStrengthTo50() {
         final int signalDbm = 50;
         final int signalAsu = 50;
@@ -208,6 +235,27 @@
     }
 
     @Test
+    public void initialize_updateVoiceOutOfServiceDataInService_shouldUpdateSignalStrengthTo50() {
+        when(mServiceState.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE);
+        when(mServiceState.getDataRegState()).thenReturn(ServiceState.STATE_IN_SERVICE);
+        when(mPersistableBundle.getBoolean(
+                CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL)).thenReturn(true);
+
+        final int signalDbm = 50;
+        final int signalAsu = 50;
+        doReturn(signalDbm).when(mController).getDbm(mSignalStrength);
+        doReturn(signalAsu).when(mController).getAsuLevel(mSignalStrength);
+        when(mPersistableBundle.getBoolean(
+                CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL)).thenReturn(true);
+
+        mController.initialize();
+
+        final String signalStrengthString =
+                mContext.getString(R.string.sim_signal_strength, signalDbm, signalAsu);
+        verify(mDialog).setText(SIGNAL_STRENGTH_VALUE_ID, signalStrengthString);
+    }
+
+    @Test
     public void initialize_updateVoiceNetworkTypeWithEdge_shouldUpdateSettingToEdge() {
         when(mTelephonyManager.getVoiceNetworkType(anyInt())).thenReturn(
                 TelephonyManager.NETWORK_TYPE_EDGE);
diff --git a/tests/robotests/src/com/android/settings/homepage/CardDatabaseHelperTest.java b/tests/robotests/src/com/android/settings/homepage/CardDatabaseHelperTest.java
index b6ed358..6a17a25 100644
--- a/tests/robotests/src/com/android/settings/homepage/CardDatabaseHelperTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/CardDatabaseHelperTest.java
@@ -63,7 +63,6 @@
                 CardDatabaseHelper.CardColumns.SCORE,
                 CardDatabaseHelper.CardColumns.SLICE_URI,
                 CardDatabaseHelper.CardColumns.CATEGORY,
-                CardDatabaseHelper.CardColumns.AVAILABILITY_URI,
                 CardDatabaseHelper.CardColumns.LOCALIZED_TO_LOCALE,
                 CardDatabaseHelper.CardColumns.PACKAGE_NAME,
                 CardDatabaseHelper.CardColumns.APP_VERSION,
@@ -75,6 +74,7 @@
                 CardDatabaseHelper.CardColumns.ICON_RES_ID,
                 CardDatabaseHelper.CardColumns.CARD_ACTION,
                 CardDatabaseHelper.CardColumns.EXPIRE_TIME_MS,
+                CardDatabaseHelper.CardColumns.SUPPORT_HALF_WIDTH,
         };
 
         assertThat(columnNames).isEqualTo(expectedNames);