Snap for 7723257 from 942f324cf59e52aecbd0417945b8da4fb1be9e49 to sc-qpr1-release

Change-Id: Ie3ecac6b8008d099fd87794cc8cafd836e0e352f
diff --git a/src/com/android/wallpaper/picker/ImagePreviewFragment.java b/src/com/android/wallpaper/picker/ImagePreviewFragment.java
index 1d7fa35..3919b29 100755
--- a/src/com/android/wallpaper/picker/ImagePreviewFragment.java
+++ b/src/com/android/wallpaper/picker/ImagePreviewFragment.java
@@ -110,6 +110,7 @@
     private TouchForwardingLayout mTouchForwardingLayout;
     private ConstraintLayout mContainer;
     private SurfaceView mWallpaperSurface;
+    private boolean mIsSurfaceCreated = false;
 
     protected SurfaceView mWorkspaceSurface;
     protected WorkspaceSurfaceHolderCallback mWorkspaceSurfaceCallback;
@@ -555,17 +556,22 @@
                 // Load a low-res placeholder image if there's a thumbnail available from the asset
                 // that can be shown to the user more quickly than the full-sized image.
                 Activity activity = requireActivity();
+                // Change to background color if colorValue is Color.TRANSPARENT
                 int placeHolderColor = ResourceUtils.getColorAttr(activity,
                         android.R.attr.colorBackground);
                 if (mPlaceholderColorFuture.isDone()) {
                     try {
-                        placeHolderColor = mWallpaper.computePlaceholderColor(context).get();
+                        int colorValue = mWallpaper.computePlaceholderColor(context).get();
+                        if (colorValue != Color.TRANSPARENT) {
+                            placeHolderColor = colorValue;
+                        }
                     } catch (InterruptedException | ExecutionException e) {
                         // Do nothing
                     }
                 }
                 mWallpaperSurface.setResizeBackgroundColor(placeHolderColor);
                 mWallpaperSurface.setBackgroundColor(placeHolderColor);
+                mLowResImageView.setBackgroundColor(placeHolderColor);
 
                 mWallpaperAsset.loadLowResDrawable(activity, mLowResImageView, placeHolderColor,
                         mPreviewBitmapTransformation);
@@ -582,6 +588,9 @@
                 mHost.setView(wallpaperPreviewContainer, wallpaperPreviewContainer.getWidth(),
                         wallpaperPreviewContainer.getHeight());
                 mWallpaperSurface.setChildSurfacePackage(mHost.getSurfacePackage());
+                // After surface creating, update workspaceSurface.
+                mIsSurfaceCreated = true;
+                updateScreenPreview(mLastSelectedTabPositionOptional.orElse(0) == 0);
             }
         }
 
@@ -596,14 +605,18 @@
                 mHost.release();
                 mHost = null;
             }
+            mIsSurfaceCreated = false;
         }
     }
 
     @Override
     protected void updateScreenPreview(boolean isHomeSelected) {
-        mWorkspaceSurface.setVisibility(isHomeSelected ? View.VISIBLE : View.INVISIBLE);
+        // Use View.GONE for WorkspaceSurface's visibility before its surface is created.
+        mWorkspaceSurface.setVisibility(isHomeSelected && mIsSurfaceCreated ? View.VISIBLE :
+                View.GONE);
 
-        mLockPreviewContainer.setVisibility(isHomeSelected ? View.INVISIBLE : View.VISIBLE);
+        mLockPreviewContainer.setVisibility(isHomeSelected && mIsSurfaceCreated ? View.VISIBLE :
+                View.GONE);
 
         mFullScreenAnimation.setIsHomeSelected(isHomeSelected);
     }
diff --git a/src/com/android/wallpaper/picker/PreviewFragment.java b/src/com/android/wallpaper/picker/PreviewFragment.java
index d0626f0..172bacd 100755
--- a/src/com/android/wallpaper/picker/PreviewFragment.java
+++ b/src/com/android/wallpaper/picker/PreviewFragment.java
@@ -143,7 +143,7 @@
 
     protected SetWallpaperViewModel mSetWallpaperViewModel;
     protected ViewModelProvider mViewModelProvider;
-    private Optional<Integer> mLastSelectedTabPositionOptional = Optional.empty();
+    protected Optional<Integer> mLastSelectedTabPositionOptional = Optional.empty();
     private OnBackPressedCallback mOnBackPressedCallback;
 
     /**