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