Don't clobber widgets with the same component.

By not storing them in a HashMap keyed against ComponentName (which is
almost guaranteed to conflict with other widgets when managed profiles
are in play).

Bug: 19444068
Change-Id: I6ffce78e8aaf265196239670404cbdaff9fa09be
diff --git a/src/com/android/launcher3/LauncherBackupHelper.java b/src/com/android/launcher3/LauncherBackupHelper.java
index 7849e53..57f92bc 100644
--- a/src/com/android/launcher3/LauncherBackupHelper.java
+++ b/src/com/android/launcher3/LauncherBackupHelper.java
@@ -668,7 +668,10 @@
                         previewLoader.setPreviewSize(
                                 spanX * profile.cellWidthPx,
                                 spanY * profile.cellHeightPx);
-                        writeRowToBackup(key, packWidget(dpi, previewLoader, mIconCache, provider), data);
+                        UserHandleCompat user = UserHandleCompat.myUserHandle();
+                        writeRowToBackup(key,
+                                packWidget(dpi, previewLoader, mIconCache, provider, user),
+                                data);
                         mKeys.add(key);
                         backupWidgetCount ++;
                     } else {
@@ -978,9 +981,9 @@
 
     /** Serialize a widget for persistence, including a checksum wrapper. */
     private Widget packWidget(int dpi, WidgetPreviewLoader previewLoader, IconCache iconCache,
-            ComponentName provider) {
+            ComponentName provider, UserHandleCompat user) {
         final LauncherAppWidgetProviderInfo info =
-                LauncherModel.getProviderInfo(mContext, provider);
+                LauncherModel.getProviderInfo(mContext, provider, user);
         Widget widget = new Widget();
         widget.provider = provider.flattenToShortString();
         widget.label = info.label;