Merge "Remove check to limit suggestions to 2"
diff --git a/res/drawable-hdpi/ic_grayedout_printer.png b/res/drawable-hdpi/ic_grayedout_printer.png
deleted file mode 100644
index 5e54970..0000000
--- a/res/drawable-hdpi/ic_grayedout_printer.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_grayedout_printer.png b/res/drawable-mdpi/ic_grayedout_printer.png
deleted file mode 100644
index 5e54970..0000000
--- a/res/drawable-mdpi/ic_grayedout_printer.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_grayedout_printer.png b/res/drawable-xhdpi/ic_grayedout_printer.png
deleted file mode 100644
index 5e54970..0000000
--- a/res/drawable-xhdpi/ic_grayedout_printer.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/ic_add_24dp.xml b/res/drawable/ic_add_24dp.xml
index f8c93ee..7196981 100644
--- a/res/drawable/ic_add_24dp.xml
+++ b/res/drawable/ic_add_24dp.xml
@@ -21,6 +21,6 @@
         android:tint="?android:attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M21,16v-2l-8,-5V3.5C13,2.67 12.33,2 11.5,2S10,2.67 10,3.5V9l-8,5v2l8,-2.5V19l-2,1.5V22l3.5,-1l3.5,1v-1.5L13,19v-5.5L21,16z"/>
+        android:pathData="M20,13h-7v7h-2v-7H4v-2h7V4h2v7h7V13z"/>
 </vector>
 
diff --git a/res/layout/empty_print_state.xml b/res/layout/empty_print_state.xml
index 361bf3c..43312c8 100644
--- a/res/layout/empty_print_state.xml
+++ b/res/layout/empty_print_state.xml
@@ -14,48 +14,40 @@
      limitations under the License.
 -->
 
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/empty_print_state"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent"
-    android:visibility="gone">
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:layout_marginStart="16dp"
+    android:layout_marginEnd="16dp"
+    android:gravity="center"
+    android:orientation="vertical">
 
-    <LinearLayout
+    <ImageView
+        android:layout_width="120dp"
+        android:layout_height="110dp"
+        android:layout_marginBottom="12dp"
+        android:src="@*android:drawable/ic_print"
+        android:scaleType="fitEnd"
+        android:alpha="0.1"
+        android:tint="?android:colorForeground"
+        android:importantForAccessibility="no" />
+
+    <TextView
+        android:id="@+id/message"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_gravity="center"
+        android:layout_marginBottom="16dp"
         android:gravity="center"
-        android:orientation="vertical">
+        android:textAppearance="?android:attr/textAppearanceLarge"
+        android:textColor="?android:attr/textColorSecondary" />
 
-        <ImageView
-            android:id="@+id/icon"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginBottom="12dip"
-            android:src="@drawable/ic_grayedout_printer"
-            android:contentDescription="@null">
-        </ImageView>
+    <Button
+        android:id="@+id/add_new_service"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        style="?android:attr/borderlessButtonStyle"
+        android:textColor="?android:attr/textColorSecondary"
+        android:text="@string/print_menu_item_add_service"
+        android:visibility="gone" />
 
-        <TextView
-            android:id="@+id/message"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textAppearance="?android:attr/textAppearanceLarge"
-            android:textColor="?android:attr/textColorSecondary">
-        </TextView>
-
-        <Button android:id="@+id/add_new_service"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center"
-            android:gravity="center"
-            android:visibility="gone"
-            style="?android:attr/buttonBarButtonStyle"
-            android:textAppearance="?android:attr/textAppearanceSmall"
-            android:text="@string/print_menu_item_add_service"
-            android:textAllCaps="true"
-            />
-
-    </LinearLayout>
-
-</FrameLayout>
+</LinearLayout>
diff --git a/res/layout/empty_printers_list_service_enabled.xml b/res/layout/empty_printers_list_service_enabled.xml
index 8cc8db4..481f9c0 100644
--- a/res/layout/empty_printers_list_service_enabled.xml
+++ b/res/layout/empty_printers_list_service_enabled.xml
@@ -14,45 +14,38 @@
      limitations under the License.
 -->
 
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/empty_printers_list_service_enabled"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent"
-    android:visibility="gone">
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:layout_marginStart="16dp"
+    android:layout_marginEnd="16dp"
+    android:gravity="center"
+    android:orientation="vertical">
 
-    <LinearLayout
+    <ImageView
+        android:layout_width="120dp"
+        android:layout_height="110dp"
+        android:layout_marginBottom="12dp"
+        android:src="@*android:drawable/ic_print"
+        android:scaleType="fitEnd"
+        android:alpha="0.1"
+        android:tint="?android:colorForeground"
+        android:importantForAccessibility="no"/>
+
+    <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_gravity="center"
+        android:layout_marginBottom="16dp"
         android:gravity="center"
-        android:orientation="vertical">
+        android:textAppearance="?android:attr/textAppearanceLarge"
+        android:textColor="?android:attr/textColorSecondary"
+        android:text="@string/print_searching_for_printers"/>
 
