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