14dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt/*
24dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt * Copyright (C) 2016 The Android Open Source Project
34dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt *
44dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt * Licensed under the Apache License, Version 2.0 (the "License");
54dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt * you may not use this file except in compliance with the License.
64dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt * You may obtain a copy of the License at
74dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt *
84dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt *      http://www.apache.org/licenses/LICENSE-2.0
94dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt *
104dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt * Unless required by applicable law or agreed to in writing, software
114dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt * distributed under the License is distributed on an "AS IS" BASIS,
124dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt * See the License for the specific language governing permissions and
144dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt * limitations under the License.
154dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt */
164dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt
174dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwaltpackage android.telephony.mbms;
184dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt
19ff6f9862e5dd1b2fd825ed69dc11918a0565fd33Hall Liuimport android.annotation.SystemApi;
2063c5fd60ac647d3a8c38cd783803290e13319d47Hall Liuimport android.annotation.TestApi;
214dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwaltimport android.net.Uri;
224dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwaltimport android.os.Parcel;
234dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwaltimport android.os.Parcelable;
244dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt
2563c5fd60ac647d3a8c38cd783803290e13319d47Hall Liuimport java.util.Objects;
2663c5fd60ac647d3a8c38cd783803290e13319d47Hall Liu
274dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt/**
28ff6f9862e5dd1b2fd825ed69dc11918a0565fd33Hall Liu * Describes a single file that is available over MBMS.
294dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt */
3039605add8994d6114736c2e98fa8314209215670Hall Liupublic final class FileInfo implements Parcelable {
314dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt
32fcbf24075dca399bbe94979aef770b4aef705db4Hall Liu    private final Uri uri;
334dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt
34fcbf24075dca399bbe94979aef770b4aef705db4Hall Liu    private final String mimeType;
354dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt
364dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt    public static final Parcelable.Creator<FileInfo> CREATOR =
374dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt            new Parcelable.Creator<FileInfo>() {
384dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt        @Override
394dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt        public FileInfo createFromParcel(Parcel source) {
404dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt            return new FileInfo(source);
414dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt        }
424dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt
434dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt        @Override
444dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt        public FileInfo[] newArray(int size) {
454dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt            return new FileInfo[size];
464dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt        }
474dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt    };
484dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt
492398921320c07e9580dbd0bc0e39302d3e0dc8e3Hall Liu    /**
502398921320c07e9580dbd0bc0e39302d3e0dc8e3Hall Liu     * @hide
512398921320c07e9580dbd0bc0e39302d3e0dc8e3Hall Liu     */
5239605add8994d6114736c2e98fa8314209215670Hall Liu    @SystemApi
5363c5fd60ac647d3a8c38cd783803290e13319d47Hall Liu    @TestApi
548e47fe35c8d08fcf98c6d74aaf059df87369ff55Hall Liu    public FileInfo(Uri uri, String mimeType) {
55fcbf24075dca399bbe94979aef770b4aef705db4Hall Liu        this.uri = uri;
56fcbf24075dca399bbe94979aef770b4aef705db4Hall Liu        this.mimeType = mimeType;
57fcbf24075dca399bbe94979aef770b4aef705db4Hall Liu    }
58fcbf24075dca399bbe94979aef770b4aef705db4Hall Liu
594dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt    private FileInfo(Parcel in) {
604dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt        uri = in.readParcelable(null);
614dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt        mimeType = in.readString();
624dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt    }
634dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt
644dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt    @Override
654dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt    public void writeToParcel(Parcel dest, int flags) {
664dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt        dest.writeParcelable(uri, flags);
674dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt        dest.writeString(mimeType);
684dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt    }
694dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt
704dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt    @Override
714dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt    public int describeContents() {
724dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt        return 0;
734dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt    }
74fcbf24075dca399bbe94979aef770b4aef705db4Hall Liu
75ff6f9862e5dd1b2fd825ed69dc11918a0565fd33Hall Liu    /**
76ff6f9862e5dd1b2fd825ed69dc11918a0565fd33Hall Liu     * @return The URI in the carrier's infrastructure which points to this file. Apps should
77ff6f9862e5dd1b2fd825ed69dc11918a0565fd33Hall Liu     * negotiate the contents of this URI separately with the carrier.
78ff6f9862e5dd1b2fd825ed69dc11918a0565fd33Hall Liu     */
79fcbf24075dca399bbe94979aef770b4aef705db4Hall Liu    public Uri getUri() {
80fcbf24075dca399bbe94979aef770b4aef705db4Hall Liu        return uri;
81fcbf24075dca399bbe94979aef770b4aef705db4Hall Liu    }
82fcbf24075dca399bbe94979aef770b4aef705db4Hall Liu
83ff6f9862e5dd1b2fd825ed69dc11918a0565fd33Hall Liu    /**
84ff6f9862e5dd1b2fd825ed69dc11918a0565fd33Hall Liu     * @return The MIME type of the file.
85ff6f9862e5dd1b2fd825ed69dc11918a0565fd33Hall Liu     */
86fcbf24075dca399bbe94979aef770b4aef705db4Hall Liu    public String getMimeType() {
87fcbf24075dca399bbe94979aef770b4aef705db4Hall Liu        return mimeType;
88fcbf24075dca399bbe94979aef770b4aef705db4Hall Liu    }
8963c5fd60ac647d3a8c38cd783803290e13319d47Hall Liu
9063c5fd60ac647d3a8c38cd783803290e13319d47Hall Liu    @Override
9163c5fd60ac647d3a8c38cd783803290e13319d47Hall Liu    public boolean equals(Object o) {
9263c5fd60ac647d3a8c38cd783803290e13319d47Hall Liu        if (this == o) {
9363c5fd60ac647d3a8c38cd783803290e13319d47Hall Liu            return true;
9463c5fd60ac647d3a8c38cd783803290e13319d47Hall Liu        }
9563c5fd60ac647d3a8c38cd783803290e13319d47Hall Liu        if (o == null || getClass() != o.getClass()) {
9663c5fd60ac647d3a8c38cd783803290e13319d47Hall Liu            return false;
9763c5fd60ac647d3a8c38cd783803290e13319d47Hall Liu        }
9863c5fd60ac647d3a8c38cd783803290e13319d47Hall Liu
9963c5fd60ac647d3a8c38cd783803290e13319d47Hall Liu        FileInfo fileInfo = (FileInfo) o;
10063c5fd60ac647d3a8c38cd783803290e13319d47Hall Liu        return Objects.equals(uri, fileInfo.uri) &&
10163c5fd60ac647d3a8c38cd783803290e13319d47Hall Liu                Objects.equals(mimeType, fileInfo.mimeType);
10263c5fd60ac647d3a8c38cd783803290e13319d47Hall Liu    }
10363c5fd60ac647d3a8c38cd783803290e13319d47Hall Liu
10463c5fd60ac647d3a8c38cd783803290e13319d47Hall Liu    @Override
10563c5fd60ac647d3a8c38cd783803290e13319d47Hall Liu    public int hashCode() {
10663c5fd60ac647d3a8c38cd783803290e13319d47Hall Liu        return Objects.hash(uri, mimeType);
10763c5fd60ac647d3a8c38cd783803290e13319d47Hall Liu    }
1084dded7a1b5a7ff6ed7402a9c2c512e4751421d7fRobert Greenwalt}
109