-        <ImageView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginBottom="12dip"
-            android:src="@drawable/ic_grayedout_printer"
-            android:importantForAccessibility="no">
-        </ImageView>
+    <ProgressBar
+        android:layout_width="300dp"
+        android:layout_height="wrap_content"
+        android:indeterminate="true"
+        android:importantForAccessibility="no"
+        style="?android:attr/progressBarStyleHorizontal"/>
 
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginLeft="32dip"
-            android:layout_marginRight="32dip"
-            android:gravity="center"
-            android:textAppearance="?android:attr/textAppearanceLarge"
-            android:textColor="?android:attr/textColorSecondary"
-            android:text="@string/print_searching_for_printers">
-        </TextView>
-
-        <ProgressBar
-            android:layout_width="fill_parent"
-            android:layout_height="wrap_content"
-            android:indeterminate="true"
-            style="?android:attr/progressBarStyleHorizontal">
-        </ProgressBar>
-
-    </LinearLayout>
-
-</FrameLayout>
+</LinearLayout>
diff --git a/res/layout/preference_app.xml b/res/layout/preference_app.xml
deleted file mode 100644
index f0adebf..0000000
--- a/res/layout/preference_app.xml
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 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.
--->
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:settings="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:background="?android:attr/selectableItemBackground"
-    android:gravity="center_vertical"
-    android:minHeight="?android:attr/listPreferredItemHeightSmall"
-    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
-    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
-
-    <LinearLayout
-        android:id="@+id/icon_frame"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:gravity="start|center_vertical"
-        android:minWidth="56dp"
-        android:orientation="horizontal"
-        android:paddingEnd="8dp"
-        android:paddingTop="4dp"
-        android:paddingBottom="4dp">
-        <ImageView
-            android:id="@android:id/icon"
-            android:layout_width="@dimen/secondary_app_icon_size"
-            android:layout_height="@dimen/secondary_app_icon_size"/>
-    </LinearLayout>
-
-    <LinearLayout
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_weight="1"
-        android:orientation="vertical"
-        android:paddingTop="16dp"
-        android:paddingBottom="16dp">
-
-        <TextView android:id="@android:id/title"
-                  android:layout_width="wrap_content"
-                  android:layout_height="wrap_content"
-                  android:singleLine="true"
-                  android:textAppearance="@style/TextAppearance.TileTitle"
-                  android:ellipsize="marquee"
-                  android:fadingEdge="horizontal" />
-
-        <LinearLayout
-            android:id="@+id/summary_container"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:visibility="gone">
-            <TextView android:id="@android:id/summary"
-                      android:layout_width="0dp"
-                      android:layout_height="wrap_content"
-                      android:layout_weight="1"
-                      android:textAppearance="@style/TextAppearance.Small"
-                      android:textAlignment="viewStart"
-                      android:textColor="?android:attr/textColorSecondary" />
-
-            <TextView android:id="@+id/appendix"
-                      android:layout_width="0dp"
-                      android:layout_height="wrap_content"
-                      android:layout_weight="1"
-                      android:textAppearance="@style/TextAppearance.Small"
-                      android:textAlignment="viewEnd"
-                      android:textColor="?android:attr/textColorSecondary"
-                      android:maxLines="1"
-                      android:ellipsize="end" />
-        </LinearLayout>
-        <ProgressBar
-            android:id="@android:id/progress"
-            style="?android:attr/progressBarStyleHorizontal"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="4dp"
-            android:max="100"
-            android:visibility="gone" />
-    </LinearLayout>
-
-    <LinearLayout
-        android:id="@android:id/widget_frame"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:gravity="center"
-        android:minWidth="64dp"
-        android:orientation="vertical" />
-
-</LinearLayout>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index e28bc98..4d16851 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -22,7 +22,6 @@
     <dimen name="action_bar_switch_padding">16dip</dimen>
 
     <dimen name="app_icon_size">40dip</dimen>
-    <dimen name="secondary_app_icon_size">32dp</dimen>
     <dimen name="min_tap_target_size">48dp</dimen>
     <dimen name="screen_margin_sides">64dip</dimen>
     <dimen name="screen_margin_top">72dip</dimen>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 04852e0..d612e81 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -8301,7 +8301,7 @@
     <!-- Label for showing apps with blocked notifications in list [CHAR LIMIT=30] -->
     <string name="filter_notif_all_apps">Apps: All</string>
     <!-- Label for showing apps with blocked notifications in list [CHAR LIMIT=30] -->
-    <string name="filter_notif_blocked_apps">Apps: Turned off</string>
+    <string name="filter_notif_blocked_apps">Turned off</string>
     <!-- Label for showing categories with urgent notifications in list [CHAR LIMIT=30] -->
     <string name="filter_notif_urgent_channels">Categories: Urgent importance</string>
     <!-- Label for showing categories with low importance notifications in list [CHAR LIMIT=30] -->
diff --git a/res/xml/app_default_settings.xml b/res/xml/app_default_settings.xml
index 5467667..a993aa1 100644
--- a/res/xml/app_default_settings.xml
+++ b/res/xml/app_default_settings.xml
@@ -21,59 +21,59 @@
     android:key="app_default_settings_screen"
     android:title="@string/app_default_dashboard_title">
 
-    <com.android.settings.widget.AppPreference
+    <com.android.settingslib.widget.apppreference.AppPreference
         android:key="assist_and_voice_input"
         android:title="@string/assist_and_voice_input_title"
         android:fragment="com.android.settings.applications.assist.ManageAssist"
         settings:searchable="false"/>
 
-    <com.android.settings.widget.AppPreference
+    <com.android.settingslib.widget.apppreference.AppPreference
         android:key="default_browser"
         android:title="@string/default_browser_title"
         android:fragment="com.android.settings.applications.defaultapps.DefaultBrowserPicker"
         settings:keywords="@string/keywords_default_browser">
         <extra android:name="for_work" android:value="false" />
-    </com.android.settings.widget.AppPreference>
+    </com.android.settingslib.widget.apppreference.AppPreference>
 
-    <com.android.settings.widget.GearPreference
+    <com.android.settingslib.widget.apppreference.AppPreference
         android:key="default_home"
         android:title="@string/home_app"
         android:fragment="com.android.settings.applications.defaultapps.DefaultHomePicker"
         settings:keywords="@string/keywords_home" />
 
-    <com.android.settings.widget.AppPreference
+    <com.android.settingslib.widget.apppreference.AppPreference
         android:key="default_phone_app"
         android:title="@string/default_phone_title"
         android:fragment="com.android.settings.applications.defaultapps.DefaultPhonePicker"
         settings:keywords="@string/keywords_default_phone_app" />
 
