Snap for 5645017 from 4560d6c127557bf308e26b022e337aaa2264c902 to qt-aml-release

Change-Id: Ic7ff23d19a6344b9d798b98b876edc2ecedd6baa
diff --git a/res/values/picker_colors.xml b/res/values/picker_colors.xml
index 1f1074b..3780a30 100755
--- a/res/values/picker_colors.xml
+++ b/res/values/picker_colors.xml
@@ -23,8 +23,8 @@
     <!-- Color for material black text @ 60% opacity. -->
     <color name="translucent_black_60_alpha">#99000000</color>
     <color name="translucent_black_90_alpha">#E6000000</color>
-    <color name="translucent_black">#96000000</color>
-    <color name="translucent_black_darker">#CC000000</color>
+    <color name="translucent_black">@color/translucent_black_60_alpha</color>
+
     <color name="light_grey">#d8d8d8</color>
     <color name="white_34_alpha">#57FFFFFF</color>
     <color name="white_60_alpha">#99FFFFFF</color>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 20e9995..45b6d02 100755
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -41,6 +41,10 @@
     </style>
 
     <style name="WallpaperTheme.Preview" parent="@style/Theme.AppCompat.NoActionBar">
+        <item name="android:windowBackground">@android:color/transparent</item>
+        <item name="android:windowContentOverlay">@null</item>
+        <item name="android:windowDisablePreview">true</item>
+
         <!-- Set no title and no action bar because we use a toolbar instead. -->
         <item name="windowActionBar">false</item>
         <item name="windowNoTitle">true</item>
diff --git a/src/com/android/wallpaper/module/Injector.java b/src/com/android/wallpaper/module/Injector.java
index 520e79b..746917e 100755
--- a/src/com/android/wallpaper/module/Injector.java
+++ b/src/com/android/wallpaper/module/Injector.java
@@ -73,6 +73,7 @@
     WallpaperRotationRefresher getWallpaperRotationRefresher();
 
     Fragment getPreviewFragment(
+        Context context,
         WallpaperInfo wallpaperInfo,
         @PreviewMode int mode,
         boolean testingModeEnabled);
