Merge "Catch another exception when we are building slices data for search" into qt-dev

This commit is contained in:
TreeHugger Robot
2019-05-09 17:45:10 +00:00
committed by Android (Google) Code Review

View File

@@ -25,6 +25,7 @@ import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_TITLE;
import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_UNAVAILABLE_SLICE_SUBTITLE; import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_UNAVAILABLE_SLICE_SUBTITLE;
import android.accessibilityservice.AccessibilityServiceInfo; import android.accessibilityservice.AccessibilityServiceInfo;
import android.app.settings.SettingsEnums;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
@@ -52,6 +53,7 @@ import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
import com.android.settings.search.DatabaseIndexingUtils; import com.android.settings.search.DatabaseIndexingUtils;
import com.android.settings.search.Indexable.SearchIndexProvider; import com.android.settings.search.Indexable.SearchIndexProvider;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserException;
@@ -76,10 +78,12 @@ class SliceDataConverter {
private static final String NODE_NAME_PREFERENCE_SCREEN = "PreferenceScreen"; private static final String NODE_NAME_PREFERENCE_SCREEN = "PreferenceScreen";
private final MetricsFeatureProvider mMetricsFeatureProvider;
private Context mContext; private Context mContext;
public SliceDataConverter(Context context) { public SliceDataConverter(Context context) {
mContext = context; mContext = context;
mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
} }
/** /**
@@ -151,6 +155,7 @@ class SliceDataConverter {
XmlResourceParser parser = null; XmlResourceParser parser = null;
final List<SliceData> xmlSliceData = new ArrayList<>(); final List<SliceData> xmlSliceData = new ArrayList<>();
String controllerClassName = "";
try { try {
parser = mContext.getResources().getXml(xmlResId); parser = mContext.getResources().getXml(xmlResId);
@@ -188,7 +193,7 @@ class SliceDataConverter {
for (Bundle bundle : metadata) { for (Bundle bundle : metadata) {
// TODO (b/67996923) Non-controller Slices should become intent-only slices. // TODO (b/67996923) Non-controller Slices should become intent-only slices.
// Note that without a controller, dynamic summaries are impossible. // Note that without a controller, dynamic summaries are impossible.
final String controllerClassName = bundle.getString(METADATA_CONTROLLER); controllerClassName = bundle.getString(METADATA_CONTROLLER);
if (TextUtils.isEmpty(controllerClassName)) { if (TextUtils.isEmpty(controllerClassName)) {
continue; continue;
} }
@@ -226,12 +231,25 @@ class SliceDataConverter {
} }
} catch (SliceData.InvalidSliceDataException e) { } catch (SliceData.InvalidSliceDataException e) {
Log.w(TAG, "Invalid data when building SliceData for " + fragmentName, e); Log.w(TAG, "Invalid data when building SliceData for " + fragmentName, e);
} catch (XmlPullParserException e) { mMetricsFeatureProvider.action(SettingsEnums.PAGE_UNKNOWN,
Log.w(TAG, "XML Error parsing PreferenceScreen: ", e); SettingsEnums.ACTION_VERIFY_SLICE_ERROR_INVALID_DATA,
} catch (IOException e) { SettingsEnums.PAGE_UNKNOWN,
Log.w(TAG, "IO Error parsing PreferenceScreen: ", e); controllerClassName,
} catch (Resources.NotFoundException e) { 1);
Log.w(TAG, "Resource not found error parsing PreferenceScreen: ", e); } catch (XmlPullParserException | IOException | Resources.NotFoundException e) {
Log.w(TAG, "Error parsing PreferenceScreen: ", e);
mMetricsFeatureProvider.action(SettingsEnums.PAGE_UNKNOWN,
SettingsEnums.ACTION_VERIFY_SLICE_PARSING_ERROR,
SettingsEnums.PAGE_UNKNOWN,
fragmentName,
1);
} catch (Exception e) {
Log.w(TAG, "Get slice data from XML failed ", e);
mMetricsFeatureProvider.action(SettingsEnums.PAGE_UNKNOWN,
SettingsEnums.ACTION_VERIFY_SLICE_OTHER_EXCEPTION,
SettingsEnums.PAGE_UNKNOWN,
fragmentName + "_" + controllerClassName,
1);
} finally { } finally {
if (parser != null) parser.close(); if (parser != null) parser.close();
} }