ActivityTest.java revision 943730659b697ae049fe203b2a51d75113c49cb5
133873d2b41a5cd2597b20a4e88eb8942944c0f23Tyler Schultzpackage com.xtremelabs.robolectric.shadows;
20add4ea006647573fc11fac463c87842f2dcc403Christian Williams
30add4ea006647573fc11fac463c87842f2dcc403Christian Williamsimport android.app.Activity;
485af7906879a68c99b1878dac22605fa32454f3fRich Humphreyimport android.app.Dialog;
50add4ea006647573fc11fac463c87842f2dcc403Christian Williamsimport android.appwidget.AppWidgetProvider;
6b832a2815d03667cbe1415bfcfd596292cb76f85Josh Lauer & Christian Williamsimport android.content.Intent;
70add4ea006647573fc11fac463c87842f2dcc403Christian Williamsimport android.content.IntentFilter;
8c6526af59ebcc818c95680ac6f8efe83a0b65644adriancowhamimport android.content.pm.ActivityInfo;
9b832a2815d03667cbe1415bfcfd596292cb76f85Josh Lauer & Christian Williamsimport android.net.Uri;
1085af7906879a68c99b1878dac22605fa32454f3fRich Humphreyimport android.os.Bundle;
1105d5fa490c39eae46684f666a66acb8edf42661cPhil Goodwin & Ryan Richardimport android.view.KeyEvent;
1285af7906879a68c99b1878dac22605fa32454f3fRich Humphreyimport android.view.View;
13c6526af59ebcc818c95680ac6f8efe83a0b65644adriancowham
14297cc102ff285524a4109025ecd2c9c6ef051ce5Jan Berkelimport android.widget.FrameLayout;
15ce8adbf01d520e692a7eb6b72874c0182966127bPhil Goodwin & Tyler Schultzimport com.xtremelabs.robolectric.ApplicationResolver;
16c23ee9ca694000bd03b88d958bb84000e04f51e4Christian Williamsimport com.xtremelabs.robolectric.R;
170add4ea006647573fc11fac463c87842f2dcc403Christian Williamsimport com.xtremelabs.robolectric.Robolectric;
1807257335f88da163910cc0bd039e6163edc38580Gregg Van Hove & Phil Goodwinimport com.xtremelabs.robolectric.WithTestDefaultsRunner;
19a4f7d50f8e6f12d541421383544fe16c185e4bbcPhil Goodwin & Tyler Schultzimport com.xtremelabs.robolectric.util.TestRunnable;
20b832a2815d03667cbe1415bfcfd596292cb76f85Josh Lauer & Christian Williamsimport com.xtremelabs.robolectric.util.Transcript;
21ce8adbf01d520e692a7eb6b72874c0182966127bPhil Goodwin & Tyler Schultz
2285af7906879a68c99b1878dac22605fa32454f3fRich Humphreyimport org.hamcrest.CoreMatchers;
2385af7906879a68c99b1878dac22605fa32454f3fRich Humphreyimport org.junit.Test;
2485af7906879a68c99b1878dac22605fa32454f3fRich Humphreyimport org.junit.runner.RunWith;
2585af7906879a68c99b1878dac22605fa32454f3fRich Humphrey
2685af7906879a68c99b1878dac22605fa32454f3fRich Humphreyimport java.util.concurrent.atomic.AtomicBoolean;
2785af7906879a68c99b1878dac22605fa32454f3fRich Humphrey
2885af7906879a68c99b1878dac22605fa32454f3fRich Humphreyimport static com.xtremelabs.robolectric.Robolectric.shadowOf;
29297cc102ff285524a4109025ecd2c9c6ef051ce5Jan Berkelimport static com.xtremelabs.robolectric.util.TestUtil.assertInstanceOf;
3085af7906879a68c99b1878dac22605fa32454f3fRich Humphreyimport static com.xtremelabs.robolectric.util.TestUtil.newConfig;
315117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richardimport static org.hamcrest.CoreMatchers.equalTo;
325117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richardimport static org.hamcrest.CoreMatchers.notNullValue;
335117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richardimport static org.hamcrest.CoreMatchers.nullValue;
345117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richardimport static org.hamcrest.CoreMatchers.sameInstance;
3585af7906879a68c99b1878dac22605fa32454f3fRich Humphreyimport static org.hamcrest.core.StringStartsWith.startsWith;
3685af7906879a68c99b1878dac22605fa32454f3fRich Humphreyimport static org.junit.Assert.*;
3785af7906879a68c99b1878dac22605fa32454f3fRich Humphrey
3807257335f88da163910cc0bd039e6163edc38580Gregg Van Hove & Phil Goodwin@RunWith(WithTestDefaultsRunner.class)
390add4ea006647573fc11fac463c87842f2dcc403Christian Williamspublic class ActivityTest {
400add4ea006647573fc11fac463c87842f2dcc403Christian Williams
410add4ea006647573fc11fac463c87842f2dcc403Christian Williams    @Test(expected = IllegalStateException.class)
420add4ea006647573fc11fac463c87842f2dcc403Christian Williams    public void shouldComplainIfActivityIsDestroyedWithRegisteredBroadcastReceivers() throws Exception {
43256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante        DialogLifeCycleActivity activity = new DialogLifeCycleActivity();
440add4ea006647573fc11fac463c87842f2dcc403Christian Williams        activity.registerReceiver(new AppWidgetProvider(), new IntentFilter());
450add4ea006647573fc11fac463c87842f2dcc403Christian Williams        activity.onDestroy();
460add4ea006647573fc11fac463c87842f2dcc403Christian Williams    }
470add4ea006647573fc11fac463c87842f2dcc403Christian Williams
480add4ea006647573fc11fac463c87842f2dcc403Christian Williams    @Test
490add4ea006647573fc11fac463c87842f2dcc403Christian Williams    public void shouldNotComplainIfActivityIsDestroyedWhileAnotherActivityHasRegisteredBroadcastReceivers() throws Exception {
50256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante        DialogLifeCycleActivity activity = new DialogLifeCycleActivity();
510add4ea006647573fc11fac463c87842f2dcc403Christian Williams
52256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante        DialogLifeCycleActivity activity2 = new DialogLifeCycleActivity();
530add4ea006647573fc11fac463c87842f2dcc403Christian Williams        activity2.registerReceiver(new AppWidgetProvider(), new IntentFilter());
540add4ea006647573fc11fac463c87842f2dcc403Christian Williams
550add4ea006647573fc11fac463c87842f2dcc403Christian Williams        activity.onDestroy(); // should not throw exception
560add4ea006647573fc11fac463c87842f2dcc403Christian Williams    }
570add4ea006647573fc11fac463c87842f2dcc403Christian Williams
58ce8adbf01d520e692a7eb6b72874c0182966127bPhil Goodwin & Tyler Schultz    @Test
5933cb58b49af57097ec8450f1e2e8daed530fa823Stefano Dacchille    public void shouldNotRegisterNullBroadcastReceiver() {
6033cb58b49af57097ec8450f1e2e8daed530fa823Stefano Dacchille        DialogLifeCycleActivity activity = new DialogLifeCycleActivity();
6133cb58b49af57097ec8450f1e2e8daed530fa823Stefano Dacchille        activity.registerReceiver(null, new IntentFilter());
6233cb58b49af57097ec8450f1e2e8daed530fa823Stefano Dacchille
6333cb58b49af57097ec8450f1e2e8daed530fa823Stefano Dacchille        activity.onDestroy();
6433cb58b49af57097ec8450f1e2e8daed530fa823Stefano Dacchille    }
6533cb58b49af57097ec8450f1e2e8daed530fa823Stefano Dacchille
6633cb58b49af57097ec8450f1e2e8daed530fa823Stefano Dacchille    @Test
67b832a2815d03667cbe1415bfcfd596292cb76f85Josh Lauer & Christian Williams    public void startActivityForResultAndReceiveResult_shouldSendResponsesBackToActivity() throws Exception {
68b832a2815d03667cbe1415bfcfd596292cb76f85Josh Lauer & Christian Williams        final Transcript transcript = new Transcript();
69b832a2815d03667cbe1415bfcfd596292cb76f85Josh Lauer & Christian Williams        Activity activity = new Activity() {
70b832a2815d03667cbe1415bfcfd596292cb76f85Josh Lauer & Christian Williams            @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
71b832a2815d03667cbe1415bfcfd596292cb76f85Josh Lauer & Christian Williams                transcript.add("onActivityResult called with requestCode " + requestCode + ", resultCode " + resultCode + ", intent data " + data.getData());
72b832a2815d03667cbe1415bfcfd596292cb76f85Josh Lauer & Christian Williams            }
73b832a2815d03667cbe1415bfcfd596292cb76f85Josh Lauer & Christian Williams        };
74b832a2815d03667cbe1415bfcfd596292cb76f85Josh Lauer & Christian Williams        activity.startActivityForResult(new Intent().setType("audio/*"), 123);
75b832a2815d03667cbe1415bfcfd596292cb76f85Josh Lauer & Christian Williams        activity.startActivityForResult(new Intent().setType("image/*"), 456);
76b832a2815d03667cbe1415bfcfd596292cb76f85Josh Lauer & Christian Williams
77b832a2815d03667cbe1415bfcfd596292cb76f85Josh Lauer & Christian Williams        shadowOf(activity).receiveResult(new Intent().setType("image/*"), Activity.RESULT_OK,
7885af7906879a68c99b1878dac22605fa32454f3fRich Humphrey            new Intent().setData(Uri.parse("content:foo")));
79b832a2815d03667cbe1415bfcfd596292cb76f85Josh Lauer & Christian Williams        transcript.assertEventsSoFar("onActivityResult called with requestCode 456, resultCode -1, intent data content:foo");
80b832a2815d03667cbe1415bfcfd596292cb76f85Josh Lauer & Christian Williams    }
81b832a2815d03667cbe1415bfcfd596292cb76f85Josh Lauer & Christian Williams
82b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams    @Test
83b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams    public void startActivityForResultAndReceiveResult_whenNoIntentMatches_shouldThrowException() throws Exception {
84b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams        Activity activity = new Activity() {
85b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams            @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
86b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams                throw new IllegalStateException("should not be called");
87b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams            }
88b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams        };
89b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams        activity.startActivityForResult(new Intent().setType("audio/*"), 123);
90b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams        activity.startActivityForResult(new Intent().setType("image/*"), 456);
91b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams
92b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams        Intent requestIntent = new Intent().setType("video/*");
93b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams        try {
94b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams            shadowOf(activity).receiveResult(requestIntent, Activity.RESULT_OK,
95b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams                    new Intent().setData(Uri.parse("content:foo")));
96b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams            fail();
97b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams        } catch (Exception e) {
98b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams            assertThat(e.getMessage(), startsWith("No intent matches " + requestIntent));
99b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams        }
100b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams    }
101b76cabccd9f35b57fe486faf7d5763952c07c1a9Josh Lauer & Christian Williams
102ea74b95565e92521affdc7cc1a773e10fd235a96Josh Lauer & Christian Williams    @Test
103cf37f66c9bcbf0b25b879fbb78c9442c9101c7acRich Humphrey    public void shouldSupportStartActivityForResult() throws Exception {
104256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante        DialogLifeCycleActivity activity = new DialogLifeCycleActivity();
105cf37f66c9bcbf0b25b879fbb78c9442c9101c7acRich Humphrey        ShadowActivity shadowActivity = Robolectric.shadowOf(activity);
106256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante        Intent intent = new Intent().setClass(activity, DialogLifeCycleActivity.class);
107cf37f66c9bcbf0b25b879fbb78c9442c9101c7acRich Humphrey        assertThat(shadowActivity.getNextStartedActivity(), nullValue());
10840c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams
109cf37f66c9bcbf0b25b879fbb78c9442c9101c7acRich Humphrey        activity.startActivityForResult(intent, 142);
11040c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams
111cf37f66c9bcbf0b25b879fbb78c9442c9101c7acRich Humphrey        Intent startedIntent = shadowActivity.getNextStartedActivity();
112cf37f66c9bcbf0b25b879fbb78c9442c9101c7acRich Humphrey        assertThat(startedIntent, notNullValue());
113cf37f66c9bcbf0b25b879fbb78c9442c9101c7acRich Humphrey        assertThat(startedIntent, sameInstance(intent));
114cf37f66c9bcbf0b25b879fbb78c9442c9101c7acRich Humphrey    }
11540c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams
116cf37f66c9bcbf0b25b879fbb78c9442c9101c7acRich Humphrey    @Test
117cf37f66c9bcbf0b25b879fbb78c9442c9101c7acRich Humphrey    public void shouldSupportGetStartedActitivitesForResult() throws Exception {
118256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante        DialogLifeCycleActivity activity = new DialogLifeCycleActivity();
119cf37f66c9bcbf0b25b879fbb78c9442c9101c7acRich Humphrey        ShadowActivity shadowActivity = Robolectric.shadowOf(activity);
120256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante        Intent intent = new Intent().setClass(activity, DialogLifeCycleActivity.class);
12140c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams
122cf37f66c9bcbf0b25b879fbb78c9442c9101c7acRich Humphrey        activity.startActivityForResult(intent, 142);
12340c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams
124cf37f66c9bcbf0b25b879fbb78c9442c9101c7acRich Humphrey        ShadowActivity.IntentForResult intentForResult = shadowActivity.getNextStartedActivityForResult();
125cf37f66c9bcbf0b25b879fbb78c9442c9101c7acRich Humphrey        assertThat(intentForResult, notNullValue());
12640c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        assertThat(shadowActivity.getNextStartedActivityForResult(), nullValue());
12740c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        assertThat(intentForResult.intent, notNullValue());
12840c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        assertThat(intentForResult.intent, sameInstance(intent));
12940c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        assertThat(intentForResult.requestCode, equalTo(142));
130cf37f66c9bcbf0b25b879fbb78c9442c9101c7acRich Humphrey    }
13140c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams
132cf37f66c9bcbf0b25b879fbb78c9442c9101c7acRich Humphrey    @Test
133cf37f66c9bcbf0b25b879fbb78c9442c9101c7acRich Humphrey    public void shouldSupportPeekStartedActitivitesForResult() throws Exception {
134256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante        DialogLifeCycleActivity activity = new DialogLifeCycleActivity();
135cf37f66c9bcbf0b25b879fbb78c9442c9101c7acRich Humphrey        ShadowActivity shadowActivity = Robolectric.shadowOf(activity);
136256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante        Intent intent = new Intent().setClass(activity, DialogLifeCycleActivity.class);
137cf37f66c9bcbf0b25b879fbb78c9442c9101c7acRich Humphrey
138cf37f66c9bcbf0b25b879fbb78c9442c9101c7acRich Humphrey        activity.startActivityForResult(intent, 142);
13940c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams
140cf37f66c9bcbf0b25b879fbb78c9442c9101c7acRich Humphrey        ShadowActivity.IntentForResult intentForResult = shadowActivity.peekNextStartedActivityForResult();
141cf37f66c9bcbf0b25b879fbb78c9442c9101c7acRich Humphrey        assertThat(intentForResult, notNullValue());
14240c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        assertThat(shadowActivity.peekNextStartedActivityForResult(), sameInstance(intentForResult));
14340c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        assertThat(intentForResult.intent, notNullValue());
14440c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        assertThat(intentForResult.intent, sameInstance(intent));
14540c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        assertThat(intentForResult.requestCode, equalTo(142));
146cf37f66c9bcbf0b25b879fbb78c9442c9101c7acRich Humphrey    }
14740c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams
148cf37f66c9bcbf0b25b879fbb78c9442c9101c7acRich Humphrey    @Test
149c23ee9ca694000bd03b88d958bb84000e04f51e4Christian Williams    public void onContentChangedShouldBeCalledAfterContentViewIsSet() throws RuntimeException {
150c23ee9ca694000bd03b88d958bb84000e04f51e4Christian Williams        final Transcript transcript = new Transcript();
151c23ee9ca694000bd03b88d958bb84000e04f51e4Christian Williams        Activity customActivity = new Activity() {
152c23ee9ca694000bd03b88d958bb84000e04f51e4Christian Williams            @Override
153c23ee9ca694000bd03b88d958bb84000e04f51e4Christian Williams            public void onContentChanged() {
154c23ee9ca694000bd03b88d958bb84000e04f51e4Christian Williams                transcript.add("onContentChanged was called; title is \"" + shadowOf(findViewById(R.id.title)).innerText() + "\"");
155c23ee9ca694000bd03b88d958bb84000e04f51e4Christian Williams            }
156c23ee9ca694000bd03b88d958bb84000e04f51e4Christian Williams        };
157c23ee9ca694000bd03b88d958bb84000e04f51e4Christian Williams        customActivity.setContentView(R.layout.main);
158c23ee9ca694000bd03b88d958bb84000e04f51e4Christian Williams        transcript.assertEventsSoFar("onContentChanged was called; title is \"Main Layout\"");
159c23ee9ca694000bd03b88d958bb84000e04f51e4Christian Williams    }
160c23ee9ca694000bd03b88d958bb84000e04f51e4Christian Williams
161c23ee9ca694000bd03b88d958bb84000e04f51e4Christian Williams    @Test
162ce8adbf01d520e692a7eb6b72874c0182966127bPhil Goodwin & Tyler Schultz    public void shouldRetrievePackageNameFromTheManifest() throws Exception {
163147cdda64f4a372a27599ae1f902bd7be90bee5cPhil Goodwin        Robolectric.application = new ApplicationResolver(newConfig("TestAndroidManifestWithPackageName.xml")).resolveApplication();
16485af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        assertThat("com.wacka.wa", equalTo(new Activity().getPackageName()));
165ce8adbf01d520e692a7eb6b72874c0182966127bPhil Goodwin & Tyler Schultz    }
166ce8adbf01d520e692a7eb6b72874c0182966127bPhil Goodwin & Tyler Schultz
167a4f7d50f8e6f12d541421383544fe16c185e4bbcPhil Goodwin & Tyler Schultz    @Test
168a4f7d50f8e6f12d541421383544fe16c185e4bbcPhil Goodwin & Tyler Schultz    public void shouldRunUiTasksImmediatelyByDefault() throws Exception {
169a4f7d50f8e6f12d541421383544fe16c185e4bbcPhil Goodwin & Tyler Schultz        TestRunnable runnable = new TestRunnable();
170256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante        DialogLifeCycleActivity activity = new DialogLifeCycleActivity();
171a4f7d50f8e6f12d541421383544fe16c185e4bbcPhil Goodwin & Tyler Schultz        activity.runOnUiThread(runnable);
172a4f7d50f8e6f12d541421383544fe16c185e4bbcPhil Goodwin & Tyler Schultz        assertTrue(runnable.wasRun);
173a4f7d50f8e6f12d541421383544fe16c185e4bbcPhil Goodwin & Tyler Schultz    }
174a4f7d50f8e6f12d541421383544fe16c185e4bbcPhil Goodwin & Tyler Schultz
175a4f7d50f8e6f12d541421383544fe16c185e4bbcPhil Goodwin & Tyler Schultz    @Test
176a4f7d50f8e6f12d541421383544fe16c185e4bbcPhil Goodwin & Tyler Schultz    public void shouldQueueUiTasksWhenUiThreadIsPaused() throws Exception {
177a4f7d50f8e6f12d541421383544fe16c185e4bbcPhil Goodwin & Tyler Schultz        Robolectric.pauseMainLooper();
178a4f7d50f8e6f12d541421383544fe16c185e4bbcPhil Goodwin & Tyler Schultz
179256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante        DialogLifeCycleActivity activity = new DialogLifeCycleActivity();
180a4f7d50f8e6f12d541421383544fe16c185e4bbcPhil Goodwin & Tyler Schultz        TestRunnable runnable = new TestRunnable();
181a4f7d50f8e6f12d541421383544fe16c185e4bbcPhil Goodwin & Tyler Schultz        activity.runOnUiThread(runnable);
182a4f7d50f8e6f12d541421383544fe16c185e4bbcPhil Goodwin & Tyler Schultz        assertFalse(runnable.wasRun);
183a4f7d50f8e6f12d541421383544fe16c185e4bbcPhil Goodwin & Tyler Schultz
184a4f7d50f8e6f12d541421383544fe16c185e4bbcPhil Goodwin & Tyler Schultz        Robolectric.unPauseMainLooper();
185a4f7d50f8e6f12d541421383544fe16c185e4bbcPhil Goodwin & Tyler Schultz        assertTrue(runnable.wasRun);
186a4f7d50f8e6f12d541421383544fe16c185e4bbcPhil Goodwin & Tyler Schultz    }
18785af7906879a68c99b1878dac22605fa32454f3fRich Humphrey
18888a7b3c27c736843e69e6ec12c1d7c7397c14d1cRich Humphrey    @Test
18985af7906879a68c99b1878dac22605fa32454f3fRich Humphrey    public void showDialog_shouldCreatePrepareAndShowDialog() {
190256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante        final DialogLifeCycleActivity activity = new DialogLifeCycleActivity();
19185af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        final AtomicBoolean dialogWasShown = new AtomicBoolean(false);
19285af7906879a68c99b1878dac22605fa32454f3fRich Humphrey
19385af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        new Dialog(activity) {
19485af7906879a68c99b1878dac22605fa32454f3fRich Humphrey            {  activity.dialog = this; }
19585af7906879a68c99b1878dac22605fa32454f3fRich Humphrey
19685af7906879a68c99b1878dac22605fa32454f3fRich Humphrey            @Override
19785af7906879a68c99b1878dac22605fa32454f3fRich Humphrey            public void show() {
19885af7906879a68c99b1878dac22605fa32454f3fRich Humphrey                dialogWasShown.set(true);
19985af7906879a68c99b1878dac22605fa32454f3fRich Humphrey            }
20085af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        };
20185af7906879a68c99b1878dac22605fa32454f3fRich Humphrey
202256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante        activity.showDialog(1);
20385af7906879a68c99b1878dac22605fa32454f3fRich Humphrey
20485af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        assertTrue(activity.createdDialog);
20585af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        assertTrue(activity.preparedDialog);
20685af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        assertTrue(dialogWasShown.get());
2074c5a8c640b626c2b53b0c168d8db6d2930e270fdPhil Goodwin & Rick Kawala    }
2085d94e8e81ad59715d929954355ff3a5f72a89122Matthias Kiefer
2092dd02a943021d7a8c0784854374c2fb3d1e5f1a6Matthias Kiefer
21005fe24178737f40b46d4033578ef1ce6b5dfa43bPhil Goodwin & Rick Kawala    @Test
21185af7906879a68c99b1878dac22605fa32454f3fRich Humphrey    public void showDialog_shouldCreatePrepareAndShowDialogWithBundle() {
212256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante        final DialogLifeCycleActivity activity = new DialogLifeCycleActivity();
21385af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        final AtomicBoolean dialogWasShown = new AtomicBoolean(false);
21485af7906879a68c99b1878dac22605fa32454f3fRich Humphrey
21585af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        new Dialog(activity) {
21685af7906879a68c99b1878dac22605fa32454f3fRich Humphrey            {  activity.dialog = this; }
21785af7906879a68c99b1878dac22605fa32454f3fRich Humphrey
21885af7906879a68c99b1878dac22605fa32454f3fRich Humphrey            @Override
21985af7906879a68c99b1878dac22605fa32454f3fRich Humphrey            public void show() {
22085af7906879a68c99b1878dac22605fa32454f3fRich Humphrey                dialogWasShown.set(true);
22185af7906879a68c99b1878dac22605fa32454f3fRich Humphrey            }
22285af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        };
22385af7906879a68c99b1878dac22605fa32454f3fRich Humphrey
224256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante        activity.showDialog(1, new Bundle());
22585af7906879a68c99b1878dac22605fa32454f3fRich Humphrey
22685af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        assertTrue(activity.createdDialog);
22785af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        assertTrue(activity.preparedDialogWithBundle);
22885af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        assertTrue(dialogWasShown.get());
22985af7906879a68c99b1878dac22605fa32454f3fRich Humphrey    }
23085af7906879a68c99b1878dac22605fa32454f3fRich Humphrey
23185af7906879a68c99b1878dac22605fa32454f3fRich Humphrey    @Test
232256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante    public void showDialog_shouldReuseDialogs() {
233256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante        final DialogCreatingActivity activity = new DialogCreatingActivity();
234256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante
235256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante        activity.showDialog(1);
236256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante
2375117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard        Dialog firstDialog = ShadowDialog.getLatestDialog();
238256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante
239256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante        activity.showDialog(1);
240256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante
2415117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard        final Dialog secondDialog = ShadowDialog.getLatestDialog();
242256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante
243256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante        assertSame("dialogs should be the same instance", firstDialog, secondDialog);
244256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante    }
245256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante
2462dd02a943021d7a8c0784854374c2fb3d1e5f1a6Matthias Kiefer    @Test
247943730659b697ae049fe203b2a51d75113c49cb5Chuck Greb    public void showDialog_shouldShowDialog() throws Exception {
248943730659b697ae049fe203b2a51d75113c49cb5Chuck Greb        final DialogCreatingActivity activity = new DialogCreatingActivity();
249943730659b697ae049fe203b2a51d75113c49cb5Chuck Greb        activity.showDialog(1);
250943730659b697ae049fe203b2a51d75113c49cb5Chuck Greb        Dialog dialog = ShadowDialog.getLatestDialog();
251943730659b697ae049fe203b2a51d75113c49cb5Chuck Greb        assertTrue(dialog.isShowing());
252943730659b697ae049fe203b2a51d75113c49cb5Chuck Greb    }
253943730659b697ae049fe203b2a51d75113c49cb5Chuck Greb
254943730659b697ae049fe203b2a51d75113c49cb5Chuck Greb    @Test
255943730659b697ae049fe203b2a51d75113c49cb5Chuck Greb    public void dismissDialog_shouldDismissPreviouslyShownDialog() throws Exception {
256943730659b697ae049fe203b2a51d75113c49cb5Chuck Greb        final DialogCreatingActivity activity = new DialogCreatingActivity();
257943730659b697ae049fe203b2a51d75113c49cb5Chuck Greb        activity.showDialog(1);
258943730659b697ae049fe203b2a51d75113c49cb5Chuck Greb        activity.dismissDialog(1);
259943730659b697ae049fe203b2a51d75113c49cb5Chuck Greb        Dialog dialog = ShadowDialog.getLatestDialog();
260943730659b697ae049fe203b2a51d75113c49cb5Chuck Greb        assertFalse(dialog.isShowing());
261943730659b697ae049fe203b2a51d75113c49cb5Chuck Greb    }
262943730659b697ae049fe203b2a51d75113c49cb5Chuck Greb
263943730659b697ae049fe203b2a51d75113c49cb5Chuck Greb    @Test(expected = IllegalArgumentException.class)
264943730659b697ae049fe203b2a51d75113c49cb5Chuck Greb    public void dismissDialog_shouldThrowExceptionIfDialogWasNotPreviouslyShown() throws Exception {
265943730659b697ae049fe203b2a51d75113c49cb5Chuck Greb        final DialogCreatingActivity activity = new DialogCreatingActivity();
266943730659b697ae049fe203b2a51d75113c49cb5Chuck Greb        activity.dismissDialog(1);
267943730659b697ae049fe203b2a51d75113c49cb5Chuck Greb    }
268943730659b697ae049fe203b2a51d75113c49cb5Chuck Greb
269943730659b697ae049fe203b2a51d75113c49cb5Chuck Greb    @Test
2702dd02a943021d7a8c0784854374c2fb3d1e5f1a6Matthias Kiefer    public void removeDialog_shouldCreateDialogAgain() {
2712dd02a943021d7a8c0784854374c2fb3d1e5f1a6Matthias Kiefer        final DialogCreatingActivity activity = new DialogCreatingActivity();
2722dd02a943021d7a8c0784854374c2fb3d1e5f1a6Matthias Kiefer
2732dd02a943021d7a8c0784854374c2fb3d1e5f1a6Matthias Kiefer        activity.showDialog(1);
2742dd02a943021d7a8c0784854374c2fb3d1e5f1a6Matthias Kiefer        Dialog firstDialog = ShadowDialog.getLatestDialog();
2752dd02a943021d7a8c0784854374c2fb3d1e5f1a6Matthias Kiefer
2762dd02a943021d7a8c0784854374c2fb3d1e5f1a6Matthias Kiefer        activity.removeDialog(1);
2772dd02a943021d7a8c0784854374c2fb3d1e5f1a6Matthias Kiefer        assertNull(Robolectric.shadowOf(activity).getDialogById(1));
2782dd02a943021d7a8c0784854374c2fb3d1e5f1a6Matthias Kiefer
2792dd02a943021d7a8c0784854374c2fb3d1e5f1a6Matthias Kiefer        activity.showDialog(1);
2802dd02a943021d7a8c0784854374c2fb3d1e5f1a6Matthias Kiefer        Dialog secondDialog = ShadowDialog.getLatestDialog();
2812dd02a943021d7a8c0784854374c2fb3d1e5f1a6Matthias Kiefer
2822dd02a943021d7a8c0784854374c2fb3d1e5f1a6Matthias Kiefer        assertNotSame("dialogs should not be the same instance", firstDialog, secondDialog);
283943730659b697ae049fe203b2a51d75113c49cb5Chuck Greb    }
284256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante
285256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante    @Test
28685af7906879a68c99b1878dac22605fa32454f3fRich Humphrey    public void shouldCallOnCreateDialogFromShowDialog() {
28785af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        ActivityWithOnCreateDialog activity = new ActivityWithOnCreateDialog();
28885af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        activity.showDialog(123);
28985af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        assertTrue(activity.onCreateDialogWasCalled);
29085af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        assertThat(ShadowDialog.getLatestDialog(), CoreMatchers.<Object>notNullValue());
29185af7906879a68c99b1878dac22605fa32454f3fRich Humphrey    }
29285af7906879a68c99b1878dac22605fa32454f3fRich Humphrey
29385af7906879a68c99b1878dac22605fa32454f3fRich Humphrey    @Test
29485af7906879a68c99b1878dac22605fa32454f3fRich Humphrey    public void shouldCallFinishInOnBackPressed() {
29585af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        Activity activity = new Activity();
29685af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        activity.onBackPressed();
29785af7906879a68c99b1878dac22605fa32454f3fRich Humphrey
29888a7b3c27c736843e69e6ec12c1d7c7397c14d1cRich Humphrey        ShadowActivity shadowActivity = shadowOf(activity);
29985af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        assertTrue(shadowActivity.isFinishing());
30085af7906879a68c99b1878dac22605fa32454f3fRich Humphrey    }
30185af7906879a68c99b1878dac22605fa32454f3fRich Humphrey
30285af7906879a68c99b1878dac22605fa32454f3fRich Humphrey   @Test
30385af7906879a68c99b1878dac22605fa32454f3fRich Humphrey    public void shouldSupportCurrentFocus() {
304256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante        DialogLifeCycleActivity activity = new DialogLifeCycleActivity();
30585af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        ShadowActivity shadow = shadowOf(activity);
30688a7b3c27c736843e69e6ec12c1d7c7397c14d1cRich Humphrey
30785af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        assertNull(shadow.getCurrentFocus());
30885af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        View view = new View(activity);
30985af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        shadow.setCurrentFocus(view);
31085af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        assertEquals(view, shadow.getCurrentFocus());
31188a7b3c27c736843e69e6ec12c1d7c7397c14d1cRich Humphrey    }
312a4f7d50f8e6f12d541421383544fe16c185e4bbcPhil Goodwin & Tyler Schultz
3137f306c7c98e32f85115ce57780a6752477b8faadadriancowham        @Test
314c6526af59ebcc818c95680ac6f8efe83a0b65644adriancowham    public void shouldSetOrientation() {
3157f306c7c98e32f85115ce57780a6752477b8faadadriancowham        DialogLifeCycleActivity activity = new DialogLifeCycleActivity();
316c6526af59ebcc818c95680ac6f8efe83a0b65644adriancowham        activity.setRequestedOrientation( ActivityInfo.SCREEN_ORIENTATION_PORTRAIT );
317c6526af59ebcc818c95680ac6f8efe83a0b65644adriancowham        assertThat( activity.getRequestedOrientation(), equalTo( ActivityInfo.SCREEN_ORIENTATION_PORTRAIT ) );
318c6526af59ebcc818c95680ac6f8efe83a0b65644adriancowham    }
3197f306c7c98e32f85115ce57780a6752477b8faadadriancowham
320f320a2d3b8075716daf2a80f5a8f7890086fb609Mark Bakker    @Test
321f320a2d3b8075716daf2a80f5a8f7890086fb609Mark Bakker    public void retrieveIdOfResource() {
322f320a2d3b8075716daf2a80f5a8f7890086fb609Mark Bakker        Activity activity = new Activity();
323f320a2d3b8075716daf2a80f5a8f7890086fb609Mark Bakker
324f320a2d3b8075716daf2a80f5a8f7890086fb609Mark Bakker        int id1 = R.string.hello;
325f320a2d3b8075716daf2a80f5a8f7890086fb609Mark Bakker        String string = activity.getString(id1);
326f320a2d3b8075716daf2a80f5a8f7890086fb609Mark Bakker        assertEquals("Hello", string);
327f320a2d3b8075716daf2a80f5a8f7890086fb609Mark Bakker
328f320a2d3b8075716daf2a80f5a8f7890086fb609Mark Bakker        int id = activity.getResources().getIdentifier("hello", "string", "com.xtremelabs.robolectric");
329f320a2d3b8075716daf2a80f5a8f7890086fb609Mark Bakker        assertTrue(id > 0);
330f320a2d3b8075716daf2a80f5a8f7890086fb609Mark Bakker
331f320a2d3b8075716daf2a80f5a8f7890086fb609Mark Bakker        String hello = activity.getResources().getString(id);
332f320a2d3b8075716daf2a80f5a8f7890086fb609Mark Bakker        assertEquals("Hello", hello);
333f320a2d3b8075716daf2a80f5a8f7890086fb609Mark Bakker    }
334f320a2d3b8075716daf2a80f5a8f7890086fb609Mark Bakker
335f320a2d3b8075716daf2a80f5a8f7890086fb609Mark Bakker    @Test
336f320a2d3b8075716daf2a80f5a8f7890086fb609Mark Bakker    public void retrieveIdOfNonExistingResource() {
337f320a2d3b8075716daf2a80f5a8f7890086fb609Mark Bakker        Activity activity = new Activity();
338f320a2d3b8075716daf2a80f5a8f7890086fb609Mark Bakker
339f320a2d3b8075716daf2a80f5a8f7890086fb609Mark Bakker        int id = activity.getResources().getIdentifier("just_alot_of_crap", "string", "com.xtremelabs.robolectric");
340f320a2d3b8075716daf2a80f5a8f7890086fb609Mark Bakker        assertTrue(id == 0);
341f320a2d3b8075716daf2a80f5a8f7890086fb609Mark Bakker    }
342f320a2d3b8075716daf2a80f5a8f7890086fb609Mark Bakker
34305d5fa490c39eae46684f666a66acb8edf42661cPhil Goodwin & Ryan Richard    @Test
344297cc102ff285524a4109025ecd2c9c6ef051ce5Jan Berkel    public void shouldSetContentViewWithFrameLayoutAsParent() throws Exception {
345297cc102ff285524a4109025ecd2c9c6ef051ce5Jan Berkel        Activity activity = new Activity();
346297cc102ff285524a4109025ecd2c9c6ef051ce5Jan Berkel        activity.setContentView(R.layout.toplevel_merge);
347297cc102ff285524a4109025ecd2c9c6ef051ce5Jan Berkel
348297cc102ff285524a4109025ecd2c9c6ef051ce5Jan Berkel        View contentView = shadowOf(activity).getContentView();
349297cc102ff285524a4109025ecd2c9c6ef051ce5Jan Berkel        assertInstanceOf(FrameLayout.class, contentView);
350297cc102ff285524a4109025ecd2c9c6ef051ce5Jan Berkel        assertThat(((FrameLayout)contentView).getChildCount(), equalTo(2));
351297cc102ff285524a4109025ecd2c9c6ef051ce5Jan Berkel    }
352f14c3931ebac66beb7bf03f5d08fdd8895f02157Phil Goodwin & Ryan Richard
353f14c3931ebac66beb7bf03f5d08fdd8895f02157Phil Goodwin & Ryan Richard    @Test
35405d5fa490c39eae46684f666a66acb8edf42661cPhil Goodwin & Ryan Richard    public void onKeyUp_recordsThatItWasCalled() throws Exception {
35505d5fa490c39eae46684f666a66acb8edf42661cPhil Goodwin & Ryan Richard        Activity activity = new Activity();
35605d5fa490c39eae46684f666a66acb8edf42661cPhil Goodwin & Ryan Richard        boolean consumed = activity.onKeyUp(KeyEvent.KEYCODE_0, new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_0));
35705d5fa490c39eae46684f666a66acb8edf42661cPhil Goodwin & Ryan Richard
35805d5fa490c39eae46684f666a66acb8edf42661cPhil Goodwin & Ryan Richard        assertFalse(consumed);
35905d5fa490c39eae46684f666a66acb8edf42661cPhil Goodwin & Ryan Richard        assertTrue(shadowOf(activity).onKeyUpWasCalled());
36005d5fa490c39eae46684f666a66acb8edf42661cPhil Goodwin & Ryan Richard
36105d5fa490c39eae46684f666a66acb8edf42661cPhil Goodwin & Ryan Richard        shadowOf(activity).resetKeyUpWasCalled();
36205d5fa490c39eae46684f666a66acb8edf42661cPhil Goodwin & Ryan Richard        assertFalse(shadowOf(activity).onKeyUpWasCalled());
36305d5fa490c39eae46684f666a66acb8edf42661cPhil Goodwin & Ryan Richard    }
36405d5fa490c39eae46684f666a66acb8edf42661cPhil Goodwin & Ryan Richard
36505d5fa490c39eae46684f666a66acb8edf42661cPhil Goodwin & Ryan Richard    @Test
36605d5fa490c39eae46684f666a66acb8edf42661cPhil Goodwin & Ryan Richard    public void onKeyUp_callsOnBackPressedWhichFinishesTheActivity() throws Exception {
36705d5fa490c39eae46684f666a66acb8edf42661cPhil Goodwin & Ryan Richard        Activity activity = new Activity();
36805d5fa490c39eae46684f666a66acb8edf42661cPhil Goodwin & Ryan Richard        boolean consumed = activity.onKeyUp(KeyEvent.KEYCODE_BACK, new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK));
36905d5fa490c39eae46684f666a66acb8edf42661cPhil Goodwin & Ryan Richard
37005d5fa490c39eae46684f666a66acb8edf42661cPhil Goodwin & Ryan Richard        assertTrue(consumed);
37105d5fa490c39eae46684f666a66acb8edf42661cPhil Goodwin & Ryan Richard        assertTrue(shadowOf(activity).onKeyUpWasCalled());
37205d5fa490c39eae46684f666a66acb8edf42661cPhil Goodwin & Ryan Richard        assertTrue(activity.isFinishing());
37305d5fa490c39eae46684f666a66acb8edf42661cPhil Goodwin & Ryan Richard    }
37405d5fa490c39eae46684f666a66acb8edf42661cPhil Goodwin & Ryan Richard
375256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante    private static class DialogCreatingActivity extends Activity {
376256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante        @Override
377256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante        protected Dialog onCreateDialog(int id) {
378256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante            return new Dialog(this);
379256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante        }
380256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante    }
381c6526af59ebcc818c95680ac6f8efe83a0b65644adriancowham
382256949ba5562873047aecf1bf47533e5ae1cd933Phil Goodwin & Phil Plante    private static class DialogLifeCycleActivity extends Activity {
38385af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        public boolean createdDialog = false;
38485af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        public boolean preparedDialog = false;
38585af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        public boolean preparedDialogWithBundle = false;
38685af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        public Dialog dialog = null;
38785af7906879a68c99b1878dac22605fa32454f3fRich Humphrey
3880add4ea006647573fc11fac463c87842f2dcc403Christian Williams        @Override protected void onDestroy() {
3890add4ea006647573fc11fac463c87842f2dcc403Christian Williams            super.onDestroy();
3900add4ea006647573fc11fac463c87842f2dcc403Christian Williams        }
39185af7906879a68c99b1878dac22605fa32454f3fRich Humphrey
39285af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        @Override
39385af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        protected Dialog onCreateDialog(int id) {
39485af7906879a68c99b1878dac22605fa32454f3fRich Humphrey            createdDialog = true;
39585af7906879a68c99b1878dac22605fa32454f3fRich Humphrey            return dialog;
39685af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        }
39785af7906879a68c99b1878dac22605fa32454f3fRich Humphrey
39885af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        @Override
39985af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        protected void onPrepareDialog(int id, Dialog dialog) {
40085af7906879a68c99b1878dac22605fa32454f3fRich Humphrey            preparedDialog = true;
40185af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        }
40285af7906879a68c99b1878dac22605fa32454f3fRich Humphrey
40385af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        @Override
40485af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        protected void onPrepareDialog(int id, Dialog dialog, Bundle bundle) {
40585af7906879a68c99b1878dac22605fa32454f3fRich Humphrey            preparedDialogWithBundle = true;
40685af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        }
40785af7906879a68c99b1878dac22605fa32454f3fRich Humphrey    }
40885af7906879a68c99b1878dac22605fa32454f3fRich Humphrey
40985af7906879a68c99b1878dac22605fa32454f3fRich Humphrey    private static class ActivityWithOnCreateDialog extends Activity {
41085af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        boolean onCreateDialogWasCalled = false;
41185af7906879a68c99b1878dac22605fa32454f3fRich Humphrey
41285af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        @Override
41385af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        protected Dialog onCreateDialog(int id) {
41485af7906879a68c99b1878dac22605fa32454f3fRich Humphrey            onCreateDialogWasCalled = true;
41585af7906879a68c99b1878dac22605fa32454f3fRich Humphrey            return new Dialog(null);
41685af7906879a68c99b1878dac22605fa32454f3fRich Humphrey        }
4170add4ea006647573fc11fac463c87842f2dcc403Christian Williams    }
4180add4ea006647573fc11fac463c87842f2dcc403Christian Williams}
419