diff --git a/src/com/android/wallpaper/module/WallpaperSetter.java b/src/com/android/wallpaper/module/WallpaperSetter.java
index 2fb00a8..830d914 100644
--- a/src/com/android/wallpaper/module/WallpaperSetter.java
+++ b/src/com/android/wallpaper/module/WallpaperSetter.java
@@ -200,24 +200,26 @@
     /**
      * Show a dialog asking the user for the Wallpaper's destination
      * (eg, "Home screen", "Lock Screen")
+     * @param isLiveWallpaper whether the wallpaper that we want to set is a live wallpaper.
      * @param listener {@link SetWallpaperDialogFragment.Listener} that will receive the response.
      * @see Destination
      */
     public void requestDestination(Context context, FragmentManager fragmentManager,
-            WallpaperInfo wallpaper, Listener listener) {
+                                   Listener listener, boolean isLiveWallpaper) {
         requestDestination(context, fragmentManager, R.string.set_wallpaper_dialog_message,
-                wallpaper, listener);
+                listener, isLiveWallpaper);
     }
 
     /**
      * Show a dialog asking the user for the Wallpaper's destination
      * (eg, "Home screen", "Lock Screen")
+     * @param isLiveWallpaper whether the wallpaper that we want to set is a live wallpaper.
      * @param listener {@link SetWallpaperDialogFragment.Listener} that will receive the response.
      * @param titleResId title for the dialog
      * @see Destination
      */
     public void requestDestination(Context context, FragmentManager fragmentManager,
-            @StringRes int titleResId, WallpaperInfo wallpaper, Listener listener) {
+            @StringRes int titleResId, Listener listener, boolean isLiveWallpaper) {
         CurrentWallpaperInfoFactory factory = InjectorProvider.getInjector()
                 .getCurrentWallpaperFactory(context);
 
@@ -226,16 +228,16 @@
             setWallpaperDialog.setTitleResId(titleResId);
             setWallpaperDialog.setListener(listener);
             if (homeWallpaper instanceof LiveWallpaperInfo && lockWallpaper == null) {
-                if (wallpaper instanceof LiveWallpaperInfo) {
+                if (isLiveWallpaper) {
                     // If lock wallpaper is live and we're setting a live wallpaper, we can only
                     // set it to both, so bypass the dialog.
-                    listener.onSetBoth();
+                    listener.onSet(WallpaperPersister.DEST_BOTH);
                     return;
                 }
                 // if the lock wallpaper is a live wallpaper, we cannot set a home-only static one
                 setWallpaperDialog.setHomeOptionAvailable(false);
             }
-            if (wallpaper instanceof LiveWallpaperInfo) {
+            if (isLiveWallpaper) {
                 setWallpaperDialog.setLockOptionAvailable(false);
             }
             setWallpaperDialog.show(fragmentManager, TAG_SET_WALLPAPER_DIALOG_FRAGMENT);
diff --git a/src/com/android/wallpaper/picker/PreviewActivity.java b/src/com/android/wallpaper/picker/PreviewActivity.java
index bbedb7f..457de69 100755
--- a/src/com/android/wallpaper/picker/PreviewActivity.java
+++ b/src/com/android/wallpaper/picker/PreviewActivity.java
@@ -46,6 +46,11 @@
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_preview);
+    }
+
+    @Override
+    public void onAttachedToWindow() {
+        super.onAttachedToWindow();
 
         FragmentManager fm = getSupportFragmentManager();
         Fragment fragment = fm.findFragmentById(R.id.fragment_container);
@@ -55,7 +60,10 @@
             WallpaperInfo wallpaper = intent.getParcelableExtra(EXTRA_WALLPAPER_INFO);
             boolean testingModeEnabled = intent.getBooleanExtra(EXTRA_TESTING_MODE_ENABLED, false);
             fragment = InjectorProvider.getInjector().getPreviewFragment(
-                    wallpaper, PreviewFragment.MODE_CROP_AND_SET_WALLPAPER, testingModeEnabled);
+                    /* context */ this,
+                    wallpaper,
+                    PreviewFragment.MODE_CROP_AND_SET_WALLPAPER,
+                    testingModeEnabled);
             fm.beginTransaction()
                     .add(R.id.fragment_container, fragment)
                     .commit();
diff --git a/src/com/android/wallpaper/picker/PreviewFragment.java b/src/com/android/wallpaper/picker/PreviewFragment.java
index eba645c..c698c8c 100755
--- a/src/com/android/wallpaper/picker/PreviewFragment.java
+++ b/src/com/android/wallpaper/picker/PreviewFragment.java
@@ -70,6 +70,7 @@
 import com.android.wallpaper.asset.Asset.BitmapReceiver;
 import com.android.wallpaper.asset.Asset.DimensionsReceiver;
 import com.android.wallpaper.compat.BuildCompat;
+import com.android.wallpaper.model.LiveWallpaperInfo;
 import com.android.wallpaper.model.WallpaperInfo;
 import com.android.wallpaper.module.ExploreIntentChecker;
 import com.android.wallpaper.module.Injector;
@@ -122,9 +123,9 @@
     public @interface PreviewMode {
     }
 
-    protected static final String ARG_WALLPAPER = "wallpaper";
-    protected static final String ARG_PREVIEW_MODE = "preview_mode";
-    protected static final String ARG_TESTING_MODE_ENABLED = "testing_mode_enabled";
+    public static final String ARG_WALLPAPER = "wallpaper";
+    public static final String ARG_PREVIEW_MODE = "preview_mode";
+    public static final String ARG_TESTING_MODE_ENABLED = "testing_mode_enabled";
     private static final String TAG_LOAD_WALLPAPER_ERROR_DIALOG_FRAGMENT =
             "load_wallpaper_error_dialog";
     private static final String TAG_SET_WALLPAPER_ERROR_DIALOG_FRAGMENT =
@@ -148,7 +149,7 @@
     protected SubsamplingScaleImageView mFullResImageView;
     protected WallpaperInfo mWallpaper;
     private Asset mWallpaperAsset;
-    private WallpaperSetter mWallpaperSetter;;
+    private WallpaperSetter mWallpaperSetter;
     private UserEventLogger mUserEventLogger;
     private LinearLayout mBottomSheet;
     private TextView mAttributionTitle;
@@ -461,18 +462,8 @@
     }
 
     @Override
