Chromium Code Reviews| 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")); |
|
newt (away)
2015/04/28 06:44:01
Use ContentSetting.ALLOW and ContentSetting.BLOCK
Finnur
2015/04/29 14:54:09
Done.
|
| mContext.startActivity(settingsIntent); |
| } |
| mCallback.onDismissDialog(); |
| } |
| - private boolean locationEnabled(int position) { |
| + private boolean locationEnabled(int position, boolean checkGeoHeader) { |
|
newt (away)
2015/04/28 06:44:01
suggestion: extract a method getLocationContentSet
Finnur
2015/04/29 14:54:09
We must not call getLocationContentSetting directl
newt (away)
2015/04/29 18:23:42
Ah, I didn't realize that you were calling locatio
|
| 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. |
|
newt (away)
2015/04/28 06:44:01
This is actually a common case. How about "Handle
Finnur
2015/04/29 14:54:09
Done.
|
| + if (locationPermission == ContentSetting.ASK && checkGeoHeader) { |
| + return PrefServiceBridge.sendGeoHeader(mContext, url, false); |
| + } |
| return locationPermission == ContentSetting.ALLOW; |
| } |
| } |