am 50ea0493: am ec39177c: am 44fb627c: Merge "Don\'t have app info pages load so much info" into mnc-dev

* commit '50ea0493c38e682ad79cc92c4cb8404fe993932c':
  Don't have app info pages load so much info
diff --git a/src/com/android/settings/applications/AppInfoBase.java b/src/com/android/settings/applications/AppInfoBase.java
index 012c574..5e0f4eb 100644
--- a/src/com/android/settings/applications/AppInfoBase.java
+++ b/src/com/android/settings/applications/AppInfoBase.java
@@ -54,7 +54,6 @@
     protected boolean mAppControlRestricted = false;
 
     protected ApplicationsState mState;
-    private ApplicationsState.Session mSession;
     protected ApplicationsState.AppEntry mAppEntry;
     protected PackageInfo mPackageInfo;
     protected int mUserId;
@@ -76,7 +75,6 @@
         mFinishing = false;
 
         mState = ApplicationsState.getInstance(getActivity().getApplication());
-        mSession = mState.newSession(this);
         Context context = getActivity();
         mDpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
         mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
@@ -84,9 +82,6 @@
         IBinder b = ServiceManager.getService(Context.USB_SERVICE);
         mUsbManager = IUsbManager.Stub.asInterface(b);
 
-        // Need to make sure we have loaded applications at this point.
-        mSession.resume();
-
         retrieveAppEntry();
     }
 
@@ -94,25 +89,12 @@
     public void onResume() {
         super.onResume();
         mAppControlRestricted = mUserManager.hasUserRestriction(UserManager.DISALLOW_APPS_CONTROL);
-        mSession.resume();
 
         if (!refreshUi()) {
             setIntentAndFinish(true, true);
         }
     }
 
-    @Override
-    public void onPause() {
-        super.onPause();
-        mSession.pause();
-    }
-
-    @Override
-    public void onDestroyView() {
-        super.onDestroyView();
-        mSession.release();
-    }
-
     protected String retrieveAppEntry() {
         final Bundle args = getArguments();
         mPackageName = (args != null) ? args.getString(ARG_PACKAGE_NAME) : null;
diff --git a/src/com/android/settings/applications/ApplicationsState.java b/src/com/android/settings/applications/ApplicationsState.java
index 01355d9..055e415 100644
--- a/src/com/android/settings/applications/ApplicationsState.java
+++ b/src/com/android/settings/applications/ApplicationsState.java
@@ -878,20 +878,33 @@
         synchronized (mEntriesMap) {
             AppEntry entry = mEntriesMap.get(userId).get(packageName);
             if (entry == null) {
-                for (int i=0; i<mApplications.size(); i++) {
-                    ApplicationInfo info = mApplications.get(i);
-                    if (packageName.equals(info.packageName)
-                            && userId == UserHandle.getUserId(info.uid)) {
-                        entry = getEntryLocked(info);
-                        break;
+                ApplicationInfo info = getAppInfoLocked(packageName, userId);
+                if (info == null) {
+                    try {
+                        info = mIpm.getApplicationInfo(packageName, 0, userId);
+                    } catch (RemoteException e) {
+                        Log.w(TAG, "getEntry couldn't reach PackageManager", e);
+                        return null;
                     }
                 }
+                entry = getEntryLocked(info);
             }
             if (DEBUG_LOCKING) Log.v(TAG, "...getEntry releasing lock");
             return entry;
         }
     }
 
+    private ApplicationInfo getAppInfoLocked(String pkg, int userId) {
+        for (int i = 0; i < mApplications.size(); i++) {
+            ApplicationInfo info = mApplications.get(i);
+            if (pkg.equals(info.packageName)
+                    && userId == UserHandle.getUserId(info.uid)) {
+                return info;
+            }
+        }
+        return null;
+    }
+
     void ensureIcon(AppEntry entry) {
         if (entry.icon != null) {
             return;
@@ -1153,8 +1166,8 @@
                             mMainHandler.sendMessage(msg);
                         }
                     }
-                    if (mCurComputingSizePkg == null
-                            || (mCurComputingSizePkg.equals(stats.packageName)
+                    if (mCurComputingSizePkg != null
+                            && (mCurComputingSizePkg.equals(stats.packageName)
                                     && mCurComputingSizeUserId == stats.userHandle)) {
                         mCurComputingSizePkg = null;
                         sendEmptyMessage(MSG_LOAD_SIZES);
diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java
index 73f9c7d..9268309 100755
--- a/src/com/android/settings/applications/InstalledAppDetails.java
+++ b/src/com/android/settings/applications/InstalledAppDetails.java
@@ -251,6 +251,7 @@
         if (mFinishing) {
             return;
         }
+        mState.requestSize(mPackageName, mUserId);
         AppItem app = new AppItem(mAppEntry.info.uid);
         app.addUid(mAppEntry.info.uid);
         if (mStatsSession != null) {