LocationProviderTest.java revision 4e180b6a0b4720a9b8e9e959a882386f690f08ff
1a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown// Use of this source code is governed by a BSD-style license that can be
3a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown// found in the LICENSE file.
4a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown
5a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brownpackage org.chromium.content.browser;
6a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown
7a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brownimport android.app.Activity;
8a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brownimport android.test.UiThreadTest;
9a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brownimport android.test.InstrumentationTestCase;
10a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brownimport android.test.suitebuilder.annotation.SmallTest;
11a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown
12a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brownimport org.chromium.base.ActivityStatus;
13a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brownimport org.chromium.base.test.util.Feature;
14a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown
15a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown/**
16a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown * Test suite for LocationProvider.
17a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown */
18a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brownpublic class LocationProviderTest extends InstrumentationTestCase {
197b41467704f941b11af6aace3e40993afc7f6c6fJohn Spurlock    private Activity mActivity;
207b41467704f941b11af6aace3e40993afc7f6c6fJohn Spurlock    private LocationProvider mLocationProvider;
21a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown
22a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown    @Override
23a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown    public void setUp() {
24a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown        mActivity = new Activity();
25a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown        mLocationProvider = LocationProvider.create(getInstrumentation().getTargetContext());
26a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown    }
27a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown
28a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown    /**
29a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown     * Verify a normal start/stop call pair without any activity pauses.
30a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown     */
31a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown    @SmallTest
32a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown    @UiThreadTest
33a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown    @Feature({"Location"})
34a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown    public void testStartStop() throws Exception {
35a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown        ActivityStatus.onStateChangeForTesting(mActivity, ActivityStatus.RESUMED);
36a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown        mLocationProvider.start(false);
37a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown        assertTrue("Should be running", mLocationProvider.isRunning());
38a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown        mLocationProvider.stop();
39a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown        assertFalse("Should have stopped", mLocationProvider.isRunning());
40a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown    }
41f265ea9d8307282ff1da3915978625a94fc2859eDianne Hackborn
42f265ea9d8307282ff1da3915978625a94fc2859eDianne Hackborn    /**
43f265ea9d8307282ff1da3915978625a94fc2859eDianne Hackborn     * Verify a start/upgrade/stop call sequence without any activity pauses.
44f265ea9d8307282ff1da3915978625a94fc2859eDianne Hackborn     */
457b41467704f941b11af6aace3e40993afc7f6c6fJohn Spurlock    @SmallTest
46f265ea9d8307282ff1da3915978625a94fc2859eDianne Hackborn    @UiThreadTest
47f265ea9d8307282ff1da3915978625a94fc2859eDianne Hackborn    @Feature({"Location"})
48f265ea9d8307282ff1da3915978625a94fc2859eDianne Hackborn    public void testStartUpgradeStop() throws Exception {
49f265ea9d8307282ff1da3915978625a94fc2859eDianne Hackborn        ActivityStatus.onStateChangeForTesting(mActivity, ActivityStatus.RESUMED);
50f265ea9d8307282ff1da3915978625a94fc2859eDianne Hackborn        mLocationProvider.start(false);
51f265ea9d8307282ff1da3915978625a94fc2859eDianne Hackborn        assertTrue("Should be running", mLocationProvider.isRunning());
52f265ea9d8307282ff1da3915978625a94fc2859eDianne Hackborn        mLocationProvider.start(true);
538fd7f1ed7c11d35b3f2a97878e68ee38a551dd15Christoph Studer        assertTrue("Should be running", mLocationProvider.isRunning());
547b41467704f941b11af6aace3e40993afc7f6c6fJohn Spurlock        mLocationProvider.stop();
551af30c7ac480e5d335f267a3ac3b2e6c748ce240John Spurlock        assertFalse("Should have stopped", mLocationProvider.isRunning());
561af30c7ac480e5d335f267a3ac3b2e6c748ce240John Spurlock    }
571af30c7ac480e5d335f267a3ac3b2e6c748ce240John Spurlock
58f265ea9d8307282ff1da3915978625a94fc2859eDianne Hackborn    /**
59f265ea9d8307282ff1da3915978625a94fc2859eDianne Hackborn     * Verify that pausing the activity stops location listener and when
60a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown     * activity resumes it restarts listening.
61a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown     */
62a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown    @SmallTest
63a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown    @UiThreadTest
64    @Feature({"Location"})
65    public void testStartPauseResumeStop() throws Exception {
66        ActivityStatus.onStateChangeForTesting(mActivity, ActivityStatus.RESUMED);
67        mLocationProvider.start(false);
68        assertTrue("Should be running", mLocationProvider.isRunning());
69        ActivityStatus.onStateChangeForTesting(mActivity, ActivityStatus.PAUSED);
70        assertFalse("Should have paused", mLocationProvider.isRunning());
71        ActivityStatus.onStateChangeForTesting(mActivity, ActivityStatus.RESUMED);
72        assertTrue("Should have resumed", mLocationProvider.isRunning());
73        mLocationProvider.stop();
74        assertFalse("Should have stopped", mLocationProvider.isRunning());
75    }
76
77    /**
78     * Verify that calling start when the activity is paused doesn't start listening
79     * for location updates until activity resumes.
80     */
81    @SmallTest
82    @UiThreadTest
83    @Feature({"Location"})
84    public void testPauseStartResumeStop() throws Exception {
85        ActivityStatus.onStateChangeForTesting(mActivity, ActivityStatus.PAUSED);
86        mLocationProvider.start(false);
87        assertFalse("Should not be running", mLocationProvider.isRunning());
88        ActivityStatus.onStateChangeForTesting(mActivity, ActivityStatus.RESUMED);
89        assertTrue("Should have resumed", mLocationProvider.isRunning());
90        mLocationProvider.stop();
91        assertFalse("Should have stopped", mLocationProvider.isRunning());
92    }
93
94    /**
95     * Verify that calling start when the activity is being created doesn't start listening
96     * for location updates until activity resumes.
97     */
98    @SmallTest
99    @UiThreadTest
100    @Feature({"Location"})
101    public void testCreatedStartedStartResumeStop() throws Exception {
102        ActivityStatus.onStateChangeForTesting(mActivity, ActivityStatus.CREATED);
103        mLocationProvider.start(false);
104        assertFalse("Should not be running", mLocationProvider.isRunning());
105        ActivityStatus.onStateChangeForTesting(mActivity, ActivityStatus.STARTED);
106        mLocationProvider.start(false);
107        assertFalse("Should not be running", mLocationProvider.isRunning());
108        ActivityStatus.onStateChangeForTesting(mActivity, ActivityStatus.RESUMED);
109        assertTrue("Should have resumed", mLocationProvider.isRunning());
110        mLocationProvider.stop();
111        assertFalse("Should have stopped", mLocationProvider.isRunning());
112    }
113
114    /**
115     * Verify that calling start when the activity is being created then immediately paused doesn't
116     * start listening for location updates until activity resumes.
117     */
118    @SmallTest
119    @UiThreadTest
120    @Feature({"Location"})
121    public void testCreatedStartedStartPausedResumeStop() throws Exception {
122        ActivityStatus.onStateChangeForTesting(mActivity, ActivityStatus.CREATED);
123        mLocationProvider.start(false);
124        assertFalse("Should not be running", mLocationProvider.isRunning());
125        ActivityStatus.onStateChangeForTesting(mActivity, ActivityStatus.STARTED);
126        mLocationProvider.start(false);
127        assertFalse("Should not be running", mLocationProvider.isRunning());
128        ActivityStatus.onStateChangeForTesting(mActivity, ActivityStatus.PAUSED);
129        assertFalse("Should not be running", mLocationProvider.isRunning());
130        ActivityStatus.onStateChangeForTesting(mActivity, ActivityStatus.RESUMED);
131        assertTrue("Should have resumed", mLocationProvider.isRunning());
132        mLocationProvider.stop();
133        assertFalse("Should have stopped", mLocationProvider.isRunning());
134    }
135
136    /**
137     * Verify that calling start when the activity is stopped doesn't start listening
138     * for location updates until activity resumes.
139     */
140    @SmallTest
141    @UiThreadTest
142    @Feature({"Location"})
143    public void testStopStartResumeStop() throws Exception {
144        ActivityStatus.onStateChangeForTesting(mActivity, ActivityStatus.STOPPED);
145        mLocationProvider.start(false);
146        assertFalse("Should not be running", mLocationProvider.isRunning());
147        ActivityStatus.onStateChangeForTesting(mActivity, ActivityStatus.RESUMED);
148        assertTrue("Should have resumed", mLocationProvider.isRunning());
149        mLocationProvider.stop();
150        assertFalse("Should have stopped", mLocationProvider.isRunning());
151    }
152
153    /**
154     * Verify that upgrading when paused works as expected.
155     */
156    @SmallTest
157    @UiThreadTest
158    @Feature({"Location"})
159    public void testStartPauseUpgradeResumeStop() throws Exception {
160        ActivityStatus.onStateChangeForTesting(mActivity, ActivityStatus.RESUMED);
161        mLocationProvider.start(false);
162        assertTrue("Should be running", mLocationProvider.isRunning());
163        ActivityStatus.onStateChangeForTesting(mActivity, ActivityStatus.PAUSED);
164        assertFalse("Should have paused", mLocationProvider.isRunning());
165        mLocationProvider.start(true);
166        assertFalse("Should be paused", mLocationProvider.isRunning());
167        ActivityStatus.onStateChangeForTesting(mActivity, ActivityStatus.RESUMED);
168        assertTrue("Should have resumed", mLocationProvider.isRunning());
169        mLocationProvider.stop();
170        assertFalse("Should have stopped", mLocationProvider.isRunning());
171    }
172}
173