summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Monk <jmonk@google.com>2014-05-22 18:24:58 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-05-22 18:24:58 +0000
commit9c71fcc5357a75743a5d284aa5b4297eb0277cc0 (patch)
tree8759e99f7024b6a2e625990be696d3d0283fe34b
parent167b5b0625877c23affa3f2305961b7843a3428a (diff)
parent0485b7c373b5251c4491156e1ec266e907e9a368 (diff)
downloadpackages_apps_Settings-9c71fcc5357a75743a5d284aa5b4297eb0277cc0.tar.gz
packages_apps_Settings-9c71fcc5357a75743a5d284aa5b4297eb0277cc0.tar.bz2
packages_apps_Settings-9c71fcc5357a75743a5d284aa5b4297eb0277cc0.zip
Merge "Add Editable PAC field to Proxy Configuration"
-rw-r--r--res/layout/wifi_dialog.xml20
-rw-r--r--res/values/arrays.xml2
-rw-r--r--res/values/strings.xml6
-rw-r--r--src/com/android/settings/wifi/WifiConfigController.java62
4 files changed, 68 insertions, 22 deletions
diff --git a/res/layout/wifi_dialog.xml b/res/layout/wifi_dialog.xml
index 7275c7303..d0ae981ad 100644
--- a/res/layout/wifi_dialog.xml
+++ b/res/layout/wifi_dialog.xml
@@ -197,11 +197,6 @@
android:prompt="@string/proxy_settings_title"
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 android:id="@+id/proxy_warning_limited_support"
@@ -216,6 +211,21 @@
android:text="@string/proxy_warning_limited_support" />
</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"
style="@style/wifi_section"
android:visibility="gone">
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 5d1a9b6df..8b8777cb0 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -469,6 +469,8 @@
<item>None</item>
<!-- Manual HTTP proxy settings are used for the current wifi network [CHAR LIMIT=25] -->
<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>
<!-- Sound settings for emergency tone. -->
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 0a6c309f6..706f13f02 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -445,8 +445,10 @@
<!-- 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>
- <!-- HTTP proxy settings. Title for Proxy-Auto Config URL. [CHAR LIMIT=NONE]-->
- <string name="proxy_url">"PAC URL: "</string>
+ <!-- HTTP proxy settings. Title for Proxy-Auto Config URL. [CHAR LIMIT=25] -->
+ <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 -->
<string name="radio_info_signal_location_label">Location:</string>
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index 7ccfc6bef..877979806 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -29,6 +29,7 @@ import android.net.NetworkInfo.DetailedState;
import android.net.NetworkUtils;
import android.net.ProxyInfo;
import android.net.RouteInfo;
+import android.net.Uri;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiConfiguration.AuthAlgorithm;
import android.net.wifi.WifiConfiguration.KeyMgmt;
@@ -105,6 +106,7 @@ public class WifiConfigController implements TextWatcher,
/* These values come from "wifi_proxy_settings" resource array */
public static final int PROXY_NONE = 0;
public static final int PROXY_STATIC = 1;
+ public static final int PROXY_PAC = 2;
/* These values come from "wifi_eap_method" resource array */
public static final int WIFI_EAP_METHOD_PEAP = 0;
@@ -130,6 +132,7 @@ public class WifiConfigController implements TextWatcher,
private TextView mProxyHostView;
private TextView mProxyPortView;
private TextView mProxyExclusionListView;
+ private TextView mProxyPacView;
private IpAssignment mIpAssignment = IpAssignment.UNASSIGNED;
private ProxySettings mProxySettings = ProxySettings.UNASSIGNED;
@@ -257,11 +260,7 @@ public class WifiConfigController implements TextWatcher,
mProxySettingsSpinner.setSelection(PROXY_STATIC);
showAdvancedFields = true;
} else if (config.getProxySettings() == ProxySettings.PAC) {
- mProxySettingsSpinner.setVisibility(View.GONE);
- 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());
+ mProxySettingsSpinner.setSelection(PROXY_PAC);
showAdvancedFields = true;
} else {
mProxySettingsSpinner.setSelection(PROXY_NONE);
@@ -466,11 +465,10 @@ public class WifiConfigController implements TextWatcher,
}
}
- mProxySettings = (mProxySettingsSpinner != null &&
- mProxySettingsSpinner.getSelectedItemPosition() == PROXY_STATIC) ?
- ProxySettings.STATIC : ProxySettings.NONE;
-
- if (mProxySettings == ProxySettings.STATIC && mProxyHostView != null) {
+ final int selectedPosition = mProxySettingsSpinner.getSelectedItemPosition();
+ mProxySettings = ProxySettings.NONE;
+ if (selectedPosition == PROXY_STATIC && mProxyHostView != null) {
+ mProxySettings = ProxySettings.STATIC;
String host = mProxyHostView.getText().toString();
String portStr = mProxyPortView.getText().toString();
String exclusionList = mProxyExclusionListView.getText().toString();
@@ -488,6 +486,18 @@ public class WifiConfigController implements TextWatcher,
} else {
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;
}
@@ -811,8 +821,9 @@ public class WifiConfigController implements TextWatcher,
}
if (mProxySettingsSpinner.getSelectedItemPosition() == PROXY_STATIC) {
- mView.findViewById(R.id.proxy_warning_limited_support).setVisibility(View.VISIBLE);
- mView.findViewById(R.id.proxy_fields).setVisibility(View.VISIBLE);
+ setVisibility(R.id.proxy_warning_limited_support, View.VISIBLE);
+ setVisibility(R.id.proxy_fields, View.VISIBLE);
+ setVisibility(R.id.proxy_pac_field, View.GONE);
if (mProxyHostView == null) {
mProxyHostView = (TextView) mView.findViewById(R.id.proxy_hostname);
mProxyHostView.addTextChangedListener(this);
@@ -829,13 +840,34 @@ public class WifiConfigController implements TextWatcher,
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 {
- mView.findViewById(R.id.proxy_warning_limited_support).setVisibility(View.GONE);
- mView.findViewById(R.id.proxy_fields).setVisibility(View.GONE);
+ setVisibility(R.id.proxy_warning_limited_support, 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) {
final Context context = mConfigUi.getContext();