summaryrefslogtreecommitdiffstats
path: root/tests/fragment/src/android/fragment/cts/FragmentTransitionTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/fragment/src/android/fragment/cts/FragmentTransitionTest.java')
-rw-r--r--tests/fragment/src/android/fragment/cts/FragmentTransitionTest.java39
1 files changed, 38 insertions, 1 deletions
diff --git a/tests/fragment/src/android/fragment/cts/FragmentTransitionTest.java b/tests/fragment/src/android/fragment/cts/FragmentTransitionTest.java
index 7a73046a39b..6f63e981ea4 100644
--- a/tests/fragment/src/android/fragment/cts/FragmentTransitionTest.java
+++ b/tests/fragment/src/android/fragment/cts/FragmentTransitionTest.java
@@ -38,6 +38,7 @@ import android.view.View;
import com.android.compatibility.common.util.transition.TargetTracking;
import com.android.compatibility.common.util.transition.TrackingTransition;
+import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -55,6 +56,8 @@ import java.util.stream.Collectors;
@RunWith(Parameterized.class)
public class FragmentTransitionTest {
private final boolean mReordered;
+ private int mOnBackStackChangedTimes;
+ private FragmentManager.OnBackStackChangedListener mOnBackStackChangedListener;
@Parameterized.Parameters
public static Object[] data() {
@@ -77,6 +80,20 @@ public class FragmentTransitionTest {
public void setup() throws Throwable {
mFragmentManager = mActivityRule.getActivity().getFragmentManager();
FragmentTestUtil.setContentView(mActivityRule, R.layout.simple_container);
+ mOnBackStackChangedTimes = 0;
+ mOnBackStackChangedListener = new FragmentManager.OnBackStackChangedListener() {
+ @Override
+ public void onBackStackChanged() {
+ mOnBackStackChangedTimes++;
+ }
+ };
+ mFragmentManager.addOnBackStackChangedListener(mOnBackStackChangedListener);
+ }
+
+ @After
+ public void teardown() throws Throwable {
+ mFragmentManager.removeOnBackStackChangedListener(mOnBackStackChangedListener);
+ mOnBackStackChangedListener = null;
}
// Test that normal view transitions (enter, exit, reenter, return) run with
@@ -98,6 +115,7 @@ public class FragmentTransitionTest {
fragment.waitForTransition();
verifyAndClearTransition(fragment.exitTransition, null, green, blue);
verifyNoOtherTransitions(fragment);
+ assertEquals(2, mOnBackStackChangedTimes);
// reenter transition
FragmentTestUtil.popBackStackImmediate(mActivityRule);
@@ -106,12 +124,14 @@ public class FragmentTransitionTest {
final View blue2 = findBlue();
verifyAndClearTransition(fragment.reenterTransition, null, green2, blue2);
verifyNoOtherTransitions(fragment);
+ assertEquals(3, mOnBackStackChangedTimes);
// return transition
FragmentTestUtil.popBackStackImmediate(mActivityRule);
fragment.waitForTransition();
verifyAndClearTransition(fragment.returnTransition, null, green2, blue2);
verifyNoOtherTransitions(fragment);
+ assertEquals(4, mOnBackStackChangedTimes);
}
// Test that shared elements transition from one fragment to the next
@@ -125,9 +145,11 @@ public class FragmentTransitionTest {
fragment2.setLayoutId(R.layout.scene2);
verifyTransition(fragment1, fragment2, "blueSquare");
+ assertEquals(2, mOnBackStackChangedTimes);
// Now pop the back stack
verifyPopTransition(1, fragment2, fragment1);
+ assertEquals(3, mOnBackStackChangedTimes);
}
// Test that shared element transitions through multiple fragments work together
@@ -173,6 +195,7 @@ public class FragmentTransitionTest {
}
});
FragmentTestUtil.waitForExecution(mActivityRule);
+ assertEquals(2, mOnBackStackChangedTimes);
// should be a normal transition from fragment1 to fragment2
fragment1.waitForTransition();
@@ -188,6 +211,7 @@ public class FragmentTransitionTest {
// Pop should also do the same thing
FragmentTestUtil.popBackStackImmediate(mActivityRule);
+ assertEquals(3, mOnBackStackChangedTimes);
fragment1.waitForTransition();
fragment2.waitForTransition();
@@ -216,6 +240,7 @@ public class FragmentTransitionTest {
.addToBackStack(null)
.commit();
FragmentTestUtil.waitForExecution(mActivityRule);
+ assertEquals(1, mOnBackStackChangedTimes);
fragment1.waitForTransition();
final View greenSquare1 = findViewById(fragment1, R.id.greenSquare);
@@ -450,6 +475,7 @@ public class FragmentTransitionTest {
.addToBackStack(null)
.commit();
FragmentTestUtil.waitForExecution(mActivityRule);
+ assertEquals(2, mOnBackStackChangedTimes);
fragment1.waitForTransition();
fragment2.waitForTransition();
@@ -465,6 +491,7 @@ public class FragmentTransitionTest {
// Now see if it works when popped
FragmentTestUtil.popBackStackImmediate(mActivityRule);
+ assertEquals(3, mOnBackStackChangedTimes);
fragment1.waitForTransition();
fragment2.waitForTransition();
@@ -778,6 +805,7 @@ public class FragmentTransitionTest {
.addToBackStack(null)
.commit();
FragmentTestUtil.waitForExecution(mActivityRule);
+ assertEquals(1, mOnBackStackChangedTimes);
fragment1.waitForTransition();
final View blueSquare1 = findBlue();
final View greenSquare1 = findGreen();
@@ -833,6 +861,7 @@ public class FragmentTransitionTest {
private void verifyTransition(TransitionFragment from, TransitionFragment to,
String sharedElementName) throws Throwable {
+ final int startOnBackStackChanged = mOnBackStackChangedTimes;
final View startBlue = findBlue();
final View startGreen = findGreen();
final View startRed = findRed();
@@ -847,6 +876,7 @@ public class FragmentTransitionTest {
.commit();
FragmentTestUtil.waitForExecution(mActivityRule);
+ assertEquals(startOnBackStackChanged + 1, mOnBackStackChangedTimes);
to.waitForTransition();
final View endGreen = findGreen();
@@ -872,7 +902,8 @@ public class FragmentTransitionTest {
private void verifyCrossTransition(boolean swapSource,
TransitionFragment from1, TransitionFragment from2) throws Throwable {
-
+ final int startNumOnBackStackChanged = mOnBackStackChangedTimes;
+ final int changesPerOperation = mReordered ? 1 : 2;
final TransitionFragment to1 = new TransitionFragment();
to1.setLayoutId(R.layout.scene2);
final TransitionFragment to2 = new TransitionFragment();
@@ -906,6 +937,8 @@ public class FragmentTransitionTest {
});
FragmentTestUtil.waitForExecution(mActivityRule);
+ assertEquals(startNumOnBackStackChanged + changesPerOperation, mOnBackStackChangedTimes);
+
from1.waitForTransition();
from2.waitForTransition();
to1.waitForTransition();
@@ -937,6 +970,8 @@ public class FragmentTransitionTest {
mFragmentManager.popBackStack();
});
FragmentTestUtil.waitForExecution(mActivityRule);
+ assertEquals(startNumOnBackStackChanged + changesPerOperation + 1,
+ mOnBackStackChangedTimes);
from1.waitForTransition();
from2.waitForTransition();
@@ -964,6 +999,7 @@ public class FragmentTransitionTest {
private void verifyPopTransition(final int numPops, TransitionFragment from,
TransitionFragment to, TransitionFragment... others) throws Throwable {
+ final int startOnBackStackChanged = mOnBackStackChangedTimes;
final View startBlue = findBlue();
final View startGreen = findGreen();
final View startRed = findRed();
@@ -975,6 +1011,7 @@ public class FragmentTransitionTest {
}
});
FragmentTestUtil.waitForExecution(mActivityRule);
+ assertEquals(startOnBackStackChanged + 1, mOnBackStackChangedTimes);
to.waitForTransition();
final View endGreen = findGreen();