115a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root/* 215a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Copyright (C) 2008 The Android Open Source Project 315a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 415a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Licensed under the Apache License, Version 2.0 (the "License"); 515a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * you may not use this file except in compliance with the License. 615a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * You may obtain a copy of the License at 715a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 815a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * http://www.apache.org/licenses/LICENSE-2.0 915a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 1015a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Unless required by applicable law or agreed to in writing, software 1115a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * distributed under the License is distributed on an "AS IS" BASIS, 1215a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1315a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * See the License for the specific language governing permissions and 1415a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * limitations under the License. 1515a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root */ 1615a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.content.pm; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcel; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcelable; 210c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackbornimport android.os.UserHandle; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * implementation of PackageStats associated with a 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * application package. 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class PackageStats implements Parcelable { 28366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root /** Name of the package to which this stats applies. */ 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String packageName; 30366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root 310c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn /** @hide */ 320c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn public int userHandle; 330c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn 34366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root /** Size of the code (e.g., APK) */ 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public long codeSize; 36366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root 37366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root /** 38366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root * Size of the internal data size for the application. (e.g., 39366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root * /data/data/<app>) 40366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root */ 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public long dataSize; 42366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root 43366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root /** Size of cache used by the application. (e.g., /data/data/<app>/cache) */ 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public long cacheSize; 45366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root 46366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root /** 47292f8bc9d1b790ab975a87a842c7fabc908b97e0Dianne Hackborn * Size of the secure container on external storage holding the 48292f8bc9d1b790ab975a87a842c7fabc908b97e0Dianne Hackborn * application's code. 49292f8bc9d1b790ab975a87a842c7fabc908b97e0Dianne Hackborn */ 50292f8bc9d1b790ab975a87a842c7fabc908b97e0Dianne Hackborn public long externalCodeSize; 51292f8bc9d1b790ab975a87a842c7fabc908b97e0Dianne Hackborn 52292f8bc9d1b790ab975a87a842c7fabc908b97e0Dianne Hackborn /** 53366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root * Size of the external data used by the application (e.g., 54366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root * <sdcard>/Android/data/<app>) 55366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root */ 56366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root public long externalDataSize; 57366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root 58366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root /** 59366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root * Size of the external cache used by the application (i.e., on the SD 60366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root * card). If this is a subdirectory of the data directory, this size will be 61366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root * subtracted out of the external data size. 62366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root */ 63366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root public long externalCacheSize; 64366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root 65366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root /** Size of the external media size used by the application. */ 66366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root public long externalMediaSize; 67366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root 68bcd6c96e753d2efc76f918c403cecbfdbd4f037aKenny Root /** Size of the package's OBBs placed on external media. */ 69bcd6c96e753d2efc76f918c403cecbfdbd4f037aKenny Root public long externalObbSize; 70bcd6c96e753d2efc76f918c403cecbfdbd4f037aKenny Root 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Parcelable.Creator<PackageStats> CREATOR 72366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root = new Parcelable.Creator<PackageStats>() { 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public PackageStats createFromParcel(Parcel in) { 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new PackageStats(in); 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public PackageStats[] newArray(int size) { 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new PackageStats[size]; 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 81366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String toString() { 83366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root final StringBuilder sb = new StringBuilder("PackageStats{"); 84366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root sb.append(Integer.toHexString(System.identityHashCode(this))); 850c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn sb.append(" "); 86366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root sb.append(packageName); 870c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn if (codeSize != 0) { 880c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn sb.append(" code="); 890c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn sb.append(codeSize); 900c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn } 910c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn if (dataSize != 0) { 920c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn sb.append(" data="); 930c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn sb.append(dataSize); 940c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn } 950c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn if (cacheSize != 0) { 960c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn sb.append(" cache="); 970c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn sb.append(cacheSize); 980c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn } 990c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn if (externalCodeSize != 0) { 1000c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn sb.append(" extCode="); 1010c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn sb.append(externalCodeSize); 1020c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn } 1030c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn if (externalDataSize != 0) { 1040c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn sb.append(" extData="); 1050c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn sb.append(externalDataSize); 1060c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn } 1070c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn if (externalCacheSize != 0) { 1080c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn sb.append(" extCache="); 1090c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn sb.append(externalCacheSize); 1100c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn } 1110c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn if (externalMediaSize != 0) { 1120c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn sb.append(" media="); 1130c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn sb.append(externalMediaSize); 1140c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn } 1150c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn if (externalObbSize != 0) { 1160c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn sb.append(" obb="); 1170c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn sb.append(externalObbSize); 1180c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn } 1190c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn sb.append("}"); 120366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root return sb.toString(); 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 122366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public PackageStats(String pkgName) { 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project packageName = pkgName; 1250c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn userHandle = UserHandle.myUserId(); 1260c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn } 1270c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn 1280c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn /** @hide */ 1290c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn public PackageStats(String pkgName, int userHandle) { 1300c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn this.packageName = pkgName; 1310c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn this.userHandle = userHandle; 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 133366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public PackageStats(Parcel source) { 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project packageName = source.readString(); 1360c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn userHandle = source.readInt(); 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project codeSize = source.readLong(); 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dataSize = source.readLong(); 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project cacheSize = source.readLong(); 140292f8bc9d1b790ab975a87a842c7fabc908b97e0Dianne Hackborn externalCodeSize = source.readLong(); 141366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root externalDataSize = source.readLong(); 142366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root externalCacheSize = source.readLong(); 143366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root externalMediaSize = source.readLong(); 144bcd6c96e753d2efc76f918c403cecbfdbd4f037aKenny Root externalObbSize = source.readLong(); 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 146366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public PackageStats(PackageStats pStats) { 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project packageName = pStats.packageName; 1490c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn userHandle = pStats.userHandle; 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project codeSize = pStats.codeSize; 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dataSize = pStats.dataSize; 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project cacheSize = pStats.cacheSize; 153292f8bc9d1b790ab975a87a842c7fabc908b97e0Dianne Hackborn externalCodeSize = pStats.externalCodeSize; 154366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root externalDataSize = pStats.externalDataSize; 155366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root externalCacheSize = pStats.externalCacheSize; 156366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root externalMediaSize = pStats.externalMediaSize; 157bcd6c96e753d2efc76f918c403cecbfdbd4f037aKenny Root externalObbSize = pStats.externalObbSize; 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel dest, int parcelableFlags){ 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(packageName); 1660c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn dest.writeInt(userHandle); 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeLong(codeSize); 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeLong(dataSize); 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeLong(cacheSize); 170292f8bc9d1b790ab975a87a842c7fabc908b97e0Dianne Hackborn dest.writeLong(externalCodeSize); 171366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root dest.writeLong(externalDataSize); 172366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root dest.writeLong(externalCacheSize); 173366949c2d934435ff9ef8082408ca36ff14a2241Kenny Root dest.writeLong(externalMediaSize); 174bcd6c96e753d2efc76f918c403cecbfdbd4f037aKenny Root dest.writeLong(externalObbSize); 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 177