Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 34e3e683 authored by Jeff Sharkey's avatar Jeff Sharkey Committed by Android (Google) Code Review
Browse files

Merge "Mark deprecated APIs, support column greylisting."

parents e4fa629d 7049e651
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -36594,9 +36594,9 @@ package android.provider {
    field public static final java.lang.String IS_PRIVATE = "isprivate";
    field public static final java.lang.String LATITUDE = "latitude";
    field public static final java.lang.String LONGITUDE = "longitude";
    field public static final java.lang.String MINI_THUMB_MAGIC = "mini_thumb_magic";
    field public static final deprecated java.lang.String MINI_THUMB_MAGIC = "mini_thumb_magic";
    field public static final java.lang.String ORIENTATION = "orientation";
    field public static final java.lang.String PICASA_ID = "picasa_id";
    field public static final deprecated java.lang.String PICASA_ID = "picasa_id";
  }
  public static final class MediaStore.Images.Media implements android.provider.MediaStore.Images.ImageColumns {
@@ -36699,7 +36699,7 @@ package android.provider {
    field public static final java.lang.String LANGUAGE = "language";
    field public static final java.lang.String LATITUDE = "latitude";
    field public static final java.lang.String LONGITUDE = "longitude";
    field public static final java.lang.String MINI_THUMB_MAGIC = "mini_thumb_magic";
    field public static final deprecated java.lang.String MINI_THUMB_MAGIC = "mini_thumb_magic";
    field public static final java.lang.String RESOLUTION = "resolution";
    field public static final java.lang.String TAGS = "tags";
  }
+32 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import libcore.util.EmptyArray;

import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
@@ -50,6 +51,8 @@ public class SQLiteQueryBuilder {
            Pattern.compile("\\s*\\d+\\s*(,\\s*\\d+\\s*)?");

    private Map<String, String> mProjectionMap = null;
    private List<Pattern> mProjectionGreylist = null;

    @UnsupportedAppUsage
    private String mTables = "";
    @UnsupportedAppUsage
@@ -163,6 +166,17 @@ public class SQLiteQueryBuilder {
        mProjectionMap = columnMap;
    }

    /**
     * Sets a projection greylist of columns that will be allowed through, even
     * when {@link #setStrict(boolean)} is enabled. This provides a way for
     * abusive custom columns like {@code COUNT(*)} to continue working.
     *
     * @hide
     */
    public void setProjectionGreylist(List<Pattern> projectionGreylist) {
        mProjectionGreylist = projectionGreylist;
    }

    /**
     * Sets the cursor factory to be used for the query.  You can use
     * one factory for all queries on a database but it is normally
@@ -809,6 +823,24 @@ public class SQLiteQueryBuilder {
                        continue;
                    }

                    // If greylist is configured, we might be willing to let
                    // this custom column bypass our strict checks.
                    if (mProjectionGreylist != null) {
                        boolean match = false;
                        for (Pattern p : mProjectionGreylist) {
                            if (p.matcher(userColumn).matches()) {
                                match = true;
                                break;
                            }
                        }

                        if (match) {
                            Log.w(TAG, "Allowing abusive custom column: " + userColumn);
                            projection[i] = userColumn;
                            continue;
                        }
                    }

                    throw new IllegalArgumentException("Invalid column "
                            + projectionIn[i]);
                }
+14 −0
Original line number Diff line number Diff line
@@ -717,7 +717,11 @@ public final class MediaStore {
            /**
             * The picasa id of the image
             * <P>Type: TEXT</P>
             *
             * @deprecated this value was only relevant for images hosted on
             *             Picasa, which are no longer supported.
             */
            @Deprecated
            public static final String PICASA_ID = "picasa_id";

            /**
@@ -755,7 +759,12 @@ public final class MediaStore {
            /**
             * The mini thumb id.
             * <P>Type: INTEGER</P>
             *
             * @deprecated all thumbnails should be obtained via
             *             {@link Images.Thumbnails#getThumbnail}, as this
             *             value is no longer supported.
             */
            @Deprecated
            public static final String MINI_THUMB_MAGIC = "mini_thumb_magic";

            /**
@@ -1947,7 +1956,12 @@ public final class MediaStore {
            /**
             * The mini thumb id.
             * <P>Type: INTEGER</P>
             *
             * @deprecated all thumbnails should be obtained via
             *             {@link Images.Thumbnails#getThumbnail}, as this
             *             value is no longer supported.
             */
            @Deprecated
            public static final String MINI_THUMB_MAGIC = "mini_thumb_magic";

            /**
+9 −0
Original line number Diff line number Diff line
@@ -18,9 +18,12 @@ package android.media;

import android.annotation.UnsupportedAppUsage;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.util.Log;

import dalvik.system.VMRuntime;

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
@@ -42,7 +45,10 @@ import java.util.Hashtable;
 *
 * @hide This file is shared between MediaStore and MediaProvider and should remained internal use
 *       only.
 * @deprecated thumbnails are now maintained in separate files, and this file
 *             format is no longer used.
 */
@Deprecated
public class MiniThumbFile {
    private static final String TAG = "MiniThumbFile";
    private static final int MINI_THUMB_DATA_FILE_VERSION = 4;
@@ -69,6 +75,9 @@ public class MiniThumbFile {
    }

    public static synchronized MiniThumbFile instance(Uri uri) {
        if (VMRuntime.getRuntime().getTargetSdkVersion() >= Build.VERSION_CODES.Q) {
            throw new UnsupportedOperationException();
        }
        String type = uri.getPathSegments().get(1);
        MiniThumbFile file = sThumbFiles.get(type);
        // Log.v(TAG, "get minithumbfile for type: "+type);