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

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

Issue 8416020: Handle additional feedback from http://codereview.chromium.org/8395038/. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' 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->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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698