Do not migrate apps data on every user start

Only migrate apps' data if lastLoggedInFingerprint of the user is
different from the current build.

Bug: 28750609
Change-Id: Id7e3cdd787b122a56b880abb62c9d173a6463ba6
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index 68ccbdf..04f3ce3 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -2879,9 +2879,15 @@
      * app storage and apply any user restrictions.
      */
     public void onBeforeStartUser(int userId) {
-        final int userSerial = getUserSerialNumber(userId);
+        UserInfo userInfo = getUserInfo(userId);
+        if (userInfo == null) {
+            return;
+        }
+        final int userSerial = userInfo.serialNumber;
+        // Migrate only if build fingerprints mismatch
+        boolean migrateAppsData = !Build.FINGERPRINT.equals(userInfo.lastLoggedInFingerprint);
         mPm.prepareUserData(userId, userSerial, StorageManager.FLAG_STORAGE_DE);
-        mPm.reconcileAppsData(userId, StorageManager.FLAG_STORAGE_DE);
+        mPm.reconcileAppsData(userId, StorageManager.FLAG_STORAGE_DE, migrateAppsData);
 
         if (userId != UserHandle.USER_SYSTEM) {
             synchronized (mRestrictionsLock) {
@@ -2897,9 +2903,15 @@
      * app storage.
      */
     public void onBeforeUnlockUser(@UserIdInt int userId) {
-        final int userSerial = getUserSerialNumber(userId);
+        UserInfo userInfo = getUserInfo(userId);
+        if (userInfo == null) {
+            return;
+        }
+        final int userSerial = userInfo.serialNumber;
+        // Migrate only if build fingerprints mismatch
+        boolean migrateAppsData = !Build.FINGERPRINT.equals(userInfo.lastLoggedInFingerprint);
         mPm.prepareUserData(userId, userSerial, StorageManager.FLAG_STORAGE_CE);
-        mPm.reconcileAppsData(userId, StorageManager.FLAG_STORAGE_CE);
+        mPm.reconcileAppsData(userId, StorageManager.FLAG_STORAGE_CE, migrateAppsData);
     }
 
     /**