-    public void onSetHomeScreen() {
-        setCurrentWallpaper(WallpaperPersister.DEST_HOME_SCREEN);
-    }
-
-    @Override
-    public void onSetLockScreen() {
-        setCurrentWallpaper(WallpaperPersister.DEST_LOCK_SCREEN);
-    }
-
-    @Override
-    public void onSetBoth() {
-        setCurrentWallpaper(WallpaperPersister.DEST_BOTH);
+    public void onSet(int destination) {
+        setCurrentWallpaper(destination);
     }
 
     @Override
@@ -508,8 +499,8 @@
 
     private void onSetWallpaperClicked(View button) {
         if (BuildCompat.isAtLeastN()) {
-            mWallpaperSetter.requestDestination(getContext(), getFragmentManager(), mWallpaper,
-                    this);
+            mWallpaperSetter.requestDestination(getContext(), getFragmentManager(), this,
+                    mWallpaper instanceof LiveWallpaperInfo);
         } else {
             setCurrentWallpaper(WallpaperPersister.DEST_HOME_SCREEN);
         }
diff --git a/src/com/android/wallpaper/picker/SetWallpaperDialogFragment.java b/src/com/android/wallpaper/picker/SetWallpaperDialogFragment.java
index 391c29a..6b2cb3f 100755
--- a/src/com/android/wallpaper/picker/SetWallpaperDialogFragment.java
+++ b/src/com/android/wallpaper/picker/SetWallpaperDialogFragment.java
@@ -28,6 +28,7 @@
 
 import com.android.wallpaper.R;
 import com.android.wallpaper.compat.ButtonDrawableSetterCompat;
+import com.android.wallpaper.module.WallpaperPersister;
 
 /**
  * Dialog fragment which shows the "Set wallpaper" destination dialog for N+ devices. Lets user
@@ -68,7 +69,7 @@
 
         mSetHomeWallpaperButton = layout.findViewById(R.id.set_home_wallpaper_button);
         mSetHomeWallpaperButton.setOnClickListener(v -> {
-            mListener.onSetHomeScreen();
+            mListener.onSet(WallpaperPersister.DEST_HOME_SCREEN);
             dismiss();
         });
         ButtonDrawableSetterCompat.setDrawableToButtonStart(
@@ -77,7 +78,7 @@
 
         mSetLockWallpaperButton = layout.findViewById(R.id.set_lock_wallpaper_button);
         mSetLockWallpaperButton.setOnClickListener(v -> {
-            mListener.onSetLockScreen();
+            mListener.onSet(WallpaperPersister.DEST_LOCK_SCREEN);
             dismiss();
         });
         ButtonDrawableSetterCompat.setDrawableToButtonStart(
@@ -86,7 +87,7 @@
 
         mSetBothWallpaperButton = layout.findViewById(R.id.set_both_wallpaper_button);
         mSetBothWallpaperButton.setOnClickListener(v -> {
-            mListener.onSetBoth();
+            mListener.onSet(WallpaperPersister.DEST_BOTH);
             dismiss();
         });
         ButtonDrawableSetterCompat.setDrawableToButtonStart(
@@ -130,10 +131,6 @@
      * on the dialog's clickable elements.
      */
     public interface Listener {
-        void onSetHomeScreen();
-
-        void onSetLockScreen();
-
-        void onSetBoth();
+        void onSet(int destination);
     }
 }
diff --git a/src/com/android/wallpaper/picker/StandalonePreviewActivity.java b/src/com/android/wallpaper/picker/StandalonePreviewActivity.java
index 9eb07fc..5d87df8 100755
--- a/src/com/android/wallpaper/picker/StandalonePreviewActivity.java
+++ b/src/com/android/wallpaper/picker/StandalonePreviewActivity.java
@@ -52,9 +52,6 @@
         mUserEventLogger = InjectorProvider.getInjector().getUserEventLogger(getApplicationContext());
         mUserEventLogger.logStandalonePreviewLaunched();
 
-        FragmentManager fragmentManager = getSupportFragmentManager();
-        Fragment fragment = fragmentManager.findFragmentById(R.id.fragment_container);
-
         Intent cropAndSetWallpaperIntent = getIntent();
         Uri imageUri = cropAndSetWallpaperIntent.getData();
 
@@ -77,8 +74,15 @@
             requestPermissions(
                     new String[]{permission.READ_EXTERNAL_STORAGE},
                     READ_EXTERNAL_STORAGE_PERMISSION_REQUEST_CODE);
-            return;
         }
