diff options
| author | Fup Duck <fupduck@sacknagel.com> | 2018-02-09 12:46:06 +0100 | 
|---|---|---|
| committer | Fup Duck <fupduck@sacknagel.com> | 2018-02-09 12:48:20 +0100 | 
| commit | 9e6fe0e215e32343b38cdf20080de209a31287dd (patch) | |
| tree | d4a8bf8aa9fc7caf06486bd2342ef28007329618 | |
| parent | 73854e7fcdab77eaa408741b7353dea35b4803e1 (diff) | |
8827 - merge request discussions
* add NullPointer checks to EipFragment
* add Provider to DownloadFailedDialog
* remove unused code
* store certificates for pinning in SharedPreferences
11 files changed, 157 insertions, 107 deletions
| diff --git a/app/src/insecure/java/se/leap/bitmaskclient/ProviderApiManager.java b/app/src/insecure/java/se/leap/bitmaskclient/ProviderApiManager.java index 83a3044e..624b797b 100644 --- a/app/src/insecure/java/se/leap/bitmaskclient/ProviderApiManager.java +++ b/app/src/insecure/java/se/leap/bitmaskclient/ProviderApiManager.java @@ -174,10 +174,8 @@ public class ProviderApiManager extends ProviderApiManagerBase {                  JSONObject providerDefinition = provider.getDefinition();                  String eipServiceUrl = providerDefinition.getString(Provider.API_URL) + "/" + providerDefinition.getString(Provider.API_VERSION) + "/" + EIP.SERVICE_API_PATH;                  eipServiceJsonString = downloadWithProviderCA(provider.getCaCert(), eipServiceUrl, lastDangerOn); -                JSONObject eipServiceJson = new JSONObject(eipServiceJsonString); -                eipServiceJson.getInt(Provider.API_RETURN_SERIAL); -                //preferences.edit().putString(PROVIDER_KEY, eipServiceJson.toString()).commit(); +                JSONObject eipServiceJson = new JSONObject(eipServiceJsonString);                  provider.setEipServiceJson(eipServiceJson);                  result.putBoolean(BROADCAST_RESULT_KEY, true); @@ -285,7 +283,7 @@ public class ProviderApiManager extends ProviderApiManagerBase {          String responseString;          JSONObject errorJson = new JSONObject();          String baseUrl = getApiUrl(providerDefinition); -        OkHttpClient okHttpClient = clientGenerator.initSelfSignedCAHttpClient(errorJson, caCert); +        OkHttpClient okHttpClient = clientGenerator.initSelfSignedCAHttpClient(caCert, errorJson);          if (okHttpClient == null) {              return errorJson.toString();          } diff --git a/app/src/insecure/java/se/leap/bitmaskclient/ProviderListActivity.java b/app/src/insecure/java/se/leap/bitmaskclient/ProviderListActivity.java index 554085b1..531c438a 100644 --- a/app/src/insecure/java/se/leap/bitmaskclient/ProviderListActivity.java +++ b/app/src/insecure/java/se/leap/bitmaskclient/ProviderListActivity.java @@ -17,6 +17,7 @@  package se.leap.bitmaskclient;  import android.os.Bundle; +import android.support.annotation.NonNull;  import android.support.v4.app.DialogFragment;  import android.support.v4.app.FragmentTransaction; @@ -99,7 +100,7 @@ public class ProviderListActivity extends ProviderListBaseActivity {       * Retrys setup of last used provider, allows bypassing ca certificate validation.       */      @Override -    public void retrySetUpProvider(Provider provider) { +    public void retrySetUpProvider(@NonNull Provider provider) {          cancelSettingUpProvider();          if (!provider.hasCaCert()) {              addAndSelectNewProvider(provider.getMainUrlString(), ProviderAPI.lastDangerOn()); diff --git a/app/src/main/java/se/leap/bitmaskclient/ConfigHelper.java b/app/src/main/java/se/leap/bitmaskclient/ConfigHelper.java index 5a97624d..2e9e1897 100644 --- a/app/src/main/java/se/leap/bitmaskclient/ConfigHelper.java +++ b/app/src/main/java/se/leap/bitmaskclient/ConfigHelper.java @@ -16,6 +16,7 @@   */  package se.leap.bitmaskclient; +import android.annotation.SuppressLint;  import android.content.SharedPreferences;  import android.support.annotation.NonNull;  import android.support.annotation.Nullable; @@ -348,6 +349,7 @@ public class ConfigHelper {          }      } +    // TODO: replace commit with apply after refactoring EIP      public static void storeProviderInPreferences(SharedPreferences preferences, Provider provider) {          preferences.edit().putBoolean(PROVIDER_CONFIGURED, true).                  putString(Provider.MAIN_URL, provider.getMainUrlString()). @@ -355,6 +357,14 @@ public class ConfigHelper {                  putString(Provider.CA_CERT, provider.getCaCert()).                  putString(PROVIDER_KEY, provider.getEipServiceJsonString()).                  commit(); + +        String providerDomain = provider.getDomain(); +        preferences.edit().putBoolean(PROVIDER_CONFIGURED, true). +                putString(Provider.MAIN_URL + "." + providerDomain, provider.getMainUrlString()). +                putString(Provider.KEY + "." + providerDomain, provider.getDefinitionString()). +                putString(Provider.CA_CERT + "." + providerDomain, provider.getCaCert()). +                putString(PROVIDER_KEY + "." + providerDomain, provider.getEipServiceJsonString()). +                apply();      } diff --git a/app/src/main/java/se/leap/bitmaskclient/DownloadFailedDialog.java b/app/src/main/java/se/leap/bitmaskclient/DownloadFailedDialog.java index 1a0c85ad..8d56cdf8 100644 --- a/app/src/main/java/se/leap/bitmaskclient/DownloadFailedDialog.java +++ b/app/src/main/java/se/leap/bitmaskclient/DownloadFailedDialog.java @@ -21,6 +21,7 @@ import android.app.Dialog;  import android.content.Context;  import android.content.DialogInterface;  import android.os.Bundle; +import android.support.annotation.NonNull;  import android.support.v4.app.DialogFragment;  import org.json.JSONObject; @@ -38,8 +39,11 @@ import static se.leap.bitmaskclient.ProviderAPI.ERRORS;  public class DownloadFailedDialog extends DialogFragment {      public static String TAG = "downloaded_failed_dialog"; -    private String reason_to_fail; +    private String reasonToFail;      private DOWNLOAD_ERRORS downloadError = DEFAULT; + +    private Provider provider; +      public enum DOWNLOAD_ERRORS {          DEFAULT,          ERROR_CORRUPTED_PROVIDER_JSON, @@ -50,39 +54,41 @@ public class DownloadFailedDialog extends DialogFragment {      /**       * @return a new instance of this DialogFragment.       */ -    public static DialogFragment newInstance(String reason_to_fail) { -        DownloadFailedDialog dialog_fragment = new DownloadFailedDialog(); -        dialog_fragment.reason_to_fail = reason_to_fail; -        return dialog_fragment; +    public static DialogFragment newInstance(Provider provider, String reasonToFail) { +        DownloadFailedDialog dialogFragment = new DownloadFailedDialog(); +        dialogFragment.reasonToFail = reasonToFail; +        dialogFragment.provider = provider; +        return dialogFragment;      }      /**       * @return a new instance of this DialogFragment.       */ -    public static DialogFragment newInstance(JSONObject errorJson) { -        DownloadFailedDialog dialog_fragment = new DownloadFailedDialog(); +    public static DialogFragment newInstance(Provider provider, JSONObject errorJson) { +        DownloadFailedDialog dialogFragment = new DownloadFailedDialog(); +        dialogFragment.provider = provider;          try {              if (errorJson.has(ERRORS)) { -                dialog_fragment.reason_to_fail = errorJson.getString(ERRORS); +                dialogFragment.reasonToFail = errorJson.getString(ERRORS);              } else {                  //default error msg -                dialog_fragment.reason_to_fail = dialog_fragment.getString(R.string.error_io_exception_user_message); +                dialogFragment.reasonToFail = dialogFragment.getString(R.string.error_io_exception_user_message);              }              if (errorJson.has(ERRORID)) { -                dialog_fragment.downloadError = valueOf(errorJson.getString(ERRORID)); +                dialogFragment.downloadError = valueOf(errorJson.getString(ERRORID));              }          } catch (Exception e) {              e.printStackTrace(); -            dialog_fragment.reason_to_fail = dialog_fragment.getString(R.string.error_io_exception_user_message); +            dialogFragment.reasonToFail = dialogFragment.getString(R.string.error_io_exception_user_message);          } -        return dialog_fragment; +        return dialogFragment;      }      @Override      public Dialog onCreateDialog(Bundle savedInstanceState) {          AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); -        builder.setMessage(reason_to_fail) +        builder.setMessage(reasonToFail)                  .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {              public void onClick(DialogInterface dialog, int id) {                  interface_with_ConfigurationWizard.cancelSettingUpProvider(); @@ -113,7 +119,7 @@ switch (downloadError) {                  builder.setPositiveButton(R.string.retry, new DialogInterface.OnClickListener() {                              public void onClick(DialogInterface dialog, int id) {                                  dismiss(); -                                interface_with_ConfigurationWizard.retrySetUpProvider(null); +                                interface_with_ConfigurationWizard.retrySetUpProvider(provider);                              }                          });                  break; @@ -124,7 +130,7 @@ switch (downloadError) {      }      public interface DownloadFailedDialogInterface { -        void retrySetUpProvider(Provider provider); +        void retrySetUpProvider(@NonNull Provider provider);          void cancelSettingUpProvider(); diff --git a/app/src/main/java/se/leap/bitmaskclient/EipFragment.java b/app/src/main/java/se/leap/bitmaskclient/EipFragment.java index 2f7977dd..ceae6706 100644 --- a/app/src/main/java/se/leap/bitmaskclient/EipFragment.java +++ b/app/src/main/java/se/leap/bitmaskclient/EipFragment.java @@ -33,6 +33,7 @@ import android.os.Handler;  import android.os.IBinder;  import android.os.RemoteException;  import android.os.ResultReceiver; +import android.support.annotation.NonNull;  import android.support.v4.app.Fragment;  import android.support.v7.widget.AppCompatImageView;  import android.util.Log; @@ -140,16 +141,19 @@ public class EipFragment extends Fragment implements Observer {      public void onAttach(Context context) {          super.onAttach(context);          Bundle arguments = getArguments(); -        if (arguments != null) { -            provider = getArguments().getParcelable(PROVIDER_KEY); -            if (provider == null) { -                getActivity().startActivityForResult(new Intent(getActivity(), ProviderListActivity.class), REQUEST_CODE_SWITCH_PROVIDER); +        Activity activity = getActivity(); +        if (activity != null) { +            if (arguments != null) { +                provider = arguments.getParcelable(PROVIDER_KEY); +                if (provider == null) { +                    activity.startActivityForResult(new Intent(activity, ProviderListActivity.class), REQUEST_CODE_SWITCH_PROVIDER); +                } else { +                    Log.d(TAG, provider.getName() + " configured as provider"); +                }              } else { -                Log.d(TAG, provider.getName() + " configured as provider"); +                Log.e(TAG, "no provider given - starting ProviderListActivity"); +                activity.startActivityForResult(new Intent(activity, ProviderListActivity.class), REQUEST_CODE_SWITCH_PROVIDER);              } -        } else { -            Log.e(TAG, "no provider given - starting ProviderListActivity"); -            getActivity().startActivityForResult(new Intent(getActivity(), ProviderListActivity.class), REQUEST_CODE_SWITCH_PROVIDER);          }      } @@ -160,11 +164,16 @@ public class EipFragment extends Fragment implements Observer {          eipReceiver = new EIPReceiver(new Handler());          eipBroadcastReceiver = new EIPBroadcastReceiver();          providerAPIResultReceiver = new ProviderAPIResultReceiver(new Handler(), new EipFragmentReceiver()); -        preferences = getActivity().getSharedPreferences(SHARED_PREFERENCES, Context.MODE_PRIVATE); +        Activity activity = getActivity(); +        if (activity != null) { +            preferences = getActivity().getSharedPreferences(SHARED_PREFERENCES, Context.MODE_PRIVATE); +        } else { +            Log.e(TAG, "activity is null in onCreate - no preferences set!"); +        }      }      @Override -    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { +    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {          eipStatus.addObserver(this);          View view = inflater.inflate(R.layout.eip_service_fragment, container, false);          ButterKnife.inject(this, view); @@ -189,8 +198,12 @@ public class EipFragment extends Fragment implements Observer {      @Override      public void onPause() {          super.onPause(); -        getActivity().unbindService(openVpnConnection); -        getActivity().unregisterReceiver(eipBroadcastReceiver); + +        Activity activity = getActivity(); +        if (activity != null) { +            getActivity().unbindService(openVpnConnection); +            getActivity().unregisterReceiver(eipBroadcastReceiver); +        }          Log.d(TAG, "broadcast unregistered");      } @@ -201,7 +214,7 @@ public class EipFragment extends Fragment implements Observer {      }      @Override -    public void onSaveInstanceState(Bundle outState) { +    public void onSaveInstanceState(@NonNull Bundle outState) {          outState.putBoolean(IS_CONNECTED, eipStatus.isConnected());          super.onSaveInstanceState(outState);      } @@ -238,7 +251,10 @@ public class EipFragment extends Fragment implements Observer {          else if (canLogInToStartEIP()) {              wantsToConnect = true;              Intent intent = new Intent(getContext(), LoginActivity.class); -            getActivity().startActivityForResult(intent, REQUEST_CODE_LOG_IN); +            Activity activity = getActivity(); +            if (activity != null) { +                activity.startActivityForResult(intent, REQUEST_CODE_LOG_IN); +            }          } else {              Log.d(TAG, "WHAT IS GOING ON HERE?!");              // TODO: implement a fallback: check if vpncertificate was not downloaded properly or give @@ -268,21 +284,25 @@ public class EipFragment extends Fragment implements Observer {      private void askPendingStartCancellation() {          Activity activity = getActivity(); -        AlertDialog.Builder alertBuilder = new AlertDialog.Builder(getActivity()); -        alertBuilder.setTitle(activity.getString(R.string.eip_cancel_connect_title)) -                .setMessage(activity.getString(R.string.eip_cancel_connect_text)) -                .setPositiveButton((android.R.string.yes), new DialogInterface.OnClickListener() { -                    @Override -                    public void onClick(DialogInterface dialog, int which) { -                        stopEipIfPossible(); -                    } -                }) -                .setNegativeButton(activity.getString(android.R.string.no), new DialogInterface.OnClickListener() { -                    @Override -                    public void onClick(DialogInterface dialog, int which) { -                    } -                }) -                .show(); +        if (activity != null) { +            AlertDialog.Builder alertBuilder = new AlertDialog.Builder(getActivity()); +            alertBuilder.setTitle(activity.getString(R.string.eip_cancel_connect_title)) +                    .setMessage(activity.getString(R.string.eip_cancel_connect_text)) +                    .setPositiveButton((android.R.string.yes), new DialogInterface.OnClickListener() { +                        @Override +                        public void onClick(DialogInterface dialog, int which) { +                            stopEipIfPossible(); +                        } +                    }) +                    .setNegativeButton(activity.getString(android.R.string.no), new DialogInterface.OnClickListener() { +                        @Override +                        public void onClick(DialogInterface dialog, int which) { +                        } +                    }) +                    .show(); +        } else { +            Log.e(TAG, "activity is null when asking to cancel"); +        }      }      public void startEipFromScratch() { @@ -302,9 +322,14 @@ public class EipFragment extends Fragment implements Observer {      private void stopBlockingVpn() {          Log.d(TAG, "stop VoidVpn!");          Activity activity = getActivity(); -        Intent stopVoidVpnIntent = new Intent(activity, VoidVpnService.class); -        stopVoidVpnIntent.setAction(EIP_ACTION_STOP_BLOCKING_VPN); -        activity.startService(stopVoidVpnIntent); +        if (activity != null) { +            Intent stopVoidVpnIntent = new Intent(activity, VoidVpnService.class); +            stopVoidVpnIntent.setAction(EIP_ACTION_STOP_BLOCKING_VPN); +            activity.startService(stopVoidVpnIntent); +        } else { +            Log.e(TAG, "activity is null when trying to stop blocking vpn"); +            // TODO what to do if not stopping void vpn? +        }      }      private void disconnect() { @@ -325,21 +350,25 @@ public class EipFragment extends Fragment implements Observer {      protected void askToStopEIP() {          Activity activity = getActivity(); -        AlertDialog.Builder alertBuilder = new AlertDialog.Builder(activity); -        alertBuilder.setTitle(activity.getString(R.string.eip_cancel_connect_title)) -                .setMessage(activity.getString(R.string.eip_warning_browser_inconsistency)) -                .setPositiveButton((android.R.string.yes), new DialogInterface.OnClickListener() { -                    @Override -                    public void onClick(DialogInterface dialog, int which) { -                        stopEipIfPossible(); -                    } -                }) -                .setNegativeButton(activity.getString(android.R.string.no), new DialogInterface.OnClickListener() { -                    @Override -                    public void onClick(DialogInterface dialog, int which) { -                    } -                }) -                .show(); +        if (activity != null) { +            AlertDialog.Builder alertBuilder = new AlertDialog.Builder(activity); +            alertBuilder.setTitle(activity.getString(R.string.eip_cancel_connect_title)) +                    .setMessage(activity.getString(R.string.eip_warning_browser_inconsistency)) +                    .setPositiveButton((android.R.string.yes), new DialogInterface.OnClickListener() { +                        @Override +                        public void onClick(DialogInterface dialog, int which) { +                            stopEipIfPossible(); +                        } +                    }) +                    .setNegativeButton(activity.getString(android.R.string.no), new DialogInterface.OnClickListener() { +                        @Override +                        public void onClick(DialogInterface dialog, int which) { +                        } +                    }) +                    .show(); +        } else { +            Log.e(TAG, "activity is null when asking to stop EIP"); +        }      }      @Override @@ -362,25 +391,29 @@ public class EipFragment extends Fragment implements Observer {      private void handleNewState() {          Activity activity = getActivity(); -        if (eipStatus.isConnecting()) { -            mainButton.setText(activity.getString(android.R.string.cancel)); -            key.setImageResource(R.drawable.vpn_connecting); -            routedText.setVisibility(GONE); -            vpnRoute.setVisibility(GONE); -            colorBackgroundALittle(); -        } else if (eipStatus.isConnected() || isOpenVpnRunningWithoutNetwork()) { -            mainButton.setText(activity.getString(R.string.vpn_button_turn_off)); -            key.setImageResource(R.drawable.vpn_connected); -            routedText.setVisibility(VISIBLE); -            vpnRoute.setVisibility(VISIBLE); -            vpnRoute.setText(ConfigHelper.getProviderName(preferences)); -            colorBackground(); +        if (activity != null) { +            if (eipStatus.isConnecting()) { +                mainButton.setText(activity.getString(android.R.string.cancel)); +                key.setImageResource(R.drawable.vpn_connecting); +                routedText.setVisibility(GONE); +                vpnRoute.setVisibility(GONE); +                colorBackgroundALittle(); +            } else if (eipStatus.isConnected() || isOpenVpnRunningWithoutNetwork()) { +                mainButton.setText(activity.getString(R.string.vpn_button_turn_off)); +                key.setImageResource(R.drawable.vpn_connected); +                routedText.setVisibility(VISIBLE); +                vpnRoute.setVisibility(VISIBLE); +                vpnRoute.setText(ConfigHelper.getProviderName(preferences)); +                colorBackground(); +            } else { +                mainButton.setText(activity.getString(R.string.vpn_button_turn_on)); +                key.setImageResource(R.drawable.vpn_disconnected); +                routedText.setVisibility(GONE); +                vpnRoute.setVisibility(GONE); +                greyscaleBackground(); +            }          } else { -            mainButton.setText(activity.getString(R.string.vpn_button_turn_on)); -            key.setImageResource(R.drawable.vpn_disconnected); -            routedText.setVisibility(GONE); -            vpnRoute.setVisibility(GONE); -            greyscaleBackground(); +            Log.e(TAG, "activity is null while trying to handle new state");          }      } @@ -399,9 +432,13 @@ public class EipFragment extends Fragment implements Observer {      private void bindOpenVpnService() {          Activity activity = getActivity(); -        Intent intent = new Intent(activity, OpenVPNService.class); -        intent.setAction(OpenVPNService.START_SERVICE); -        activity.bindService(intent, openVpnConnection, Context.BIND_AUTO_CREATE); +        if (activity != null) { +            Intent intent = new Intent(activity, OpenVPNService.class); +            intent.setAction(OpenVPNService.START_SERVICE); +            activity.bindService(intent, openVpnConnection, Context.BIND_AUTO_CREATE); +        } else { +            Log.e(TAG, "activity is null when binding OpenVpn"); +        }      }      protected class EIPReceiver extends ResultReceiver { @@ -533,10 +570,15 @@ public class EipFragment extends Fragment implements Observer {      }      private void setUpBroadcastReceiver() { -        IntentFilter updateIntentFilter = new IntentFilter(BROADCAST_EIP_EVENT); -        updateIntentFilter.addCategory(Intent.CATEGORY_DEFAULT); -        getActivity().registerReceiver(eipBroadcastReceiver, updateIntentFilter); -        Log.d(TAG, "broadcast registered"); +        Activity activity = getActivity(); +        if (activity != null) { +            IntentFilter updateIntentFilter = new IntentFilter(BROADCAST_EIP_EVENT); +            updateIntentFilter.addCategory(Intent.CATEGORY_DEFAULT); +            activity.registerReceiver(eipBroadcastReceiver, updateIntentFilter); +            Log.d(TAG, "broadcast registered"); +        } else { +            Log.e(TAG, "activity null when setting up boradcat receiver"); +        }      }  } diff --git a/app/src/main/java/se/leap/bitmaskclient/OkHttpClientGenerator.java b/app/src/main/java/se/leap/bitmaskclient/OkHttpClientGenerator.java index 6d554b0e..40b2ea7f 100644 --- a/app/src/main/java/se/leap/bitmaskclient/OkHttpClientGenerator.java +++ b/app/src/main/java/se/leap/bitmaskclient/OkHttpClientGenerator.java @@ -73,11 +73,6 @@ public class OkHttpClientGenerator {          return initHttpClient(initError, caCert);      } -    public OkHttpClient initSelfSignedCAHttpClient(JSONObject initError, String certificate) { -        return initHttpClient(initError, certificate); -    } - -      private OkHttpClient initHttpClient(JSONObject initError, String certificate) {          try {              TLSCompatSocketFactory sslCompatFactory; diff --git a/app/src/main/java/se/leap/bitmaskclient/ProviderApiManagerBase.java b/app/src/main/java/se/leap/bitmaskclient/ProviderApiManagerBase.java index 000dd164..6b6aa89d 100644 --- a/app/src/main/java/se/leap/bitmaskclient/ProviderApiManagerBase.java +++ b/app/src/main/java/se/leap/bitmaskclient/ProviderApiManagerBase.java @@ -66,7 +66,6 @@ import static se.leap.bitmaskclient.DownloadFailedDialog.DOWNLOAD_ERRORS.ERROR_C  import static se.leap.bitmaskclient.DownloadFailedDialog.DOWNLOAD_ERRORS.ERROR_INVALID_CERTIFICATE;  import static se.leap.bitmaskclient.ProviderAPI.CORRECTLY_DOWNLOADED_CERTIFICATE;  import static se.leap.bitmaskclient.ProviderAPI.CORRECTLY_DOWNLOADED_EIP_SERVICE; -import static se.leap.bitmaskclient.ProviderAPI.CURRENT_PROGRESS;  import static se.leap.bitmaskclient.ProviderAPI.DOWNLOAD_CERTIFICATE;  import static se.leap.bitmaskclient.ProviderAPI.DOWNLOAD_EIP_SERVICE;  import static se.leap.bitmaskclient.ProviderAPI.ERRORID; @@ -572,7 +571,7 @@ public abstract class ProviderApiManagerBase {          JSONObject errorJson = new JSONObject();          String baseUrl = getApiUrl(providerDefinition); -        OkHttpClient okHttpClient = clientGenerator.initSelfSignedCAHttpClient(errorJson, caCert); +        OkHttpClient okHttpClient = clientGenerator.initSelfSignedCAHttpClient(caCert, errorJson);          if (okHttpClient == null) {              result.putString(ERRORS, errorJson.toString());              return false; @@ -706,7 +705,6 @@ public abstract class ProviderApiManagerBase {                  return setErrorResult(result, warning_corrupted_provider_cert, ERROR_CERTIFICATE_PINNING.toString());              } -              if (!hasApiUrlExpectedDomain(providerDefinition, mainUrl)){                  return setErrorResult(result, warning_corrupted_provider_details, ERROR_CORRUPTED_PROVIDER_JSON.toString());              } diff --git a/app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java b/app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java index b2daff82..6a76dd55 100644 --- a/app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java +++ b/app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java @@ -23,6 +23,7 @@ import android.content.Intent;  import android.content.IntentFilter;  import android.os.Bundle;  import android.os.Handler; +import android.support.annotation.NonNull;  import android.support.v4.app.DialogFragment;  import android.support.v4.app.FragmentTransaction;  import android.util.Log; @@ -102,7 +103,7 @@ public abstract class ProviderListBaseActivity extends ConfigWizardBaseActivity      private boolean isActivityShowing;      private String reasonToFail; -    public abstract void retrySetUpProvider(Provider provider); +    public abstract void retrySetUpProvider(@NonNull Provider provider);      protected abstract void onItemSelectedLogic(); @@ -360,10 +361,10 @@ public abstract class ProviderListBaseActivity extends ConfigWizardBaseActivity              DialogFragment newFragment;              try {                  JSONObject errorJson = new JSONObject(reasonToFail); -                newFragment = DownloadFailedDialog.newInstance(errorJson); +                newFragment = DownloadFailedDialog.newInstance(provider, errorJson);              } catch (JSONException e) {                  e.printStackTrace(); -                newFragment = DownloadFailedDialog.newInstance(reasonToFail); +                newFragment = DownloadFailedDialog.newInstance(provider, reasonToFail);              }              newFragment.show(fragmentTransaction, DownloadFailedDialog.TAG);          } catch (IllegalStateException e) { diff --git a/app/src/production/java/se/leap/bitmaskclient/ProviderApiManager.java b/app/src/production/java/se/leap/bitmaskclient/ProviderApiManager.java index a4b3e491..1783135d 100644 --- a/app/src/production/java/se/leap/bitmaskclient/ProviderApiManager.java +++ b/app/src/production/java/se/leap/bitmaskclient/ProviderApiManager.java @@ -67,7 +67,6 @@ public class ProviderApiManager extends ProviderApiManagerBase {       */      @Override      protected Bundle setUpProvider(Provider provider, Bundle task) { -        int progress = 0;          Bundle currentDownload = new Bundle();          if (isEmpty(provider.getMainUrlString()) || provider.getMainUrl().isDefault()) { @@ -260,7 +259,7 @@ public class ProviderApiManager extends ProviderApiManagerBase {          String responseString;          JSONObject errorJson = new JSONObject();          String baseUrl = getApiUrl(providerDefinition); -        OkHttpClient okHttpClient = clientGenerator.initSelfSignedCAHttpClient(errorJson, caCert); +        OkHttpClient okHttpClient = clientGenerator.initSelfSignedCAHttpClient(caCert, errorJson);          if (okHttpClient == null) {              return errorJson.toString();          } diff --git a/app/src/production/java/se/leap/bitmaskclient/ProviderListActivity.java b/app/src/production/java/se/leap/bitmaskclient/ProviderListActivity.java index 67c04f13..2df0ffa1 100644 --- a/app/src/production/java/se/leap/bitmaskclient/ProviderListActivity.java +++ b/app/src/production/java/se/leap/bitmaskclient/ProviderListActivity.java @@ -18,6 +18,7 @@ package se.leap.bitmaskclient;  import android.content.Intent;  import android.os.Bundle; +import android.support.annotation.NonNull;  import java.net.MalformedURLException;  import java.net.URL; @@ -67,7 +68,7 @@ public class ProviderListActivity extends ProviderListBaseActivity {      }      @Override -    public void retrySetUpProvider(Provider provider) { +    public void retrySetUpProvider(@NonNull Provider provider) {          cancelSettingUpProvider();          if (!provider.hasCaCert()) {              addAndSelectNewProvider(provider.getMainUrlString()); diff --git a/app/src/test/java/se/leap/bitmaskclient/testutils/MockHelper.java b/app/src/test/java/se/leap/bitmaskclient/testutils/MockHelper.java index ea7f9aae..fa5fab8c 100644 --- a/app/src/test/java/se/leap/bitmaskclient/testutils/MockHelper.java +++ b/app/src/test/java/se/leap/bitmaskclient/testutils/MockHelper.java @@ -354,7 +354,6 @@ public class MockHelper {          OkHttpClient mockedOkHttpClient = mock(OkHttpClient.class);          when(mockClientGenerator.initCommercialCAHttpClient(any(JSONObject.class))).thenReturn(mockedOkHttpClient);          when(mockClientGenerator.initSelfSignedCAHttpClient(anyString(), any(JSONObject.class))).thenReturn(mockedOkHttpClient); -        when(mockClientGenerator.initSelfSignedCAHttpClient(any(JSONObject.class), anyString())).thenReturn(mockedOkHttpClient);          return mockClientGenerator;      } | 
