summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2014-08-27 14:46:32 -0700
committerJeff Sharkey <jsharkey@android.com>2014-08-27 15:13:57 -0700
commit5b836f29a3f56f9d13b6004417330c41ec0c18ae (patch)
treecc56edbc7a3d23f5891d0ebfd88dc1d694e8ae5f /core
parent3e97f9d48b6ef6b5ff5fa4e3c738138c0fe14edc (diff)
downloadframeworks_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.java12
-rw-r--r--core/java/android/provider/DocumentsContract.java4
-rw-r--r--core/java/android/provider/DocumentsProvider.java9
-rw-r--r--core/java/android/util/Size.java37
-rw-r--r--core/java/android/util/SizeF.java37
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;
-};
+}