102c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root/*
202c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root * Copyright (C) 2010 The Android Open Source Project
302c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root *
402c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root * Licensed under the Apache License, Version 2.0 (the "License");
502c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root * you may not use this file except in compliance with the License.
602c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root * You may obtain a copy of the License at
702c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root *
802c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root *      http://www.apache.org/licenses/LICENSE-2.0
902c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root *
1002c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root * Unless required by applicable law or agreed to in writing, software
1102c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root * distributed under the License is distributed on an "AS IS" BASIS,
1202c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1302c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root * See the License for the specific language governing permissions and
1402c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root * limitations under the License.
1502c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root */
1602c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root
1702c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Rootpackage android.content.res;
1802c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root
1902c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Rootimport android.os.Parcel;
2002c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Rootimport android.os.Parcelable;
2102c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root
2202c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root/**
2305105f7abe02b2dff91d6260b3628c8b97816babKenny Root * Basic information about a Opaque Binary Blob (OBB) that reflects the info
2405105f7abe02b2dff91d6260b3628c8b97816babKenny Root * from the footer on the OBB file. This information may be manipulated by a
2505105f7abe02b2dff91d6260b3628c8b97816babKenny Root * developer with the <code>obbtool</code> program in the Android SDK.
2602c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root */
2702c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Rootpublic class ObbInfo implements Parcelable {
2802ca31fbae9f35dd30f79de6927fae11b549391aKenny Root    /** Flag noting that this OBB is an overlay patch for a base OBB. */
2902ca31fbae9f35dd30f79de6927fae11b549391aKenny Root    public static final int OBB_OVERLAY = 1 << 0;
3002ca31fbae9f35dd30f79de6927fae11b549391aKenny Root
3102c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root    /**
3238cf8867a8d3e8d5159abd0bd0e6a3b0b8348b94Kenny Root     * The canonical filename of the OBB.
3338cf8867a8d3e8d5159abd0bd0e6a3b0b8348b94Kenny Root     */
3438cf8867a8d3e8d5159abd0bd0e6a3b0b8348b94Kenny Root    public String filename;
3538cf8867a8d3e8d5159abd0bd0e6a3b0b8348b94Kenny Root
3638cf8867a8d3e8d5159abd0bd0e6a3b0b8348b94Kenny Root    /**
3702c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root     * The name of the package to which the OBB file belongs.
3802c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root     */
3902c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root    public String packageName;
4002c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root
4102c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root    /**
4202c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root     * The version of the package to which the OBB file belongs.
4302c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root     */
4402c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root    public int version;
4502c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root
4602ca31fbae9f35dd30f79de6927fae11b549391aKenny Root    /**
4702ca31fbae9f35dd30f79de6927fae11b549391aKenny Root     * The flags relating to the OBB.
4802ca31fbae9f35dd30f79de6927fae11b549391aKenny Root     */
4902ca31fbae9f35dd30f79de6927fae11b549391aKenny Root    public int flags;
5002ca31fbae9f35dd30f79de6927fae11b549391aKenny Root
513b1abba6bbc895d63da3e82e9b158c01bd12edddKenny Root    /**
523b1abba6bbc895d63da3e82e9b158c01bd12edddKenny Root     * The salt for the encryption algorithm.
533b1abba6bbc895d63da3e82e9b158c01bd12edddKenny Root     *
543b1abba6bbc895d63da3e82e9b158c01bd12edddKenny Root     * @hide
553b1abba6bbc895d63da3e82e9b158c01bd12edddKenny Root     */
563b1abba6bbc895d63da3e82e9b158c01bd12edddKenny Root    public byte[] salt;
573b1abba6bbc895d63da3e82e9b158c01bd12edddKenny Root
5805105f7abe02b2dff91d6260b3628c8b97816babKenny Root    // Only allow things in this package to instantiate.
5905105f7abe02b2dff91d6260b3628c8b97816babKenny Root    /* package */ ObbInfo() {
6002c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root    }
6102c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root
6202c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root    public String toString() {
6302ca31fbae9f35dd30f79de6927fae11b549391aKenny Root        StringBuilder sb = new StringBuilder();
6402ca31fbae9f35dd30f79de6927fae11b549391aKenny Root        sb.append("ObbInfo{");
6502ca31fbae9f35dd30f79de6927fae11b549391aKenny Root        sb.append(Integer.toHexString(System.identityHashCode(this)));
6602ca31fbae9f35dd30f79de6927fae11b549391aKenny Root        sb.append(" packageName=");
6702ca31fbae9f35dd30f79de6927fae11b549391aKenny Root        sb.append(packageName);
6802ca31fbae9f35dd30f79de6927fae11b549391aKenny Root        sb.append(",version=");
6902ca31fbae9f35dd30f79de6927fae11b549391aKenny Root        sb.append(version);
7002ca31fbae9f35dd30f79de6927fae11b549391aKenny Root        sb.append(",flags=");
7102ca31fbae9f35dd30f79de6927fae11b549391aKenny Root        sb.append(flags);
7202ca31fbae9f35dd30f79de6927fae11b549391aKenny Root        sb.append('}');
7302ca31fbae9f35dd30f79de6927fae11b549391aKenny Root        return sb.toString();
7402c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root    }
7502c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root
7602c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root    public int describeContents() {
7702c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root        return 0;
7802c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root    }
7902c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root
8002c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root    public void writeToParcel(Parcel dest, int parcelableFlags) {
8138cf8867a8d3e8d5159abd0bd0e6a3b0b8348b94Kenny Root        dest.writeString(filename);
8202c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root        dest.writeString(packageName);
8302c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root        dest.writeInt(version);
8402ca31fbae9f35dd30f79de6927fae11b549391aKenny Root        dest.writeInt(flags);
853b1abba6bbc895d63da3e82e9b158c01bd12edddKenny Root        dest.writeByteArray(salt);
8602c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root    }
8702c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root
8802c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root    public static final Parcelable.Creator<ObbInfo> CREATOR
8902c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root            = new Parcelable.Creator<ObbInfo>() {
9002c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root        public ObbInfo createFromParcel(Parcel source) {
9102c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root            return new ObbInfo(source);
9202c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root        }
9302c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root
9402c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root        public ObbInfo[] newArray(int size) {
9502c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root            return new ObbInfo[size];
9602c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root        }
9702c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root    };
9802c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root
9902c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root    private ObbInfo(Parcel source) {
10038cf8867a8d3e8d5159abd0bd0e6a3b0b8348b94Kenny Root        filename = source.readString();
10102c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root        packageName = source.readString();
10202c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root        version = source.readInt();
10302ca31fbae9f35dd30f79de6927fae11b549391aKenny Root        flags = source.readInt();
1043b1abba6bbc895d63da3e82e9b158c01bd12edddKenny Root        salt = source.createByteArray();
10502c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root    }
10602c8730c1bf19daf48bec8c6995df676a00a73b1Kenny Root}
107