OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "base/json/json_reader.h" | 5 #include "base/json/json_reader.h" |
6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
7 #include "base/string_number_conversions.h" | 7 #include "base/string_number_conversions.h" |
8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
9 #include "base/stringprintf.h" | 9 #include "base/stringprintf.h" |
10 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
279 SUCCEED(); | 279 SUCCEED(); |
280 } | 280 } |
281 | 281 |
282 TEST_F(GeolocationNetworkProviderTest, StartProvider) { | 282 TEST_F(GeolocationNetworkProviderTest, StartProvider) { |
283 scoped_ptr<LocationProviderBase> provider(CreateProvider(true)); | 283 scoped_ptr<LocationProviderBase> provider(CreateProvider(true)); |
284 EXPECT_TRUE(provider->StartProvider(false)); | 284 EXPECT_TRUE(provider->StartProvider(false)); |
285 TestURLFetcher* fetcher = get_url_fetcher_and_advance_id(); | 285 TestURLFetcher* fetcher = get_url_fetcher_and_advance_id(); |
286 ASSERT_TRUE(fetcher != NULL); | 286 ASSERT_TRUE(fetcher != NULL); |
287 | 287 |
288 EXPECT_EQ(test_server_url_.spec() + kTestJson, | 288 EXPECT_EQ(test_server_url_.spec() + kTestJson, |
289 fetcher->original_url().spec()); | 289 fetcher->GetOriginalUrl().spec()); |
290 | 290 |
291 CheckRequestIsValid(fetcher->original_url().spec(), 0, 0, 0, ""); | 291 CheckRequestIsValid(fetcher->GetOriginalUrl().spec(), 0, 0, 0, ""); |
292 } | 292 } |
293 | 293 |
294 TEST_F(GeolocationNetworkProviderTest, StartProviderLongRequest) { | 294 TEST_F(GeolocationNetworkProviderTest, StartProviderLongRequest) { |
295 scoped_ptr<LocationProviderBase> provider(CreateProvider(true)); | 295 scoped_ptr<LocationProviderBase> provider(CreateProvider(true)); |
296 EXPECT_TRUE(provider->StartProvider(false)); | 296 EXPECT_TRUE(provider->StartProvider(false)); |
297 const int kFirstScanAps = 20; | 297 const int kFirstScanAps = 20; |
298 wifi_data_provider_->SetData(CreateReferenceWifiScanData(kFirstScanAps)); | 298 wifi_data_provider_->SetData(CreateReferenceWifiScanData(kFirstScanAps)); |
299 main_message_loop_.RunAllPending(); | 299 main_message_loop_.RunAllPending(); |
300 TestURLFetcher* fetcher = get_url_fetcher_and_advance_id(); | 300 TestURLFetcher* fetcher = get_url_fetcher_and_advance_id(); |
301 ASSERT_TRUE(fetcher != NULL); | 301 ASSERT_TRUE(fetcher != NULL); |
302 // The request url should have been shortened to less than 2048 characters | 302 // The request url should have been shortened to less than 2048 characters |
303 // in length by not including access points with the lowest signal strength | 303 // in length by not including access points with the lowest signal strength |
304 // in the request. | 304 // in the request. |
305 EXPECT_LT(fetcher->original_url().spec().size(), size_t(2048)); | 305 EXPECT_LT(fetcher->GetOriginalUrl().spec().size(), size_t(2048)); |
306 CheckRequestIsValid(fetcher->original_url().spec(), 0, 16, 4, ""); | 306 CheckRequestIsValid(fetcher->GetOriginalUrl().spec(), 0, 16, 4, ""); |
307 } | 307 } |
308 | 308 |
309 TEST_F(GeolocationNetworkProviderTest, MultipleStartProvider) { | 309 TEST_F(GeolocationNetworkProviderTest, MultipleStartProvider) { |
310 scoped_ptr<LocationProviderBase> provider_1(CreateProvider(true)); | 310 scoped_ptr<LocationProviderBase> provider_1(CreateProvider(true)); |
311 scoped_ptr<LocationProviderBase> provider_2(CreateProvider(true)); | 311 scoped_ptr<LocationProviderBase> provider_2(CreateProvider(true)); |
312 ASSERT_TRUE(radio_data_provider_); | 312 ASSERT_TRUE(radio_data_provider_); |
313 ASSERT_TRUE(wifi_data_provider_); | 313 ASSERT_TRUE(wifi_data_provider_); |
314 EXPECT_EQ(0, radio_data_provider_->start_calls_); | 314 EXPECT_EQ(0, radio_data_provider_->start_calls_); |
315 EXPECT_EQ(0, wifi_data_provider_->start_calls_); | 315 EXPECT_EQ(0, wifi_data_provider_->start_calls_); |
316 EXPECT_EQ(0, radio_data_provider_->stop_calls_); | 316 EXPECT_EQ(0, radio_data_provider_->stop_calls_); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
351 EXPECT_FALSE(provider->has_listeners()); | 351 EXPECT_FALSE(provider->has_listeners()); |
352 } | 352 } |
353 | 353 |
354 TEST_F(GeolocationNetworkProviderTest, MultipleWifiScansComplete) { | 354 TEST_F(GeolocationNetworkProviderTest, MultipleWifiScansComplete) { |
355 scoped_ptr<LocationProviderBase> provider(CreateProvider(true)); | 355 scoped_ptr<LocationProviderBase> provider(CreateProvider(true)); |
356 EXPECT_TRUE(provider->StartProvider(false)); | 356 EXPECT_TRUE(provider->StartProvider(false)); |
357 | 357 |
358 TestURLFetcher* fetcher = get_url_fetcher_and_advance_id(); | 358 TestURLFetcher* fetcher = get_url_fetcher_and_advance_id(); |
359 ASSERT_TRUE(fetcher != NULL); | 359 ASSERT_TRUE(fetcher != NULL); |
360 EXPECT_EQ(test_server_url_.spec() + kTestJson, | 360 EXPECT_EQ(test_server_url_.spec() + kTestJson, |
361 fetcher->original_url().spec()); | 361 fetcher->GetOriginalUrl().spec()); |
362 | 362 |
363 // Complete the network request with bad position fix. | 363 // Complete the network request with bad position fix. |
364 const char* kNoFixNetworkResponse = | 364 const char* kNoFixNetworkResponse = |
365 "{" | 365 "{" |
366 " \"status\": \"ZERO_RESULTS\"" | 366 " \"status\": \"ZERO_RESULTS\"" |
367 "}"; | 367 "}"; |
368 fetcher->set_url(test_server_url_); | 368 fetcher->set_url(test_server_url_); |
369 fetcher->set_status(net::URLRequestStatus()); | 369 fetcher->set_status(net::URLRequestStatus()); |
370 fetcher->set_response_code(200); // OK | 370 fetcher->set_response_code(200); // OK |
371 fetcher->SetResponseString(kNoFixNetworkResponse); | 371 fetcher->SetResponseString(kNoFixNetworkResponse); |
372 fetcher->delegate()->OnURLFetchComplete(fetcher); | 372 fetcher->delegate()->OnURLFetchComplete(fetcher); |
373 | 373 |
374 Geoposition position; | 374 Geoposition position; |
375 provider->GetPosition(&position); | 375 provider->GetPosition(&position); |
376 EXPECT_FALSE(position.IsValidFix()); | 376 EXPECT_FALSE(position.IsValidFix()); |
377 | 377 |
378 // Now wifi data arrives -- SetData will notify listeners. | 378 // Now wifi data arrives -- SetData will notify listeners. |
379 const int kFirstScanAps = 6; | 379 const int kFirstScanAps = 6; |
380 wifi_data_provider_->SetData(CreateReferenceWifiScanData(kFirstScanAps)); | 380 wifi_data_provider_->SetData(CreateReferenceWifiScanData(kFirstScanAps)); |
381 main_message_loop_.RunAllPending(); | 381 main_message_loop_.RunAllPending(); |
382 fetcher = get_url_fetcher_and_advance_id(); | 382 fetcher = get_url_fetcher_and_advance_id(); |
383 ASSERT_TRUE(fetcher != NULL); | 383 ASSERT_TRUE(fetcher != NULL); |
384 // The request should have the wifi data. | 384 // The request should have the wifi data. |
385 CheckRequestIsValid(fetcher->original_url().spec(), 0, kFirstScanAps, 0, ""); | 385 CheckRequestIsValid( |
| 386 fetcher->GetOriginalUrl().spec(), 0, kFirstScanAps, 0, ""); |
386 | 387 |
387 // Send a reply with good position fix. | 388 // Send a reply with good position fix. |
388 const char* kReferenceNetworkResponse = | 389 const char* kReferenceNetworkResponse = |
389 "{" | 390 "{" |
390 " \"status\": \"OK\"," | 391 " \"status\": \"OK\"," |
391 " \"access_token\": \"" REFERENCE_ACCESS_TOKEN "\"," | 392 " \"access_token\": \"" REFERENCE_ACCESS_TOKEN "\"," |
392 " \"accuracy\": 1200.4," | 393 " \"accuracy\": 1200.4," |
393 " \"location\": {" | 394 " \"location\": {" |
394 " \"lat\": 51.0," | 395 " \"lat\": 51.0," |
395 " \"lng\": -0.1" | 396 " \"lng\": -0.1" |
(...skipping 28 matching lines...) Expand all Loading... |
424 EXPECT_EQ(51.0, position.latitude); | 425 EXPECT_EQ(51.0, position.latitude); |
425 EXPECT_EQ(-0.1, position.longitude); | 426 EXPECT_EQ(-0.1, position.longitude); |
426 EXPECT_TRUE(position.IsValidFix()); | 427 EXPECT_TRUE(position.IsValidFix()); |
427 | 428 |
428 // Now a third scan with more than twice the original amount -> new request. | 429 // Now a third scan with more than twice the original amount -> new request. |
429 const int kThirdScanAps = kFirstScanAps * 2 + 1; | 430 const int kThirdScanAps = kFirstScanAps * 2 + 1; |
430 wifi_data_provider_->SetData(CreateReferenceWifiScanData(kThirdScanAps)); | 431 wifi_data_provider_->SetData(CreateReferenceWifiScanData(kThirdScanAps)); |
431 main_message_loop_.RunAllPending(); | 432 main_message_loop_.RunAllPending(); |
432 fetcher = get_url_fetcher_and_advance_id(); | 433 fetcher = get_url_fetcher_and_advance_id(); |
433 EXPECT_TRUE(fetcher); | 434 EXPECT_TRUE(fetcher); |
434 CheckRequestIsValid(fetcher->original_url().spec(), 0, | 435 CheckRequestIsValid(fetcher->GetOriginalUrl().spec(), 0, |
435 kThirdScanAps, 0, | 436 kThirdScanAps, 0, |
436 REFERENCE_ACCESS_TOKEN); | 437 REFERENCE_ACCESS_TOKEN); |
437 // ...reply with a network error. | 438 // ...reply with a network error. |
438 | 439 |
439 fetcher->set_url(test_server_url_); | 440 fetcher->set_url(test_server_url_); |
440 fetcher->set_status(net::URLRequestStatus(net::URLRequestStatus::FAILED, -1)); | 441 fetcher->set_status(net::URLRequestStatus(net::URLRequestStatus::FAILED, -1)); |
441 fetcher->set_response_code(200); // should be ignored | 442 fetcher->set_response_code(200); // should be ignored |
442 fetcher->SetResponseString(""); | 443 fetcher->SetResponseString(""); |
443 fetcher->delegate()->OnURLFetchComplete(fetcher); | 444 fetcher->delegate()->OnURLFetchComplete(fetcher); |
444 | 445 |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
493 scoped_ptr<LocationProviderBase> provider(CreateProvider(false)); | 494 scoped_ptr<LocationProviderBase> provider(CreateProvider(false)); |
494 EXPECT_TRUE(provider->StartProvider(false)); | 495 EXPECT_TRUE(provider->StartProvider(false)); |
495 TestURLFetcher* fetcher = get_url_fetcher_and_advance_id(); | 496 TestURLFetcher* fetcher = get_url_fetcher_and_advance_id(); |
496 EXPECT_FALSE(fetcher); | 497 EXPECT_FALSE(fetcher); |
497 provider->OnPermissionGranted(GURL(kTestHostUrl)); | 498 provider->OnPermissionGranted(GURL(kTestHostUrl)); |
498 | 499 |
499 fetcher = get_url_fetcher_and_advance_id(); | 500 fetcher = get_url_fetcher_and_advance_id(); |
500 ASSERT_TRUE(fetcher != NULL); | 501 ASSERT_TRUE(fetcher != NULL); |
501 | 502 |
502 EXPECT_EQ(test_server_url_.spec() + kTestJson, | 503 EXPECT_EQ(test_server_url_.spec() + kTestJson, |
503 fetcher->original_url().spec()); | 504 fetcher->GetOriginalUrl().spec()); |
504 } | 505 } |
505 | 506 |
506 TEST_F(GeolocationNetworkProviderTest, | 507 TEST_F(GeolocationNetworkProviderTest, |
507 NetworkRequestWithWifiDataDeferredForPermission) { | 508 NetworkRequestWithWifiDataDeferredForPermission) { |
508 access_token_store_->access_token_set_[test_server_url_] = | 509 access_token_store_->access_token_set_[test_server_url_] = |
509 UTF8ToUTF16(REFERENCE_ACCESS_TOKEN); | 510 UTF8ToUTF16(REFERENCE_ACCESS_TOKEN); |
510 scoped_ptr<LocationProviderBase> provider(CreateProvider(false)); | 511 scoped_ptr<LocationProviderBase> provider(CreateProvider(false)); |
511 EXPECT_TRUE(provider->StartProvider(false)); | 512 EXPECT_TRUE(provider->StartProvider(false)); |
512 TestURLFetcher* fetcher = get_url_fetcher_and_advance_id(); | 513 TestURLFetcher* fetcher = get_url_fetcher_and_advance_id(); |
513 EXPECT_FALSE(fetcher); | 514 EXPECT_FALSE(fetcher); |
514 | 515 |
515 static const int kScanCount = 4; | 516 static const int kScanCount = 4; |
516 wifi_data_provider_->SetData(CreateReferenceWifiScanData(kScanCount)); | 517 wifi_data_provider_->SetData(CreateReferenceWifiScanData(kScanCount)); |
517 main_message_loop_.RunAllPending(); | 518 main_message_loop_.RunAllPending(); |
518 | 519 |
519 fetcher = get_url_fetcher_and_advance_id(); | 520 fetcher = get_url_fetcher_and_advance_id(); |
520 EXPECT_FALSE(fetcher); | 521 EXPECT_FALSE(fetcher); |
521 | 522 |
522 provider->OnPermissionGranted(GURL(kTestHostUrl)); | 523 provider->OnPermissionGranted(GURL(kTestHostUrl)); |
523 | 524 |
524 fetcher = get_url_fetcher_and_advance_id(); | 525 fetcher = get_url_fetcher_and_advance_id(); |
525 ASSERT_TRUE(fetcher != NULL); | 526 ASSERT_TRUE(fetcher != NULL); |
526 | 527 |
527 CheckRequestIsValid(fetcher->original_url().spec(), 0, | 528 CheckRequestIsValid(fetcher->GetOriginalUrl().spec(), 0, |
528 kScanCount, 0, REFERENCE_ACCESS_TOKEN); | 529 kScanCount, 0, REFERENCE_ACCESS_TOKEN); |
529 } | 530 } |
530 | 531 |
531 TEST_F(GeolocationNetworkProviderTest, NetworkPositionCache) { | 532 TEST_F(GeolocationNetworkProviderTest, NetworkPositionCache) { |
532 NetworkLocationProvider::PositionCache cache; | 533 NetworkLocationProvider::PositionCache cache; |
533 | 534 |
534 const int kCacheSize = NetworkLocationProvider::PositionCache::kMaximumSize; | 535 const int kCacheSize = NetworkLocationProvider::PositionCache::kMaximumSize; |
535 for (int i = 1; i < kCacheSize * 2 + 1; ++i) { | 536 for (int i = 1; i < kCacheSize * 2 + 1; ++i) { |
536 Geoposition pos = CreateReferencePosition(i); | 537 Geoposition pos = CreateReferencePosition(i); |
537 bool ret = cache.CachePosition(CreateReferenceWifiScanData(i), pos); | 538 bool ret = cache.CachePosition(CreateReferenceWifiScanData(i), pos); |
538 EXPECT_TRUE(ret) << i; | 539 EXPECT_TRUE(ret) << i; |
539 const Geoposition* item = | 540 const Geoposition* item = |
540 cache.FindPosition(CreateReferenceWifiScanData(i)); | 541 cache.FindPosition(CreateReferenceWifiScanData(i)); |
541 ASSERT_TRUE(item) << i; | 542 ASSERT_TRUE(item) << i; |
542 EXPECT_EQ(pos.latitude, item->latitude) << i; | 543 EXPECT_EQ(pos.latitude, item->latitude) << i; |
543 EXPECT_EQ(pos.longitude, item->longitude) << i; | 544 EXPECT_EQ(pos.longitude, item->longitude) << i; |
544 if (i <= kCacheSize) { | 545 if (i <= kCacheSize) { |
545 // Nothing should have spilled yet; check oldest item is still there. | 546 // Nothing should have spilled yet; check oldest item is still there. |
546 EXPECT_TRUE(cache.FindPosition(CreateReferenceWifiScanData(1))); | 547 EXPECT_TRUE(cache.FindPosition(CreateReferenceWifiScanData(1))); |
547 } else { | 548 } else { |
548 const int evicted = i - kCacheSize; | 549 const int evicted = i - kCacheSize; |
549 EXPECT_FALSE(cache.FindPosition(CreateReferenceWifiScanData(evicted))); | 550 EXPECT_FALSE(cache.FindPosition(CreateReferenceWifiScanData(evicted))); |
550 EXPECT_TRUE(cache.FindPosition(CreateReferenceWifiScanData(evicted + 1))); | 551 EXPECT_TRUE(cache.FindPosition(CreateReferenceWifiScanData(evicted + 1))); |
551 } | 552 } |
552 } | 553 } |
553 } | 554 } |
554 | 555 |
555 } // namespace | 556 } // namespace |
OLD | NEW |