• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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