| OLD | NEW |
| 1 // Copyright (c) 2011 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/test/test_url_fetcher_factory.h" | 14 #include "content/test/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 | 19 |
| 20 namespace { | 20 namespace { |
| 21 | 21 |
| 22 // Constants used in multiple tests. | 22 // Constants used in multiple tests. |
| 23 const char kTestServerUrl[] = "https://www.geolocation.test/service"; | 23 const char kTestServerUrl[] = "https://www.geolocation.test/service"; |
| 24 const char kTestHost[] = "myclienthost.test"; | |
| 25 const char kTestHostUrl[] = "http://myclienthost.test/some/path"; | |
| 26 const char kTestJson[] = "?browser=chromium&sensor=true"; | 24 const char kTestJson[] = "?browser=chromium&sensor=true"; |
| 27 const char kTestBrowser[] = "browser=chromium"; | 25 const char kTestBrowser[] = "browser=chromium"; |
| 28 const char kTestSensor[] = "sensor=true"; | 26 const char kTestSensor[] = "sensor=true"; |
| 29 // Using #define so we can easily paste this into various other strings. | 27 // Using #define so we can easily paste this into various other strings. |
| 30 #define REFERENCE_ACCESS_TOKEN "2:k7j3G6LaL6u_lafw:4iXOeOpTh1glSXe" | 28 #define REFERENCE_ACCESS_TOKEN "2:k7j3G6LaL6u_lafw:4iXOeOpTh1glSXe" |
| 31 | 29 |
| 32 // Stops the specified (nested) message loop when the listener is called back. | 30 // Stops the specified (nested) message loop when the listener is called back. |
| 33 class MessageLoopQuitListener | 31 class MessageLoopQuitListener |
| 34 : public LocationProviderBase::ListenerInterface { | 32 : public LocationProviderBase::ListenerInterface { |
| 35 public: | 33 public: |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 134 RadioDataProvider::ResetFactory(); | 132 RadioDataProvider::ResetFactory(); |
| 135 } | 133 } |
| 136 | 134 |
| 137 LocationProviderBase* CreateProvider(bool set_permission_granted) { | 135 LocationProviderBase* CreateProvider(bool set_permission_granted) { |
| 138 LocationProviderBase* provider = NewNetworkLocationProvider( | 136 LocationProviderBase* provider = NewNetworkLocationProvider( |
| 139 access_token_store_.get(), | 137 access_token_store_.get(), |
| 140 NULL, // No URLContextGetter needed, as using test urlfecther factory. | 138 NULL, // No URLContextGetter needed, as using test urlfecther factory. |
| 141 test_server_url_, | 139 test_server_url_, |
| 142 access_token_store_->access_token_set_[test_server_url_]); | 140 access_token_store_->access_token_set_[test_server_url_]); |
| 143 if (set_permission_granted) | 141 if (set_permission_granted) |
| 144 provider->OnPermissionGranted(GURL(kTestHostUrl)); | 142 provider->OnPermissionGranted(); |
| 145 return provider; | 143 return provider; |
| 146 } | 144 } |
| 147 | 145 |
| 148 protected: | 146 protected: |
| 149 GeolocationNetworkProviderTest() : test_server_url_(kTestServerUrl) { | 147 GeolocationNetworkProviderTest() : test_server_url_(kTestServerUrl) { |
| 150 // TODO(joth): Really these should be in SetUp, not here, but they take no | 148 // TODO(joth): Really these should be in SetUp, not here, but they take no |
| 151 // effect on Mac OS Release builds if done there. I kid not. Figure out why. | 149 // effect on Mac OS Release builds if done there. I kid not. Figure out why. |
| 152 RadioDataProvider::SetFactory( | 150 RadioDataProvider::SetFactory( |
| 153 MockDeviceDataProviderImpl<RadioData>::GetInstance); | 151 MockDeviceDataProviderImpl<RadioData>::GetInstance); |
| 154 WifiDataProvider::SetFactory( | 152 WifiDataProvider::SetFactory( |
| (...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 490 main_message_loop_.RunAllPending(); | 488 main_message_loop_.RunAllPending(); |
| 491 fetcher = get_url_fetcher_and_advance_id(); | 489 fetcher = get_url_fetcher_and_advance_id(); |
| 492 EXPECT_TRUE(fetcher); | 490 EXPECT_TRUE(fetcher); |
| 493 } | 491 } |
| 494 | 492 |
| 495 TEST_F(GeolocationNetworkProviderTest, NetworkRequestDeferredForPermission) { | 493 TEST_F(GeolocationNetworkProviderTest, NetworkRequestDeferredForPermission) { |
| 496 scoped_ptr<LocationProviderBase> provider(CreateProvider(false)); | 494 scoped_ptr<LocationProviderBase> provider(CreateProvider(false)); |
| 497 EXPECT_TRUE(provider->StartProvider(false)); | 495 EXPECT_TRUE(provider->StartProvider(false)); |
| 498 TestURLFetcher* fetcher = get_url_fetcher_and_advance_id(); | 496 TestURLFetcher* fetcher = get_url_fetcher_and_advance_id(); |
| 499 EXPECT_FALSE(fetcher); | 497 EXPECT_FALSE(fetcher); |
| 500 provider->OnPermissionGranted(GURL(kTestHostUrl)); | 498 provider->OnPermissionGranted(); |
| 501 | 499 |
| 502 fetcher = get_url_fetcher_and_advance_id(); | 500 fetcher = get_url_fetcher_and_advance_id(); |
| 503 ASSERT_TRUE(fetcher != NULL); | 501 ASSERT_TRUE(fetcher != NULL); |
| 504 | 502 |
| 505 EXPECT_EQ(test_server_url_.spec() + kTestJson, | 503 EXPECT_EQ(test_server_url_.spec() + kTestJson, |
| 506 fetcher->GetOriginalURL().spec()); | 504 fetcher->GetOriginalURL().spec()); |
| 507 } | 505 } |
| 508 | 506 |
| 509 TEST_F(GeolocationNetworkProviderTest, | 507 TEST_F(GeolocationNetworkProviderTest, |
| 510 NetworkRequestWithWifiDataDeferredForPermission) { | 508 NetworkRequestWithWifiDataDeferredForPermission) { |
| 511 access_token_store_->access_token_set_[test_server_url_] = | 509 access_token_store_->access_token_set_[test_server_url_] = |
| 512 UTF8ToUTF16(REFERENCE_ACCESS_TOKEN); | 510 UTF8ToUTF16(REFERENCE_ACCESS_TOKEN); |
| 513 scoped_ptr<LocationProviderBase> provider(CreateProvider(false)); | 511 scoped_ptr<LocationProviderBase> provider(CreateProvider(false)); |
| 514 EXPECT_TRUE(provider->StartProvider(false)); | 512 EXPECT_TRUE(provider->StartProvider(false)); |
| 515 TestURLFetcher* fetcher = get_url_fetcher_and_advance_id(); | 513 TestURLFetcher* fetcher = get_url_fetcher_and_advance_id(); |
| 516 EXPECT_FALSE(fetcher); | 514 EXPECT_FALSE(fetcher); |
| 517 | 515 |
| 518 static const int kScanCount = 4; | 516 static const int kScanCount = 4; |
| 519 wifi_data_provider_->SetData(CreateReferenceWifiScanData(kScanCount)); | 517 wifi_data_provider_->SetData(CreateReferenceWifiScanData(kScanCount)); |
| 520 main_message_loop_.RunAllPending(); | 518 main_message_loop_.RunAllPending(); |
| 521 | 519 |
| 522 fetcher = get_url_fetcher_and_advance_id(); | 520 fetcher = get_url_fetcher_and_advance_id(); |
| 523 EXPECT_FALSE(fetcher); | 521 EXPECT_FALSE(fetcher); |
| 524 | 522 |
| 525 provider->OnPermissionGranted(GURL(kTestHostUrl)); | 523 provider->OnPermissionGranted(); |
| 526 | 524 |
| 527 fetcher = get_url_fetcher_and_advance_id(); | 525 fetcher = get_url_fetcher_and_advance_id(); |
| 528 ASSERT_TRUE(fetcher != NULL); | 526 ASSERT_TRUE(fetcher != NULL); |
| 529 | 527 |
| 530 CheckRequestIsValid(fetcher->GetOriginalURL().spec(), 0, | 528 CheckRequestIsValid(fetcher->GetOriginalURL().spec(), 0, |
| 531 kScanCount, 0, REFERENCE_ACCESS_TOKEN); | 529 kScanCount, 0, REFERENCE_ACCESS_TOKEN); |
| 532 } | 530 } |
| 533 | 531 |
| 534 TEST_F(GeolocationNetworkProviderTest, NetworkPositionCache) { | 532 TEST_F(GeolocationNetworkProviderTest, NetworkPositionCache) { |
| 535 NetworkLocationProvider::PositionCache cache; | 533 NetworkLocationProvider::PositionCache cache; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 549 EXPECT_TRUE(cache.FindPosition(CreateReferenceWifiScanData(1))); | 547 EXPECT_TRUE(cache.FindPosition(CreateReferenceWifiScanData(1))); |
| 550 } else { | 548 } else { |
| 551 const int evicted = i - kCacheSize; | 549 const int evicted = i - kCacheSize; |
| 552 EXPECT_FALSE(cache.FindPosition(CreateReferenceWifiScanData(evicted))); | 550 EXPECT_FALSE(cache.FindPosition(CreateReferenceWifiScanData(evicted))); |
| 553 EXPECT_TRUE(cache.FindPosition(CreateReferenceWifiScanData(evicted + 1))); | 551 EXPECT_TRUE(cache.FindPosition(CreateReferenceWifiScanData(evicted + 1))); |
| 554 } | 552 } |
| 555 } | 553 } |
| 556 } | 554 } |
| 557 | 555 |
| 558 } // namespace | 556 } // namespace |
| OLD | NEW |