diff options
author | Jeff Sharkey <jsharkey@android.com> | 2014-08-27 14:46:32 -0700 |
---|---|---|
committer | Jeff Sharkey <jsharkey@android.com> | 2014-08-27 15:13:57 -0700 |
commit | 5b836f29a3f56f9d13b6004417330c41ec0c18ae (patch) | |
tree | cc56edbc7a3d23f5891d0ebfd88dc1d694e8ae5f /core | |
parent | 3e97f9d48b6ef6b5ff5fa4e3c738138c0fe14edc (diff) | |
download | frameworks_base-5b836f29a3f56f9d13b6004417330c41ec0c18ae.zip frameworks_base-5b836f29a3f56f9d13b6004417330c41ec0c18ae.tar.gz frameworks_base-5b836f29a3f56f9d13b6004417330c41ec0c18ae.tar.bz2 |
Define EXTRA_SIZE for ContentProviders.
Also make Size and SizeF parcelable.
Bug: 17205016
Change-Id: Ide397b84864f6cad7f8d89e66b6c8697a3ad335b
Diffstat (limited to 'core')
-rw-r--r-- | core/java/android/content/ContentResolver.java | 12 | ||||
-rw-r--r-- | core/java/android/provider/DocumentsContract.java | 4 | ||||
-rw-r--r-- | core/java/android/provider/DocumentsProvider.java | 9 | ||||
-rw-r--r-- | core/java/android/util/Size.java | 37 | ||||
-rw-r--r-- | core/java/android/util/SizeF.java | 37 |
5 files changed, 85 insertions, 14 deletions
diff --git a/core/java/android/content/ContentResolver.java b/core/java/android/content/ContentResolver.java index b13792b..b2b48e8 100644 --- a/core/java/android/content/ContentResolver.java +++ b/core/java/android/content/ContentResolver.java @@ -27,6 +27,7 @@ import android.database.ContentObserver; import android.database.CrossProcessCursorWrapper; import android.database.Cursor; import android.database.IContentObserver; +import android.graphics.Point; import android.net.Uri; import android.os.Bundle; import android.os.CancellationSignal; @@ -161,6 +162,17 @@ public abstract class ContentResolver { public static final String SCHEME_FILE = "file"; /** + * An extra {@link Point} describing the optimal size for a requested image + * resource, in pixels. If a provider has multiple sizes of the image, it + * should return the image closest to this size. + * + * @see #openTypedAssetFileDescriptor(Uri, String, Bundle) + * @see #openTypedAssetFileDescriptor(Uri, String, Bundle, + * CancellationSignal) + */ + public static final String EXTRA_SIZE = "android.content.extra.SIZE"; + + /** * This is the Android platform's base MIME type for a content: URI * containing a Cursor of a single item. Applications should use this * as the base type along with their own sub-type of their content: URIs diff --git a/core/java/android/provider/DocumentsContract.java b/core/java/android/provider/DocumentsContract.java index 327fe4a..9a0858a 100644 --- a/core/java/android/provider/DocumentsContract.java +++ b/core/java/android/provider/DocumentsContract.java @@ -511,8 +511,6 @@ public final class DocumentsContract { public static final String METHOD_DELETE_DOCUMENT = "android:deleteDocument"; /** {@hide} */ - public static final String EXTRA_THUMBNAIL_SIZE = "thumbnail_size"; - /** {@hide} */ public static final String EXTRA_URI = "uri"; private static final String PATH_ROOT = "root"; @@ -819,7 +817,7 @@ public final class DocumentsContract { ContentProviderClient client, Uri documentUri, Point size, CancellationSignal signal) throws RemoteException, IOException { final Bundle openOpts = new Bundle(); - openOpts.putParcelable(DocumentsContract.EXTRA_THUMBNAIL_SIZE, size); + openOpts.putParcelable(ContentResolver.EXTRA_SIZE, size); AssetFileDescriptor afd = null; Bitmap bitmap = null; diff --git a/core/java/android/provider/DocumentsProvider.java b/core/java/android/provider/DocumentsProvider.java index 021fff4..270d786 100644 --- a/core/java/android/provider/DocumentsProvider.java +++ b/core/java/android/provider/DocumentsProvider.java @@ -16,7 +16,6 @@ package android.provider; -import static android.provider.DocumentsContract.EXTRA_THUMBNAIL_SIZE; import static android.provider.DocumentsContract.METHOD_CREATE_DOCUMENT; import static android.provider.DocumentsContract.METHOD_DELETE_DOCUMENT; import static android.provider.DocumentsContract.METHOD_RENAME_DOCUMENT; @@ -763,8 +762,8 @@ public abstract class DocumentsProvider extends ContentProvider { public final AssetFileDescriptor openTypedAssetFile(Uri uri, String mimeTypeFilter, Bundle opts) throws FileNotFoundException { enforceTree(uri); - if (opts != null && opts.containsKey(EXTRA_THUMBNAIL_SIZE)) { - final Point sizeHint = opts.getParcelable(EXTRA_THUMBNAIL_SIZE); + if (opts != null && opts.containsKey(ContentResolver.EXTRA_SIZE)) { + final Point sizeHint = opts.getParcelable(ContentResolver.EXTRA_SIZE); return openDocumentThumbnail(getDocumentId(uri), sizeHint, null); } else { return super.openTypedAssetFile(uri, mimeTypeFilter, opts); @@ -781,8 +780,8 @@ public abstract class DocumentsProvider extends ContentProvider { Uri uri, String mimeTypeFilter, Bundle opts, CancellationSignal signal) throws FileNotFoundException { enforceTree(uri); - if (opts != null && opts.containsKey(EXTRA_THUMBNAIL_SIZE)) { - final Point sizeHint = opts.getParcelable(EXTRA_THUMBNAIL_SIZE); + if (opts != null && opts.containsKey(ContentResolver.EXTRA_SIZE)) { + final Point sizeHint = opts.getParcelable(ContentResolver.EXTRA_SIZE); return openDocumentThumbnail(getDocumentId(uri), sizeHint, signal); } else { return super.openTypedAssetFile(uri, mimeTypeFilter, opts, signal); diff --git a/core/java/android/util/Size.java b/core/java/android/util/Size.java index d58f778..6424344 100644 --- a/core/java/android/util/Size.java +++ b/core/java/android/util/Size.java @@ -16,12 +16,15 @@ package android.util; -import static com.android.internal.util.Preconditions.*; +import static com.android.internal.util.Preconditions.checkNotNull; + +import android.os.Parcel; +import android.os.Parcelable; /** * Immutable class for describing width and height dimensions in pixels. */ -public final class Size { +public final class Size implements Parcelable { /** * Create a new immutable Size instance. * @@ -33,6 +36,11 @@ public final class Size { mHeight = height; } + private Size(Parcel in) { + mWidth = in.readInt(); + mHeight = in.readInt(); + } + /** * Get the width of the size (in pixels). * @return width @@ -147,6 +155,29 @@ public final class Size { return mHeight ^ ((mWidth << (Integer.SIZE / 2)) | (mWidth >>> (Integer.SIZE / 2))); } + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel out, int flags) { + out.writeInt(mWidth); + out.writeInt(mHeight); + } + + public static final Parcelable.Creator<Size> CREATOR = new Parcelable.Creator<Size>() { + @Override + public Size createFromParcel(Parcel in) { + return new Size(in); + } + + @Override + public Size[] newArray(int size) { + return new Size[size]; + } + }; + private final int mWidth; private final int mHeight; -}; +} diff --git a/core/java/android/util/SizeF.java b/core/java/android/util/SizeF.java index 0a8b4ed..88bb439 100644 --- a/core/java/android/util/SizeF.java +++ b/core/java/android/util/SizeF.java @@ -16,7 +16,10 @@ package android.util; -import static com.android.internal.util.Preconditions.*; +import static com.android.internal.util.Preconditions.checkArgumentFinite; + +import android.os.Parcel; +import android.os.Parcelable; /** * Immutable class for describing width and height dimensions in some arbitrary @@ -25,7 +28,7 @@ import static com.android.internal.util.Preconditions.*; * Width and height are finite values stored as a floating point representation. * </p> */ -public final class SizeF { +public final class SizeF implements Parcelable { /** * Create a new immutable SizeF instance. * @@ -43,6 +46,11 @@ public final class SizeF { mHeight = checkArgumentFinite(height, "height"); } + private SizeF(Parcel in) { + mWidth = in.readFloat(); + mHeight = in.readFloat(); + } + /** * Get the width of the size (as an arbitrary unit). * @return width @@ -103,6 +111,29 @@ public final class SizeF { return Float.floatToIntBits(mWidth) ^ Float.floatToIntBits(mHeight); } + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel out, int flags) { + out.writeFloat(mWidth); + out.writeFloat(mHeight); + } + + public static final Parcelable.Creator<SizeF> CREATOR = new Parcelable.Creator<SizeF>() { + @Override + public SizeF createFromParcel(Parcel in) { + return new SizeF(in); + } + + @Override + public SizeF[] newArray(int size) { + return new SizeF[size]; + } + }; + private final float mWidth; private final float mHeight; -}; +} |