Index: chrome/android/java/src/org/chromium/chrome/browser/preferences/SearchEngineAdapter.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/SearchEngineAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/SearchEngineAdapter.java |
index a842cc2d072ae051c1cd48829be72d926ebda0aa..2150d8ee3d1fc82ec468ee7e8c80d862c9cafa51 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/SearchEngineAdapter.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/SearchEngineAdapter.java |
@@ -186,7 +186,7 @@ public class SearchEngineAdapter extends BaseAdapter implements LoadListener, On |
resources.getColor(R.color.pref_accent_color)); |
if (LocationSettings.getInstance().isSystemLocationSettingEnabled()) { |
String message = mContext.getString( |
- locationEnabled(position) |
+ locationEnabled(position, true) |
? R.string.search_engine_location_allowed |
: R.string.search_engine_location_blocked); |
SpannableString messageWithLink = new SpannableString(message); |
@@ -229,7 +229,7 @@ public class SearchEngineAdapter extends BaseAdapter implements LoadListener, On |
SharedPreferences sharedPreferences = |
PreferenceManager.getDefaultSharedPreferences(mContext); |
if (sharedPreferences.getBoolean(PrefServiceBridge.LOCATION_AUTO_ALLOWED, false)) { |
- if (locationEnabled(mSelectedSearchEnginePosition)) { |
+ if (locationEnabled(mSelectedSearchEnginePosition, false)) { |
TemplateUrl templateUrl = mSearchEngines.get(mSelectedSearchEnginePosition); |
String url = TemplateUrlService.getInstance().getSearchEngineUrlFromTemplateUrl( |
@@ -253,12 +253,6 @@ public class SearchEngineAdapter extends BaseAdapter implements LoadListener, On |
} |
private void onLocationLinkClicked() { |
- // This catches the case where the user has reset permissions for a site that's set as the |
- // default search engine. If the user notices that Location is blocked for the current |
- // search engine and clicks the link to enable then the Location record must exist |
- // (otherwise it is seemingly impossible to enable after resetting a site). |
- PrefServiceBridge.maybeCreatePermissionForDefaultSearchEngine(false, mContext); |
- |
if (!LocationSettings.getInstance().isSystemLocationSettingEnabled()) { |
mContext.startActivity( |
LocationSettings.getInstance().getSystemLocationSettingsIntent()); |
@@ -268,19 +262,25 @@ public class SearchEngineAdapter extends BaseAdapter implements LoadListener, On |
String url = TemplateUrlService.getInstance().getSearchEngineUrlFromTemplateUrl( |
toIndex(mSelectedSearchEnginePosition)); |
settingsIntent.putExtra(Preferences.EXTRA_SHOW_FRAGMENT_ARGUMENTS, |
- SingleWebsitePreferences.createFragmentArgsForSite(url)); |
+ SingleWebsitePreferences.createFragmentArgsForSite(url, |
+ locationEnabled(mSelectedSearchEnginePosition, true) |
+ ? "allow" : "block")); |
mContext.startActivity(settingsIntent); |
} |
mCallback.onDismissDialog(); |
} |
- private boolean locationEnabled(int position) { |
+ private boolean locationEnabled(int position, boolean checkGeoHeader) { |
if (position == -1) return false; |
String url = TemplateUrlService.getInstance().getSearchEngineUrlFromTemplateUrl( |
toIndex(position)); |
GeolocationInfo locationSettings = new GeolocationInfo(url, null); |
ContentSetting locationPermission = locationSettings.getContentSetting(); |
+ // Catch a corner case with the geoHeader being sent when no permission has been specified. |
+ if (locationPermission == ContentSetting.ASK && checkGeoHeader) { |
+ return PrefServiceBridge.sendGeoHeader(mContext, url, false); |
+ } |
return locationPermission == ContentSetting.ALLOW; |
} |
} |