package com.swisscom.safeconnect.utils.test; import android.app.Service; import android.content.ComponentName; import android.content.Intent; import android.content.ServiceConnection; import android.os.Handler; import android.os.IBinder; import org.strongswan.android.logic.VpnStateService; /** * Created by vadim on 11.12.14. */ public class MockedVpnService extends Service { private VpnStateService mService; private Handler mHandler = new Handler(); private final Object mServiceLock = new Object(); @Override public IBinder onBind(Intent intent) { return null; } private final ServiceConnection mServiceConnection = new ServiceConnection() { @Override public void onServiceDisconnected(ComponentName name) { /* since the service is local this is theoretically only called when the process is terminated */ synchronized (mServiceLock) { mService = null; } } @Override public void onServiceConnected(ComponentName name, IBinder service) { synchronized (mServiceLock) { mService = ((VpnStateService.LocalBinder)service).getService(); } } }; @Override public int onStartCommand(Intent intent, int flags, int startId) { startConnection(); mHandler.postDelayed(new Runnable() { @Override public void run() { setState(VpnStateService.State.CONNECTED); } }, 1000); return START_NOT_STICKY; } @Override public void onCreate() { Intent i = new Intent(); i.setClassName("com.swisscom.safeconnect", "org.strongswan.android.logic.VpnStateService"); bindService(i, mServiceConnection, Service.BIND_AUTO_CREATE); } @Override public void onDestroy() { if (mService != null) unbindService(mServiceConnection); } private void startConnection() { synchronized (mServiceLock) { if (mService != null) { mService.startConnection(null); } } } private void setState(VpnStateService.State state) { synchronized (mServiceLock) { if (mService != null) { mService.setState(state); } } } }