blob: 0226c3c2374e6bb71f978bc19bc0c2578c6cfa3d [file] [log] [blame]
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.cts.vpnfirewall;
import android.app.Activity;
import android.content.Intent;
import android.net.VpnService;
import android.os.Bundle;
public class VpnClient extends Activity {
public static final String ACTION_CONNECT_AND_FINISH =
"com.android.cts.vpnfirewall.action.CONNECT_AND_FINISH";
public static final String ACTION_DISCONNECT_AND_FINISH =
"com.android.cts.vpnfirewall.action.DISCONNECT_AND_FINISH";
private static final int REQUEST_CONNECT = 0;
private static final int REQUEST_CONNECT_AND_FINISH = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.vpn_client);
if (ACTION_CONNECT_AND_FINISH.equals(getIntent().getAction())) {
prepareAndStart(REQUEST_CONNECT_AND_FINISH);
}
if (ACTION_DISCONNECT_AND_FINISH.equals(getIntent().getAction())) {
// the easiest way to stop the VpnService is to to start it with a stop action
Intent stopServiceIntent = new Intent(this, ReflectorVpnService.class)
.setAction(ReflectorVpnService.ACTION_STOP_SERVICE);
startService(stopServiceIntent);
finish();
}
findViewById(R.id.connect).setOnClickListener(v -> prepareAndStart(REQUEST_CONNECT));
}
@Override
protected void onActivityResult(int request, int result, Intent data) {
if (result == RESULT_OK) {
startService(new Intent(this, ReflectorVpnService.class));
}
if (request == REQUEST_CONNECT_AND_FINISH) {
finish();
}
}
private void prepareAndStart(int requestCode) {
Intent intent = VpnService.prepare(VpnClient.this);
if (intent != null) {
startActivityForResult(intent, requestCode);
} else {
onActivityResult(requestCode, RESULT_OK, null);
}
}
}