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

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/geo/GeolocationHeaderTest.java

Issue 2872653002: Include GPS location as a fallback. Only read it passively. (Closed)
Patch Set: Include GPS location as a fallback. Only read it passively. 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
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/omnibox/geo/GeolocationTracker.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/geo/GeolocationHeaderTest.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/geo/GeolocationHeaderTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/geo/GeolocationHeaderTest.java
index 090267ffd6d6a540e29dff567afe4a3d755dc8b3..97593b5e8f92a08040f83e5cde89f164cd73b548 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/geo/GeolocationHeaderTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/geo/GeolocationHeaderTest.java
@@ -154,7 +154,7 @@ public class GeolocationHeaderTest extends ChromeActivityTestCaseBase<ChromeActi
checkHeaderWithLocation(now, false);
checkHeaderWithLocation(now - oneHour, false);
checkHeaderWithLocation(now - oneWeek, true);
- GeolocationTracker.setLocationForTesting(null);
+ GeolocationTracker.setLocationForTesting(null, null);
assertNullHeader(SEARCH_URL_1, false);
}
@@ -178,6 +178,60 @@ public class GeolocationHeaderTest extends ChromeActivityTestCaseBase<ChromeActi
assertNonNullHeader(SEARCH_URL_1, false, now, ENCODING_PROTO);
}
+ @SmallTest
+ @Feature({"Location"})
+ @CommandLineFlags.Add({DISABLE_XGEO_VISIBLE_NETWORKS})
+ public void testGpsFallbackNotEnabled() throws ProcessInitException {
+ // Only GPS location, should not be sent when flag is off.
+ long now = System.currentTimeMillis();
+ Location gpsLocation = generateMockLocation(LocationManager.GPS_PROVIDER, now);
+ GeolocationTracker.setLocationForTesting(null, gpsLocation);
+
+ assertNullHeader(SEARCH_URL_1, false);
+ }
+
+ @SmallTest
+ @Feature({"Location"})
+ @CommandLineFlags.Add({ENABLE_XGEO_VISIBLE_NETWORKS})
+ public void testGpsFallbackEnabled() throws ProcessInitException {
+ // Only GPS location, should be sent when flag is on.
+ long now = System.currentTimeMillis();
+ Location gpsLocation = generateMockLocation(LocationManager.GPS_PROVIDER, now);
+ GeolocationTracker.setLocationForTesting(null, gpsLocation);
+
+ assertNonNullHeader(SEARCH_URL_1, false, now, ENCODING_PROTO);
+ }
+
+ @SmallTest
+ @Feature({"Location"})
+ @CommandLineFlags.Add({ENABLE_XGEO_VISIBLE_NETWORKS})
+ public void testGpsFallbackYounger() throws ProcessInitException {
+ long now = System.currentTimeMillis();
+ // GPS location is younger.
+ Location gpsLocation = generateMockLocation(LocationManager.GPS_PROVIDER, now + 100);
+ // Network location is older
+ Location netLocation = generateMockLocation(LocationManager.NETWORK_PROVIDER, now);
+ GeolocationTracker.setLocationForTesting(netLocation, gpsLocation);
+
+ // The younger (GPS) should be used.
+ assertNonNullHeader(SEARCH_URL_1, false, now + 100, ENCODING_PROTO);
+ }
+
+ @SmallTest
+ @Feature({"Location"})
+ @CommandLineFlags.Add({ENABLE_XGEO_VISIBLE_NETWORKS})
+ public void testGpsFallbackOlder() throws ProcessInitException {
+ long now = System.currentTimeMillis();
+ // GPS location is older.
+ Location gpsLocation = generateMockLocation(LocationManager.GPS_PROVIDER, now - 100);
+ // Network location is older
+ Location netLocation = generateMockLocation(LocationManager.NETWORK_PROVIDER, now);
+ GeolocationTracker.setLocationForTesting(netLocation, gpsLocation);
+
+ // The younger (Network) should be used.
+ assertNonNullHeader(SEARCH_URL_1, false, now, ENCODING_PROTO);
+ }
+
private void checkHeaderWithPermissions(final ContentSetting httpsPermission,
final long locationTime, final boolean shouldBeNull) {
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@@ -236,8 +290,8 @@ public class GeolocationHeaderTest extends ChromeActivityTestCaseBase<ChromeActi
return now;
}
- private void setMockLocation(long time) {
- final Location location = new Location(LocationManager.NETWORK_PROVIDER);
+ private Location generateMockLocation(String provider, long time) {
+ Location location = new Location(provider);
location.setLatitude(LOCATION_LAT);
location.setLongitude(LOCATION_LONG);
location.setAccuracy(LOCATION_ACCURACY);
@@ -246,7 +300,12 @@ public class GeolocationHeaderTest extends ChromeActivityTestCaseBase<ChromeActi
location.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos()
+ 1000000 * (time - System.currentTimeMillis()));
}
- GeolocationTracker.setLocationForTesting(location);
+ return location;
+ }
+
+ private void setMockLocation(long time) {
+ Location location = generateMockLocation(LocationManager.NETWORK_PROVIDER, time);
+ GeolocationTracker.setLocationForTesting(location, null);
}
private void assertNullHeader(final String url, final boolean isIncognito) {
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/omnibox/geo/GeolocationTracker.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698