Merge "Disable crashing  ExternalSourcesSettingsTest#testManageExternalSourcesForApp"
diff --git a/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java b/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java
index d341d53..017afe7 100644
--- a/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java
+++ b/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java
@@ -17,7 +17,6 @@
 package com.android.settings.applications.appinfo;
 
 import android.app.LoaderManager;
-import android.app.slice.Slice;
 import android.content.Context;
 import android.content.Loader;
 import android.content.pm.PackageInfo;
@@ -82,11 +81,6 @@
     }
 
     @Override
-    public Slice getSettingSlice() {
-        return null;
-    }
-
-    @Override
     public void displayPreference(PreferenceScreen screen) {
         super.displayPreference(screen);
         mPreference = screen.findPreference(getPreferenceKey());
diff --git a/src/com/android/settings/applications/appinfo/AppInfoPreferenceControllerBase.java b/src/com/android/settings/applications/appinfo/AppInfoPreferenceControllerBase.java
index 0d6c038..eac0a0c 100644
--- a/src/com/android/settings/applications/appinfo/AppInfoPreferenceControllerBase.java
+++ b/src/com/android/settings/applications/appinfo/AppInfoPreferenceControllerBase.java
@@ -16,7 +16,6 @@
 
 package com.android.settings.applications.appinfo;
 
-import android.app.slice.Slice;
 import android.content.Context;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceScreen;
@@ -51,11 +50,6 @@
     }
 
     @Override
-    public Slice getSettingSlice() {
-        return null;
-    }
-
-    @Override
     public void displayPreference(PreferenceScreen screen) {
         super.displayPreference(screen);
         mPreference = screen.findPreference(getPreferenceKey());
diff --git a/src/com/android/settings/applications/appinfo/AppMemoryPreferenceController.java b/src/com/android/settings/applications/appinfo/AppMemoryPreferenceController.java
index 2a20f80..3943041 100644
--- a/src/com/android/settings/applications/appinfo/AppMemoryPreferenceController.java
+++ b/src/com/android/settings/applications/appinfo/AppMemoryPreferenceController.java
@@ -17,7 +17,6 @@
 package com.android.settings.applications.appinfo;
 
 import android.app.Activity;
-import android.app.slice.Slice;
 import android.content.Context;
 import android.content.pm.PackageInfo;
 import android.os.AsyncTask;
@@ -111,11 +110,6 @@
     }
 
     @Override
-    public Slice getSettingSlice() {
-        return null;
-    }
-
-    @Override
     public void displayPreference(PreferenceScreen screen) {
         super.displayPreference(screen);
         mPreference = screen.findPreference(getPreferenceKey());
diff --git a/src/com/android/settings/applications/appinfo/AppPermissionPreferenceController.java b/src/com/android/settings/applications/appinfo/AppPermissionPreferenceController.java
index bd309c6..815e8d8 100644
--- a/src/com/android/settings/applications/appinfo/AppPermissionPreferenceController.java
+++ b/src/com/android/settings/applications/appinfo/AppPermissionPreferenceController.java
@@ -23,13 +23,11 @@
 import android.icu.text.ListFormatter;
 import android.support.annotation.VisibleForTesting;
 import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceScreen;
 import android.util.Log;
 
 import com.android.settings.R;
 import com.android.settings.applications.AppInfoDashboardFragment;
 import com.android.settingslib.applications.PermissionsSummaryHelper;
-import com.android.settingslib.core.AbstractPreferenceController;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBase.java b/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBase.java
index 3311daa..fa67ec8 100644
--- a/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBase.java
+++ b/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBase.java
@@ -51,11 +51,6 @@
     }
 
     @Override
-    public Slice getSettingSlice() {
-        return null;
-    }
-
-    @Override
     public void updateState(Preference preference) {
         preference.setSummary(isDefaultApp() ? R.string.yes : R.string.no);
     }
diff --git a/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceController.java b/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceController.java
index a7d65d3..94aa608 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceController.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceController.java
@@ -100,7 +100,7 @@
 
         Intent intent = new Intent(Intent.ACTION_APPLICATION_PREFERENCES)
                 .setPackage(packageName)
-                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
         return mPackageManager.queryIntentActivities(intent, 0).size() == 1 ? intent : null;
     }
 
diff --git a/src/com/android/settings/core/BasePreferenceController.java b/src/com/android/settings/core/BasePreferenceController.java
index b3d9878..01d98b8 100644
--- a/src/com/android/settings/core/BasePreferenceController.java
+++ b/src/com/android/settings/core/BasePreferenceController.java
@@ -14,14 +14,10 @@
 package com.android.settings.core;
 
 import android.annotation.IntDef;
-import android.app.slice.Slice;
 import android.content.Context;
-import android.support.v7.preference.Preference;
 import android.text.TextUtils;
 import android.util.Log;
 
-
-import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settings.search.ResultPayload;
 import com.android.settings.search.SearchIndexableRaw;
 import com.android.settingslib.core.AbstractPreferenceController;
