private void searchEngineSelected(int position) { // First clean up any automatically added permissions (if any) for the previously selected // search engine. SharedPreferences sharedPreferences = ContextUtils.getAppSharedPreferences(); if (sharedPreferences.getBoolean(PrefServiceBridge.LOCATION_AUTO_ALLOWED, false)) { if (locationEnabled(mSelectedSearchEnginePosition, false)) { String url = TemplateUrlService.getInstance() .getSearchEngineUrlFromTemplateUrl(toIndex(mSelectedSearchEnginePosition)); WebsitePreferenceBridge.nativeSetGeolocationSettingForOrigin( url, url, ContentSetting.DEFAULT.toInt(), false); } sharedPreferences.edit().remove(PrefServiceBridge.LOCATION_AUTO_ALLOWED).apply(); } // Record the change in search engine. mSelectedSearchEnginePosition = position; TemplateUrlService.getInstance().setSearchEngine(toIndex(mSelectedSearchEnginePosition)); // Report the change back. TemplateUrl templateUrl = mSearchEngines.get(mSelectedSearchEnginePosition); mCallback.currentSearchEngineDetermined(templateUrl.getShortName()); notifyDataSetChanged(); }
/** * Add a permission entry for Location for the default search engine. * * @param allowed Whether to create an Allowed permission or a Denied permission. * @param context The current context to use. */ public static void maybeCreatePermissionForDefaultSearchEngine(boolean allowed, Context context) { TemplateUrlService templateUrlService = TemplateUrlService.getInstance(); String url = templateUrlService.getSearchEngineUrlFromTemplateUrl( templateUrlService.getDefaultSearchEngineIndex()); if (allowed && !url.startsWith("https:")) return; GeolocationInfo locationSettings = new GeolocationInfo(url, null); ContentSetting locationPermission = locationSettings.getContentSetting(); if (locationPermission == null || locationPermission == ContentSetting.ASK) { WebsitePreferenceBridge.nativeSetGeolocationSettingForOrigin( url, url, allowed ? ContentSetting.ALLOW.toInt() : ContentSetting.BLOCK.toInt()); SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); sharedPreferences.edit().putBoolean(LOCATION_AUTO_ALLOWED, true).apply(); } }