/* * Copyright (C) 2017 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.telephony.mbms; import android.content.Intent; import android.net.Uri; import android.os.Parcel; import android.os.Parcelable; import java.net.URISyntaxException; /** * A Parcelable class describing a pending Cell-Broadcast download request * @hide */ public class DownloadRequest implements Parcelable { /** @hide */ public static class Builder { private int id; private FileServiceInfo serviceInfo; private Uri source; private Uri dest; private int sub; private String appIntent; public Builder setId(int id) { this.id = id; return this; } public Builder setServiceInfo(FileServiceInfo serviceInfo) { this.serviceInfo = serviceInfo; return this; } public Builder setSource(Uri source) { this.source = source; return this; } public Builder setDest(Uri dest) { this.dest = dest; return this; } public Builder setSub(int sub) { this.sub = sub; return this; } public Builder setAppIntent(Intent intent) { this.appIntent = intent.toUri(0); return this; } public DownloadRequest build() { return new DownloadRequest(id, serviceInfo, source, dest, sub, appIntent); } } private final int downloadId; private final FileServiceInfo fileServiceInfo; private final Uri sourceUri; private final Uri destinationUri; private final int subId; private final String serializedResultIntentForApp; private DownloadRequest(int id, FileServiceInfo serviceInfo, Uri source, Uri dest, int sub, String appIntent) { downloadId = id; fileServiceInfo = serviceInfo; sourceUri = source; destinationUri = dest; subId = sub; serializedResultIntentForApp = appIntent; } public static DownloadRequest copy(DownloadRequest other) { return new DownloadRequest(other); } private DownloadRequest(DownloadRequest dr) { downloadId = dr.downloadId; fileServiceInfo = dr.fileServiceInfo; sourceUri = dr.sourceUri; destinationUri = dr.destinationUri; subId = dr.subId; serializedResultIntentForApp = dr.serializedResultIntentForApp; } private DownloadRequest(Parcel in) { downloadId = in.readInt(); fileServiceInfo = in.readParcelable(getClass().getClassLoader()); sourceUri = in.readParcelable(getClass().getClassLoader()); destinationUri = in.readParcelable(getClass().getClassLoader()); subId = in.readInt(); serializedResultIntentForApp = in.readString(); } public int describeContents() { return 0; } public void writeToParcel(Parcel out, int flags) { out.writeInt(downloadId); out.writeParcelable(fileServiceInfo, flags); out.writeParcelable(sourceUri, flags); out.writeParcelable(destinationUri, flags); out.writeInt(subId); out.writeString(serializedResultIntentForApp); } public int getDownloadId() { return downloadId; } public FileServiceInfo getFileServiceInfo() { return fileServiceInfo; } public Uri getSourceUri() { return sourceUri; } public Uri getDestinationUri() { return destinationUri; } public int getSubId() { return subId; } public Intent getIntentForApp() { try { return Intent.parseUri(serializedResultIntentForApp, 0); } catch (URISyntaxException e) { return null; } } public static final Parcelable.Creator<DownloadRequest> CREATOR = new Parcelable.Creator<DownloadRequest>() { public DownloadRequest createFromParcel(Parcel in) { return new DownloadRequest(in); } public DownloadRequest[] newArray(int size) { return new DownloadRequest[size]; } }; }