• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2024 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.provider;
18 
19 import android.annotation.NonNull;
20 import android.annotation.Nullable;
21 import android.annotation.SuppressLint;
22 import android.net.Uri;
23 import android.os.Bundle;
24 import android.os.Parcel;
25 import android.os.Parcelable;
26 
27 /**
28  * A request made from {@link MediaStore} to {@link com.android.providers.media.MediaProvider}
29  * to open {@link android.content.res.AssetFileDescriptor}
30  *
31  * @hide
32  */
33 public final class OpenAssetFileRequest implements Parcelable {
34 
35     private final Uri mUri;
36     private final String mMimeType;
37     private final Bundle mOpts;
38     private final IOpenAssetFileCallback mCallback;
39     private final IMPCancellationSignal mCancellationSignal;
40 
OpenAssetFileRequest(@onNull Uri uri, @NonNull String mimeType, @Nullable Bundle opts, @NonNull IOpenAssetFileCallback callback, @Nullable IMPCancellationSignal cancellationSignal)41     public OpenAssetFileRequest(@NonNull Uri uri, @NonNull String mimeType,
42             @Nullable Bundle opts, @NonNull IOpenAssetFileCallback callback,
43             @Nullable IMPCancellationSignal cancellationSignal) {
44         mUri = uri;
45         mMimeType = mimeType;
46         mOpts = opts;
47         mCallback = callback;
48         mCancellationSignal = cancellationSignal;
49     }
50 
51     @NonNull
getUri()52     public Uri getUri() {
53         return mUri;
54     }
55 
56     @NonNull
getMimeType()57     public String getMimeType() {
58         return mMimeType;
59     }
60 
61     @Nullable
getOpts()62     public Bundle getOpts() {
63         return mOpts;
64     }
65 
66     @NonNull
getCallback()67     public IOpenAssetFileCallback getCallback() {
68         return mCallback;
69     }
70 
71     @Nullable
getCancellationSignal()72     public IMPCancellationSignal getCancellationSignal() {
73         return mCancellationSignal;
74     }
75 
76     @SuppressLint("ParcelClassLoader")
OpenAssetFileRequest(Parcel p)77     private OpenAssetFileRequest(Parcel p) {
78         mUri = Uri.CREATOR.createFromParcel(p);
79         mMimeType = p.readString();
80         mOpts = p.readBundle();
81         mCallback = IOpenAssetFileCallback.Stub.asInterface(p.readStrongBinder());
82         mCancellationSignal = IMPCancellationSignal.Stub.asInterface(p.readStrongBinder());
83     }
84 
85 
86     @Override
describeContents()87     public int describeContents() {
88         return 0;
89     }
90 
91     @Override
writeToParcel(@onNull Parcel dest, int flags)92     public void writeToParcel(@NonNull Parcel dest, int flags) {
93         mUri.writeToParcel(dest, flags);
94         dest.writeString(mMimeType);
95         dest.writeBundle(mOpts);
96         dest.writeStrongBinder(mCallback.asBinder());
97         dest.writeStrongBinder(mCancellationSignal != null ? mCancellationSignal.asBinder() : null);
98     }
99 
100     @NonNull
101     public static final Creator<OpenAssetFileRequest> CREATOR =
102             new Creator<OpenAssetFileRequest>() {
103                 @Override
104                 public OpenAssetFileRequest createFromParcel(Parcel source) {
105                     return new OpenAssetFileRequest(source);
106                 }
107 
108                 @Override
109                 public OpenAssetFileRequest[] newArray(int size) {
110                     return new OpenAssetFileRequest[size];
111                 }
112             };
113 }
114