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->GetOriginalUrl().spec()); | 289 fetcher->GetOriginalURL().spec()); |
290 | 290 |
291 CheckRequestIsValid(fetcher->GetOriginalUrl().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->GetOriginalUrl().spec().size(), size_t(2048)); | 305 EXPECT_LT(fetcher->GetOriginalURL().spec().size(), size_t(2048)); |
306 CheckRequestIsValid(fetcher->GetOriginalUrl().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->GetOriginalUrl().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( | 385 CheckRequestIsValid( |
386 fetcher->GetOriginalUrl().spec(), 0, kFirstScanAps, 0, ""); | 386 fetcher->GetOriginalURL().spec(), 0, kFirstScanAps, 0, ""); |
387 | 387 |
388 // Send a reply with good position fix. | 388 // Send a reply with good position fix. |
389 const char* kReferenceNetworkResponse = | 389 const char* kReferenceNetworkResponse = |
390 "{" | 390 "{" |
391 " \"status\": \"OK\"," | 391 " \"status\": \"OK\"," |
392 " \"access_token\": \"" REFERENCE_ACCESS_TOKEN "\"," | 392 " \"access_token\": \"" REFERENCE_ACCESS_TOKEN "\"," |
393 " \"accuracy\": 1200.4," | 393 " \"accuracy\": 1200.4," |
394 " \"location\": {" | 394 " \"location\": {" |
395 " \"lat\": 51.0," | 395 " \"lat\": 51.0," |
396 " \"lng\": -0.1" | 396 " \"lng\": -0.1" |
(...skipping 28 matching lines...) Expand all Loading... |
425 EXPECT_EQ(51.0, position.latitude); | 425 EXPECT_EQ(51.0, position.latitude); |
426 EXPECT_EQ(-0.1, position.longitude); | 426 EXPECT_EQ(-0.1, position.longitude); |
427 EXPECT_TRUE(position.IsValidFix()); | 427 EXPECT_TRUE(position.IsValidFix()); |
428 | 428 |
429 // 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. |
430 const int kThirdScanAps = kFirstScanAps * 2 + 1; | 430 const int kThirdScanAps = kFirstScanAps * 2 + 1; |
431 wifi_data_provider_->SetData(CreateReferenceWifiScanData(kThirdScanAps)); | 431 wifi_data_provider_->SetData(CreateReferenceWifiScanData(kThirdScanAps)); |
432 main_message_loop_.RunAllPending(); | 432 main_message_loop_.RunAllPending(); |
433 fetcher = get_url_fetcher_and_advance_id(); | 433 fetcher = get_url_fetcher_and_advance_id(); |
434 EXPECT_TRUE(fetcher); | 434 EXPECT_TRUE(fetcher); |
435 CheckRequestIsValid(fetcher->GetOriginalUrl().spec(), 0, | 435 CheckRequestIsValid(fetcher->GetOriginalURL().spec(), 0, |
436 kThirdScanAps, 0, | 436 kThirdScanAps, 0, |
437 REFERENCE_ACCESS_TOKEN); | 437 REFERENCE_ACCESS_TOKEN); |
438 // ...reply with a network error. | 438 // ...reply with a network error. |
439 | 439 |
440 fetcher->set_url(test_server_url_); | 440 fetcher->set_url(test_server_url_); |
441 fetcher->set_status(net::URLRequestStatus(net::URLRequestStatus::FAILED, -1)); | 441 fetcher->set_status(net::URLRequestStatus(net::URLRequestStatus::FAILED, -1)); |
442 fetcher->set_response_code(200); // should be ignored | 442 fetcher->set_response_code(200); // should be ignored |
443 fetcher->SetResponseString(""); | 443 fetcher->SetResponseString(""); |
444 fetcher->delegate()->OnURLFetchComplete(fetcher); | 444 fetcher->delegate()->OnURLFetchComplete(fetcher); |
445 | 445 |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
494 scoped_ptr<LocationProviderBase> provider(CreateProvider(false)); | 494 scoped_ptr<LocationProviderBase> provider(CreateProvider(false)); |
495 EXPECT_TRUE(provider->StartProvider(false)); | 495 EXPECT_TRUE(provider->StartProvider(false)); |
496 TestURLFetcher* fetcher = get_url_fetcher_and_advance_id(); | 496 TestURLFetcher* fetcher = get_url_fetcher_and_advance_id(); |
497 EXPECT_FALSE(fetcher); | 497 EXPECT_FALSE(fetcher); |
498 provider->OnPermissionGranted(GURL(kTestHostUrl)); | 498 provider->OnPermissionGranted(GURL(kTestHostUrl)); |
499 | 499 |
500 fetcher = get_url_fetcher_and_advance_id(); | 500 fetcher = get_url_fetcher_and_advance_id(); |
501 ASSERT_TRUE(fetcher != NULL); | 501 ASSERT_TRUE(fetcher != NULL); |
502 | 502 |
503 EXPECT_EQ(test_server_url_.spec() + kTestJson, | 503 EXPECT_EQ(test_server_url_.spec() + kTestJson, |
504 fetcher->GetOriginalUrl().spec()); | 504 fetcher->GetOriginalURL().spec()); |
505 } | 505 } |
506 | 506 |
507 TEST_F(GeolocationNetworkProviderTest, | 507 TEST_F(GeolocationNetworkProviderTest, |
508 NetworkRequestWithWifiDataDeferredForPermission) { | 508 NetworkRequestWithWifiDataDeferredForPermission) { |
509 access_token_store_->access_token_set_[test_server_url_] = | 509 access_token_store_->access_token_set_[test_server_url_] = |
510 UTF8ToUTF16(REFERENCE_ACCESS_TOKEN); | 510 UTF8ToUTF16(REFERENCE_ACCESS_TOKEN); |
511 scoped_ptr<LocationProviderBase> provider(CreateProvider(false)); | 511 scoped_ptr<LocationProviderBase> provider(CreateProvider(false)); |
512 EXPECT_TRUE(provider->StartProvider(false)); | 512 EXPECT_TRUE(provider->StartProvider(false)); |
513 TestURLFetcher* fetcher = get_url_fetcher_and_advance_id(); | 513 TestURLFetcher* fetcher = get_url_fetcher_and_advance_id(); |
514 EXPECT_FALSE(fetcher); | 514 EXPECT_FALSE(fetcher); |
515 | 515 |
516 static const int kScanCount = 4; | 516 static const int kScanCount = 4; |
517 wifi_data_provider_->SetData(CreateReferenceWifiScanData(kScanCount)); | 517 wifi_data_provider_->SetData(CreateReferenceWifiScanData(kScanCount)); |
518 main_message_loop_.RunAllPending(); | 518 main_message_loop_.RunAllPending(); |
519 | 519 |
520 fetcher = get_url_fetcher_and_advance_id(); | 520 fetcher = get_url_fetcher_and_advance_id(); |
521 EXPECT_FALSE(fetcher); | 521 EXPECT_FALSE(fetcher); |
522 | 522 |
523 provider->OnPermissionGranted(GURL(kTestHostUrl)); | 523 provider->OnPermissionGranted(GURL(kTestHostUrl)); |
524 | 524 |
525 fetcher = get_url_fetcher_and_advance_id(); | 525 fetcher = get_url_fetcher_and_advance_id(); |
526 ASSERT_TRUE(fetcher != NULL); | 526 ASSERT_TRUE(fetcher != NULL); |
527 | 527 |
528 CheckRequestIsValid(fetcher->GetOriginalUrl().spec(), 0, | 528 CheckRequestIsValid(fetcher->GetOriginalURL().spec(), 0, |
529 kScanCount, 0, REFERENCE_ACCESS_TOKEN); | 529 kScanCount, 0, REFERENCE_ACCESS_TOKEN); |
530 } | 530 } |
531 | 531 |
532 TEST_F(GeolocationNetworkProviderTest, NetworkPositionCache) { | 532 TEST_F(GeolocationNetworkProviderTest, NetworkPositionCache) { |
533 NetworkLocationProvider::PositionCache cache; | 533 NetworkLocationProvider::PositionCache cache; |
534 | 534 |
535 const int kCacheSize = NetworkLocationProvider::PositionCache::kMaximumSize; | 535 const int kCacheSize = NetworkLocationProvider::PositionCache::kMaximumSize; |
536 for (int i = 1; i < kCacheSize * 2 + 1; ++i) { | 536 for (int i = 1; i < kCacheSize * 2 + 1; ++i) { |
537 Geoposition pos = CreateReferencePosition(i); | 537 Geoposition pos = CreateReferencePosition(i); |
538 bool ret = cache.CachePosition(CreateReferenceWifiScanData(i), pos); | 538 bool ret = cache.CachePosition(CreateReferenceWifiScanData(i), pos); |
539 EXPECT_TRUE(ret) << i; | 539 EXPECT_TRUE(ret) << i; |
540 const Geoposition* item = | 540 const Geoposition* item = |
541 cache.FindPosition(CreateReferenceWifiScanData(i)); | 541 cache.FindPosition(CreateReferenceWifiScanData(i)); |
542 ASSERT_TRUE(item) << i; | 542 ASSERT_TRUE(item) << i; |
543 EXPECT_EQ(pos.latitude, item->latitude) << i; | 543 EXPECT_EQ(pos.latitude, item->latitude) << i; |
544 EXPECT_EQ(pos.longitude, item->longitude) << i; | 544 EXPECT_EQ(pos.longitude, item->longitude) << i; |
545 if (i <= kCacheSize) { | 545 if (i <= kCacheSize) { |
546 // Nothing should have spilled yet; check oldest item is still there. | 546 // Nothing should have spilled yet; check oldest item is still there. |
547 EXPECT_TRUE(cache.FindPosition(CreateReferenceWifiScanData(1))); | 547 EXPECT_TRUE(cache.FindPosition(CreateReferenceWifiScanData(1))); |
548 } else { | 548 } else { |
549 const int evicted = i - kCacheSize; | 549 const int evicted = i - kCacheSize; |
550 EXPECT_FALSE(cache.FindPosition(CreateReferenceWifiScanData(evicted))); | 550 EXPECT_FALSE(cache.FindPosition(CreateReferenceWifiScanData(evicted))); |
551 EXPECT_TRUE(cache.FindPosition(CreateReferenceWifiScanData(evicted + 1))); | 551 EXPECT_TRUE(cache.FindPosition(CreateReferenceWifiScanData(evicted + 1))); |
552 } | 552 } |
553 } | 553 } |
554 } | 554 } |
555 | 555 |
556 } // namespace | 556 } // namespace |
OLD | NEW |