Merge "Use the new loader to show app data usage summary."
diff --git a/src/com/android/settings/applications/SpecialAppAccessPreferenceController.java b/src/com/android/settings/applications/SpecialAppAccessPreferenceController.java
index a395f98..1763d84 100644
--- a/src/com/android/settings/applications/SpecialAppAccessPreferenceController.java
+++ b/src/com/android/settings/applications/SpecialAppAccessPreferenceController.java
@@ -23,6 +23,7 @@
 import com.android.settings.R;
 import com.android.settings.core.BasePreferenceController;
 import com.android.settings.datausage.AppStateDataUsageBridge;
+import com.android.settings.datausage.AppStateDataUsageBridge.DataUsageState;
 import com.android.settings.datausage.DataSaverBackend;
 import com.android.settingslib.applications.ApplicationsState;
 import com.android.settingslib.core.lifecycle.Lifecycle;
@@ -108,8 +109,8 @@
             if (!ApplicationsState.FILTER_DOWNLOADED_AND_LAUNCHER.filterApp(entry)) {
                 continue;
             }
-            if (entry.extraInfo != null && ((AppStateDataUsageBridge.DataUsageState)
-                    entry.extraInfo).isDataSaverWhitelisted) {
+            if (entry.extraInfo instanceof DataUsageState
+                    && ((DataUsageState) entry.extraInfo).isDataSaverWhitelisted) {
                 count++;
             }
         }
diff --git a/src/com/android/settings/notification/BlockPreferenceController.java b/src/com/android/settings/notification/BlockPreferenceController.java
index 9e4c463..bee32f5 100644
--- a/src/com/android/settings/notification/BlockPreferenceController.java
+++ b/src/com/android/settings/notification/BlockPreferenceController.java
@@ -65,6 +65,7 @@
 
     public void updateState(Preference preference) {
         LayoutPreference pref = (LayoutPreference) preference;
+        pref.setSelectable(false);
         SwitchBar bar = pref.findViewById(R.id.switch_bar);
         if (bar != null) {
             bar.setSwitchBarText(R.string.notification_switch_label,
diff --git a/tests/robotests/src/com/android/settings/applications/SpecialAppAccessPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/SpecialAppAccessPreferenceControllerTest.java
index b642915..694625e 100644
--- a/tests/robotests/src/com/android/settings/applications/SpecialAppAccessPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/applications/SpecialAppAccessPreferenceControllerTest.java
@@ -94,4 +94,22 @@
                 .isEqualTo(mContext.getResources().getQuantityString(
                         R.plurals.special_access_summary, 1, 1));
     }
+
+    @Test
+    public void updateState_wrongExtraInfo_shouldNotIncludeInSummary() {
+        final ArrayList<ApplicationsState.AppEntry> apps = new ArrayList<>();
+        final ApplicationsState.AppEntry entry = mock(ApplicationsState.AppEntry.class);
+        entry.hasLauncherEntry = true;
+        entry.info = new ApplicationInfo();
+        entry.extraInfo = new AppStateNotificationBridge.NotificationsSentState();
+        apps.add(entry);
+        when(mSession.getAllApps()).thenReturn(apps);
+
+        mController.displayPreference(mScreen);
+        mController.onExtraInfoUpdated();
+
+        assertThat(mPreference.getSummary())
+                .isEqualTo(mContext.getResources().getQuantityString(
+                        R.plurals.special_access_summary, 0, 0));
+    }
 }