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

Unified Diff: device/geolocation/network_location_provider_unittest.cc

Issue 2901413006: Prevent NetworkLocationProvider from sending wifi data if started low accuracy
Patch Set: Rebase Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: device/geolocation/network_location_provider_unittest.cc
diff --git a/device/geolocation/network_location_provider_unittest.cc b/device/geolocation/network_location_provider_unittest.cc
index 0129625bde3efff727244b917e02658ea295ce5e..3a4053d5d9d4701aa099fc4ada56ef39cff577ab 100644
--- a/device/geolocation/network_location_provider_unittest.cc
+++ b/device/geolocation/network_location_provider_unittest.cc
@@ -335,7 +335,7 @@ TEST_F(GeolocationNetworkProviderTest, CreateDestroy) {
TEST_F(GeolocationNetworkProviderTest, StartProvider) {
std::unique_ptr<LocationProvider> provider(CreateProvider(true));
- EXPECT_TRUE(provider->StartProvider(false));
+ EXPECT_TRUE(provider->StartProvider(true));
net::TestURLFetcher* fetcher = get_url_fetcher_and_advance_id();
ASSERT_TRUE(fetcher);
CheckRequestIsValid(*fetcher, 0, 0, 0, std::string());
@@ -344,7 +344,7 @@ TEST_F(GeolocationNetworkProviderTest, StartProvider) {
TEST_F(GeolocationNetworkProviderTest, StartProviderDefaultUrl) {
test_server_url_ = LocationArbitrator::DefaultNetworkProviderURL();
std::unique_ptr<LocationProvider> provider(CreateProvider(true));
- EXPECT_TRUE(provider->StartProvider(false));
+ EXPECT_TRUE(provider->StartProvider(true));
net::TestURLFetcher* fetcher = get_url_fetcher_and_advance_id();
ASSERT_TRUE(fetcher);
CheckRequestIsValid(*fetcher, 0, 0, 0, std::string());
@@ -352,7 +352,7 @@ TEST_F(GeolocationNetworkProviderTest, StartProviderDefaultUrl) {
TEST_F(GeolocationNetworkProviderTest, StartProviderLongRequest) {
std::unique_ptr<LocationProvider> provider(CreateProvider(true));
- EXPECT_TRUE(provider->StartProvider(false));
+ EXPECT_TRUE(provider->StartProvider(true));
const int kFirstScanAps = 20;
wifi_data_provider_->SetData(CreateReferenceWifiScanData(kFirstScanAps));
base::RunLoop().RunUntilIdle();
@@ -367,7 +367,7 @@ TEST_F(GeolocationNetworkProviderTest, StartProviderLongRequest) {
TEST_F(GeolocationNetworkProviderTest, MultipleWifiScansComplete) {
std::unique_ptr<LocationProvider> provider(CreateProvider(true));
- EXPECT_TRUE(provider->StartProvider(false));
+ EXPECT_TRUE(provider->StartProvider(true));
net::TestURLFetcher* fetcher = get_url_fetcher_and_advance_id();
ASSERT_TRUE(fetcher);
@@ -471,7 +471,7 @@ TEST_F(GeolocationNetworkProviderTest, NoRequestOnStartupUntilWifiData) {
MessageLoopQuitListener listener;
wifi_data_provider_->set_got_data(false);
std::unique_ptr<LocationProvider> provider(CreateProvider(true));
- EXPECT_TRUE(provider->StartProvider(false));
+ EXPECT_TRUE(provider->StartProvider(true));
provider->SetUpdateCallback(base::Bind(
&MessageLoopQuitListener::OnLocationUpdate, base::Unretained(&listener)));
@@ -489,7 +489,7 @@ TEST_F(GeolocationNetworkProviderTest, NoRequestOnStartupUntilWifiData) {
TEST_F(GeolocationNetworkProviderTest, NewDataReplacesExistingNetworkRequest) {
// Send initial request with empty data
std::unique_ptr<LocationProvider> provider(CreateProvider(true));
- EXPECT_TRUE(provider->StartProvider(false));
+ EXPECT_TRUE(provider->StartProvider(true));
net::TestURLFetcher* fetcher = get_url_fetcher_and_advance_id();
EXPECT_TRUE(fetcher);
@@ -502,7 +502,7 @@ TEST_F(GeolocationNetworkProviderTest, NewDataReplacesExistingNetworkRequest) {
TEST_F(GeolocationNetworkProviderTest, NetworkRequestDeferredForPermission) {
std::unique_ptr<LocationProvider> provider(CreateProvider(false));
- EXPECT_TRUE(provider->StartProvider(false));
+ EXPECT_TRUE(provider->StartProvider(true));
net::TestURLFetcher* fetcher = get_url_fetcher_and_advance_id();
EXPECT_FALSE(fetcher);
provider->OnPermissionGranted();
@@ -518,7 +518,7 @@ TEST_F(GeolocationNetworkProviderTest,
access_token_store_->access_token_map_[test_server_url_] =
base::UTF8ToUTF16(REFERENCE_ACCESS_TOKEN);
std::unique_ptr<LocationProvider> provider(CreateProvider(false));
- EXPECT_TRUE(provider->StartProvider(false));
+ EXPECT_TRUE(provider->StartProvider(true));
net::TestURLFetcher* fetcher = get_url_fetcher_and_advance_id();
EXPECT_FALSE(fetcher);
@@ -561,4 +561,43 @@ TEST_F(GeolocationNetworkProviderTest, NetworkPositionCache) {
}
}
+TEST_F(GeolocationNetworkProviderTest, RequestLowAccuracyPosition) {
+ std::unique_ptr<LocationProvider> provider(CreateProvider(true));
+ EXPECT_TRUE(provider->StartProvider(false));
+ net::TestURLFetcher* fetcher = get_url_fetcher_and_advance_id();
+ ASSERT_TRUE(fetcher);
+ EXPECT_TRUE(IsTestServerUrl(fetcher->GetOriginalURL()));
+ CheckRequestIsValid(*fetcher, 0, 0, 0, std::string());
+
+ // Send a reply with good position fix.
+ const char* kReferenceNetworkResponse =
+ "{"
+ " \"accessToken\": \"" REFERENCE_ACCESS_TOKEN
+ "\","
+ " \"accuracy\": 1200.4,"
+ " \"location\": {"
+ " \"lat\": 51.0,"
+ " \"lng\": -0.1"
+ " }"
+ "}";
+ fetcher->set_url(test_server_url_);
+ fetcher->set_status(net::URLRequestStatus());
+ fetcher->set_response_code(200); // OK
+ fetcher->SetResponseString(kReferenceNetworkResponse);
+ fetcher->delegate()->OnURLFetchComplete(fetcher);
+
+ Geoposition position = provider->GetPosition();
+ EXPECT_EQ(51.0, position.latitude);
+ EXPECT_EQ(-0.1, position.longitude);
+ EXPECT_EQ(1200.4, position.accuracy);
+ EXPECT_FALSE(position.timestamp.is_null());
+ EXPECT_TRUE(position.Validate());
+
+ // Wifi scans should not affect the provider and no new requests should be
+ // made.
+ wifi_data_provider_->SetData(CreateReferenceWifiScanData(5 /* ap_count */));
+ base::RunLoop().RunUntilIdle();
+ EXPECT_FALSE(get_url_fetcher_and_advance_id()); // No new request created.
+}
+
} // namespace device

Powered by Google App Engine
This is Rietveld 408576698