| 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) {
|
|
|