Add Editable PAC field to Proxy Configuration
Make PAC URL field not read only but now settable in advanced wifi configuration options. Bug: 14885470 Change-Id: I2c647f823d5c8a75b5fbf74434cbf0efcc4c50bf
This commit is contained in:
@@ -197,11 +197,6 @@
|
|||||||
android:prompt="@string/proxy_settings_title"
|
android:prompt="@string/proxy_settings_title"
|
||||||
android:entries="@array/wifi_proxy_settings" />
|
android:entries="@array/wifi_proxy_settings" />
|
||||||
|
|
||||||
<TextView android:id="@+id/proxy_pac_info"
|
|
||||||
style="@style/wifi_item_content"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:textAlignment="viewStart"
|
|
||||||
android:visibility="gone"/>
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout android:id="@+id/proxy_warning_limited_support"
|
<LinearLayout android:id="@+id/proxy_warning_limited_support"
|
||||||
@@ -216,6 +211,21 @@
|
|||||||
android:text="@string/proxy_warning_limited_support" />
|
android:text="@string/proxy_warning_limited_support" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout android:id="@+id/proxy_pac_field"
|
||||||
|
style="@style/wifi_section"
|
||||||
|
android:visibility="gone">
|
||||||
|
<LinearLayout style="@style/wifi_item">
|
||||||
|
<TextView
|
||||||
|
style="@style/wifi_item_label"
|
||||||
|
android:text="@string/proxy_url_title" />
|
||||||
|
|
||||||
|
<EditText android:id="@+id/proxy_pac"
|
||||||
|
style="@style/wifi_item_content"
|
||||||
|
android:hint="@string/proxy_url_hint"
|
||||||
|
android:inputType="textNoSuggestions"
|
||||||
|
android:singleLine="true"/>
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
<LinearLayout android:id="@+id/proxy_fields"
|
<LinearLayout android:id="@+id/proxy_fields"
|
||||||
style="@style/wifi_section"
|
style="@style/wifi_section"
|
||||||
android:visibility="gone">
|
android:visibility="gone">
|
||||||
|
@@ -469,6 +469,8 @@
|
|||||||
<item>None</item>
|
<item>None</item>
|
||||||
<!-- Manual HTTP proxy settings are used for the current wifi network [CHAR LIMIT=25] -->
|
<!-- Manual HTTP proxy settings are used for the current wifi network [CHAR LIMIT=25] -->
|
||||||
<item>Manual</item>
|
<item>Manual</item>
|
||||||
|
<!-- Proxy Auto-Config URL that is used for the current wifi network [CHAR LIMIT=25] -->
|
||||||
|
<item>Proxy Auto-Config</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
<!-- Sound settings for emergency tone. -->
|
<!-- Sound settings for emergency tone. -->
|
||||||
|
@@ -445,8 +445,10 @@
|
|||||||
<!-- HTTP proxy settings. Warning message about limited application support [CHAR LIMIT=100]-->
|
<!-- HTTP proxy settings. Warning message about limited application support [CHAR LIMIT=100]-->
|
||||||
<string name="proxy_warning_limited_support">The HTTP proxy is used by the browser but may not be used by the other apps.</string>
|
<string name="proxy_warning_limited_support">The HTTP proxy is used by the browser but may not be used by the other apps.</string>
|
||||||
|
|
||||||
<!-- HTTP proxy settings. Title for Proxy-Auto Config URL. [CHAR LIMIT=NONE]-->
|
<!-- HTTP proxy settings. Title for Proxy-Auto Config URL. [CHAR LIMIT=25] -->
|
||||||
<string name="proxy_url">"PAC URL: "</string>
|
<string name="proxy_url_title">"PAC URL: "</string>
|
||||||
|
<!-- HTTP proxy settings. Hint for Proxy-Auto Config URL. -->
|
||||||
|
<string name="proxy_url_hint" translatable="false">https://www.example.com/proxy.pac</string>
|
||||||
|
|
||||||
<!-- Radio Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed -->
|
<!-- Radio Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed -->
|
||||||
<string name="radio_info_signal_location_label">Location:</string>
|
<string name="radio_info_signal_location_label">Location:</string>
|
||||||
|
@@ -29,6 +29,7 @@ import android.net.NetworkInfo.DetailedState;
|
|||||||
import android.net.NetworkUtils;
|
import android.net.NetworkUtils;
|
||||||
import android.net.ProxyInfo;
|
import android.net.ProxyInfo;
|
||||||
import android.net.RouteInfo;
|
import android.net.RouteInfo;
|
||||||
|
import android.net.Uri;
|
||||||
import android.net.wifi.WifiConfiguration;
|
import android.net.wifi.WifiConfiguration;
|
||||||
import android.net.wifi.WifiConfiguration.AuthAlgorithm;
|
import android.net.wifi.WifiConfiguration.AuthAlgorithm;
|
||||||
import android.net.wifi.WifiConfiguration.KeyMgmt;
|
import android.net.wifi.WifiConfiguration.KeyMgmt;
|
||||||
@@ -105,6 +106,7 @@ public class WifiConfigController implements TextWatcher,
|
|||||||
/* These values come from "wifi_proxy_settings" resource array */
|
/* These values come from "wifi_proxy_settings" resource array */
|
||||||
public static final int PROXY_NONE = 0;
|
public static final int PROXY_NONE = 0;
|
||||||
public static final int PROXY_STATIC = 1;
|
public static final int PROXY_STATIC = 1;
|
||||||
|
public static final int PROXY_PAC = 2;
|
||||||
|
|
||||||
/* These values come from "wifi_eap_method" resource array */
|
/* These values come from "wifi_eap_method" resource array */
|
||||||
public static final int WIFI_EAP_METHOD_PEAP = 0;
|
public static final int WIFI_EAP_METHOD_PEAP = 0;
|
||||||
@@ -130,6 +132,7 @@ public class WifiConfigController implements TextWatcher,
|
|||||||
private TextView mProxyHostView;
|
private TextView mProxyHostView;
|
||||||
private TextView mProxyPortView;
|
private TextView mProxyPortView;
|
||||||
private TextView mProxyExclusionListView;
|
private TextView mProxyExclusionListView;
|
||||||
|
private TextView mProxyPacView;
|
||||||
|
|
||||||
private IpAssignment mIpAssignment = IpAssignment.UNASSIGNED;
|
private IpAssignment mIpAssignment = IpAssignment.UNASSIGNED;
|
||||||
private ProxySettings mProxySettings = ProxySettings.UNASSIGNED;
|
private ProxySettings mProxySettings = ProxySettings.UNASSIGNED;
|
||||||
@@ -257,11 +260,7 @@ public class WifiConfigController implements TextWatcher,
|
|||||||
mProxySettingsSpinner.setSelection(PROXY_STATIC);
|
mProxySettingsSpinner.setSelection(PROXY_STATIC);
|
||||||
showAdvancedFields = true;
|
showAdvancedFields = true;
|
||||||
} else if (config.getProxySettings() == ProxySettings.PAC) {
|
} else if (config.getProxySettings() == ProxySettings.PAC) {
|
||||||
mProxySettingsSpinner.setVisibility(View.GONE);
|
mProxySettingsSpinner.setSelection(PROXY_PAC);
|
||||||
TextView textView = (TextView)mView.findViewById(R.id.proxy_pac_info);
|
|
||||||
textView.setVisibility(View.VISIBLE);
|
|
||||||
textView.setText(context.getString(R.string.proxy_url) +
|
|
||||||
config.getLinkProperties().getHttpProxy().getPacFileUrl());
|
|
||||||
showAdvancedFields = true;
|
showAdvancedFields = true;
|
||||||
} else {
|
} else {
|
||||||
mProxySettingsSpinner.setSelection(PROXY_NONE);
|
mProxySettingsSpinner.setSelection(PROXY_NONE);
|
||||||
@@ -466,11 +465,10 @@ public class WifiConfigController implements TextWatcher,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mProxySettings = (mProxySettingsSpinner != null &&
|
final int selectedPosition = mProxySettingsSpinner.getSelectedItemPosition();
|
||||||
mProxySettingsSpinner.getSelectedItemPosition() == PROXY_STATIC) ?
|
mProxySettings = ProxySettings.NONE;
|
||||||
ProxySettings.STATIC : ProxySettings.NONE;
|
if (selectedPosition == PROXY_STATIC && mProxyHostView != null) {
|
||||||
|
mProxySettings = ProxySettings.STATIC;
|
||||||
if (mProxySettings == ProxySettings.STATIC && mProxyHostView != null) {
|
|
||||||
String host = mProxyHostView.getText().toString();
|
String host = mProxyHostView.getText().toString();
|
||||||
String portStr = mProxyPortView.getText().toString();
|
String portStr = mProxyPortView.getText().toString();
|
||||||
String exclusionList = mProxyExclusionListView.getText().toString();
|
String exclusionList = mProxyExclusionListView.getText().toString();
|
||||||
@@ -488,6 +486,18 @@ public class WifiConfigController implements TextWatcher,
|
|||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
} else if (selectedPosition == PROXY_PAC && mProxyPacView != null) {
|
||||||
|
mProxySettings = ProxySettings.PAC;
|
||||||
|
CharSequence uriSequence = mProxyPacView.getText();
|
||||||
|
if (TextUtils.isEmpty(uriSequence)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
Uri uri = Uri.parse(uriSequence.toString());
|
||||||
|
if (uri == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
ProxyInfo proxyInfo = new ProxyInfo(uri);
|
||||||
|
mLinkProperties.setHttpProxy(proxyInfo);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -811,8 +821,9 @@ public class WifiConfigController implements TextWatcher,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (mProxySettingsSpinner.getSelectedItemPosition() == PROXY_STATIC) {
|
if (mProxySettingsSpinner.getSelectedItemPosition() == PROXY_STATIC) {
|
||||||
mView.findViewById(R.id.proxy_warning_limited_support).setVisibility(View.VISIBLE);
|
setVisibility(R.id.proxy_warning_limited_support, View.VISIBLE);
|
||||||
mView.findViewById(R.id.proxy_fields).setVisibility(View.VISIBLE);
|
setVisibility(R.id.proxy_fields, View.VISIBLE);
|
||||||
|
setVisibility(R.id.proxy_pac_field, View.GONE);
|
||||||
if (mProxyHostView == null) {
|
if (mProxyHostView == null) {
|
||||||
mProxyHostView = (TextView) mView.findViewById(R.id.proxy_hostname);
|
mProxyHostView = (TextView) mView.findViewById(R.id.proxy_hostname);
|
||||||
mProxyHostView.addTextChangedListener(this);
|
mProxyHostView.addTextChangedListener(this);
|
||||||
@@ -829,13 +840,34 @@ public class WifiConfigController implements TextWatcher,
|
|||||||
mProxyExclusionListView.setText(proxyProperties.getExclusionListAsString());
|
mProxyExclusionListView.setText(proxyProperties.getExclusionListAsString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (mProxySettingsSpinner.getSelectedItemPosition() == PROXY_PAC) {
|
||||||
|
setVisibility(R.id.proxy_warning_limited_support, View.GONE);
|
||||||
|
setVisibility(R.id.proxy_fields, View.GONE);
|
||||||
|
setVisibility(R.id.proxy_pac_field, View.VISIBLE);
|
||||||
|
|
||||||
|
if (mProxyPacView == null) {
|
||||||
|
mProxyPacView = (TextView) mView.findViewById(R.id.proxy_pac);
|
||||||
|
mProxyPacView.addTextChangedListener(this);
|
||||||
|
}
|
||||||
|
if (config != null) {
|
||||||
|
ProxyInfo proxyInfo = config.getLinkProperties().getHttpProxy();
|
||||||
|
if (proxyInfo != null) {
|
||||||
|
mProxyPacView.setText(proxyInfo.getPacFileUrl().toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
mView.findViewById(R.id.proxy_warning_limited_support).setVisibility(View.GONE);
|
setVisibility(R.id.proxy_warning_limited_support, View.GONE);
|
||||||
mView.findViewById(R.id.proxy_fields).setVisibility(View.GONE);
|
setVisibility(R.id.proxy_fields, View.GONE);
|
||||||
|
setVisibility(R.id.proxy_pac_field, View.GONE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setVisibility(int id, int visibility) {
|
||||||
|
final View v = mView.findViewById(id);
|
||||||
|
if (v != null) {
|
||||||
|
v.setVisibility(visibility);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void loadCertificates(Spinner spinner, String prefix) {
|
private void loadCertificates(Spinner spinner, String prefix) {
|
||||||
final Context context = mConfigUi.getContext();
|
final Context context = mConfigUi.getContext();
|
||||||
|
Reference in New Issue
Block a user