FragmentTransactionTest.java revision 47844337986f365dae294fb434de0c0f7f8df5db
1af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri/*
2af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri * Copyright (C) 2016 The Android Open Source Project
3af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri *
4af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri * Licensed under the Apache License, Version 2.0 (the "License");
5af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri * you may not use this file except in compliance with the License.
6af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri * You may obtain a copy of the License at
7af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri *
8af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri *      http://www.apache.org/licenses/LICENSE-2.0
9af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri *
10af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri * Unless required by applicable law or agreed to in writing, software
11af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri * distributed under the License is distributed on an "AS IS" BASIS,
12af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri * See the License for the specific language governing permissions and
14af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri * limitations under the License.
15af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri */
16af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarripackage android.support.v4.app;
17af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri
18af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarriimport static junit.framework.TestCase.assertFalse;
19af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarriimport static junit.framework.TestCase.assertTrue;
20af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri
2147844337986f365dae294fb434de0c0f7f8df5dbGeorge Mountimport android.app.Instrumentation;
2247844337986f365dae294fb434de0c0f7f8df5dbGeorge Mountimport android.os.Bundle;
23af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarriimport android.support.fragment.test.R;
24af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarriimport android.support.test.InstrumentationRegistry;
2547844337986f365dae294fb434de0c0f7f8df5dbGeorge Mountimport android.support.test.annotation.UiThreadTest;
26754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikasimport android.support.test.filters.MediumTest;
27af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarriimport android.support.test.rule.ActivityTestRule;
28af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarriimport android.support.test.runner.AndroidJUnit4;
29af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarriimport android.support.v4.app.test.FragmentTestActivity;
30af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri
31af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarriimport org.junit.Before;
32af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarriimport org.junit.Rule;
33af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarriimport org.junit.Test;
34af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarriimport org.junit.runner.RunWith;
35af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri
36af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri/**
37af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri * Tests usage of the {@link FragmentTransaction} class.
38af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri */
39754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikas@MediumTest
40af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri@RunWith(AndroidJUnit4.class)
41af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarripublic class FragmentTransactionTest {
42af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri
43af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri    @Rule
44af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri    public ActivityTestRule<FragmentTestActivity> mActivityRule =
45af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri            new ActivityTestRule<>(FragmentTestActivity.class);
46af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri
47af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri    private FragmentTestActivity mActivity;
48af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri
49af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri    @Before
50af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri    public void setUp() {
51af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri        mActivity = mActivityRule.getActivity();
52af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri    }
53af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri
54af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri    @Test
55c90b24ff959edb955ff48e345c074a98368a90adAurimas Liutikas    public void testAddTransactionWithValidFragment() throws Throwable {
56af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri        final Fragment fragment = new CorrectFragment();
57c90b24ff959edb955ff48e345c074a98368a90adAurimas Liutikas        mActivityRule.runOnUiThread(new Runnable() {
58af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri            @Override
59af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri            public void run() {
60af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                mActivity.getSupportFragmentManager().beginTransaction()
61af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                        .add(R.id.content, fragment)
62af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                        .addToBackStack(null)
63af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                        .commit();
64af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                mActivity.getSupportFragmentManager().executePendingTransactions();
65af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri            }
66af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri        });
67af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
68af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri        assertTrue(fragment.isAdded());
69af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri    }
70af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri
71af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri    @Test
72c90b24ff959edb955ff48e345c074a98368a90adAurimas Liutikas    public void testAddTransactionWithPrivateFragment() throws Throwable {
73af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri        final Fragment fragment = new PrivateFragment();
74c90b24ff959edb955ff48e345c074a98368a90adAurimas Liutikas        mActivityRule.runOnUiThread(new Runnable() {
75af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri            @Override
76af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri            public void run() {
77af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                boolean exceptionThrown = false;
78af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                try {
79af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                    mActivity.getSupportFragmentManager().beginTransaction()
80af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                            .add(R.id.content, fragment)
81af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                            .addToBackStack(null)
82af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                            .commit();
83af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                    mActivity.getSupportFragmentManager().executePendingTransactions();
84af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                } catch (IllegalStateException e) {
85af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                    exceptionThrown = true;
86af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                } finally {
87af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                    assertTrue("Exception should be thrown", exceptionThrown);
88af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                    assertFalse("Fragment shouldn't be added", fragment.isAdded());
89af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                }
90af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri            }
91af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri        });
92af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
93af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri    }
94af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri
95af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri    @Test
96c90b24ff959edb955ff48e345c074a98368a90adAurimas Liutikas    public void testAddTransactionWithPackagePrivateFragment() throws Throwable {
97af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri        final Fragment fragment = new PackagePrivateFragment();
98c90b24ff959edb955ff48e345c074a98368a90adAurimas Liutikas        mActivityRule.runOnUiThread(new Runnable() {
99af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri            @Override
100af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri            public void run() {
101af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                boolean exceptionThrown = false;
102af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                try {
103af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                    mActivity.getSupportFragmentManager().beginTransaction()
104af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                            .add(R.id.content, fragment)
105af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                            .addToBackStack(null)
106af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                            .commit();
107af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                    mActivity.getSupportFragmentManager().executePendingTransactions();
108af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                } catch (IllegalStateException e) {
109af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                    exceptionThrown = true;
110af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                } finally {
111af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                    assertTrue("Exception should be thrown", exceptionThrown);
112af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                    assertFalse("Fragment shouldn't be added", fragment.isAdded());
113af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                }
114af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri            }
115af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri        });
116af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
117af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri    }
118af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri
119af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri    @Test
120c90b24ff959edb955ff48e345c074a98368a90adAurimas Liutikas    public void testAddTransactionWithAnonymousFragment() throws Throwable {
121af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri        final Fragment fragment = new Fragment() {};
122c90b24ff959edb955ff48e345c074a98368a90adAurimas Liutikas        mActivityRule.runOnUiThread(new Runnable() {
123af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri            @Override
124af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri            public void run() {
125af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                boolean exceptionThrown = false;
126af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                try {
127af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                    mActivity.getSupportFragmentManager().beginTransaction()
128af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                            .add(R.id.content, fragment)
129af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                            .addToBackStack(null)
130af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                            .commit();
131af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                    mActivity.getSupportFragmentManager().executePendingTransactions();
132af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                } catch (IllegalStateException e) {
133af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                    exceptionThrown = true;
134af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                } finally {
135af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                    assertTrue("Exception should be thrown", exceptionThrown);
136af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                    assertFalse("Fragment shouldn't be added", fragment.isAdded());
137af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                }
138af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri            }
139af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri        });
140af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
141af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri    }
142af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri
143af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri    @Test
144c90b24ff959edb955ff48e345c074a98368a90adAurimas Liutikas    public void testAddTransactionWithNonStaticFragment() throws Throwable {
145af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri        final Fragment fragment = new NonStaticFragment();
146c90b24ff959edb955ff48e345c074a98368a90adAurimas Liutikas        mActivityRule.runOnUiThread(new Runnable() {
147af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri            @Override
148af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri            public void run() {
149af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                boolean exceptionThrown = false;
150af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                try {
151af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                    mActivity.getSupportFragmentManager().beginTransaction()
152af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                            .add(R.id.content, fragment)
153af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                            .addToBackStack(null)
154af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                            .commit();
155af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                    mActivity.getSupportFragmentManager().executePendingTransactions();
156af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                } catch (IllegalStateException e) {
157af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                    exceptionThrown = true;
158af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                } finally {
159af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                    assertTrue("Exception should be thrown", exceptionThrown);
160af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                    assertFalse("Fragment shouldn't be added", fragment.isAdded());
161af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri                }
162af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri            }
163af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri        });
164af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
165af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri    }
166af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri
1675e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell    @Test
1685e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell    public void testPostOnCommit() throws Throwable {
1695e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell        mActivityRule.runOnUiThread(new Runnable() {
1705e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell            @Override
1715e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell            public void run() {
1725e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell                final boolean[] ran = new boolean[1];
1735e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell                FragmentManager fm = mActivityRule.getActivity().getSupportFragmentManager();
1745e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell                fm.beginTransaction().postOnCommit(new Runnable() {
1755e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell                    @Override
1765e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell                    public void run() {
1775e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell                        ran[0] = true;
1785e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell                    }
1795e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell                }).commit();
1805e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell                fm.executePendingTransactions();
1815e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell
1825e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell                assertTrue("postOnCommit runnable never ran", ran[0]);
1835e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell
1845e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell                ran[0] = false;
1855e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell
1865e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell                boolean threw = false;
1875e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell                try {
1885e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell                    fm.beginTransaction().postOnCommit(new Runnable() {
1895e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell                        @Override
1905e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell                        public void run() {
1915e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell                            ran[0] = true;
1925e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell                        }
1935e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell                    }).addToBackStack(null).commit();
1945e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell                } catch (IllegalStateException ise) {
1955e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell                    threw = true;
1965e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell                }
1975e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell
1985e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell                fm.executePendingTransactions();
1995e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell
2005e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell                assertTrue("postOnCommit was allowed to be called for back stack transaction",
2015e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell                        threw);
2025e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell                assertFalse("postOnCommit runnable for back stack transaction was run", ran[0]);
2035e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell            }
2045e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell        });
2055e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell    }
2065e2b030b851bde2b4569104a01b4acf6960327a6Adam Powell
20747844337986f365dae294fb434de0c0f7f8df5dbGeorge Mount    /**
20847844337986f365dae294fb434de0c0f7f8df5dbGeorge Mount     * Test to ensure that when onBackPressed() is received that there is no crash.
20947844337986f365dae294fb434de0c0f7f8df5dbGeorge Mount     */
21047844337986f365dae294fb434de0c0f7f8df5dbGeorge Mount    @Test
21147844337986f365dae294fb434de0c0f7f8df5dbGeorge Mount    @UiThreadTest
21247844337986f365dae294fb434de0c0f7f8df5dbGeorge Mount    public void crashOnBackPressed() throws Throwable {
21347844337986f365dae294fb434de0c0f7f8df5dbGeorge Mount        Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
21447844337986f365dae294fb434de0c0f7f8df5dbGeorge Mount        Bundle outState = new Bundle();
21547844337986f365dae294fb434de0c0f7f8df5dbGeorge Mount        FragmentTestActivity activity = mActivityRule.getActivity();
21647844337986f365dae294fb434de0c0f7f8df5dbGeorge Mount        instrumentation.callActivityOnSaveInstanceState(activity, outState);
21747844337986f365dae294fb434de0c0f7f8df5dbGeorge Mount        activity.onBackPressed();
21847844337986f365dae294fb434de0c0f7f8df5dbGeorge Mount    }
21947844337986f365dae294fb434de0c0f7f8df5dbGeorge Mount
220af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri    public static class CorrectFragment extends Fragment {}
221af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri
222af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri    private static class PrivateFragment extends Fragment {}
223af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri
224af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri    static class PackagePrivateFragment extends Fragment {}
225af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri
226af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri    private class NonStaticFragment extends Fragment {}
227af556dcfc63652cafa822a3d742ad96c78bff037Clara Bayarri}
228