From c3bdef0996ad67bb13862e1c64aace0cbf171f8e Mon Sep 17 00:00:00 2001 From: Stanley Wang Date: Fri, 8 Mar 2019 17:31:52 +0800 Subject: [PATCH] Add error handling for SearchIndexablesProvider. Catch exception to avoid the client process killed. Bug: 127906747 Test: rebuild Change-Id: I595b0ed9ca62579f0b5f90d8e85adffbaa3bd611 --- .../android/provider/SearchIndexablesProvider.java | 34 +++++++++++++--------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/core/java/android/provider/SearchIndexablesProvider.java b/core/java/android/provider/SearchIndexablesProvider.java index 1549c45478ed..d505f02468d0 100644 --- a/core/java/android/provider/SearchIndexablesProvider.java +++ b/core/java/android/provider/SearchIndexablesProvider.java @@ -25,6 +25,7 @@ import android.content.UriMatcher; import android.content.pm.ProviderInfo; import android.database.Cursor; import android.net.Uri; +import android.util.Log; /** * Base class for a search indexable provider. Such provider offers data to be indexed either @@ -112,19 +113,26 @@ public abstract class SearchIndexablesProvider extends ContentProvider { @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { - switch (mMatcher.match(uri)) { - case MATCH_RES_CODE: - return queryXmlResources(null); - case MATCH_RAW_CODE: - return queryRawData(null); - case MATCH_NON_INDEXABLE_KEYS_CODE: - return queryNonIndexableKeys(null); - case MATCH_SITE_MAP_PAIRS_CODE: - return querySiteMapPairs(); - case MATCH_SLICE_URI_PAIRS_CODE: - return querySliceUriPairs(); - default: - throw new UnsupportedOperationException("Unknown Uri " + uri); + try { + switch (mMatcher.match(uri)) { + case MATCH_RES_CODE: + return queryXmlResources(null); + case MATCH_RAW_CODE: + return queryRawData(null); + case MATCH_NON_INDEXABLE_KEYS_CODE: + return queryNonIndexableKeys(null); + case MATCH_SITE_MAP_PAIRS_CODE: + return querySiteMapPairs(); + case MATCH_SLICE_URI_PAIRS_CODE: + return querySliceUriPairs(); + default: + throw new UnsupportedOperationException("Unknown Uri " + uri); + } + } catch (UnsupportedOperationException e) { + throw e; + } catch (Exception e) { + Log.e(TAG, "Provider querying exception:", e); + return null; } } -- 2.11.0