Skip to content

Commit

Permalink
Merge branch 'google' into 'master'
Browse files Browse the repository at this point in the history
  • Loading branch information
hoisie committed Nov 25, 2024
2 parents bb8e503 + eb8711d commit 35141de
Show file tree
Hide file tree
Showing 3 changed files with 96 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,77 @@ public void createActivity_noDisplayNotFinished_shouldThrowIllegalStateException
}
}

@Test
public void createRootActivity_moveTaskToBackNonRoot_shouldMoveTaskToBack() {
try (ActivityController<Activity> controller = Robolectric.buildActivity(Activity.class)) {
activity = controller.get();
controller.create();
shadowOf(activity).setIsTaskRoot(true);

boolean isTaskMovedToBack = activity.moveTaskToBack(/* nonRoot= */ true);

assertThat(isTaskMovedToBack).isTrue();
assertThat(shadowOf(activity).isTaskMovedToBack()).isTrue();
}
}

@Test
public void createNonRootActivity_moveTaskToBackNonRoot_shouldMoveTaskToBack() {
try (ActivityController<Activity> controller = Robolectric.buildActivity(Activity.class)) {
activity = controller.get();
controller.create();
shadowOf(activity).setIsTaskRoot(false);

boolean isTaskMovedToBack = activity.moveTaskToBack(/* nonRoot= */ true);

assertThat(isTaskMovedToBack).isTrue();
assertThat(shadowOf(activity).isTaskMovedToBack()).isTrue();
}
}

@Test
public void createNonRootActivity_moveTaskToBackRoot_shouldNotMoveTaskToBack() {
try (ActivityController<Activity> controller = Robolectric.buildActivity(Activity.class)) {
activity = controller.get();
controller.create();
shadowOf(activity).setIsTaskRoot(false);

boolean isTaskMovedToBack = activity.moveTaskToBack(/* nonRoot= */ false);

assertThat(isTaskMovedToBack).isFalse();
assertThat(shadowOf(activity).isTaskMovedToBack()).isFalse();
}
}

@Test
public void createRootActivity_moveTaskToBackRoot_shouldMoveTaskToBack() {
try (ActivityController<Activity> controller = Robolectric.buildActivity(Activity.class)) {
activity = controller.get();
controller.create();
shadowOf(activity).setIsTaskRoot(true);

boolean isTaskMovedToBack = activity.moveTaskToBack(/* nonRoot= */ false);

assertThat(isTaskMovedToBack).isTrue();
assertThat(shadowOf(activity).isTaskMovedToBack()).isTrue();
}
}

@Test
public void createNonRootActivity_moveTaskToBackNonRootThenRoot_moveTaskToBacksReturnTrue() {
try (ActivityController<Activity> controller = Robolectric.buildActivity(Activity.class)) {
activity = controller.get();
controller.create();
shadowOf(activity).setIsTaskRoot(false);

boolean isTaskMovedToBackNonRoot = activity.moveTaskToBack(/* nonRoot= */ true);
boolean isTaskMovedToBackRoot = activity.moveTaskToBack(/* nonRoot= */ false);

assertThat(isTaskMovedToBackNonRoot).isTrue();
assertThat(isTaskMovedToBackRoot).isTrue();
}
}

public static final class LabelTestActivity1 extends Activity {}

public static final class LabelTestActivity2 extends Activity {}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -527,22 +527,20 @@ public void addChild(AccessibilityNodeInfo child) {

@Implementation
protected void addChild(View child) {
if (useRealAni()) {
accessibilityNodeInfoReflector.addChild(child);
return;
accessibilityNodeInfoReflector.addChild(child);
if (!useRealAni()) {
AccessibilityNodeInfo node = AccessibilityNodeInfo.obtain(child);
addChild(node);
}
AccessibilityNodeInfo node = AccessibilityNodeInfo.obtain(child);
addChild(node);
}

@Implementation
protected void addChild(View root, int virtualDescendantId) {
if (useRealAni()) {
accessibilityNodeInfoReflector.addChild(root, virtualDescendantId);
return;
accessibilityNodeInfoReflector.addChild(root, virtualDescendantId);
if (!useRealAni()) {
AccessibilityNodeInfo node = AccessibilityNodeInfo.obtain(root, virtualDescendantId);
addChild(node);
}
AccessibilityNodeInfo node = AccessibilityNodeInfo.obtain(root, virtualDescendantId);
addChild(node);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ public class ShadowActivity extends ShadowContextThemeWrapper {
private Object splashScreen = null;
private boolean showWhenLocked = false;
private boolean turnScreenOn = false;
private boolean isTaskMovedToBack = false;

public void setApplication(Application application) {
reflector(_Activity_.class, realActivity).setApplication(application);
Expand Down Expand Up @@ -919,10 +920,26 @@ protected boolean enterPictureInPictureMode(PictureInPictureParams params) {

@Implementation
protected boolean moveTaskToBack(boolean nonRoot) {
// If task has already moved to back, return true.
if (isTaskMovedToBack) {
return true;
}
// If nonRoot is false then #moveTaskToBack only works when activity is the root of the task.
if (!nonRoot && !mIsTaskRoot) {
return false;
}
isTaskMovedToBack = true;
isInPictureInPictureMode = false;
return true;
}

/**
* @return whether the task containing this activity is moved to the back of the activity stack.
*/
public boolean isTaskMovedToBack() {
return isTaskMovedToBack;
}

/**
* Gets the last startIntentSenderForResult request made to this activity.
*
Expand Down

0 comments on commit 35141de

Please sign in to comment.