12e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh/* 22e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh * Copyright (C) 2011 The Android Open Source Project 32e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh * 42e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh * Licensed under the Apache License, Version 2.0 (the "License"); 52e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh * you may not use this file except in compliance with the License. 62e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh * You may obtain a copy of the License at 72e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh * 82e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh * http://www.apache.org/licenses/LICENSE-2.0 92e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh * 102e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh * Unless required by applicable law or agreed to in writing, software 112e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh * distributed under the License is distributed on an "AS IS" BASIS, 122e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh * See the License for the specific language governing permissions and 142e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh * limitations under the License. 152e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh */ 162e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh 172e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yehpackage com.android.internal.net; 182e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh 192e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yehimport android.app.PendingIntent; 20899223b97c9b0ae56a8211a46600914c0ecfd854Jeff Sharkeyimport android.net.NetworkInfo; 212e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yehimport android.os.Parcel; 222e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yehimport android.os.Parcelable; 23899223b97c9b0ae56a8211a46600914c0ecfd854Jeff Sharkeyimport android.util.Log; 242e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh 252e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh/** 262e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh * A simple container used to carry information of the ongoing legacy VPN. 272e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh * Internal use only. 282e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh * 292e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh * @hide 302e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh */ 312e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yehpublic class LegacyVpnInfo implements Parcelable { 32899223b97c9b0ae56a8211a46600914c0ecfd854Jeff Sharkey private static final String TAG = "LegacyVpnInfo"; 33899223b97c9b0ae56a8211a46600914c0ecfd854Jeff Sharkey 342e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh public static final int STATE_DISCONNECTED = 0; 352e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh public static final int STATE_INITIALIZING = 1; 362e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh public static final int STATE_CONNECTING = 2; 372e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh public static final int STATE_CONNECTED = 3; 382e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh public static final int STATE_TIMEOUT = 4; 392e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh public static final int STATE_FAILED = 5; 402e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh 412e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh public String key; 422e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh public int state = -1; 4390b1b9f985a91fb54254705515f822b09c68ac26Jeff Davidson public PendingIntent intent; 442e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh 452e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh @Override 462e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh public int describeContents() { 472e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh return 0; 482e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh } 492e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh 502e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh @Override 512e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh public void writeToParcel(Parcel out, int flags) { 522e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh out.writeString(key); 532e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh out.writeInt(state); 5490b1b9f985a91fb54254705515f822b09c68ac26Jeff Davidson out.writeParcelable(intent, flags); 552e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh } 562e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh 572e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh public static final Parcelable.Creator<LegacyVpnInfo> CREATOR = 582e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh new Parcelable.Creator<LegacyVpnInfo>() { 592e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh @Override 602e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh public LegacyVpnInfo createFromParcel(Parcel in) { 612e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh LegacyVpnInfo info = new LegacyVpnInfo(); 622e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh info.key = in.readString(); 632e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh info.state = in.readInt(); 6490b1b9f985a91fb54254705515f822b09c68ac26Jeff Davidson info.intent = in.readParcelable(null); 652e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh return info; 662e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh } 672e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh 682e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh @Override 692e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh public LegacyVpnInfo[] newArray(int size) { 702e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh return new LegacyVpnInfo[size]; 712e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh } 722e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh }; 73899223b97c9b0ae56a8211a46600914c0ecfd854Jeff Sharkey 74899223b97c9b0ae56a8211a46600914c0ecfd854Jeff Sharkey /** 75899223b97c9b0ae56a8211a46600914c0ecfd854Jeff Sharkey * Return best matching {@link LegacyVpnInfo} state based on given 76899223b97c9b0ae56a8211a46600914c0ecfd854Jeff Sharkey * {@link NetworkInfo}. 77899223b97c9b0ae56a8211a46600914c0ecfd854Jeff Sharkey */ 78899223b97c9b0ae56a8211a46600914c0ecfd854Jeff Sharkey public static int stateFromNetworkInfo(NetworkInfo info) { 79899223b97c9b0ae56a8211a46600914c0ecfd854Jeff Sharkey switch (info.getDetailedState()) { 80899223b97c9b0ae56a8211a46600914c0ecfd854Jeff Sharkey case CONNECTING: 81899223b97c9b0ae56a8211a46600914c0ecfd854Jeff Sharkey return STATE_CONNECTING; 82899223b97c9b0ae56a8211a46600914c0ecfd854Jeff Sharkey case CONNECTED: 83899223b97c9b0ae56a8211a46600914c0ecfd854Jeff Sharkey return STATE_CONNECTED; 84899223b97c9b0ae56a8211a46600914c0ecfd854Jeff Sharkey case DISCONNECTED: 85899223b97c9b0ae56a8211a46600914c0ecfd854Jeff Sharkey return STATE_DISCONNECTED; 86899223b97c9b0ae56a8211a46600914c0ecfd854Jeff Sharkey case FAILED: 87899223b97c9b0ae56a8211a46600914c0ecfd854Jeff Sharkey return STATE_FAILED; 88899223b97c9b0ae56a8211a46600914c0ecfd854Jeff Sharkey default: 89899223b97c9b0ae56a8211a46600914c0ecfd854Jeff Sharkey Log.w(TAG, "Unhandled state " + info.getDetailedState() 90899223b97c9b0ae56a8211a46600914c0ecfd854Jeff Sharkey + " ; treating as disconnected"); 91899223b97c9b0ae56a8211a46600914c0ecfd854Jeff Sharkey return STATE_DISCONNECTED; 92899223b97c9b0ae56a8211a46600914c0ecfd854Jeff Sharkey } 93899223b97c9b0ae56a8211a46600914c0ecfd854Jeff Sharkey } 942e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh} 95