-    <com.android.settings.widget.AppPreference
+    <com.android.settingslib.widget.apppreference.AppPreference
         android:key="default_sms_app"
         android:title="@string/sms_application_title"
         android:fragment="com.android.settings.applications.defaultapps.DefaultSmsPicker"
         settings:keywords="@string/keywords_more_default_sms_app" />
 
-    <com.android.settings.widget.AppPreference
+    <com.android.settingslib.widget.apppreference.AppPreference
         android:key="default_payment_app"
         android:title="@string/nfc_payment_settings_title"
         android:summary="@string/summary_placeholder"
         android:fragment="com.android.settings.nfc.PaymentSettings"
         settings:keywords="@string/keywords_default_payment_app"/>
 
-    <com.android.settings.widget.AppPreference
+    <com.android.settingslib.widget.apppreference.AppPreference
         android:key="default_emergency_app"
         android:title="@string/default_emergency_app"
         settings:keywords="@string/keywords_emergency_app" />
 
     <!--
-    <com.android.settings.widget.AppPreference
+    <com.android.settingslib.widget.apppreference.AppPreference
         android:key="default_notification_asst_app"
         android:title="@string/default_notification_assistant"
         android:fragment="com.android.settings.applications.defaultapps.DefaultNotificationAssistantPicker"
         />
      -->
 
-    <com.android.settings.widget.AppPreference
+    <com.android.settingslib.widget.apppreference.AppPreference
         android:key="domain_urls"
         android:title="@string/domain_urls_title"
         android:fragment="com.android.settings.applications.managedomainurls.ManageDomainUrls"
@@ -83,21 +83,21 @@
         android:key="work_app_defaults"
         android:title="@string/default_for_work">
 
-        <com.android.settings.widget.AppPreference
+        <com.android.settingslib.widget.apppreference.AppPreference
             android:key="work_default_browser"
             android:title="@string/default_browser_title"
             android:fragment="com.android.settings.applications.defaultapps.DefaultBrowserPicker"
             settings:searchable="false">
             <extra android:name="for_work" android:value="true" />
-        </com.android.settings.widget.AppPreference>
+        </com.android.settingslib.widget.apppreference.AppPreference>
 
-        <com.android.settings.widget.AppPreference
+        <com.android.settingslib.widget.apppreference.AppPreference
             android:key="work_default_phone_app"
             android:title="@string/default_phone_title"
             android:fragment="com.android.settings.applications.defaultapps.DefaultPhonePicker"
             settings:searchable="false">
             <extra android:name="for_work" android:value="true" />
-        </com.android.settings.widget.AppPreference>
+        </com.android.settingslib.widget.apppreference.AppPreference>
 
     </com.android.settings.widget.WorkOnlyCategory>
 
diff --git a/src/com/android/settings/accounts/AccountTypePreference.java b/src/com/android/settings/accounts/AccountTypePreference.java
index 54866ee..c82a599 100644
--- a/src/com/android/settings/accounts/AccountTypePreference.java
+++ b/src/com/android/settings/accounts/AccountTypePreference.java
@@ -30,7 +30,7 @@
 
 import com.android.settings.Utils;
 import com.android.settings.core.SubSettingLauncher;
