Check isolated_storage is enabled before cleaning up sandboxes.

Also, clear packages state stored for the user being stopped.

Bug: 117329171
Bug: 111890351
Test: manual
Change-Id: Ida48fcec851830dbb756e329c20c322c631ad264
diff --git a/VolumeManager.cpp b/VolumeManager.cpp
index ec18694..9fb213f 100644
--- a/VolumeManager.cpp
+++ b/VolumeManager.cpp
@@ -805,16 +805,19 @@
     LOG(VERBOSE) << "onUserStopped: " << userId;
     mStartedUsers.erase(userId);
 
-    std::string mntTargetDir = StringPrintf("/mnt/user/%d", userId);
-    if (android::vold::UnmountTree(mntTargetDir) != 0) {
-        PLOG(ERROR) << "unmountTree on " << mntTargetDir << " failed";
-        return -errno;
+    if (GetBoolProperty(kIsolatedStorage, false)) {
+        mUserPackages.erase(userId);
+        std::string mntTargetDir = StringPrintf("/mnt/user/%d", userId);
+        if (android::vold::UnmountTree(mntTargetDir) != 0) {
+            PLOG(ERROR) << "unmountTree on " << mntTargetDir << " failed";
+            return -errno;
+        }
+        if (android::vold::DeleteDirContentsAndDir(mntTargetDir) < 0) {
+            PLOG(ERROR) << "DeleteDirContentsAndDir failed on " << mntTargetDir;
+            return -errno;
+        }
+        LOG(VERBOSE) << "Success: DeleteDirContentsAndDir on " << mntTargetDir;
     }
-    if (android::vold::DeleteDirContentsAndDir(mntTargetDir) < 0) {
-        PLOG(ERROR) << "DeleteDirContentsAndDir failed on " << mntTargetDir;
-        return -errno;
-    }
-    LOG(VERBOSE) << "Success: DeleteDirContentsAndDir on " << mntTargetDir;
     return 0;
 }