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

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

Issue 10581012: Move test_url_fetcher_factory.* from content/ to net/url_request (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove export annotations Created 8 years, 6 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 | Annotate | Revision Log
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 "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"
11 #include "base/values.h" 11 #include "base/values.h"
12 #include "content/browser/geolocation/fake_access_token_store.h" 12 #include "content/browser/geolocation/fake_access_token_store.h"
13 #include "content/browser/geolocation/network_location_provider.h" 13 #include "content/browser/geolocation/network_location_provider.h"
14 #include "content/public/test/test_url_fetcher_factory.h" 14 #include "net/url_request/test_url_fetcher_factory.h"
15 #include "net/url_request/url_request_status.h" 15 #include "net/url_request/url_request_status.h"
16 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
17 17
18 using content::FakeAccessTokenStore; 18 using content::FakeAccessTokenStore;
19 using content::Geoposition; 19 using content::Geoposition;
20 20
21 namespace { 21 namespace {
22 22
23 // Constants used in multiple tests. 23 // Constants used in multiple tests.
24 const char kTestServerUrl[] = "https://www.geolocation.test/service"; 24 const char kTestServerUrl[] = "https://www.geolocation.test/service";
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 protected: 151 protected:
152 GeolocationNetworkProviderTest() : test_server_url_(kTestServerUrl) { 152 GeolocationNetworkProviderTest() : test_server_url_(kTestServerUrl) {
153 // TODO(joth): Really these should be in SetUp, not here, but they take no 153 // TODO(joth): Really these should be in SetUp, not here, but they take no
154 // effect on Mac OS Release builds if done there. I kid not. Figure out why. 154 // effect on Mac OS Release builds if done there. I kid not. Figure out why.
155 WifiDataProvider::SetFactory( 155 WifiDataProvider::SetFactory(
156 MockDeviceDataProviderImpl<WifiData>::GetInstance); 156 MockDeviceDataProviderImpl<WifiData>::GetInstance);
157 } 157 }
158 158
159 // Returns the current url fetcher (if any) and advances the id ready for the 159 // Returns the current url fetcher (if any) and advances the id ready for the
160 // next test step. 160 // next test step.
161 TestURLFetcher* get_url_fetcher_and_advance_id() { 161 net::TestURLFetcher* get_url_fetcher_and_advance_id() {
162 TestURLFetcher* fetcher = url_fetcher_factory_.GetFetcherByID( 162 net::TestURLFetcher* fetcher = url_fetcher_factory_.GetFetcherByID(
163 NetworkLocationRequest::url_fetcher_id_for_tests); 163 NetworkLocationRequest::url_fetcher_id_for_tests);
164 if (fetcher) 164 if (fetcher)
165 ++NetworkLocationRequest::url_fetcher_id_for_tests; 165 ++NetworkLocationRequest::url_fetcher_id_for_tests;
166 return fetcher; 166 return fetcher;
167 } 167 }
168 168
169 static int IndexToChannel(int index) { return index + 4; } 169 static int IndexToChannel(int index) { return index + 4; }
170 170
171 // Creates wifi data containing the specified number of access points, with 171 // Creates wifi data containing the specified number of access points, with
172 // some differentiating charactistics in each. 172 // some differentiating charactistics in each.
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 // SSID. 260 // SSID.
261 EXPECT_EQ(expected_wifi_tokens[5], actual_wifi_tokens[5]); 261 EXPECT_EQ(expected_wifi_tokens[5], actual_wifi_tokens[5]);
262 EXPECT_EQ(expected_wifi_tokens[6], actual_wifi_tokens[6]); 262 EXPECT_EQ(expected_wifi_tokens[6], actual_wifi_tokens[6]);
263 } 263 }
264 EXPECT_TRUE(GURL(request_url).is_valid()); 264 EXPECT_TRUE(GURL(request_url).is_valid());
265 } 265 }
266 266
267 const GURL test_server_url_; 267 const GURL test_server_url_;
268 MessageLoop main_message_loop_; 268 MessageLoop main_message_loop_;
269 scoped_refptr<FakeAccessTokenStore> access_token_store_; 269 scoped_refptr<FakeAccessTokenStore> access_token_store_;
270 TestURLFetcherFactory url_fetcher_factory_; 270 net::TestURLFetcherFactory url_fetcher_factory_;
271 scoped_refptr<MockDeviceDataProviderImpl<WifiData> > wifi_data_provider_; 271 scoped_refptr<MockDeviceDataProviderImpl<WifiData> > wifi_data_provider_;
272 }; 272 };
273 273
274 274
275 TEST_F(GeolocationNetworkProviderTest, CreateDestroy) { 275 TEST_F(GeolocationNetworkProviderTest, CreateDestroy) {
276 // Test fixture members were SetUp correctly. 276 // Test fixture members were SetUp correctly.
277 EXPECT_EQ(&main_message_loop_, MessageLoop::current()); 277 EXPECT_EQ(&main_message_loop_, MessageLoop::current());
278 scoped_ptr<LocationProviderBase> provider(CreateProvider(true)); 278 scoped_ptr<LocationProviderBase> provider(CreateProvider(true));
279 EXPECT_TRUE(NULL != provider.get()); 279 EXPECT_TRUE(NULL != provider.get());
280 provider.reset(); 280 provider.reset();
281 SUCCEED(); 281 SUCCEED();
282 } 282 }
283 283
284 TEST_F(GeolocationNetworkProviderTest, StartProvider) { 284 TEST_F(GeolocationNetworkProviderTest, StartProvider) {
285 scoped_ptr<LocationProviderBase> provider(CreateProvider(true)); 285 scoped_ptr<LocationProviderBase> provider(CreateProvider(true));
286 EXPECT_TRUE(provider->StartProvider(false)); 286 EXPECT_TRUE(provider->StartProvider(false));
287 TestURLFetcher* fetcher = get_url_fetcher_and_advance_id(); 287 net::TestURLFetcher* fetcher = get_url_fetcher_and_advance_id();
288 ASSERT_TRUE(fetcher != NULL); 288 ASSERT_TRUE(fetcher != NULL);
289 289
290 EXPECT_EQ(test_server_url_.spec() + kTestJson, 290 EXPECT_EQ(test_server_url_.spec() + kTestJson,
291 fetcher->GetOriginalURL().spec()); 291 fetcher->GetOriginalURL().spec());
292 292
293 CheckRequestIsValid(fetcher->GetOriginalURL().spec(), 0, 0, 0, ""); 293 CheckRequestIsValid(fetcher->GetOriginalURL().spec(), 0, 0, 0, "");
294 } 294 }
295 295
296 TEST_F(GeolocationNetworkProviderTest, StartProviderLongRequest) { 296 TEST_F(GeolocationNetworkProviderTest, StartProviderLongRequest) {
297 scoped_ptr<LocationProviderBase> provider(CreateProvider(true)); 297 scoped_ptr<LocationProviderBase> provider(CreateProvider(true));
298 EXPECT_TRUE(provider->StartProvider(false)); 298 EXPECT_TRUE(provider->StartProvider(false));
299 const int kFirstScanAps = 20; 299 const int kFirstScanAps = 20;
300 wifi_data_provider_->SetData(CreateReferenceWifiScanData(kFirstScanAps)); 300 wifi_data_provider_->SetData(CreateReferenceWifiScanData(kFirstScanAps));
301 main_message_loop_.RunAllPending(); 301 main_message_loop_.RunAllPending();
302 TestURLFetcher* fetcher = get_url_fetcher_and_advance_id(); 302 net::TestURLFetcher* fetcher = get_url_fetcher_and_advance_id();
303 ASSERT_TRUE(fetcher != NULL); 303 ASSERT_TRUE(fetcher != NULL);
304 // The request url should have been shortened to less than 2048 characters 304 // The request url should have been shortened to less than 2048 characters
305 // in length by not including access points with the lowest signal strength 305 // in length by not including access points with the lowest signal strength
306 // in the request. 306 // in the request.
307 EXPECT_LT(fetcher->GetOriginalURL().spec().size(), size_t(2048)); 307 EXPECT_LT(fetcher->GetOriginalURL().spec().size(), size_t(2048));
308 CheckRequestIsValid(fetcher->GetOriginalURL().spec(), 0, 16, 4, ""); 308 CheckRequestIsValid(fetcher->GetOriginalURL().spec(), 0, 16, 4, "");
309 } 309 }
310 310
311 TEST_F(GeolocationNetworkProviderTest, MultiRegistrations) { 311 TEST_F(GeolocationNetworkProviderTest, MultiRegistrations) {
312 // TODO(joth): Strictly belongs in a base-class unit test file. 312 // TODO(joth): Strictly belongs in a base-class unit test file.
313 MessageLoopQuitListener listener; 313 MessageLoopQuitListener listener;
314 scoped_ptr<LocationProviderBase> provider(CreateProvider(true)); 314 scoped_ptr<LocationProviderBase> provider(CreateProvider(true));
315 EXPECT_FALSE(provider->has_listeners()); 315 EXPECT_FALSE(provider->has_listeners());
316 provider->RegisterListener(&listener); 316 provider->RegisterListener(&listener);
317 EXPECT_TRUE(provider->has_listeners()); 317 EXPECT_TRUE(provider->has_listeners());
318 provider->RegisterListener(&listener); 318 provider->RegisterListener(&listener);
319 EXPECT_TRUE(provider->has_listeners()); 319 EXPECT_TRUE(provider->has_listeners());
320 320
321 provider->UnregisterListener(&listener); 321 provider->UnregisterListener(&listener);
322 EXPECT_TRUE(provider->has_listeners()); 322 EXPECT_TRUE(provider->has_listeners());
323 provider->UnregisterListener(&listener); 323 provider->UnregisterListener(&listener);
324 EXPECT_FALSE(provider->has_listeners()); 324 EXPECT_FALSE(provider->has_listeners());
325 } 325 }
326 326
327 TEST_F(GeolocationNetworkProviderTest, MultipleWifiScansComplete) { 327 TEST_F(GeolocationNetworkProviderTest, MultipleWifiScansComplete) {
328 scoped_ptr<LocationProviderBase> provider(CreateProvider(true)); 328 scoped_ptr<LocationProviderBase> provider(CreateProvider(true));
329 EXPECT_TRUE(provider->StartProvider(false)); 329 EXPECT_TRUE(provider->StartProvider(false));
330 330
331 TestURLFetcher* fetcher = get_url_fetcher_and_advance_id(); 331 net::TestURLFetcher* fetcher = get_url_fetcher_and_advance_id();
332 ASSERT_TRUE(fetcher != NULL); 332 ASSERT_TRUE(fetcher != NULL);
333 EXPECT_EQ(test_server_url_.spec() + kTestJson, 333 EXPECT_EQ(test_server_url_.spec() + kTestJson,
334 fetcher->GetOriginalURL().spec()); 334 fetcher->GetOriginalURL().spec());
335 335
336 // Complete the network request with bad position fix. 336 // Complete the network request with bad position fix.
337 const char* kNoFixNetworkResponse = 337 const char* kNoFixNetworkResponse =
338 "{" 338 "{"
339 " \"status\": \"ZERO_RESULTS\"" 339 " \"status\": \"ZERO_RESULTS\""
340 "}"; 340 "}";
341 fetcher->set_url(test_server_url_); 341 fetcher->set_url(test_server_url_);
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 445
446 wifi_data_provider_->SetData(CreateReferenceWifiScanData(1)); 446 wifi_data_provider_->SetData(CreateReferenceWifiScanData(1));
447 main_message_loop_.RunAllPending(); 447 main_message_loop_.RunAllPending();
448 EXPECT_TRUE(get_url_fetcher_and_advance_id()); 448 EXPECT_TRUE(get_url_fetcher_and_advance_id());
449 } 449 }
450 450
451 TEST_F(GeolocationNetworkProviderTest, NewDataReplacesExistingNetworkRequest) { 451 TEST_F(GeolocationNetworkProviderTest, NewDataReplacesExistingNetworkRequest) {
452 // Send initial request with empty device data 452 // Send initial request with empty device data
453 scoped_ptr<LocationProviderBase> provider(CreateProvider(true)); 453 scoped_ptr<LocationProviderBase> provider(CreateProvider(true));
454 EXPECT_TRUE(provider->StartProvider(false)); 454 EXPECT_TRUE(provider->StartProvider(false));
455 TestURLFetcher* fetcher = get_url_fetcher_and_advance_id(); 455 net::TestURLFetcher* fetcher = get_url_fetcher_and_advance_id();
456 EXPECT_TRUE(fetcher); 456 EXPECT_TRUE(fetcher);
457 457
458 // Now wifi data arrives; new request should be sent. 458 // Now wifi data arrives; new request should be sent.
459 wifi_data_provider_->SetData(CreateReferenceWifiScanData(4)); 459 wifi_data_provider_->SetData(CreateReferenceWifiScanData(4));
460 main_message_loop_.RunAllPending(); 460 main_message_loop_.RunAllPending();
461 fetcher = get_url_fetcher_and_advance_id(); 461 fetcher = get_url_fetcher_and_advance_id();
462 EXPECT_TRUE(fetcher); 462 EXPECT_TRUE(fetcher);
463 } 463 }
464 464
465 TEST_F(GeolocationNetworkProviderTest, NetworkRequestDeferredForPermission) { 465 TEST_F(GeolocationNetworkProviderTest, NetworkRequestDeferredForPermission) {
466 scoped_ptr<LocationProviderBase> provider(CreateProvider(false)); 466 scoped_ptr<LocationProviderBase> provider(CreateProvider(false));
467 EXPECT_TRUE(provider->StartProvider(false)); 467 EXPECT_TRUE(provider->StartProvider(false));
468 TestURLFetcher* fetcher = get_url_fetcher_and_advance_id(); 468 net::TestURLFetcher* fetcher = get_url_fetcher_and_advance_id();
469 EXPECT_FALSE(fetcher); 469 EXPECT_FALSE(fetcher);
470 provider->OnPermissionGranted(); 470 provider->OnPermissionGranted();
471 471
472 fetcher = get_url_fetcher_and_advance_id(); 472 fetcher = get_url_fetcher_and_advance_id();
473 ASSERT_TRUE(fetcher != NULL); 473 ASSERT_TRUE(fetcher != NULL);
474 474
475 EXPECT_EQ(test_server_url_.spec() + kTestJson, 475 EXPECT_EQ(test_server_url_.spec() + kTestJson,
476 fetcher->GetOriginalURL().spec()); 476 fetcher->GetOriginalURL().spec());
477 } 477 }
478 478
479 TEST_F(GeolocationNetworkProviderTest, 479 TEST_F(GeolocationNetworkProviderTest,
480 NetworkRequestWithWifiDataDeferredForPermission) { 480 NetworkRequestWithWifiDataDeferredForPermission) {
481 access_token_store_->access_token_set_[test_server_url_] = 481 access_token_store_->access_token_set_[test_server_url_] =
482 UTF8ToUTF16(REFERENCE_ACCESS_TOKEN); 482 UTF8ToUTF16(REFERENCE_ACCESS_TOKEN);
483 scoped_ptr<LocationProviderBase> provider(CreateProvider(false)); 483 scoped_ptr<LocationProviderBase> provider(CreateProvider(false));
484 EXPECT_TRUE(provider->StartProvider(false)); 484 EXPECT_TRUE(provider->StartProvider(false));
485 TestURLFetcher* fetcher = get_url_fetcher_and_advance_id(); 485 net::TestURLFetcher* fetcher = get_url_fetcher_and_advance_id();
486 EXPECT_FALSE(fetcher); 486 EXPECT_FALSE(fetcher);
487 487
488 static const int kScanCount = 4; 488 static const int kScanCount = 4;
489 wifi_data_provider_->SetData(CreateReferenceWifiScanData(kScanCount)); 489 wifi_data_provider_->SetData(CreateReferenceWifiScanData(kScanCount));
490 main_message_loop_.RunAllPending(); 490 main_message_loop_.RunAllPending();
491 491
492 fetcher = get_url_fetcher_and_advance_id(); 492 fetcher = get_url_fetcher_and_advance_id();
493 EXPECT_FALSE(fetcher); 493 EXPECT_FALSE(fetcher);
494 494
495 provider->OnPermissionGranted(); 495 provider->OnPermissionGranted();
(...skipping 23 matching lines...) Expand all
519 EXPECT_TRUE(cache.FindPosition(CreateReferenceWifiScanData(1))); 519 EXPECT_TRUE(cache.FindPosition(CreateReferenceWifiScanData(1)));
520 } else { 520 } else {
521 const int evicted = i - kCacheSize; 521 const int evicted = i - kCacheSize;
522 EXPECT_FALSE(cache.FindPosition(CreateReferenceWifiScanData(evicted))); 522 EXPECT_FALSE(cache.FindPosition(CreateReferenceWifiScanData(evicted)));
523 EXPECT_TRUE(cache.FindPosition(CreateReferenceWifiScanData(evicted + 1))); 523 EXPECT_TRUE(cache.FindPosition(CreateReferenceWifiScanData(evicted + 1)));
524 } 524 }
525 } 525 }
526 } 526 }
527 527
528 } // namespace 528 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698