From 22047a39a50c7d3082f26a889732c8725b526648 Mon Sep 17 00:00:00 2001 From: Ashish Kumar Date: Tue, 21 Feb 2023 13:58:42 +0000 Subject: [PATCH] Fixing tests failure due to unhandled exceptions Bug: b/270035611, b/270097730 Test: CtsAppEnumerationTestCases, ContactsProviderTests Change-Id: I32fad70110477fc2376eb15d4843b86a2245edd4 --- core/java/android/content/ContentProvider.java | 17 +++++++++-------- core/java/android/content/ContentResolver.java | 9 +++++++-- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/core/java/android/content/ContentProvider.java b/core/java/android/content/ContentProvider.java index c8db0d8c958d9..b72db5bdafa3f 100644 --- a/core/java/android/content/ContentProvider.java +++ b/core/java/android/content/ContentProvider.java @@ -342,15 +342,16 @@ public abstract class ContentProvider implements ContentInterface, ComponentCall final int enumCheckUriPermission = GET_TYPE_ACCESSED_WITHOUT_PERMISSION__LOCATION__PROVIDER_CHECK_URI_PERMISSION; if (permissionCheckPassed) { - // Just for logging for mediaProvider cases - final ProviderInfo cpi = mContext.getPackageManager() - .resolveContentProvider(uri.getAuthority(), - PackageManager.ComponentInfoFlags.of(PackageManager.GET_META_DATA)); - final int callingUserId = UserHandle.getUserId(callingUid); - final Uri userUri = (mSingleUser - && !UserHandle.isSameUser(mMyUid, callingUid)) - ? maybeAddUserId(uri, callingUserId) : uri; try { + // Just for logging for mediaProvider cases + final ProviderInfo cpi = mContext.getPackageManager() + .resolveContentProvider(uri.getAuthority(), + PackageManager.ComponentInfoFlags.of( + PackageManager.GET_META_DATA)); + final int callingUserId = UserHandle.getUserId(callingUid); + final Uri userUri = (mSingleUser + && !UserHandle.isSameUser(mMyUid, callingUid)) + ? maybeAddUserId(uri, callingUserId) : uri; if (cpi.forceUriPermissions && mInterface.checkUriPermission(uri, callingUid, Intent.FLAG_GRANT_READ_URI_PERMISSION) diff --git a/core/java/android/content/ContentResolver.java b/core/java/android/content/ContentResolver.java index b84eb118b8d4e..456d218977113 100644 --- a/core/java/android/content/ContentResolver.java +++ b/core/java/android/content/ContentResolver.java @@ -930,7 +930,8 @@ public abstract class ContentResolver implements ContentInterface { if (provider != null) { try { final StringResultListener resultListener = new StringResultListener(); - provider.getTypeAsync(url, new RemoteCallback(resultListener)); + provider.getTypeAsync(mContext.getAttributionSource(), + url, new RemoteCallback(resultListener)); resultListener.waitForResult(CONTENT_PROVIDER_TIMEOUT_MILLIS); if (resultListener.exception != null) { throw resultListener.exception; @@ -944,7 +945,11 @@ public abstract class ContentResolver implements ContentInterface { Log.w(TAG, "Failed to get type for: " + url + " (" + e.getMessage() + ")"); return null; } finally { - releaseProvider(provider); + try { + releaseProvider(provider); + } catch (java.lang.NullPointerException e) { + // does nothing, Binder connection already null + } } }