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

Side by Side Diff: content/browser/geolocation/network_location_provider_unittest.cc

Issue 8375039: Create a content::UrlFetcher interface that lives in content/public/common and convert users to i... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: review comments Created 9 years, 1 month 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 | Annotate | Revision Log
OLDNEW
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
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
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
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
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
OLDNEW
« no previous file with comments | « chrome/service/gaia/service_gaia_authenticator.cc ('k') | content/browser/geolocation/network_location_request.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698