Loading core/java/android/content/ContentResolver.java +14 −46 Original line number Diff line number Diff line Loading @@ -49,7 +49,6 @@ import android.graphics.Point; import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; import android.net.Uri; import android.os.AndroidTimeoutException; import android.os.Bundle; import android.os.CancellationSignal; import android.os.DeadObjectException; Loading Loading @@ -2189,8 +2188,14 @@ public abstract class ContentResolver implements ContentInterface { return null; } try (ContentProviderClient provider = acquireRequiredContentProviderClient(authority)) { ContentProviderClient provider = acquireContentProviderClient(authority); if (provider == null) { throw new IllegalArgumentException("Unknown authority " + authority); } try { return provider.applyBatch(operations); } finally { provider.release(); } } Loading Loading @@ -2392,7 +2397,10 @@ public abstract class ContentResolver implements ContentInterface { return null; } IContentProvider provider = acquireRequiredProvider(authority); IContentProvider provider = acquireProvider(authority); if (provider == null) { throw new IllegalArgumentException("Unknown authority " + authority); } try { final Bundle res = provider.call(mPackageName, mAttributionTag, authority, method, arg, extras); Loading @@ -2411,9 +2419,7 @@ public abstract class ContentResolver implements ContentInterface { * Returns the content provider for the given content URI. * * @param uri The URI to a content provider * @return The ContentProvider for the given URI, or null if the content provider initialization * times out. * * @return The ContentProvider for the given URI, or null if no content provider is found. * @hide */ @UnsupportedAppUsage Loading @@ -2423,31 +2429,11 @@ public abstract class ContentResolver implements ContentInterface { } final String auth = uri.getAuthority(); if (auth != null) { try { return acquireProvider(mContext, auth); } catch (AndroidTimeoutException ate) { Log.e(TAG, ate.getMessage()); return null; } } return null; } /** * Same as {@link #acquireProvider(String)}, except it throws an exception * if the content provider does not exist or times out on start. * * @hide */ @NonNull private IContentProvider acquireRequiredProvider(@NonNull String name) { IContentProvider provider = acquireProvider(mContext, name); if (provider == null) { throw new IllegalArgumentException("Unknown authority " + name); } return provider; } /** * Returns the content provider for the given content URI if the process * already has a reference on it. Loading Loading @@ -2476,12 +2462,7 @@ public abstract class ContentResolver implements ContentInterface { if (name == null) { return null; } try { return acquireProvider(mContext, name); } catch (AndroidTimeoutException ate) { Log.e(TAG, ate.getMessage()); return null; } } /** Loading Loading @@ -2555,19 +2536,6 @@ public abstract class ContentResolver implements ContentInterface { return null; } /** * Same as {@link #acquireContentProviderClient(String)}, except it throws an exception * if the content provider does not exist or times out on start. * * @hide */ private @NonNull ContentProviderClient acquireRequiredContentProviderClient( @NonNull String name) { Objects.requireNonNull(name, "name"); IContentProvider provider = acquireRequiredProvider(name); return new ContentProviderClient(this, provider, name, true); } /** * Like {@link #acquireContentProviderClient(Uri)}, but for use when you do * not trust the stability of the target content provider. This turns off Loading core/java/android/os/AndroidTimeoutException.javadeleted 100644 → 0 +0 −33 Original line number Diff line number Diff line /* * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.os; import android.annotation.NonNull; import android.util.AndroidRuntimeException; /** * An exception that indicates that the request timed out, for example because * the requested content provider took too long to initialize. * * @hide */ public final class AndroidTimeoutException extends AndroidRuntimeException { public AndroidTimeoutException(@NonNull String message) { super(message); } } core/java/android/os/Parcel.java +0 −7 Original line number Diff line number Diff line Loading @@ -269,8 +269,6 @@ public final class Parcel { private static final int EX_UNSUPPORTED_OPERATION = -7; private static final int EX_SERVICE_SPECIFIC = -8; private static final int EX_PARCELABLE = -9; private static final int EX_TIMEOUT = -10; /** @hide */ public static final int EX_HAS_NOTED_APPOPS_REPLY_HEADER = -127; // special; see below private static final int EX_HAS_STRICTMODE_REPLY_HEADER = -128; // special; see below Loading Loading @@ -2158,7 +2156,6 @@ public final class Parcel { * <li>{@link SecurityException} * <li>{@link UnsupportedOperationException} * <li>{@link NetworkOnMainThreadException} * <li>{@link AndroidTimeoutException} * </ul> * * @param e The Exception to be written. Loading Loading @@ -2228,8 +2225,6 @@ public final class Parcel { code = EX_UNSUPPORTED_OPERATION; } else if (e instanceof ServiceSpecificException) { code = EX_SERVICE_SPECIFIC; } else if (e instanceof AndroidTimeoutException) { code = EX_TIMEOUT; } return code; } Loading Loading @@ -2408,8 +2403,6 @@ public final class Parcel { return new UnsupportedOperationException(msg); case EX_SERVICE_SPECIFIC: return new ServiceSpecificException(readInt(), msg); case EX_TIMEOUT: return new AndroidTimeoutException(msg); default: return null; } Loading core/tests/coretests/AndroidManifest.xml +0 −6 Original line number Diff line number Diff line Loading @@ -1511,12 +1511,6 @@ android:process=":SlowProvider"> </provider> <provider android:name="android.content.TimingOutProvider" android:authorities="android.content.TimingOutProvider" android:process=":TimingOutProvider"> </provider> <!-- Application components used for os tests --> <service android:name="android.os.MessengerService" Loading core/tests/coretests/src/android/content/ContentResolverTest.java +0 −15 Original line number Diff line number Diff line Loading @@ -32,7 +32,6 @@ import android.graphics.Color; import android.graphics.ImageDecoder; import android.graphics.Paint; import android.net.Uri; import android.os.AndroidTimeoutException; import android.os.MemoryFile; import android.os.ParcelFileDescriptor; import android.os.SystemClock; Loading Loading @@ -226,20 +225,6 @@ public class ContentResolverTest { assertThat(end).isLessThan(start + 5000); } @Test public void testCall_timingOutProvider() { try { // This provider is running in a different process and is configured to time out // on start. We acquire it as "unstable" to avoid getting killed by the timeout in the // content provider process. mResolver.acquireUnstableContentProviderClient( Uri.parse("content://android.content.TimingOutProvider")); fail("AndroidTimeoutException expected"); } catch (AndroidTimeoutException t) { assertThat(t).hasMessageThat().contains("android.content.TimingOutProvider"); } } @Test public void testGetType_unknownProvider() { // This provider does not exist. Loading Loading
core/java/android/content/ContentResolver.java +14 −46 Original line number Diff line number Diff line Loading @@ -49,7 +49,6 @@ import android.graphics.Point; import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; import android.net.Uri; import android.os.AndroidTimeoutException; import android.os.Bundle; import android.os.CancellationSignal; import android.os.DeadObjectException; Loading Loading @@ -2189,8 +2188,14 @@ public abstract class ContentResolver implements ContentInterface { return null; } try (ContentProviderClient provider = acquireRequiredContentProviderClient(authority)) { ContentProviderClient provider = acquireContentProviderClient(authority); if (provider == null) { throw new IllegalArgumentException("Unknown authority " + authority); } try { return provider.applyBatch(operations); } finally { provider.release(); } } Loading Loading @@ -2392,7 +2397,10 @@ public abstract class ContentResolver implements ContentInterface { return null; } IContentProvider provider = acquireRequiredProvider(authority); IContentProvider provider = acquireProvider(authority); if (provider == null) { throw new IllegalArgumentException("Unknown authority " + authority); } try { final Bundle res = provider.call(mPackageName, mAttributionTag, authority, method, arg, extras); Loading @@ -2411,9 +2419,7 @@ public abstract class ContentResolver implements ContentInterface { * Returns the content provider for the given content URI. * * @param uri The URI to a content provider * @return The ContentProvider for the given URI, or null if the content provider initialization * times out. * * @return The ContentProvider for the given URI, or null if no content provider is found. * @hide */ @UnsupportedAppUsage Loading @@ -2423,31 +2429,11 @@ public abstract class ContentResolver implements ContentInterface { } final String auth = uri.getAuthority(); if (auth != null) { try { return acquireProvider(mContext, auth); } catch (AndroidTimeoutException ate) { Log.e(TAG, ate.getMessage()); return null; } } return null; } /** * Same as {@link #acquireProvider(String)}, except it throws an exception * if the content provider does not exist or times out on start. * * @hide */ @NonNull private IContentProvider acquireRequiredProvider(@NonNull String name) { IContentProvider provider = acquireProvider(mContext, name); if (provider == null) { throw new IllegalArgumentException("Unknown authority " + name); } return provider; } /** * Returns the content provider for the given content URI if the process * already has a reference on it. Loading Loading @@ -2476,12 +2462,7 @@ public abstract class ContentResolver implements ContentInterface { if (name == null) { return null; } try { return acquireProvider(mContext, name); } catch (AndroidTimeoutException ate) { Log.e(TAG, ate.getMessage()); return null; } } /** Loading Loading @@ -2555,19 +2536,6 @@ public abstract class ContentResolver implements ContentInterface { return null; } /** * Same as {@link #acquireContentProviderClient(String)}, except it throws an exception * if the content provider does not exist or times out on start. * * @hide */ private @NonNull ContentProviderClient acquireRequiredContentProviderClient( @NonNull String name) { Objects.requireNonNull(name, "name"); IContentProvider provider = acquireRequiredProvider(name); return new ContentProviderClient(this, provider, name, true); } /** * Like {@link #acquireContentProviderClient(Uri)}, but for use when you do * not trust the stability of the target content provider. This turns off Loading
core/java/android/os/AndroidTimeoutException.javadeleted 100644 → 0 +0 −33 Original line number Diff line number Diff line /* * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.os; import android.annotation.NonNull; import android.util.AndroidRuntimeException; /** * An exception that indicates that the request timed out, for example because * the requested content provider took too long to initialize. * * @hide */ public final class AndroidTimeoutException extends AndroidRuntimeException { public AndroidTimeoutException(@NonNull String message) { super(message); } }
core/java/android/os/Parcel.java +0 −7 Original line number Diff line number Diff line Loading @@ -269,8 +269,6 @@ public final class Parcel { private static final int EX_UNSUPPORTED_OPERATION = -7; private static final int EX_SERVICE_SPECIFIC = -8; private static final int EX_PARCELABLE = -9; private static final int EX_TIMEOUT = -10; /** @hide */ public static final int EX_HAS_NOTED_APPOPS_REPLY_HEADER = -127; // special; see below private static final int EX_HAS_STRICTMODE_REPLY_HEADER = -128; // special; see below Loading Loading @@ -2158,7 +2156,6 @@ public final class Parcel { * <li>{@link SecurityException} * <li>{@link UnsupportedOperationException} * <li>{@link NetworkOnMainThreadException} * <li>{@link AndroidTimeoutException} * </ul> * * @param e The Exception to be written. Loading Loading @@ -2228,8 +2225,6 @@ public final class Parcel { code = EX_UNSUPPORTED_OPERATION; } else if (e instanceof ServiceSpecificException) { code = EX_SERVICE_SPECIFIC; } else if (e instanceof AndroidTimeoutException) { code = EX_TIMEOUT; } return code; } Loading Loading @@ -2408,8 +2403,6 @@ public final class Parcel { return new UnsupportedOperationException(msg); case EX_SERVICE_SPECIFIC: return new ServiceSpecificException(readInt(), msg); case EX_TIMEOUT: return new AndroidTimeoutException(msg); default: return null; } Loading
core/tests/coretests/AndroidManifest.xml +0 −6 Original line number Diff line number Diff line Loading @@ -1511,12 +1511,6 @@ android:process=":SlowProvider"> </provider> <provider android:name="android.content.TimingOutProvider" android:authorities="android.content.TimingOutProvider" android:process=":TimingOutProvider"> </provider> <!-- Application components used for os tests --> <service android:name="android.os.MessengerService" Loading
core/tests/coretests/src/android/content/ContentResolverTest.java +0 −15 Original line number Diff line number Diff line Loading @@ -32,7 +32,6 @@ import android.graphics.Color; import android.graphics.ImageDecoder; import android.graphics.Paint; import android.net.Uri; import android.os.AndroidTimeoutException; import android.os.MemoryFile; import android.os.ParcelFileDescriptor; import android.os.SystemClock; Loading Loading @@ -226,20 +225,6 @@ public class ContentResolverTest { assertThat(end).isLessThan(start + 5000); } @Test public void testCall_timingOutProvider() { try { // This provider is running in a different process and is configured to time out // on start. We acquire it as "unstable" to avoid getting killed by the timeout in the // content provider process. mResolver.acquireUnstableContentProviderClient( Uri.parse("content://android.content.TimingOutProvider")); fail("AndroidTimeoutException expected"); } catch (AndroidTimeoutException t) { assertThat(t).hasMessageThat().contains("android.content.TimingOutProvider"); } } @Test public void testGetType_unknownProvider() { // This provider does not exist. Loading