+    }
+
+    @Override
+    public void onAttachedToWindow() {
+        super.onAttachedToWindow();
+
+        FragmentManager fragmentManager = getSupportFragmentManager();
+        Fragment fragment = fragmentManager.findFragmentById(R.id.fragment_container);
 
         if (fragment == null) {
             loadPreviewFragment();
@@ -116,7 +120,10 @@
         boolean testingModeEnabled = intent.getBooleanExtra(EXTRA_TESTING_MODE_ENABLED, false);
         WallpaperInfo wallpaper = new ImageWallpaperInfo(intent.getData());
         Fragment fragment = InjectorProvider.getInjector().getPreviewFragment(
-                wallpaper, PreviewFragment.MODE_CROP_AND_SET_WALLPAPER, testingModeEnabled);
+                /* context */ this,
+                wallpaper,
+                PreviewFragment.MODE_CROP_AND_SET_WALLPAPER,
+                testingModeEnabled);
         getSupportFragmentManager().beginTransaction()
                 .add(R.id.fragment_container, fragment)
                 .commit();
diff --git a/src/com/android/wallpaper/picker/ViewOnlyPreviewActivity.java b/src/com/android/wallpaper/picker/ViewOnlyPreviewActivity.java
index 2a22046..f10cc51 100755
--- a/src/com/android/wallpaper/picker/ViewOnlyPreviewActivity.java
+++ b/src/com/android/wallpaper/picker/ViewOnlyPreviewActivity.java
@@ -44,6 +44,11 @@
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_preview);
+    }
+
+    @Override
+    public void onAttachedToWindow() {
+        super.onAttachedToWindow();
 
         FragmentManager fm = getSupportFragmentManager();
         Fragment fragment = fm.findFragmentById(R.id.fragment_container);
@@ -53,7 +58,10 @@
             WallpaperInfo wallpaper = intent.getParcelableExtra(EXTRA_WALLPAPER_INFO);
             boolean testingModeEnabled = intent.getBooleanExtra(EXTRA_TESTING_MODE_ENABLED, false);
             fragment = InjectorProvider.getInjector().getPreviewFragment(
-                    wallpaper, PreviewFragment.MODE_VIEW_ONLY, testingModeEnabled);
+                    /* context */ this,
+                    wallpaper,
+                    PreviewFragment.MODE_VIEW_ONLY,
+                    testingModeEnabled);
             fm.beginTransaction()
                     .add(R.id.fragment_container, fragment)
                     .commit();
diff --git a/src/com/android/wallpaper/picker/individual/IndividualPickerActivity.java b/src/com/android/wallpaper/picker/individual/IndividualPickerActivity.java
index 25b15b8..6c05983 100755
--- a/src/com/android/wallpaper/picker/individual/IndividualPickerActivity.java
+++ b/src/com/android/wallpaper/picker/individual/IndividualPickerActivity.java
@@ -110,8 +110,9 @@
         toolbar.getNavigationIcon().setTint(getColor(R.color.toolbar_icon_color));
 
         getWindow().getDecorView().setSystemUiVisibility(
-                getWindow().getDecorView().getSystemUiVisibility() |
-                View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
+                getWindow().getDecorView().getSystemUiVisibility()
+                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
+                        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
         getWindow().getDecorView().setOnApplyWindowInsetsListener((view, windowInsets) -> {
             view.setPadding(view.getPaddingLeft(), windowInsets.getSystemWindowInsetTop(),
                     view.getPaddingRight(), view.getBottom());
diff --git a/src_override/com/android/wallpaper/module/WallpapersInjector.java b/src_override/com/android/wallpaper/module/WallpapersInjector.java
index 7a426ce..8e3b3e9 100755
--- a/src_override/com/android/wallpaper/module/WallpapersInjector.java
+++ b/src_override/com/android/wallpaper/module/WallpapersInjector.java
@@ -65,6 +65,7 @@
 
     @Override
     public Fragment getPreviewFragment(
+        Context context,
         WallpaperInfo wallpaperInfo,
         int mode,
         boolean testingModeEnabled) {