Example #1
0
  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();
   }
 }