summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSantiago Etchebehere <santie@google.com>2020-09-11 10:15:52 -0700
committerSantiago Etchebehere <santie@google.com>2020-09-11 10:15:52 -0700
commit067634700688a18a705de531f451bd1a5d92fa88 (patch)
tree5afb8b38311e0e311650bec9b5b749644c713b80
parent537487aa4e01a45c01781f7cbfe304dd323d0d71 (diff)
parentff53df5d0ff17c808a3d2e9f4079efc5eb4af87a (diff)
downloadWallpaperPicker2-067634700688a18a705de531f451bd1a5d92fa88.tar.gz
Merging from ub-launcher3-rvc-qpr-dev @ build 6827161
Bug:150504032 Test: manual, presubmit on the source branch x20/teams/android-launcher/merge/ub-launcher3-rvc-qpr-dev_rvc-qpr-dev_6827161.html Change-Id: Iba694d82f686e3affe6cd71a14895e3cf06166c7
-rwxr-xr-xsrc/com/android/wallpaper/picker/BaseActivity.java3
-rw-r--r--src/com/android/wallpaper/picker/FragmentTransactionChecker.java29
-rwxr-xr-xsrc/com/android/wallpaper/picker/ImagePreviewFragment.java12
-rw-r--r--src/com/android/wallpaper/picker/LivePreviewFragment.java2
-rwxr-xr-xsrc/com/android/wallpaper/picker/individual/IndividualPickerFragment.java3
5 files changed, 45 insertions, 4 deletions
diff --git a/src/com/android/wallpaper/picker/BaseActivity.java b/src/com/android/wallpaper/picker/BaseActivity.java
index 7f2ea604..25a2b2ac 100755
--- a/src/com/android/wallpaper/picker/BaseActivity.java
+++ b/src/com/android/wallpaper/picker/BaseActivity.java
@@ -21,7 +21,7 @@ import androidx.appcompat.app.AppCompatActivity;
* Base activity that keeps track of whether fragment transactions are safe to commit given the
* activity's current lifecycle state.
*/
-public class BaseActivity extends AppCompatActivity {
+public class BaseActivity extends AppCompatActivity implements FragmentTransactionChecker {
private boolean mIsSafeToCommitFragmentTransaction;
@@ -37,6 +37,7 @@ public class BaseActivity extends AppCompatActivity {
mIsSafeToCommitFragmentTransaction = false;
}
+ @Override
public boolean isSafeToCommitFragmentTransaction() {
return mIsSafeToCommitFragmentTransaction;
}
diff --git a/src/com/android/wallpaper/picker/FragmentTransactionChecker.java b/src/com/android/wallpaper/picker/FragmentTransactionChecker.java
new file mode 100644
index 00000000..c25a41ff
--- /dev/null
+++ b/src/com/android/wallpaper/picker/FragmentTransactionChecker.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.wallpaper.picker;
+
+/**
+ * An interface for a class to keep track of whether fragment transactions are safe to commit given
+ * the activity's current lifecycle state.
+ */
+public interface FragmentTransactionChecker {
+ /**
+ * Checks if the fragment transactions are safe to commit
+ *
+ * @return {@code true} if it is safe; {@code false} otherwise.
+ */
+ boolean isSafeToCommitFragmentTransaction();
+}
diff --git a/src/com/android/wallpaper/picker/ImagePreviewFragment.java b/src/com/android/wallpaper/picker/ImagePreviewFragment.java
index b1153bb8..308e9073 100755
--- a/src/com/android/wallpaper/picker/ImagePreviewFragment.java
+++ b/src/com/android/wallpaper/picker/ImagePreviewFragment.java
@@ -52,6 +52,7 @@ import androidx.fragment.app.FragmentActivity;
import com.android.wallpaper.R;
import com.android.wallpaper.asset.Asset;
+import com.android.wallpaper.asset.CurrentWallpaperAssetVN;
import com.android.wallpaper.model.WallpaperInfo;
import com.android.wallpaper.module.WallpaperPersister.Destination;
import com.android.wallpaper.module.WallpaperPersister.SetWallpaperCallback;
@@ -314,7 +315,8 @@ public class ImagePreviewFragment extends PreviewFragment {
// Set page bitmap.
mFullResImageView.setImage(ImageSource.bitmap(pageBitmap));
- setDefaultWallpaperZoomAndScroll();
+ setDefaultWallpaperZoomAndScroll(
+ mWallpaperAsset instanceof CurrentWallpaperAssetVN);
crossFadeInMosaicView();
}
getActivity().invalidateOptionsMenu();
@@ -370,14 +372,20 @@ public class ImagePreviewFragment extends PreviewFragment {
*
* <p>This method is called once in the Fragment lifecycle after the wallpaper asset has loaded
* and rendered to the layout.
+ *
+ * @param offsetToFarLeft {@code true} if we want to offset the visible rectangle to far left of
+ * the raw wallpaper; {@code false} otherwise.
*/
- private void setDefaultWallpaperZoomAndScroll() {
+ private void setDefaultWallpaperZoomAndScroll(boolean offsetToFarLeft) {
// Determine minimum zoom to fit maximum visible area of wallpaper on crop surface.
int cropWidth = mWorkspaceSurface.getMeasuredWidth();
int cropHeight = mWorkspaceSurface.getMeasuredHeight();
Point crop = new Point(cropWidth, cropHeight);
Rect visibleRawWallpaperRect =
WallpaperCropUtils.calculateVisibleRect(mRawWallpaperSize, crop);
+ if (offsetToFarLeft) {
+ visibleRawWallpaperRect.offsetTo(/* newLeft= */ 0, visibleRawWallpaperRect.top);
+ }
final PointF centerPosition = WallpaperCropUtils.calculateDefaultCenter(requireContext(),
mRawWallpaperSize, visibleRawWallpaperRect);
diff --git a/src/com/android/wallpaper/picker/LivePreviewFragment.java b/src/com/android/wallpaper/picker/LivePreviewFragment.java
index a28b4a0a..d2078095 100644
--- a/src/com/android/wallpaper/picker/LivePreviewFragment.java
+++ b/src/com/android/wallpaper/picker/LivePreviewFragment.java
@@ -302,7 +302,9 @@ public class LivePreviewFragment extends PreviewFragment implements
mWallpaperConnection = null;
}
mWorkspaceSurfaceCallback.cleanUp();
+ mWorkspaceSurface.getHolder().removeCallback(mWorkspaceSurfaceCallback);
mWallpaperSurfaceCallback.cleanUp();
+ mWallpaperSurface.getHolder().removeCallback(mWallpaperSurfaceCallback);
}
private void previewLiveWallpaper(ImageView thumbnailView) {
diff --git a/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java b/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java
index 5fd0e7ac..260d121f 100755
--- a/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java
+++ b/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java
@@ -78,6 +78,7 @@ import com.android.wallpaper.module.WallpaperSetter;
import com.android.wallpaper.picker.BaseActivity;
import com.android.wallpaper.picker.BottomActionBarFragment;
import com.android.wallpaper.picker.CurrentWallpaperBottomSheetPresenter;
+import com.android.wallpaper.picker.FragmentTransactionChecker;
import com.android.wallpaper.picker.MyPhotosStarter.MyPhotosStarterProvider;
import com.android.wallpaper.picker.PreviewActivity;
import com.android.wallpaper.picker.RotationStarter;
@@ -816,7 +817,7 @@ public class IndividualPickerFragment extends BottomActionBarFragment
}
private void showStartRotationErrorDialog(@NetworkPreference int networkPreference) {
- BaseActivity activity = (BaseActivity) getActivity();
+ FragmentTransactionChecker activity = (FragmentTransactionChecker) getActivity();
if (activity != null) {
StartRotationErrorDialogFragment startRotationErrorDialogFragment =
StartRotationErrorDialogFragment.newInstance(networkPreference);