Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9c71fcc5 authored by Jason Monk's avatar Jason Monk Committed by Android (Google) Code Review
Browse files

Merge "Add Editable PAC field to Proxy Configuration"

parents 167b5b06 0485b7c3
Loading
Loading
Loading
Loading
+15 −5
Original line number Diff line number Diff line
@@ -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">
+2 −0
Original line number Diff line number Diff line
@@ -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. -->
+4 −2
Original line number Diff line number Diff line
@@ -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>
+47 −15
Original line number Diff line number Diff line
@@ -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();