/*
* Copyright (C) 2008 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.content.pm;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.UserHandle;
/**
* implementation of PackageStats associated with a
* application package.
*/
public class PackageStats implements Parcelable {
/** Name of the package to which this stats applies. */
public String packageName;
/** @hide */
public int userHandle;
/** Size of the code (e.g., APK) */
public long codeSize;
/**
* Size of the internal data size for the application. (e.g.,
* /data/data/<app>)
*/
public long dataSize;
/** Size of cache used by the application. (e.g., /data/data/<app>/cache) */
public long cacheSize;
/**
* Size of the secure container on external storage holding the
* application's code.
*/
public long externalCodeSize;
/**
* Size of the external data used by the application (e.g.,
* <sdcard>/Android/data/<app>)
*/
public long externalDataSize;
/**
* Size of the external cache used by the application (i.e., on the SD
* card). If this is a subdirectory of the data directory, this size will be
* subtracted out of the external data size.
*/
public long externalCacheSize;
/** Size of the external media size used by the application. */
public long externalMediaSize;
/** Size of the package's OBBs placed on external media. */
public long externalObbSize;
public static final Parcelable.Creator<PackageStats> CREATOR
= new Parcelable.Creator<PackageStats>() {
public PackageStats createFromParcel(Parcel in) {
return new PackageStats(in);
}
public PackageStats[] newArray(int size) {
return new PackageStats[size];
}
};
public String toString() {
final StringBuilder sb = new StringBuilder("PackageStats{");
sb.append(Integer.toHexString(System.identityHashCode(this)));
sb.append(" ");
sb.append(packageName);
if (codeSize != 0) {
sb.append(" code=");
sb.append(codeSize);
}
if (dataSize != 0) {
sb.append(" data=");
sb.append(dataSize);
}
if (cacheSize != 0) {
sb.append(" cache=");
sb.append(cacheSize);
}
if (externalCodeSize != 0) {
sb.append(" extCode=");
sb.append(externalCodeSize);
}
if (externalDataSize != 0) {
sb.append(" extData=");
sb.append(externalDataSize);
}
if (externalCacheSize != 0) {
sb.append(" extCache=");
sb.append(externalCacheSize);
}
if (externalMediaSize != 0) {
sb.append(" media=");
sb.append(externalMediaSize);
}
if (externalObbSize != 0) {
sb.append(" obb=");
sb.append(externalObbSize);
}
sb.append("}");
return sb.toString();
}
public PackageStats(String pkgName) {
packageName = pkgName;
userHandle = UserHandle.myUserId();
}
/** @hide */
public PackageStats(String pkgName, int userHandle) {
this.packageName = pkgName;
this.userHandle = userHandle;
}
public PackageStats(Parcel source) {
packageName = source.readString();
userHandle = source.readInt();
codeSize = source.readLong();
dataSize = source.readLong();
cacheSize = source.readLong();
externalCodeSize = source.readLong();
externalDataSize = source.readLong();
externalCacheSize = source.readLong();
externalMediaSize = source.readLong();
externalObbSize = source.readLong();
}
public PackageStats(PackageStats pStats) {
packageName = pStats.packageName;
userHandle = pStats.userHandle;
codeSize = pStats.codeSize;
dataSize = pStats.dataSize;
cacheSize = pStats.cacheSize;
externalCodeSize = pStats.externalCodeSize;
externalDataSize = pStats.externalDataSize;
externalCacheSize = pStats.externalCacheSize;
externalMediaSize = pStats.externalMediaSize;
externalObbSize = pStats.externalObbSize;
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel dest, int parcelableFlags){
dest.writeString(packageName);
dest.writeInt(userHandle);
dest.writeLong(codeSize);
dest.writeLong(dataSize);
dest.writeLong(cacheSize);
dest.writeLong(externalCodeSize);
dest.writeLong(externalDataSize);
dest.writeLong(externalCacheSize);
dest.writeLong(externalMediaSize);
dest.writeLong(externalObbSize);
}
}