Merge "Catch exception when failing to create slice" into pi-dev

This commit is contained in:
TreeHugger Robot
2018-04-21 02:03:49 +00:00
committed by Android (Google) Code Review
4 changed files with 147 additions and 13 deletions

View File

@@ -227,19 +227,19 @@ public class SliceData {
public SliceData build() {
if (TextUtils.isEmpty(mKey)) {
throw new IllegalStateException("Key cannot be empty");
throw new InvalidSliceDataException("Key cannot be empty");
}
if (TextUtils.isEmpty(mTitle)) {
throw new IllegalStateException("Title cannot be empty");
throw new InvalidSliceDataException("Title cannot be empty");
}
if (TextUtils.isEmpty(mFragmentClassName)) {
throw new IllegalStateException("Fragment Name cannot be empty");
throw new InvalidSliceDataException("Fragment Name cannot be empty");
}
if (TextUtils.isEmpty(mPrefControllerClassName)) {
throw new IllegalStateException("Preference Controller cannot be empty");
throw new InvalidSliceDataException("Preference Controller cannot be empty");
}
return new SliceData(this);
@@ -249,4 +249,11 @@ public class SliceData {
return mKey;
}
}
public static class InvalidSliceDataException extends RuntimeException {
public InvalidSliceDataException(String message) {
super(message);
}
}
}

View File

@@ -40,12 +40,12 @@ import android.util.Log;
import android.util.Xml;
import android.view.accessibility.AccessibilityManager;
import com.android.settings.accessibility.AccessibilitySlicePreferenceController;
import com.android.settings.core.PreferenceXmlParserUtils;
import com.android.settings.core.PreferenceXmlParserUtils.MetadataFlag;
import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.accessibility.AccessibilitySettings;
import com.android.settings.accessibility.AccessibilitySlicePreferenceController;
import com.android.settings.core.PreferenceXmlParserUtils;
import com.android.settings.core.PreferenceXmlParserUtils.MetadataFlag;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.search.DatabaseIndexingUtils;
@@ -219,6 +219,8 @@ class SliceDataConverter {
xmlSliceData.add(xmlSlice);
}
} catch (SliceData.InvalidSliceDataException e) {
Log.w(TAG, "Invalid data when building SliceData for " + fragmentName, e);
} catch (XmlPullParserException e) {
Log.w(TAG, "XML Error parsing PreferenceScreen: ", e);
} catch (IOException e) {
@@ -271,8 +273,11 @@ class SliceDataConverter {
.setTitle(title)
.setIcon(iconResource)
.setSliceType(SliceData.SliceType.SWITCH);
sliceData.add(sliceDataBuilder.build());
try {
sliceData.add(sliceDataBuilder.build());
} catch (SliceData.InvalidSliceDataException e) {
Log.w(TAG, "Invalid data when building a11y SliceData for " + flattenedName, e);
}
}
return sliceData;