Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(202)

Side by Side Diff: device/geolocation/location_arbitrator_impl_unittest.cc

Issue 2226143002: Gets rid of the LocationArbitrator interface, in preference for LocationProvider. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merge branch 'master' into lai Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « device/geolocation/location_arbitrator_impl.cc ('k') | device/geolocation/location_provider.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "device/geolocation/location_arbitrator_impl.h" 5 #include "device/geolocation/location_arbitrator_impl.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility>
8 9
9 #include "base/bind.h" 10 #include "base/bind.h"
10 #include "base/memory/ptr_util.h" 11 #include "base/memory/ptr_util.h"
11 #include "device/geolocation/fake_access_token_store.h" 12 #include "device/geolocation/fake_access_token_store.h"
12 #include "device/geolocation/geolocation_delegate.h" 13 #include "device/geolocation/geolocation_delegate.h"
13 #include "device/geolocation/geoposition.h" 14 #include "device/geolocation/geoposition.h"
14 #include "device/geolocation/mock_location_provider.h" 15 #include "device/geolocation/mock_location_provider.h"
15 #include "testing/gmock/include/gmock/gmock.h" 16 #include "testing/gmock/include/gmock/gmock.h"
16 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
17 18
18 using ::testing::NiceMock; 19 using ::testing::NiceMock;
19 20
20 namespace device { 21 namespace device {
21 22
22 class MockLocationObserver { 23 class MockLocationObserver {
23 public: 24 public:
24 // Need a vtable for GMock. 25 // Need a vtable for GMock.
25 virtual ~MockLocationObserver() {} 26 virtual ~MockLocationObserver() {}
26 void InvalidateLastPosition() { 27 void InvalidateLastPosition() {
27 last_position_.latitude = 100; 28 last_position_.latitude = 100;
28 last_position_.error_code = Geoposition::ERROR_CODE_NONE; 29 last_position_.error_code = Geoposition::ERROR_CODE_NONE;
29 ASSERT_FALSE(last_position_.Validate()); 30 ASSERT_FALSE(last_position_.Validate());
30 } 31 }
31 // Delegate 32 // Delegate
32 void OnLocationUpdate(const Geoposition& position) { 33 void OnLocationUpdate(const LocationProvider*, const Geoposition& position) {
33 last_position_ = position; 34 last_position_ = position;
34 } 35 }
35 36
36 Geoposition last_position_; 37 Geoposition last_position_;
37 }; 38 };
38 39
39 double g_fake_time_now_secs = 1; 40 double g_fake_time_now_secs = 1;
40 41
41 base::Time GetTimeNowForTest() { 42 base::Time GetTimeNowForTest() {
42 return base::Time::FromDoubleT(g_fake_time_now_secs); 43 return base::Time::FromDoubleT(g_fake_time_now_secs);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 MockLocationProvider* mock_location_provider_ = nullptr; 89 MockLocationProvider* mock_location_provider_ = nullptr;
89 90
90 DISALLOW_COPY_AND_ASSIGN(FakeGeolocationDelegate); 91 DISALLOW_COPY_AND_ASSIGN(FakeGeolocationDelegate);
91 }; 92 };
92 93
93 } // namespace 94 } // namespace
94 95
95 class TestingLocationArbitrator : public LocationArbitratorImpl { 96 class TestingLocationArbitrator : public LocationArbitratorImpl {
96 public: 97 public:
97 TestingLocationArbitrator( 98 TestingLocationArbitrator(
98 const LocationArbitratorImpl::LocationUpdateCallback& callback, 99 const LocationProviderUpdateCallback& callback,
99 const scoped_refptr<AccessTokenStore>& access_token_store, 100 const scoped_refptr<AccessTokenStore>& access_token_store,
100 GeolocationDelegate* delegate) 101 GeolocationDelegate* delegate)
101 : LocationArbitratorImpl(callback, delegate), 102 : LocationArbitratorImpl(delegate),
102 cell_(nullptr), 103 cell_(nullptr),
103 gps_(nullptr), 104 gps_(nullptr),
104 access_token_store_(access_token_store) {} 105 access_token_store_(access_token_store) {
106 SetUpdateCallback(callback);
107 }
105 108
106 base::Time GetTimeNow() const override { return GetTimeNowForTest(); } 109 base::Time GetTimeNow() const override { return GetTimeNowForTest(); }
107 110
108 scoped_refptr<AccessTokenStore> NewAccessTokenStore() override { 111 scoped_refptr<AccessTokenStore> NewAccessTokenStore() override {
109 return access_token_store_; 112 return access_token_store_;
110 } 113 }
111 114
112 std::unique_ptr<LocationProvider> NewNetworkLocationProvider( 115 std::unique_ptr<LocationProvider> NewNetworkLocationProvider(
113 const scoped_refptr<AccessTokenStore>& access_token_store, 116 const scoped_refptr<AccessTokenStore>& access_token_store,
114 const scoped_refptr<net::URLRequestContextGetter>& context, 117 const scoped_refptr<net::URLRequestContextGetter>& context,
(...skipping 24 matching lines...) Expand all
139 GeolocationLocationArbitratorTest() 142 GeolocationLocationArbitratorTest()
140 : access_token_store_(new NiceMock<FakeAccessTokenStore>), 143 : access_token_store_(new NiceMock<FakeAccessTokenStore>),
141 observer_(new MockLocationObserver), 144 observer_(new MockLocationObserver),
142 delegate_(new GeolocationDelegate) {} 145 delegate_(new GeolocationDelegate) {}
143 146
144 // Initializes |arbitrator_|, with the possibility of injecting a specific 147 // Initializes |arbitrator_|, with the possibility of injecting a specific
145 // |delegate|, otherwise a default, no-op GeolocationDelegate is used. 148 // |delegate|, otherwise a default, no-op GeolocationDelegate is used.
146 void InitializeArbitrator(std::unique_ptr<GeolocationDelegate> delegate) { 149 void InitializeArbitrator(std::unique_ptr<GeolocationDelegate> delegate) {
147 if (delegate) 150 if (delegate)
148 delegate_ = std::move(delegate); 151 delegate_ = std::move(delegate);
149 const LocationArbitratorImpl::LocationUpdateCallback callback = 152 const LocationProvider::LocationProviderUpdateCallback callback =
150 base::Bind(&MockLocationObserver::OnLocationUpdate, 153 base::Bind(&MockLocationObserver::OnLocationUpdate,
151 base::Unretained(observer_.get())); 154 base::Unretained(observer_.get()));
152 arbitrator_.reset(new TestingLocationArbitrator( 155 arbitrator_.reset(new TestingLocationArbitrator(
153 callback, access_token_store_, delegate_.get())); 156 callback, access_token_store_, delegate_.get()));
154 } 157 }
155 158
156 // testing::Test 159 // testing::Test
157 void TearDown() override {} 160 void TearDown() override {}
158 161
159 void CheckLastPositionInfo(double latitude, 162 void CheckLastPositionInfo(double latitude,
(...skipping 26 matching lines...) Expand all
186 TEST_F(GeolocationLocationArbitratorTest, CreateDestroy) { 189 TEST_F(GeolocationLocationArbitratorTest, CreateDestroy) {
187 EXPECT_TRUE(access_token_store_.get()); 190 EXPECT_TRUE(access_token_store_.get());
188 InitializeArbitrator(nullptr); 191 InitializeArbitrator(nullptr);
189 EXPECT_TRUE(arbitrator_); 192 EXPECT_TRUE(arbitrator_);
190 arbitrator_.reset(); 193 arbitrator_.reset();
191 SUCCEED(); 194 SUCCEED();
192 } 195 }
193 196
194 TEST_F(GeolocationLocationArbitratorTest, OnPermissionGranted) { 197 TEST_F(GeolocationLocationArbitratorTest, OnPermissionGranted) {
195 InitializeArbitrator(nullptr); 198 InitializeArbitrator(nullptr);
196 EXPECT_FALSE(arbitrator_->HasPermissionBeenGranted()); 199 EXPECT_FALSE(arbitrator_->HasPermissionBeenGrantedForTest());
197 arbitrator_->OnPermissionGranted(); 200 arbitrator_->OnPermissionGranted();
198 EXPECT_TRUE(arbitrator_->HasPermissionBeenGranted()); 201 EXPECT_TRUE(arbitrator_->HasPermissionBeenGrantedForTest());
199 // Can't check the provider has been notified without going through the 202 // Can't check the provider has been notified without going through the
200 // motions to create the provider (see next test). 203 // motions to create the provider (see next test).
201 EXPECT_FALSE(cell()); 204 EXPECT_FALSE(cell());
202 EXPECT_FALSE(gps()); 205 EXPECT_FALSE(gps());
203 } 206 }
204 207
205 TEST_F(GeolocationLocationArbitratorTest, NormalUsage) { 208 TEST_F(GeolocationLocationArbitratorTest, NormalUsage) {
206 InitializeArbitrator(nullptr); 209 InitializeArbitrator(nullptr);
207 ASSERT_TRUE(access_token_store_.get()); 210 ASSERT_TRUE(access_token_store_.get());
208 ASSERT_TRUE(arbitrator_); 211 ASSERT_TRUE(arbitrator_);
209 212
210 EXPECT_FALSE(cell()); 213 EXPECT_FALSE(cell());
211 EXPECT_FALSE(gps()); 214 EXPECT_FALSE(gps());
212 arbitrator_->StartProviders(false); 215 arbitrator_->StartProvider(false);
213 216
214 EXPECT_TRUE(access_token_store_->access_token_map_.empty()); 217 EXPECT_TRUE(access_token_store_->access_token_map_.empty());
215 218
216 access_token_store_->NotifyDelegateTokensLoaded(); 219 access_token_store_->NotifyDelegateTokensLoaded();
217 ASSERT_TRUE(cell()); 220 ASSERT_TRUE(cell());
218 EXPECT_TRUE(gps()); 221 EXPECT_TRUE(gps());
219 EXPECT_EQ(MockLocationProvider::LOW_ACCURACY, cell()->state_); 222 EXPECT_EQ(MockLocationProvider::LOW_ACCURACY, cell()->state_);
220 EXPECT_EQ(MockLocationProvider::LOW_ACCURACY, gps()->state_); 223 EXPECT_EQ(MockLocationProvider::LOW_ACCURACY, gps()->state_);
221 EXPECT_FALSE(observer_->last_position_.Validate()); 224 EXPECT_FALSE(observer_->last_position_.Validate());
222 EXPECT_EQ(Geoposition::ERROR_CODE_NONE, observer_->last_position_.error_code); 225 EXPECT_EQ(Geoposition::ERROR_CODE_NONE, observer_->last_position_.error_code);
223 226
224 SetReferencePosition(cell()); 227 SetReferencePosition(cell());
225 228
226 EXPECT_TRUE(observer_->last_position_.Validate() || 229 EXPECT_TRUE(observer_->last_position_.Validate() ||
227 observer_->last_position_.error_code != 230 observer_->last_position_.error_code !=
228 Geoposition::ERROR_CODE_NONE); 231 Geoposition::ERROR_CODE_NONE);
229 EXPECT_EQ(cell()->position_.latitude, observer_->last_position_.latitude); 232 EXPECT_EQ(cell()->position().latitude, observer_->last_position_.latitude);
230 233
231 EXPECT_FALSE(cell()->is_permission_granted_); 234 EXPECT_FALSE(cell()->is_permission_granted());
232 EXPECT_FALSE(arbitrator_->HasPermissionBeenGranted()); 235 EXPECT_FALSE(arbitrator_->HasPermissionBeenGrantedForTest());
233 arbitrator_->OnPermissionGranted(); 236 arbitrator_->OnPermissionGranted();
234 EXPECT_TRUE(arbitrator_->HasPermissionBeenGranted()); 237 EXPECT_TRUE(arbitrator_->HasPermissionBeenGrantedForTest());
235 EXPECT_TRUE(cell()->is_permission_granted_); 238 EXPECT_TRUE(cell()->is_permission_granted());
236 } 239 }
237 240
238 TEST_F(GeolocationLocationArbitratorTest, CustomSystemProviderOnly) { 241 TEST_F(GeolocationLocationArbitratorTest, CustomSystemProviderOnly) {
239 FakeGeolocationDelegate* fake_delegate = new FakeGeolocationDelegate; 242 FakeGeolocationDelegate* fake_delegate = new FakeGeolocationDelegate;
240 fake_delegate->set_use_network(false); 243 fake_delegate->set_use_network(false);
241 244
242 std::unique_ptr<GeolocationDelegate> delegate(fake_delegate); 245 std::unique_ptr<GeolocationDelegate> delegate(fake_delegate);
243 InitializeArbitrator(std::move(delegate)); 246 InitializeArbitrator(std::move(delegate));
244 ASSERT_TRUE(arbitrator_); 247 ASSERT_TRUE(arbitrator_);
245 248
246 EXPECT_FALSE(cell()); 249 EXPECT_FALSE(cell());
247 EXPECT_FALSE(gps()); 250 EXPECT_FALSE(gps());
248 arbitrator_->StartProviders(false); 251 arbitrator_->StartProvider(false);
249 252
250 ASSERT_FALSE(cell()); 253 ASSERT_FALSE(cell());
251 EXPECT_FALSE(gps()); 254 EXPECT_FALSE(gps());
252 ASSERT_TRUE(fake_delegate->mock_location_provider()); 255 ASSERT_TRUE(fake_delegate->mock_location_provider());
253 EXPECT_EQ(MockLocationProvider::LOW_ACCURACY, 256 EXPECT_EQ(MockLocationProvider::LOW_ACCURACY,
254 fake_delegate->mock_location_provider()->state_); 257 fake_delegate->mock_location_provider()->state_);
255 EXPECT_FALSE(observer_->last_position_.Validate()); 258 EXPECT_FALSE(observer_->last_position_.Validate());
256 EXPECT_EQ(Geoposition::ERROR_CODE_NONE, observer_->last_position_.error_code); 259 EXPECT_EQ(Geoposition::ERROR_CODE_NONE, observer_->last_position_.error_code);
257 260
258 SetReferencePosition(fake_delegate->mock_location_provider()); 261 SetReferencePosition(fake_delegate->mock_location_provider());
259 262
260 EXPECT_TRUE(observer_->last_position_.Validate() || 263 EXPECT_TRUE(observer_->last_position_.Validate() ||
261 observer_->last_position_.error_code != 264 observer_->last_position_.error_code !=
262 Geoposition::ERROR_CODE_NONE); 265 Geoposition::ERROR_CODE_NONE);
263 EXPECT_EQ(fake_delegate->mock_location_provider()->position_.latitude, 266 EXPECT_EQ(fake_delegate->mock_location_provider()->position().latitude,
264 observer_->last_position_.latitude); 267 observer_->last_position_.latitude);
265 268
266 EXPECT_FALSE(fake_delegate->mock_location_provider()->is_permission_granted_); 269 EXPECT_FALSE(
267 EXPECT_FALSE(arbitrator_->HasPermissionBeenGranted()); 270 fake_delegate->mock_location_provider()->is_permission_granted());
271 EXPECT_FALSE(arbitrator_->HasPermissionBeenGrantedForTest());
268 arbitrator_->OnPermissionGranted(); 272 arbitrator_->OnPermissionGranted();
269 EXPECT_TRUE(arbitrator_->HasPermissionBeenGranted()); 273 EXPECT_TRUE(arbitrator_->HasPermissionBeenGrantedForTest());
270 EXPECT_TRUE(fake_delegate->mock_location_provider()->is_permission_granted_); 274 EXPECT_TRUE(fake_delegate->mock_location_provider()->is_permission_granted());
271 } 275 }
272 276
273 TEST_F(GeolocationLocationArbitratorTest, 277 TEST_F(GeolocationLocationArbitratorTest,
274 CustomSystemAndDefaultNetworkProviders) { 278 CustomSystemAndDefaultNetworkProviders) {
275 FakeGeolocationDelegate* fake_delegate = new FakeGeolocationDelegate; 279 FakeGeolocationDelegate* fake_delegate = new FakeGeolocationDelegate;
276 fake_delegate->set_use_network(true); 280 fake_delegate->set_use_network(true);
277 281
278 std::unique_ptr<GeolocationDelegate> delegate(fake_delegate); 282 std::unique_ptr<GeolocationDelegate> delegate(fake_delegate);
279 InitializeArbitrator(std::move(delegate)); 283 InitializeArbitrator(std::move(delegate));
280 ASSERT_TRUE(arbitrator_); 284 ASSERT_TRUE(arbitrator_);
281 285
282 EXPECT_FALSE(cell()); 286 EXPECT_FALSE(cell());
283 EXPECT_FALSE(gps()); 287 EXPECT_FALSE(gps());
284 arbitrator_->StartProviders(false); 288 arbitrator_->StartProvider(false);
285 289
286 EXPECT_TRUE(access_token_store_->access_token_map_.empty()); 290 EXPECT_TRUE(access_token_store_->access_token_map_.empty());
287 291
288 access_token_store_->NotifyDelegateTokensLoaded(); 292 access_token_store_->NotifyDelegateTokensLoaded();
289 293
290 ASSERT_TRUE(cell()); 294 ASSERT_TRUE(cell());
291 EXPECT_FALSE(gps()); 295 EXPECT_FALSE(gps());
292 ASSERT_TRUE(fake_delegate->mock_location_provider()); 296 ASSERT_TRUE(fake_delegate->mock_location_provider());
293 EXPECT_EQ(MockLocationProvider::LOW_ACCURACY, 297 EXPECT_EQ(MockLocationProvider::LOW_ACCURACY,
294 fake_delegate->mock_location_provider()->state_); 298 fake_delegate->mock_location_provider()->state_);
295 EXPECT_EQ(MockLocationProvider::LOW_ACCURACY, cell()->state_); 299 EXPECT_EQ(MockLocationProvider::LOW_ACCURACY, cell()->state_);
296 EXPECT_FALSE(observer_->last_position_.Validate()); 300 EXPECT_FALSE(observer_->last_position_.Validate());
297 EXPECT_EQ(Geoposition::ERROR_CODE_NONE, observer_->last_position_.error_code); 301 EXPECT_EQ(Geoposition::ERROR_CODE_NONE, observer_->last_position_.error_code);
298 302
299 SetReferencePosition(cell()); 303 SetReferencePosition(cell());
300 304
301 EXPECT_TRUE(observer_->last_position_.Validate() || 305 EXPECT_TRUE(observer_->last_position_.Validate() ||
302 observer_->last_position_.error_code != 306 observer_->last_position_.error_code !=
303 Geoposition::ERROR_CODE_NONE); 307 Geoposition::ERROR_CODE_NONE);
304 EXPECT_EQ(cell()->position_.latitude, observer_->last_position_.latitude); 308 EXPECT_EQ(cell()->position().latitude, observer_->last_position_.latitude);
305 309
306 EXPECT_FALSE(cell()->is_permission_granted_); 310 EXPECT_FALSE(cell()->is_permission_granted());
307 EXPECT_FALSE(arbitrator_->HasPermissionBeenGranted()); 311 EXPECT_FALSE(arbitrator_->HasPermissionBeenGrantedForTest());
308 arbitrator_->OnPermissionGranted(); 312 arbitrator_->OnPermissionGranted();
309 EXPECT_TRUE(arbitrator_->HasPermissionBeenGranted()); 313 EXPECT_TRUE(arbitrator_->HasPermissionBeenGrantedForTest());
310 EXPECT_TRUE(cell()->is_permission_granted_); 314 EXPECT_TRUE(cell()->is_permission_granted());
311 } 315 }
312 316
313 TEST_F(GeolocationLocationArbitratorTest, SetObserverOptions) { 317 TEST_F(GeolocationLocationArbitratorTest, SetObserverOptions) {
314 InitializeArbitrator(nullptr); 318 InitializeArbitrator(nullptr);
315 arbitrator_->StartProviders(false); 319 arbitrator_->StartProvider(false);
316 access_token_store_->NotifyDelegateTokensLoaded(); 320 access_token_store_->NotifyDelegateTokensLoaded();
317 ASSERT_TRUE(cell()); 321 ASSERT_TRUE(cell());
318 ASSERT_TRUE(gps()); 322 ASSERT_TRUE(gps());
319 EXPECT_EQ(MockLocationProvider::LOW_ACCURACY, cell()->state_); 323 EXPECT_EQ(MockLocationProvider::LOW_ACCURACY, cell()->state_);
320 EXPECT_EQ(MockLocationProvider::LOW_ACCURACY, gps()->state_); 324 EXPECT_EQ(MockLocationProvider::LOW_ACCURACY, gps()->state_);
321 SetReferencePosition(cell()); 325 SetReferencePosition(cell());
322 EXPECT_EQ(MockLocationProvider::LOW_ACCURACY, cell()->state_); 326 EXPECT_EQ(MockLocationProvider::LOW_ACCURACY, cell()->state_);
323 EXPECT_EQ(MockLocationProvider::LOW_ACCURACY, gps()->state_); 327 EXPECT_EQ(MockLocationProvider::LOW_ACCURACY, gps()->state_);
324 arbitrator_->StartProviders(true); 328 arbitrator_->StartProvider(true);
325 EXPECT_EQ(MockLocationProvider::HIGH_ACCURACY, cell()->state_); 329 EXPECT_EQ(MockLocationProvider::HIGH_ACCURACY, cell()->state_);
326 EXPECT_EQ(MockLocationProvider::HIGH_ACCURACY, gps()->state_); 330 EXPECT_EQ(MockLocationProvider::HIGH_ACCURACY, gps()->state_);
327 } 331 }
328 332
329 TEST_F(GeolocationLocationArbitratorTest, Arbitration) { 333 TEST_F(GeolocationLocationArbitratorTest, Arbitration) {
330 InitializeArbitrator(nullptr); 334 InitializeArbitrator(nullptr);
331 arbitrator_->StartProviders(false); 335 arbitrator_->StartProvider(false);
332 access_token_store_->NotifyDelegateTokensLoaded(); 336 access_token_store_->NotifyDelegateTokensLoaded();
333 ASSERT_TRUE(cell()); 337 ASSERT_TRUE(cell());
334 ASSERT_TRUE(gps()); 338 ASSERT_TRUE(gps());
335 339
336 SetPositionFix(cell(), 1, 2, 150); 340 SetPositionFix(cell(), 1, 2, 150);
337 341
338 // First position available 342 // First position available
339 EXPECT_TRUE(observer_->last_position_.Validate()); 343 EXPECT_TRUE(observer_->last_position_.Validate());
340 CheckLastPositionInfo(1, 2, 150); 344 CheckLastPositionInfo(1, 2, 150);
341 345
342 SetPositionFix(gps(), 3, 4, 50); 346 SetPositionFix(gps(), 3, 4, 50);
343 347
344 // More accurate fix available 348 // More accurate fix available
345 CheckLastPositionInfo(3, 4, 50); 349 CheckLastPositionInfo(3, 4, 50);
346 350
347 SetPositionFix(cell(), 5, 6, 150); 351 SetPositionFix(cell(), 5, 6, 150);
348 352
349 // New fix is available but it's less accurate, older fix should be kept. 353 // New fix is available but it's less accurate, older fix should be kept.
350 CheckLastPositionInfo(3, 4, 50); 354 CheckLastPositionInfo(3, 4, 50);
351 355
352 // Advance time, and notify once again 356 // Advance time, and notify once again
353 AdvanceTimeNow(SwitchOnFreshnessCliff()); 357 AdvanceTimeNow(SwitchOnFreshnessCliff());
354 cell()->HandlePositionChanged(cell()->position_); 358 cell()->HandlePositionChanged(cell()->position());
355 359
356 // New fix is available, less accurate but fresher 360 // New fix is available, less accurate but fresher
357 CheckLastPositionInfo(5, 6, 150); 361 CheckLastPositionInfo(5, 6, 150);
358 362
359 // Advance time, and set a low accuracy position 363 // Advance time, and set a low accuracy position
360 AdvanceTimeNow(SwitchOnFreshnessCliff()); 364 AdvanceTimeNow(SwitchOnFreshnessCliff());
361 SetPositionFix(cell(), 5.676731, 139.629385, 1000); 365 SetPositionFix(cell(), 5.676731, 139.629385, 1000);
362 CheckLastPositionInfo(5.676731, 139.629385, 1000); 366 CheckLastPositionInfo(5.676731, 139.629385, 1000);
363 367
364 // 15 secs later, step outside. Switches to gps signal. 368 // 15 secs later, step outside. Switches to gps signal.
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 402
399 // 2 minutes later 403 // 2 minutes later
400 AdvanceTimeNow(base::TimeDelta::FromMinutes(2)); 404 AdvanceTimeNow(base::TimeDelta::FromMinutes(2));
401 // Arrive in station. Cell moves but GPS is stale. Switch to fresher cell. 405 // Arrive in station. Cell moves but GPS is stale. Switch to fresher cell.
402 SetPositionFix(cell(), 3.5658700, 139.069979, 1000); 406 SetPositionFix(cell(), 3.5658700, 139.069979, 1000);
403 CheckLastPositionInfo(3.5658700, 139.069979, 1000); 407 CheckLastPositionInfo(3.5658700, 139.069979, 1000);
404 } 408 }
405 409
406 TEST_F(GeolocationLocationArbitratorTest, TwoOneShotsIsNewPositionBetter) { 410 TEST_F(GeolocationLocationArbitratorTest, TwoOneShotsIsNewPositionBetter) {
407 InitializeArbitrator(nullptr); 411 InitializeArbitrator(nullptr);
408 arbitrator_->StartProviders(false); 412 arbitrator_->StartProvider(false);
409 access_token_store_->NotifyDelegateTokensLoaded(); 413 access_token_store_->NotifyDelegateTokensLoaded();
410 ASSERT_TRUE(cell()); 414 ASSERT_TRUE(cell());
411 ASSERT_TRUE(gps()); 415 ASSERT_TRUE(gps());
412 416
413 // Set the initial position. 417 // Set the initial position.
414 SetPositionFix(cell(), 3, 139, 100); 418 SetPositionFix(cell(), 3, 139, 100);
415 CheckLastPositionInfo(3, 139, 100); 419 CheckLastPositionInfo(3, 139, 100);
416 420
417 // Restart providers to simulate a one-shot request. 421 // Restart providers to simulate a one-shot request.
418 arbitrator_->StopProviders(); 422 arbitrator_->StopProvider();
419 423
420 // To test 240956, perform a throwaway alloc. 424 // To test 240956, perform a throwaway alloc.
421 // This convinces the allocator to put the providers in a new memory location. 425 // This convinces the allocator to put the providers in a new memory location.
422 std::unique_ptr<MockLocationProvider> dummy_provider( 426 std::unique_ptr<MockLocationProvider> dummy_provider(
423 new MockLocationProvider); 427 new MockLocationProvider);
424 428
425 arbitrator_->StartProviders(false); 429 arbitrator_->StartProvider(false);
426 access_token_store_->NotifyDelegateTokensLoaded(); 430 access_token_store_->NotifyDelegateTokensLoaded();
427 431
428 // Advance the time a short while to simulate successive calls. 432 // Advance the time a short while to simulate successive calls.
429 AdvanceTimeNow(base::TimeDelta::FromMilliseconds(5)); 433 AdvanceTimeNow(base::TimeDelta::FromMilliseconds(5));
430 434
431 // Update with a less accurate position to verify 240956. 435 // Update with a less accurate position to verify 240956.
432 SetPositionFix(cell(), 3, 139, 150); 436 SetPositionFix(cell(), 3, 139, 150);
433 CheckLastPositionInfo(3, 139, 150); 437 CheckLastPositionInfo(3, 139, 150);
434 } 438 }
435 439
436 } // namespace device 440 } // namespace device
OLDNEW
« no previous file with comments | « device/geolocation/location_arbitrator_impl.cc ('k') | device/geolocation/location_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698