summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/src/com/android/intentresolver/ChooserActionFactory.java14
-rw-r--r--java/src/com/android/intentresolver/ChooserActivity.java3
-rw-r--r--java/src/com/android/intentresolver/widget/ViewExtensions.kt7
3 files changed, 19 insertions, 5 deletions
diff --git a/java/src/com/android/intentresolver/ChooserActionFactory.java b/java/src/com/android/intentresolver/ChooserActionFactory.java
index dae1ab52..cc7091e4 100644
--- a/java/src/com/android/intentresolver/ChooserActionFactory.java
+++ b/java/src/com/android/intentresolver/ChooserActionFactory.java
@@ -16,6 +16,8 @@
package com.android.intentresolver;
+import static com.android.intentresolver.widget.ViewExtensionsKt.isFullyVisible;
+
import android.app.Activity;
import android.app.ActivityOptions;
import android.app.PendingIntent;
@@ -131,7 +133,8 @@ public final class ChooserActionFactory implements ChooserContentPreviewUi.Actio
ActionActivityStarter activityStarter,
@Nullable ShareResultSender shareResultSender,
Consumer</* @Nullable */ Integer> finishCallback,
- ClipboardManager clipboardManager) {
+ ClipboardManager clipboardManager,
+ FeatureFlags featureFlags) {
this(
context,
makeCopyButtonRunnable(
@@ -147,7 +150,8 @@ public final class ChooserActionFactory implements ChooserContentPreviewUi.Actio
imageEditor),
firstVisibleImageQuery,
activityStarter,
- log),
+ log,
+ featureFlags.fixPartialImageEditTransition()),
chooserActions,
onUpdateSharedTextIsExcluded,
log,
@@ -336,7 +340,8 @@ public final class ChooserActionFactory implements ChooserContentPreviewUi.Actio
@Nullable TargetInfo editSharingTarget,
Callable</* @Nullable */ View> firstVisibleImageQuery,
ActionActivityStarter activityStarter,
- EventLog log) {
+ EventLog log,
+ boolean requireFullVisibility) {
if (editSharingTarget == null) return null;
return () -> {
// Log share completion via edit.
@@ -347,7 +352,8 @@ public final class ChooserActionFactory implements ChooserContentPreviewUi.Actio
firstImageView = firstVisibleImageQuery.call();
} catch (Exception e) { /* ignore */ }
// Action bar is user-independent; always start as primary.
- if (firstImageView == null) {
+ if (firstImageView == null
+ || (requireFullVisibility && !isFullyVisible(firstImageView))) {
activityStarter.safelyStartActivityAsPersonalProfileUser(editSharingTarget);
} else {
activityStarter.safelyStartActivityAsPersonalProfileUserWithSharedElementTransition(
diff --git a/java/src/com/android/intentresolver/ChooserActivity.java b/java/src/com/android/intentresolver/ChooserActivity.java
index 7353ff37..670512ac 100644
--- a/java/src/com/android/intentresolver/ChooserActivity.java
+++ b/java/src/com/android/intentresolver/ChooserActivity.java
@@ -2212,7 +2212,8 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
},
mShareResultSender,
this::finishWithStatus,
- mClipboardManager);
+ mClipboardManager,
+ mFeatureFlags);
}
private Supplier<ActionRow.Action> createModifyShareActionFactory() {
diff --git a/java/src/com/android/intentresolver/widget/ViewExtensions.kt b/java/src/com/android/intentresolver/widget/ViewExtensions.kt
index d19933f5..64aa9352 100644
--- a/java/src/com/android/intentresolver/widget/ViewExtensions.kt
+++ b/java/src/com/android/intentresolver/widget/ViewExtensions.kt
@@ -16,6 +16,7 @@
package com.android.intentresolver.widget
+import android.graphics.Rect
import android.util.Log
import android.view.View
import androidx.core.view.OneShotPreDrawListener
@@ -42,3 +43,9 @@ internal suspend fun View.waitForPreDraw(): Unit = suspendCancellableCoroutine {
)
continuation.invokeOnCancellation { callback.removeListener() }
}
+
+internal fun View.isFullyVisible(): Boolean {
+ val rect = Rect()
+ val isVisible = getLocalVisibleRect(rect)
+ return isVisible && rect.width() == width && rect.height() == height
+}