-import com.android.settings.widget.AppPreference;
+import com.android.settingslib.widget.apppreference.AppPreference;
 
 public class AccountTypePreference extends AppPreference implements OnPreferenceClickListener {
     /**
diff --git a/src/com/android/settings/applications/AppStateNotificationBridge.java b/src/com/android/settings/applications/AppStateNotificationBridge.java
index d06aeb1..fc9e14f 100644
--- a/src/com/android/settings/applications/AppStateNotificationBridge.java
+++ b/src/com/android/settings/applications/AppStateNotificationBridge.java
@@ -100,18 +100,20 @@
     }
 
     public static CharSequence getSummary(Context context, NotificationsSentState state,
-            boolean sortByRecency) {
-        if (sortByRecency) {
+            int sortOrder) {
+        if (sortOrder == R.id.sort_order_recent_notification) {
             if (state.lastSent == 0) {
                 return context.getString(R.string.notifications_sent_never);
             }
             return StringUtil.formatRelativeTime(
                     context, System.currentTimeMillis() - state.lastSent, true);
-        } else {
+        } else if (sortOrder == R.id.sort_order_frequent_notification) {
             if (state.avgSentWeekly > 0) {
                 return context.getString(R.string.notifications_sent_weekly, state.avgSentWeekly);
             }
             return context.getString(R.string.notifications_sent_daily, state.avgSentDaily);
+        } else {
+            return "";
         }
     }
 
@@ -267,6 +269,21 @@
         }
     };
 
+    public static final AppFilter FILTER_APP_NOTIFICATION_BLOCKED = new AppFilter() {
+        @Override
+        public void init() {
+        }
+
+        @Override
+        public boolean filterApp(AppEntry info) {
+            NotificationsSentState state = getNotificationsSentState(info);
+            if (state != null) {
+                return state.blocked;
+            }
+            return false;
+        }
+    };
+
     public static final Comparator<AppEntry> RECENT_NOTIFICATION_COMPARATOR
             = new Comparator<AppEntry>() {
         @Override
diff --git a/src/com/android/settings/applications/ProcessStatsPreference.java b/src/com/android/settings/applications/ProcessStatsPreference.java
index 6452198..4249381 100644
--- a/src/com/android/settings/applications/ProcessStatsPreference.java
+++ b/src/com/android/settings/applications/ProcessStatsPreference.java
@@ -22,7 +22,7 @@
 import android.text.format.Formatter;
 import android.util.Log;
 
-import com.android.settings.widget.AppPreference;
+import com.android.settingslib.widget.apppreference.AppPreference;
 
 public class ProcessStatsPreference extends AppPreference {
     static final String TAG = "ProcessStatsPreference";
diff --git a/src/com/android/settings/applications/RecentAppsPreferenceController.java b/src/com/android/settings/applications/RecentAppsPreferenceController.java
index c866474..b6e8f4c 100644
--- a/src/com/android/settings/applications/RecentAppsPreferenceController.java
+++ b/src/com/android/settings/applications/RecentAppsPreferenceController.java
@@ -42,11 +42,11 @@
 import com.android.settings.R;
 import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
 import com.android.settings.core.PreferenceControllerMixin;
-import com.android.settings.widget.AppPreference;
 import com.android.settingslib.applications.AppUtils;
 import com.android.settingslib.applications.ApplicationsState;
 import com.android.settingslib.core.AbstractPreferenceController;
 import com.android.settingslib.utils.StringUtil;
+import com.android.settingslib.widget.apppreference.AppPreference;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/src/com/android/settings/applications/manageapplications/AppFilterRegistry.java b/src/com/android/settings/applications/manageapplications/AppFilterRegistry.java
index 2e4a640..7d1e159 100644
--- a/src/com/android/settings/applications/manageapplications/AppFilterRegistry.java
+++ b/src/com/android/settings/applications/manageapplications/AppFilterRegistry.java
@@ -49,6 +49,7 @@
             FILTER_APPS_WITH_OVERLAY,
             FILTER_APPS_WRITE_SETTINGS,
             FILTER_APPS_INSTALL_SOURCES,
+            FILTER_APPS_BLOCKED,
     })
     @interface FilterType {
     }
@@ -71,14 +72,15 @@
     public static final int FILTER_APPS_INSTALL_SOURCES = 13;
     public static final int FILTER_APP_HAS_DIRECTORY_ACCESS = 14;
     public static final int FILTER_APP_CAN_CHANGE_WIFI_STATE = 15;
-    // Next id: 16
+    public static final int FILTER_APPS_BLOCKED = 16;
+    // Next id: 17
 
     private static AppFilterRegistry sRegistry;
 
     private final AppFilterItem[] mFilters;
 
     private AppFilterRegistry() {
-        mFilters = new AppFilterItem[16];
+        mFilters = new AppFilterItem[17];
 
         // High power whitelist, on
         mFilters[FILTER_APPS_POWER_WHITELIST] = new AppFilterItem(
@@ -178,6 +180,12 @@
                 AppStateChangeWifiStateBridge.FILTER_CHANGE_WIFI_STATE,
                 FILTER_APP_CAN_CHANGE_WIFI_STATE,
                 R.string.filter_write_settings_apps);
+
+        // Blocked Notifications
+        mFilters[FILTER_APPS_BLOCKED] = new AppFilterItem(
+                AppStateNotificationBridge.FILTER_APP_NOTIFICATION_BLOCKED,
+                FILTER_APPS_BLOCKED,
+                R.string.filter_notif_blocked_apps);
     }
 
     public static AppFilterRegistry getInstance() {
diff --git a/src/com/android/settings/applications/manageapplications/ManageApplications.java b/src/com/android/settings/applications/manageapplications/ManageApplications.java
index 35c6d1c..1f577b4 100644
--- a/src/com/android/settings/applications/manageapplications/ManageApplications.java
+++ b/src/com/android/settings/applications/manageapplications/ManageApplications.java
@@ -21,6 +21,8 @@
 import static com.android.settings.applications.manageapplications.AppFilterRegistry
         .FILTER_APPS_ALL;
 import static com.android.settings.applications.manageapplications.AppFilterRegistry
+        .FILTER_APPS_BLOCKED;
+import static com.android.settings.applications.manageapplications.AppFilterRegistry
         .FILTER_APPS_DISABLED;
 import static com.android.settings.applications.manageapplications.AppFilterRegistry
         .FILTER_APPS_ENABLED;
@@ -409,6 +411,7 @@
         if (mListType == LIST_TYPE_NOTIFICATION) {
             mFilterAdapter.enableFilter(FILTER_APPS_RECENT);
             mFilterAdapter.enableFilter(FILTER_APPS_FREQUENT);
+            mFilterAdapter.enableFilter(FILTER_APPS_BLOCKED);
             mFilterAdapter.disableFilter(FILTER_APPS_ALL);
         }
         if (mListType == LIST_TYPE_HIGH_POWER) {
@@ -955,6 +958,8 @@
                 rebuild(R.id.sort_order_frequent_notification);
             } else if (FILTER_APPS_RECENT == appFilter.getFilterType()) {
                 rebuild(R.id.sort_order_recent_notification);
+            } else if (FILTER_APPS_BLOCKED == appFilter.getFilterType()) {
+                rebuild(R.id.sort_order_alpha);
             } else {
                 rebuild();
             }
@@ -1111,16 +1116,7 @@
 
         @VisibleForTesting
         static boolean shouldUseStableItemHeight(int listType) {
-            switch (listType) {
-                case LIST_TYPE_NOTIFICATION:
-                    // Most entries in notification type has no summary. Don't use stable height
-                    // so height is short for most entries.
-                    return false;
-                default:
-                    // Other types have non-empty summary, so keep the height as we expect summary
-                    // to fill in.
-                    return true;
-            }
+            return true;
         }
 
         private static boolean packageNameEquals(PackageItemInfo info1, PackageItemInfo info2) {
@@ -1338,8 +1334,7 @@
                     if (entry.extraInfo != null
                             && entry.extraInfo instanceof NotificationsSentState) {
                         holder.setSummary(AppStateNotificationBridge.getSummary(mContext,
-                                (NotificationsSentState) entry.extraInfo,
-                                (mLastSortMode == R.id.sort_order_recent_notification)));
+                                (NotificationsSentState) entry.extraInfo, mLastSortMode));
                     } else {
                         holder.setSummary(null);
                     }
@@ -1388,8 +1383,7 @@
                     if (entry.extraInfo != null
                             && entry.extraInfo instanceof NotificationsSentState) {
                         holder.setSummary(AppStateNotificationBridge.getSummary(mContext,
-                                (NotificationsSentState) entry.extraInfo,
-                                (mLastSortMode == R.id.sort_order_recent_notification)));
+                                (NotificationsSentState) entry.extraInfo, mLastSortMode));
                     } else {
                         holder.setSummary(null);
                     }
diff --git a/src/com/android/settings/applications/managedomainurls/DomainAppPreference.java b/src/com/android/settings/applications/managedomainurls/DomainAppPreference.java
index ef9d5d4..94d2818 100644
--- a/src/com/android/settings/applications/managedomainurls/DomainAppPreference.java
+++ b/src/com/android/settings/applications/managedomainurls/DomainAppPreference.java
@@ -27,8 +27,8 @@
 
 import com.android.settings.R;
 import com.android.settings.Utils;
-import com.android.settings.widget.AppPreference;
 import com.android.settingslib.applications.ApplicationsState.AppEntry;
+import com.android.settingslib.widget.apppreference.AppPreference;
 
 public class DomainAppPreference extends AppPreference {
 
diff --git a/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureSettings.java b/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureSettings.java
index d6734b7..d2cb2a7 100644
--- a/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureSettings.java
+++ b/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureSettings.java
@@ -42,9 +42,9 @@
 import com.android.settings.applications.AppInfoBase;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Indexable;
-import com.android.settings.widget.AppPreference;
 import com.android.settings.widget.EmptyTextSettings;
 import com.android.settingslib.search.SearchIndexable;
+import com.android.settingslib.widget.apppreference.AppPreference;
 
 import java.text.Collator;
 import java.util.ArrayList;
diff --git a/src/com/android/settings/datausage/AppDataUsagePreference.java b/src/com/android/settings/datausage/AppDataUsagePreference.java
index 0eab5ab..f5a204a 100644
--- a/src/com/android/settings/datausage/AppDataUsagePreference.java
+++ b/src/com/android/settings/datausage/AppDataUsagePreference.java
@@ -20,11 +20,11 @@
 
 import androidx.preference.PreferenceViewHolder;
 
-import com.android.settings.widget.AppPreference;
 import com.android.settingslib.AppItem;
 import com.android.settingslib.net.UidDetail;
 import com.android.settingslib.net.UidDetailProvider;
 import com.android.settingslib.utils.ThreadUtils;
+import com.android.settingslib.widget.apppreference.AppPreference;
 
 public class AppDataUsagePreference extends AppPreference {
 
diff --git a/src/com/android/settings/enterprise/ApplicationListPreferenceController.java b/src/com/android/settings/enterprise/ApplicationListPreferenceController.java
index 3170dac..2719818 100644
--- a/src/com/android/settings/enterprise/ApplicationListPreferenceController.java
+++ b/src/com/android/settings/enterprise/ApplicationListPreferenceController.java
@@ -27,8 +27,8 @@
 import com.android.settings.applications.ApplicationFeatureProvider;
 import com.android.settings.applications.UserAppInfo;
 import com.android.settings.core.PreferenceControllerMixin;
-import com.android.settings.widget.AppPreference;
 import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.widget.apppreference.AppPreference;
 
 import java.util.List;
 
@@ -80,6 +80,7 @@
 
     /**
      * Simple interface for building application list within {
+     *
      * @link ApplicationListPreferenceController}
      */
     public interface ApplicationListBuilder {
diff --git a/src/com/android/settings/fuelgauge/PowerGaugePreference.java b/src/com/android/settings/fuelgauge/PowerGaugePreference.java
index 7c21774..8cac2b2 100644
--- a/src/com/android/settings/fuelgauge/PowerGaugePreference.java
+++ b/src/com/android/settings/fuelgauge/PowerGaugePreference.java
@@ -17,7 +17,6 @@
 package com.android.settings.fuelgauge;
 
 import android.content.Context;
-import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
 import android.util.AttributeSet;
 import android.widget.TextView;
@@ -26,7 +25,7 @@
 
 import com.android.settings.R;
 import com.android.settings.Utils;
-import com.android.settings.widget.AppPreference;
+import com.android.settingslib.widget.apppreference.AppPreference;
 
 /**
  * Custom preference for displaying battery usage info as a bar and an icon on
diff --git a/src/com/android/settings/location/AppSettingsInjector.java b/src/com/android/settings/location/AppSettingsInjector.java
index b8111f2..8120821 100644
--- a/src/com/android/settings/location/AppSettingsInjector.java
+++ b/src/com/android/settings/location/AppSettingsInjector.java
@@ -21,10 +21,10 @@
 
 import androidx.preference.Preference;
 
-import com.android.settings.widget.AppPreference;
 import com.android.settings.widget.RestrictedAppPreference;
 import com.android.settingslib.location.InjectedSetting;
 import com.android.settingslib.location.SettingsInjector;
+import com.android.settingslib.widget.apppreference.AppPreference;
 
 /**
  * Adds the preferences specified by the {@link InjectedSetting} objects to a preference group.
diff --git a/src/com/android/settings/location/RecentLocationRequestPreferenceController.java b/src/com/android/settings/location/RecentLocationRequestPreferenceController.java
index 7660312..60374eb 100644
--- a/src/com/android/settings/location/RecentLocationRequestPreferenceController.java
+++ b/src/com/android/settings/location/RecentLocationRequestPreferenceController.java
@@ -26,9 +26,9 @@
 import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
 import com.android.settings.core.SubSettingLauncher;
 import com.android.settings.dashboard.DashboardFragment;
-import com.android.settings.widget.AppPreference;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 import com.android.settingslib.location.RecentLocationApps;
+import com.android.settingslib.widget.apppreference.AppPreference;
 
 import java.util.List;
 
@@ -43,7 +43,7 @@
     private PreferenceCategory mCategoryRecentLocationRequests;
     private Preference mSeeAllButton;
 
-    /** Used in this class and {@link RecentLocationRequestSeeAllPreferenceController}*/
+    /** Used in this class and {@link RecentLocationRequestSeeAllPreferenceController} */
     static class PackageEntryClickedListener implements Preference.OnPreferenceClickListener {
         private final DashboardFragment mFragment;
         private final String mPackage;
@@ -111,7 +111,7 @@
 
         if (recentLocationRequests.size() > 3) {
             // Display the top 3 preferences to container in original order.
-            for (int i = 0; i < 3; i ++) {
+            for (int i = 0; i < 3; i++) {
                 mCategoryRecentLocationRequests.addPreference(
                         createAppPreference(prefContext, recentLocationRequests.get(i)));
             }
diff --git a/src/com/android/settings/location/RecentLocationRequestSeeAllPreferenceController.java b/src/com/android/settings/location/RecentLocationRequestSeeAllPreferenceController.java
index 6a1ebd9..3fa0f00 100644
--- a/src/com/android/settings/location/RecentLocationRequestSeeAllPreferenceController.java
+++ b/src/com/android/settings/location/RecentLocationRequestSeeAllPreferenceController.java
@@ -23,9 +23,9 @@
 import androidx.preference.PreferenceCategory;
 import androidx.preference.PreferenceScreen;
 
-import com.android.settings.widget.AppPreference;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 import com.android.settingslib.location.RecentLocationApps;
+import com.android.settingslib.widget.apppreference.AppPreference;
 
 import java.util.List;
 
diff --git a/src/com/android/settings/network/ApnSettings.java b/src/com/android/settings/network/ApnSettings.java
index df0b1b4..beeaab3 100755
--- a/src/com/android/settings/network/ApnSettings.java
+++ b/src/com/android/settings/network/ApnSettings.java
@@ -186,7 +186,7 @@
 
         CarrierConfigManager configManager = (CarrierConfigManager)
                 getSystemService(Context.CARRIER_CONFIG_SERVICE);
-        PersistableBundle b = configManager.getConfig();
+        PersistableBundle b = configManager.getConfigForSubId(mSubId);
         mHideImsApn = b.getBoolean(CarrierConfigManager.KEY_HIDE_IMS_APN_BOOL);
         mAllowAddingApns = b.getBoolean(CarrierConfigManager.KEY_ALLOW_ADDING_APNS_BOOL);
         if (mAllowAddingApns) {
diff --git a/src/com/android/settings/print/PrintServiceSettingsFragment.java b/src/com/android/settings/print/PrintServiceSettingsFragment.java
index 759cf3b..58e4ada 100644
--- a/src/com/android/settings/print/PrintServiceSettingsFragment.java
+++ b/src/com/android/settings/print/PrintServiceSettingsFragment.java
@@ -190,8 +190,6 @@
             if (emptyView == null) {
                 emptyView = getActivity().getLayoutInflater().inflate(
                         R.layout.empty_print_state, contentRoot, false);
-                ImageView iconView = (ImageView) emptyView.findViewById(R.id.icon);
-                iconView.setContentDescription(getString(R.string.print_service_disabled));
                 TextView textView = (TextView) emptyView.findViewById(R.id.message);
                 textView.setText(R.string.print_service_disabled);
                 contentRoot.addView(emptyView);
@@ -216,8 +214,6 @@
             if (emptyView == null) {
                 emptyView = getActivity().getLayoutInflater().inflate(
                         R.layout.empty_print_state, contentRoot, false);
-                ImageView iconView = (ImageView) emptyView.findViewById(R.id.icon);
-                iconView.setContentDescription(getString(R.string.print_no_printers_found));
                 TextView textView = (TextView) emptyView.findViewById(R.id.message);
                 textView.setText(R.string.print_no_printers_found);
                 contentRoot.addView(emptyView);
diff --git a/src/com/android/settings/print/PrintSettingsFragment.java b/src/com/android/settings/print/PrintSettingsFragment.java
index 2f1f63d..63ffe87 100644
--- a/src/com/android/settings/print/PrintSettingsFragment.java
+++ b/src/com/android/settings/print/PrintSettingsFragment.java
@@ -55,8 +55,8 @@
 import com.android.settings.R;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Indexable;
-import com.android.settings.widget.AppPreference;
 import com.android.settingslib.search.SearchIndexable;
+import com.android.settingslib.widget.apppreference.AppPreference;
 
 import java.text.DateFormat;
 import java.util.ArrayList;
@@ -356,7 +356,7 @@
                                     printJob.getCreationTime(), printJob.getCreationTime(),
                                     DateFormat.SHORT, DateFormat.SHORT)));
 
-                    TypedArray a = getActivity().obtainStyledAttributes(new int[] {
+                    TypedArray a = getActivity().obtainStyledAttributes(new int[]{
                             android.R.attr.colorControlNormal});
                     int tintColor = a.getColor(0, 0);
                     a.recycle();
diff --git a/src/com/android/settings/widget/AppPreference.java b/src/com/android/settings/widget/AppPreference.java
deleted file mode 100644
index 91e700a..0000000
--- a/src/com/android/settings/widget/AppPreference.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.widget;
-
-import android.content.Context;
-import android.text.TextUtils;
-import android.util.AttributeSet;
-import android.view.View;
-import android.widget.ProgressBar;
-
-import androidx.preference.Preference;
-import androidx.preference.PreferenceViewHolder;
-
-import com.android.settings.R;
-
-public class AppPreference extends Preference {
-
-    private int mProgress;
-    private boolean mProgressVisible;
-
-    public AppPreference(Context context) {
-        super(context);
-        setLayoutResource(R.layout.preference_app);
-    }
-
-    public AppPreference(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        setLayoutResource(R.layout.preference_app);
-    }
-
-    public void setProgress(int amount) {
-        mProgress = amount;
-        mProgressVisible = true;
-        notifyChanged();
-    }
-
-    @Override
-    public void onBindViewHolder(PreferenceViewHolder view) {
-        super.onBindViewHolder(view);
-
-        view.findViewById(R.id.summary_container)
-                .setVisibility(TextUtils.isEmpty(getSummary()) ? View.GONE : View.VISIBLE);
-        final ProgressBar progress = (ProgressBar) view.findViewById(android.R.id.progress);
-        if (mProgressVisible) {
-            progress.setProgress(mProgress);
-            progress.setVisibility(View.VISIBLE);
-        } else {
-            progress.setVisibility(View.GONE);
-        }
-    }
-}
diff --git a/src/com/android/settings/widget/RestrictedAppPreference.java b/src/com/android/settings/widget/RestrictedAppPreference.java
index e33c342..8a2cc91 100644
--- a/src/com/android/settings/widget/RestrictedAppPreference.java
+++ b/src/com/android/settings/widget/RestrictedAppPreference.java
@@ -28,6 +28,7 @@
 import com.android.settings.R;
 import com.android.settingslib.RestrictedLockUtils;
 import com.android.settingslib.RestrictedPreferenceHelper;
+import com.android.settingslib.widget.apppreference.AppPreference;
 
 /**
  * {@link AppPreference} that implements user restriction utilities using
diff --git a/tests/robotests/src/com/android/settings/applications/AppStateNotificationBridgeTest.java b/tests/robotests/src/com/android/settings/applications/AppStateNotificationBridgeTest.java
index 8e3bb42..cb50486 100644
--- a/tests/robotests/src/com/android/settings/applications/AppStateNotificationBridgeTest.java
+++ b/tests/robotests/src/com/android/settings/applications/AppStateNotificationBridgeTest.java
@@ -19,6 +19,8 @@
 import static android.text.format.DateUtils.DAY_IN_MILLIS;
 
 import static com.android.settings.applications.AppStateNotificationBridge
+        .FILTER_APP_NOTIFICATION_BLOCKED;
+import static com.android.settings.applications.AppStateNotificationBridge
         .FILTER_APP_NOTIFICATION_FREQUENCY;
 import static com.android.settings.applications.AppStateNotificationBridge
         .FILTER_APP_NOTIFICATION_RECENCY;
@@ -379,10 +381,11 @@
         NotificationsSentState sent = new NotificationsSentState();
         sent.lastSent = System.currentTimeMillis() - (2 * DAY_IN_MILLIS);
 
-        assertThat(AppStateNotificationBridge.getSummary(mContext, neverSent, true)).isEqualTo(
-                mContext.getString(R.string.notifications_sent_never));
-        assertThat(AppStateNotificationBridge.getSummary(mContext, sent, true).toString())
-                .contains("2");
+        assertThat(AppStateNotificationBridge.getSummary(
+                mContext, neverSent, R.id.sort_order_recent_notification)).isEqualTo(
+                        mContext.getString(R.string.notifications_sent_never));
+        assertThat(AppStateNotificationBridge.getSummary(
+                mContext, sent, R.id.sort_order_recent_notification).toString()).contains("2");
     }
 
     @Test
@@ -392,13 +395,24 @@
         NotificationsSentState sentOften = new NotificationsSentState();
         sentOften.avgSentDaily = 8;
 
-        assertThat(AppStateNotificationBridge.getSummary(mContext, sentRarely, false).toString())
+        assertThat(AppStateNotificationBridge.getSummary(
+                mContext, sentRarely, R.id.sort_order_frequent_notification).toString())
                 .contains("1");
-        assertThat(AppStateNotificationBridge.getSummary(mContext, sentOften, false).toString())
+        assertThat(AppStateNotificationBridge.getSummary(
+                mContext, sentOften, R.id.sort_order_frequent_notification).toString())
                 .contains("8");
     }
 
     @Test
+    public void testSummary_alpha() {
+        NotificationsSentState sentRarely = new NotificationsSentState();
+        sentRarely.avgSentWeekly = 1;
+        assertThat(AppStateNotificationBridge.getSummary(
+                mContext, sentRarely, R.id.sort_order_alpha).toString())
+                .isEqualTo("");
+    }
+
+    @Test
     public void testFilterRecency() {
         NotificationsSentState allowState = new NotificationsSentState();
         allowState.lastSent = 1;
@@ -433,6 +447,23 @@
     }
 
     @Test
+    public void testFilterBlocked() {
+        NotificationsSentState allowState = new NotificationsSentState();
+        allowState.blocked = true;
+        AppEntry allow = mock(AppEntry.class);
+        allow.extraInfo = allowState;
+
+        assertTrue(FILTER_APP_NOTIFICATION_BLOCKED.filterApp(allow));
+
+        NotificationsSentState denyState = new NotificationsSentState();
+        denyState.blocked = false;
+        AppEntry deny = mock(AppEntry.class);
+        deny.extraInfo = denyState;
+
+        assertFalse(FILTER_APP_NOTIFICATION_BLOCKED.filterApp(deny));
+    }
+
+    @Test
     public void testComparators_nullsNoCrash() {
         List<AppEntry> entries = new ArrayList<>();
         AppEntry a = mock(AppEntry.class);
diff --git a/tests/robotests/src/com/android/settings/applications/manageapplications/ManageApplicationsTest.java b/tests/robotests/src/com/android/settings/applications/manageapplications/ManageApplicationsTest.java
index c9ab7c0..b3f5b5e 100644
--- a/tests/robotests/src/com/android/settings/applications/manageapplications/ManageApplicationsTest.java
+++ b/tests/robotests/src/com/android/settings/applications/manageapplications/ManageApplicationsTest.java
@@ -200,13 +200,13 @@
     }
 
     @Test
-    public void shouldUseStableItemHeight_mainType_yes() {
+    public void shouldUseStableItemHeight() {
         assertThat(ManageApplications.ApplicationsAdapter.shouldUseStableItemHeight(
                 LIST_TYPE_MAIN))
                 .isTrue();
         assertThat(ManageApplications.ApplicationsAdapter.shouldUseStableItemHeight(
                 LIST_TYPE_NOTIFICATION))
-                .isFalse();
+                .isTrue();
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/location/RecentLocationRequestPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/location/RecentLocationRequestPreferenceControllerTest.java
index 3d3dd28..10e5681 100644
--- a/tests/robotests/src/com/android/settings/location/RecentLocationRequestPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/location/RecentLocationRequestPreferenceControllerTest.java
@@ -42,10 +42,10 @@
 import com.android.settings.R;
 import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
 import com.android.settings.testutils.SettingsRobolectricTestRunner;
-import com.android.settings.widget.AppPreference;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 import com.android.settingslib.location.RecentLocationApps;
 import com.android.settingslib.location.RecentLocationApps.Request;
+import com.android.settingslib.widget.apppreference.AppPreference;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -173,7 +173,7 @@
 
     @Test
     public void onPreferenceClick_shouldLaunchAppDetails() {
-        final Context context= mock(Context.class);
+        final Context context = mock(Context.class);
         when(mFragment.getContext()).thenReturn(context);
 
         final List<RecentLocationApps.Request> requests = new ArrayList<>();
@@ -210,7 +210,7 @@
             AppPreference appPreference = mock(AppPreference.class, "AppPreference" + i);
             doReturn(title).when(appPreference).getTitle();
             doReturn(appPreference)
-                .when(mController).createAppPreference(any(Context.class), eq(req));
+                    .when(mController).createAppPreference(any(Context.class), eq(req));
         }
         return requests;
     }
diff --git a/tests/robotests/src/com/android/settings/location/RecentLocationRequestSeeAllPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/location/RecentLocationRequestSeeAllPreferenceControllerTest.java
index a012c51..be56f96 100644
--- a/tests/robotests/src/com/android/settings/location/RecentLocationRequestSeeAllPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/location/RecentLocationRequestSeeAllPreferenceControllerTest.java
@@ -32,10 +32,10 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.testutils.SettingsRobolectricTestRunner;
-import com.android.settings.widget.AppPreference;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 import com.android.settingslib.location.RecentLocationApps;
 import com.android.settingslib.location.RecentLocationApps.Request;
+import com.android.settingslib.widget.apppreference.AppPreference;
 
 import org.junit.Before;
 import org.junit.Test;
diff --git a/tests/robotests/src/com/android/settings/testutils/SettingsRobolectricTestRunner.java b/tests/robotests/src/com/android/settings/testutils/SettingsRobolectricTestRunner.java
index 2e3a140..008d7f7 100644
--- a/tests/robotests/src/com/android/settings/testutils/SettingsRobolectricTestRunner.java
+++ b/tests/robotests/src/com/android/settings/testutils/SettingsRobolectricTestRunner.java
@@ -76,6 +76,8 @@
             paths.add(new ResourcePath(null,
                 Fs.fromURL(new URL("file:frameworks/base/packages/SettingsLib/res")), null));
             paths.add(new ResourcePath(null,
+                    Fs.fromURL(new URL("file:frameworks/base/packages/SettingsLib/AppPreference/res/")), null));
+            paths.add(new ResourcePath(null,
                     Fs.fromURL(new URL("file:frameworks/base/packages/SettingsLib/HelpUtils/res/")), null));
             paths.add(new ResourcePath(null,
                     Fs.fromURL(new URL("file:frameworks/base/packages/SettingsLib/RestrictedLockUtils/res/")), null));
diff --git a/tests/robotests/src/com/android/settings/widget/AppPreferenceTest.java b/tests/robotests/src/com/android/settings/widget/AppPreferenceTest.java
deleted file mode 100644
index c75d8fd..0000000
--- a/tests/robotests/src/com/android/settings/widget/AppPreferenceTest.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * 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.widget;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.view.View;
-
-import androidx.preference.PreferenceViewHolder;
-
-import com.android.settings.R;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(SettingsRobolectricTestRunner.class)
-public class AppPreferenceTest {
-
-    private Context mContext;
-    private View mRootView;
-    private AppPreference mPref;
-    private PreferenceViewHolder mHolder;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        mRootView = View.inflate(mContext, R.layout.preference_app, null /* parent */);
-        mHolder = PreferenceViewHolder.createInstanceForTests(mRootView);
-        mPref = new AppPreference(mContext);
-    }
-
-    @Test
-    public void setProgress_showProgress() {
-        mPref.setProgress(1);
-        mPref.onBindViewHolder(mHolder);
-
-        assertThat(mHolder.findViewById(android.R.id.progress).getVisibility())
-                .isEqualTo(View.VISIBLE);
-    }
-
-    @Test
-    public void setSummary_showSummaryContainer() {
-        mPref.setSummary("test");
-        mPref.onBindViewHolder(mHolder);
-
-        assertThat(mHolder.findViewById(R.id.summary_container).getVisibility())
-                .isEqualTo(View.VISIBLE);
-    }
-
-    @Test
-    public void noSummary_hideSummaryContainer() {
-        mPref.setSummary(null);
-        mPref.onBindViewHolder(mHolder);
-
-        assertThat(mHolder.findViewById(R.id.summary_container).getVisibility())
-                .isEqualTo(View.GONE);
-    }
-
-    @Test
-    public void foobar_testName() {
-        float iconSize = mContext.getResources().getDimension(R.dimen.secondary_app_icon_size);
-        assertThat(Float.floatToIntBits(iconSize)).isEqualTo(Float.floatToIntBits(32));
-    }
-}