@@ -88,11 +84,6 @@
     @AvailabilityStatus
     public abstract int getAvailabilityStatus();
 
-    /**
-     * @return A slice for the corresponding setting.
-     */
-    public abstract Slice getSettingSlice();
-
     @Override
     public String getPreferenceKey() {
         return mPreferenceKey;
@@ -150,10 +141,4 @@
     public ResultPayload getResultPayload() {
         return null;
     }
-
-    // TODO (b/69380366) Add Method to get preference UI
-
-    // TODO (b/69380464) Add method to get intent
-
-    // TODO (b/69380560) Add method to get broadcast intent
 }
\ No newline at end of file
diff --git a/src/com/android/settings/core/TogglePreferenceController.java b/src/com/android/settings/core/TogglePreferenceController.java
index 03106d3..99d2ecc 100644
--- a/src/com/android/settings/core/TogglePreferenceController.java
+++ b/src/com/android/settings/core/TogglePreferenceController.java
@@ -13,7 +13,6 @@
  */
 package com.android.settings.core;
 
-import android.app.slice.Slice;
 import android.content.Context;
 import android.support.v14.preference.SwitchPreference;
 import android.support.v7.preference.Preference;
@@ -55,10 +54,4 @@
         setChecked(auto);
         return true;
     }
-
-    @Override
-    public Slice getSettingSlice() {
-        // TODO
-        return null;
-    }
 }
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/core/BasePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/core/BasePreferenceControllerTest.java
index 54b58d1..da2197c 100644
--- a/tests/robotests/src/com/android/settings/core/BasePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/core/BasePreferenceControllerTest.java
@@ -117,4 +117,4 @@
 
         assertThat(mPreferenceController.isSupported()).isTrue();
     }
-}
+}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/notification/VisibilityPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/VisibilityPreferenceControllerTest.java
index cdd1e9e..c18372c 100644
--- a/tests/robotests/src/com/android/settings/notification/VisibilityPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/VisibilityPreferenceControllerTest.java
@@ -205,10 +205,11 @@
         RestrictedDropDownPreference pref = mock(RestrictedDropDownPreference.class);
         mController.updateState(pref);
 
-        ArgumentCaptor<String[]> argumentCaptor = ArgumentCaptor.forClass(String[].class);
+        ArgumentCaptor<CharSequence[]> argumentCaptor =
+            ArgumentCaptor.forClass(CharSequence[].class);
         verify(pref, times(1)).setEntryValues(argumentCaptor.capture());
-        assertFalse(Arrays.asList(argumentCaptor.getValue())
-                .contains(VISIBILITY_NO_OVERRIDE));
+        assertFalse(toStringList(argumentCaptor.getValue())
+                .contains(String.valueOf(VISIBILITY_NO_OVERRIDE)));
     }
 
     @Test
@@ -223,10 +224,11 @@
         RestrictedDropDownPreference pref = mock(RestrictedDropDownPreference.class);
         mController.updateState(pref);
 
-        ArgumentCaptor<String[]> argumentCaptor = ArgumentCaptor.forClass(String[].class);
+        ArgumentCaptor<CharSequence[]> argumentCaptor =
+            ArgumentCaptor.forClass(CharSequence[].class);
         verify(pref, times(1)).setEntryValues(argumentCaptor.capture());
-        assertFalse(Arrays.asList(argumentCaptor.getValue())
-                .contains(VISIBILITY_NO_OVERRIDE));
+        assertFalse(toStringList(argumentCaptor.getValue())
+                .contains(String.valueOf(VISIBILITY_NO_OVERRIDE)));
     }
 
     @Test
@@ -238,15 +240,24 @@
         RestrictedDropDownPreference pref = mock(RestrictedDropDownPreference.class);
         mController.updateState(pref);
 
-        ArgumentCaptor<String[]> argumentCaptor = ArgumentCaptor.forClass(String[].class);
+        ArgumentCaptor<CharSequence[]> argumentCaptor =
+            ArgumentCaptor.forClass(CharSequence[].class);
         verify(pref, times(1)).setEntryValues(argumentCaptor.capture());
-        List<String> values = Arrays.asList(argumentCaptor.getValue());
+        List<String> values = toStringList(argumentCaptor.getValue());
         assertEquals(3, values.size());
         assertTrue(values.contains(String.valueOf(VISIBILITY_NO_OVERRIDE)));
         assertTrue(values.contains(String.valueOf(Notification.VISIBILITY_PRIVATE)));
         assertTrue(values.contains(String.valueOf(Notification.VISIBILITY_SECRET)));
     }
 
+    private static List<String> toStringList(CharSequence[] charSequences) {
+        List<String> result = new ArrayList<>();
+        for (CharSequence charSequence : charSequences) {
+            result.add(charSequence.toString());
+        }
+        return result;
+    }
+
     @Test
     public void testUpdateState_noChannelOverride() throws Exception {
         Settings.Secure.putInt(mContext.getContentResolver(),