1 /* 2 * Copyright (C) 2008 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.content.pm; 18 19 import android.app.usage.StorageStatsManager; 20 import android.os.Parcel; 21 import android.os.Parcelable; 22 import android.os.UserHandle; 23 import android.text.TextUtils; 24 25 import java.util.Objects; 26 27 /** 28 * implementation of PackageStats associated with a application package. 29 * 30 * @deprecated this class is an orphan that could never be obtained from a valid 31 * public API. If you need package storage statistics use the new 32 * {@link StorageStatsManager} APIs. 33 */ 34 @Deprecated 35 public class PackageStats implements Parcelable { 36 /** Name of the package to which this stats applies. */ 37 public String packageName; 38 39 /** @hide */ 40 public int userHandle; 41 42 /** Size of the code (e.g., APK) */ 43 public long codeSize; 44 45 /** 46 * Size of the internal data size for the application. (e.g., 47 * /data/data/<app>) 48 */ 49 public long dataSize; 50 51 /** Size of cache used by the application. (e.g., /data/data/<app>/cache) */ 52 public long cacheSize; 53 54 /** 55 * Size of the secure container on external storage holding the 56 * application's code. 57 */ 58 public long externalCodeSize; 59 60 /** 61 * Size of the external data used by the application (e.g., 62 * <sdcard>/Android/data/<app>) 63 */ 64 public long externalDataSize; 65 66 /** 67 * Size of the external cache used by the application (i.e., on the SD 68 * card). If this is a subdirectory of the data directory, this size will be 69 * subtracted out of the external data size. 70 */ 71 public long externalCacheSize; 72 73 /** Size of the external media size used by the application. */ 74 public long externalMediaSize; 75 76 /** Size of the package's OBBs placed on external media. */ 77 public long externalObbSize; 78 79 public static final Parcelable.Creator<PackageStats> CREATOR 80 = new Parcelable.Creator<PackageStats>() { 81 public PackageStats createFromParcel(Parcel in) { 82 return new PackageStats(in); 83 } 84 85 public PackageStats[] newArray(int size) { 86 return new PackageStats[size]; 87 } 88 }; 89 toString()90 public String toString() { 91 final StringBuilder sb = new StringBuilder("PackageStats{"); 92 sb.append(Integer.toHexString(System.identityHashCode(this))); 93 sb.append(" "); 94 sb.append(packageName); 95 if (codeSize != 0) { 96 sb.append(" code="); 97 sb.append(codeSize); 98 } 99 if (dataSize != 0) { 100 sb.append(" data="); 101 sb.append(dataSize); 102 } 103 if (cacheSize != 0) { 104 sb.append(" cache="); 105 sb.append(cacheSize); 106 } 107 if (externalCodeSize != 0) { 108 sb.append(" extCode="); 109 sb.append(externalCodeSize); 110 } 111 if (externalDataSize != 0) { 112 sb.append(" extData="); 113 sb.append(externalDataSize); 114 } 115 if (externalCacheSize != 0) { 116 sb.append(" extCache="); 117 sb.append(externalCacheSize); 118 } 119 if (externalMediaSize != 0) { 120 sb.append(" media="); 121 sb.append(externalMediaSize); 122 } 123 if (externalObbSize != 0) { 124 sb.append(" obb="); 125 sb.append(externalObbSize); 126 } 127 sb.append("}"); 128 return sb.toString(); 129 } 130 PackageStats(String pkgName)131 public PackageStats(String pkgName) { 132 packageName = pkgName; 133 userHandle = UserHandle.myUserId(); 134 } 135 136 /** @hide */ PackageStats(String pkgName, int userHandle)137 public PackageStats(String pkgName, int userHandle) { 138 this.packageName = pkgName; 139 this.userHandle = userHandle; 140 } 141 PackageStats(Parcel source)142 public PackageStats(Parcel source) { 143 packageName = source.readString(); 144 userHandle = source.readInt(); 145 codeSize = source.readLong(); 146 dataSize = source.readLong(); 147 cacheSize = source.readLong(); 148 externalCodeSize = source.readLong(); 149 externalDataSize = source.readLong(); 150 externalCacheSize = source.readLong(); 151 externalMediaSize = source.readLong(); 152 externalObbSize = source.readLong(); 153 } 154 PackageStats(PackageStats pStats)155 public PackageStats(PackageStats pStats) { 156 packageName = pStats.packageName; 157 userHandle = pStats.userHandle; 158 codeSize = pStats.codeSize; 159 dataSize = pStats.dataSize; 160 cacheSize = pStats.cacheSize; 161 externalCodeSize = pStats.externalCodeSize; 162 externalDataSize = pStats.externalDataSize; 163 externalCacheSize = pStats.externalCacheSize; 164 externalMediaSize = pStats.externalMediaSize; 165 externalObbSize = pStats.externalObbSize; 166 } 167 describeContents()168 public int describeContents() { 169 return 0; 170 } 171 writeToParcel(Parcel dest, int parcelableFlags)172 public void writeToParcel(Parcel dest, int parcelableFlags){ 173 dest.writeString(packageName); 174 dest.writeInt(userHandle); 175 dest.writeLong(codeSize); 176 dest.writeLong(dataSize); 177 dest.writeLong(cacheSize); 178 dest.writeLong(externalCodeSize); 179 dest.writeLong(externalDataSize); 180 dest.writeLong(externalCacheSize); 181 dest.writeLong(externalMediaSize); 182 dest.writeLong(externalObbSize); 183 } 184 185 @Override equals(Object obj)186 public boolean equals(Object obj) { 187 if (!(obj instanceof PackageStats)) { 188 return false; 189 } 190 191 final PackageStats otherStats = (PackageStats) obj; 192 return ((TextUtils.equals(packageName, otherStats.packageName)) 193 && userHandle == otherStats.userHandle 194 && codeSize == otherStats.codeSize 195 && dataSize == otherStats.dataSize 196 && cacheSize == otherStats.cacheSize 197 && externalCodeSize == otherStats.externalCodeSize 198 && externalDataSize == otherStats.externalDataSize 199 && externalCacheSize == otherStats.externalCacheSize 200 && externalMediaSize == otherStats.externalMediaSize 201 && externalObbSize == otherStats.externalObbSize); 202 } 203 204 @Override hashCode()205 public int hashCode() { 206 return Objects.hash(packageName, userHandle, codeSize, dataSize, 207 cacheSize, externalCodeSize, externalDataSize, externalCacheSize, externalMediaSize, 208 externalObbSize); 209 } 210 211 } 212