Loading res/xml/network_and_internet.xml +22 −12 Original line number Diff line number Diff line Loading @@ -18,7 +18,8 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:settings="http://schemas.android.com/apk/res-auto" android:key="network_and_internet_screen" android:title="@string/network_dashboard_title"> android:title="@string/network_dashboard_title" settings:initialExpandedChildrenCount="5"> <com.android.settings.widget.MasterSwitchPreference android:fragment="com.android.settings.wifi.WifiSettings" Loading Loading @@ -58,20 +59,11 @@ settings:userRestriction="no_config_tethering" settings:useAdminDisabledSummary="true" /> <com.android.settingslib.RestrictedPreference android:fragment="com.android.settings.vpn2.VpnSettings" android:key="vpn_settings" android:title="@string/vpn_settings_title" android:icon="@drawable/ic_vpn_key" android:order="0" android:summary="@string/summary_placeholder" settings:userRestriction="no_config_vpn" settings:useAdminDisabledSummary="true" /> <com.android.settingslib.RestrictedPreference android:key="manage_mobile_plan" android:title="@string/manage_mobile_plan_title" android:persistent="false" android:order="0" settings:userRestriction="no_config_mobile_networks" settings:useAdminDisabledSummary="true" /> Loading @@ -88,4 +80,22 @@ android:key="proxy_settings" android:title="@string/proxy_settings_title" /> <com.android.settingslib.RestrictedPreference android:fragment="com.android.settings.vpn2.VpnSettings" android:key="vpn_settings" android:title="@string/vpn_settings_title" android:icon="@drawable/ic_vpn_key" android:order="10" android:summary="@string/summary_placeholder" settings:userRestriction="no_config_vpn" settings:useAdminDisabledSummary="true" /> <com.android.settings.network.PrivateDnsModeDialogPreference android:key="private_dns_settings" android:title="@string/select_private_dns_configuration_title" android:order="15" android:dialogTitle="@string/select_private_dns_configuration_dialog_title" android:dialogLayout="@layout/private_dns_mode_dialog" android:positiveButtonText="@string/save" /> </PreferenceScreen> src/com/android/settings/network/NetworkDashboardFragment.java +4 −5 Original line number Diff line number Diff line Loading @@ -49,10 +49,8 @@ public class NetworkDashboardFragment extends DashboardFragment implements private static final String TAG = "NetworkDashboardFrag"; private static final int MENU_NETWORK_RESET = Menu.FIRST; private static final int MENU_PRIVATE_DNS = Menu.FIRST + 1; private NetworkResetActionMenuController mNetworkResetController; private PrivateDnsMenuController mPrivateDnsMenuController; @Override public int getMetricsCategory() { Loading @@ -73,8 +71,6 @@ public class NetworkDashboardFragment extends DashboardFragment implements public void onAttach(Context context) { super.onAttach(context); mNetworkResetController = new NetworkResetActionMenuController(context, MENU_NETWORK_RESET); mPrivateDnsMenuController = new PrivateDnsMenuController(getFragmentManager(), MENU_PRIVATE_DNS); } @Override Loading @@ -86,7 +82,6 @@ public class NetworkDashboardFragment extends DashboardFragment implements public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); mNetworkResetController.buildMenuItem(menu); mPrivateDnsMenuController.buildMenuItem(menu); } @Override Loading @@ -109,6 +104,8 @@ public class NetworkDashboardFragment extends DashboardFragment implements new MobileNetworkPreferenceController(context); final VpnPreferenceController vpnPreferenceController = new VpnPreferenceController(context); final PrivateDnsPreferenceController privateDnsPreferenceController = new PrivateDnsPreferenceController(context); if (lifecycle != null) { lifecycle.addObserver(airplaneModePreferenceController); Loading @@ -116,6 +113,7 @@ public class NetworkDashboardFragment extends DashboardFragment implements lifecycle.addObserver(wifiPreferenceController); lifecycle.addObserver(mobileNetworkPreferenceController); lifecycle.addObserver(vpnPreferenceController); lifecycle.addObserver(privateDnsPreferenceController); } final List<AbstractPreferenceController> controllers = new ArrayList<>(); Loading @@ -126,6 +124,7 @@ public class NetworkDashboardFragment extends DashboardFragment implements controllers.add(new ProxyPreferenceController(context)); controllers.add(mobilePlanPreferenceController); controllers.add(wifiPreferenceController); controllers.add(privateDnsPreferenceController); return controllers; } Loading src/com/android/settings/network/PrivateDnsModeDialogFragment.java→src/com/android/settings/network/PrivateDnsModeDialogPreference.java +54 −52 Original line number Diff line number Diff line Loading @@ -20,19 +20,18 @@ import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC; import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; import android.app.AlertDialog; import android.app.Dialog; import android.app.FragmentManager; import android.content.ActivityNotFoundException; import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.provider.Settings; import android.support.annotation.VisibleForTesting; import android.text.Editable; import android.text.TextWatcher; import android.text.method.LinkMovementMethod; import android.view.LayoutInflater; import android.util.AttributeSet; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; Loading @@ -41,8 +40,9 @@ import android.widget.TextView; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.overlay.FeatureFactory; import com.android.settings.utils.AnnotationSpan; import com.android.settingslib.CustomDialogPreference; import com.android.settingslib.HelpUtils; import java.util.HashMap; Loading @@ -51,7 +51,7 @@ import java.util.Map; /** * Dialog to set the private dns */ public class PrivateDnsModeDialogFragment extends InstrumentedDialogFragment implements public class PrivateDnsModeDialogPreference extends CustomDialogPreference implements DialogInterface.OnClickListener, RadioGroup.OnCheckedChangeListener, TextWatcher { public static final String ANNOTATION_URL = "url"; Loading @@ -77,41 +77,44 @@ public class PrivateDnsModeDialogFragment extends InstrumentedDialogFragment imp @VisibleForTesting RadioGroup mRadioGroup; @VisibleForTesting Button mSaveButton; @VisibleForTesting String mMode; public static void show(FragmentManager fragmentManager) { if (fragmentManager.findFragmentByTag(TAG) == null) { final PrivateDnsModeDialogFragment fragment = new PrivateDnsModeDialogFragment(); fragment.show(fragmentManager, TAG); public PrivateDnsModeDialogPreference(Context context) { super(context); } public PrivateDnsModeDialogPreference(Context context, AttributeSet attrs) { super(context, attrs); } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final Context context = getContext(); public PrivateDnsModeDialogPreference(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } final AlertDialog dialog = new AlertDialog.Builder(context) .setTitle(R.string.select_private_dns_configuration_title) .setView(buildPrivateDnsView(context)) .setPositiveButton(R.string.save, this) .setNegativeButton(R.string.dlg_cancel, null) .create(); public PrivateDnsModeDialogPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } dialog.setOnShowListener(dialogInterface -> { mSaveButton = dialog.getButton(DialogInterface.BUTTON_POSITIVE); updateDialogInfo(); }); return dialog; private final AnnotationSpan.LinkInfo mUrlLinkInfo = new AnnotationSpan.LinkInfo( ANNOTATION_URL, (widget) -> { final Context context = widget.getContext(); final Intent intent = HelpUtils.getHelpIntent(context, context.getString(R.string.help_uri_private_dns), context.getClass().getName()); if (intent != null) { try { widget.startActivityForResult(intent, 0); } catch (ActivityNotFoundException e) { Log.w(TAG, "Activity was not found for intent, " + intent.toString()); } } }); private View buildPrivateDnsView(final Context context) { @Override protected void onBindDialogView(View view) { final Context context = getContext(); final ContentResolver contentResolver = context.getContentResolver(); mMode = Settings.Global.getString(contentResolver, MODE_KEY); final View view = LayoutInflater.from(context).inflate(R.layout.private_dns_mode_dialog, null); mEditText = view.findViewById(R.id.private_dns_mode_provider_hostname); mEditText.addTextChangedListener(this); mEditText.setText(Settings.Global.getString(contentResolver, HOSTNAME_KEY)); Loading @@ -131,26 +134,20 @@ public class PrivateDnsModeDialogFragment extends InstrumentedDialogFragment imp helpTextView.setText(AnnotationSpan.linkify( context.getText(R.string.private_dns_help_message), linkInfo)); } return view; } @Override public void onClick(DialogInterface dialog, int which) { final Context context = getContext(); if (mMode.equals(PRIVATE_DNS_MODE_PROVIDER_HOSTNAME)) { // Only clickable if hostname is valid, so we could save it safely Settings.Global.putString(getContext().getContentResolver(), HOSTNAME_KEY, Settings.Global.putString(context.getContentResolver(), HOSTNAME_KEY, mEditText.getText().toString()); } mMetricsFeatureProvider.action(getContext(), FeatureFactory.getFactory(context).getMetricsFeatureProvider().action(context, MetricsProto.MetricsEvent.ACTION_PRIVATE_DNS_MODE, mMode); Settings.Global.putString(getContext().getContentResolver(), MODE_KEY, mMode); } @Override public int getMetricsCategory() { return MetricsProto.MetricsEvent.DIALOG_PRIVATE_DNS; Settings.Global.putString(context.getContentResolver(), MODE_KEY, mMode); } @Override Loading Loading @@ -179,9 +176,7 @@ public class PrivateDnsModeDialogFragment extends InstrumentedDialogFragment imp @Override public void afterTextChanged(Editable s) { if (mSaveButton != null) { mSaveButton.setEnabled(isWeaklyValidatedHostname(mEditText.getText().toString())); } updateDialogInfo(); } private boolean isWeaklyValidatedHostname(String hostname) { Loading @@ -193,17 +188,24 @@ public class PrivateDnsModeDialogFragment extends InstrumentedDialogFragment imp return hostname.matches(WEAK_HOSTNAME_REGEX); } private Button getSaveButton() { final AlertDialog dialog = (AlertDialog) getDialog(); if (dialog == null) { return null; } return dialog.getButton(DialogInterface.BUTTON_POSITIVE); } private void updateDialogInfo() { final boolean modeProvider = PRIVATE_DNS_MODE_PROVIDER_HOSTNAME.equals(mMode); if (mEditText != null) { mEditText.setEnabled(modeProvider); } if (mSaveButton != null) { mSaveButton.setEnabled( modeProvider final Button saveButton = getSaveButton(); if (saveButton != null) { saveButton.setEnabled(modeProvider ? isWeaklyValidatedHostname(mEditText.getText().toString()) : true); } } } src/com/android/settings/network/PrivateDnsMenuController.java→src/com/android/settings/network/PrivateDnsPreferenceController.java +17 −18 Original line number Diff line number Diff line Loading @@ -16,29 +16,28 @@ package com.android.settings.network; import android.app.FragmentManager; import android.view.Menu; import android.view.MenuItem; import android.content.Context; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.core.lifecycle.LifecycleObserver; public class PrivateDnsMenuController { private final FragmentManager mFragmentManager; private final int mMenuId; public class PrivateDnsPreferenceController extends BasePreferenceController implements PreferenceControllerMixin, LifecycleObserver { private static final String KEY_PRIVATE_DNS_SETTINGS = "private_dns_settings"; public PrivateDnsMenuController(FragmentManager fragmentManager, int menuId) { mFragmentManager = fragmentManager; mMenuId = menuId; public PrivateDnsPreferenceController(Context context) { super(context, KEY_PRIVATE_DNS_SETTINGS); } public void buildMenuItem(Menu menu) { if (menu != null) { MenuItem item = menu.add(0 /* groupId */, mMenuId, 0 /* order */, R.string.select_private_dns_configuration_title); item.setOnMenuItemClickListener(target -> { PrivateDnsModeDialogFragment.show(mFragmentManager); return true; }); @Override public String getPreferenceKey() { return KEY_PRIVATE_DNS_SETTINGS; } @Override public int getAvailabilityStatus() { return AVAILABLE; } } src/com/android/settings/network/VpnPreferenceController.java +0 −2 Original line number Diff line number Diff line Loading @@ -180,13 +180,11 @@ public class VpnPreferenceController extends AbstractPreferenceController mNetworkCallback = new ConnectivityManager.NetworkCallback() { @Override public void onAvailable(Network network) { Log.d(TAG, "onAvailable " + network.netId); updateSummary(); } @Override public void onLost(Network network) { Log.d(TAG, "onLost " + network.netId); updateSummary(); } }; Loading Loading
res/xml/network_and_internet.xml +22 −12 Original line number Diff line number Diff line Loading @@ -18,7 +18,8 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:settings="http://schemas.android.com/apk/res-auto" android:key="network_and_internet_screen" android:title="@string/network_dashboard_title"> android:title="@string/network_dashboard_title" settings:initialExpandedChildrenCount="5"> <com.android.settings.widget.MasterSwitchPreference android:fragment="com.android.settings.wifi.WifiSettings" Loading Loading @@ -58,20 +59,11 @@ settings:userRestriction="no_config_tethering" settings:useAdminDisabledSummary="true" /> <com.android.settingslib.RestrictedPreference android:fragment="com.android.settings.vpn2.VpnSettings" android:key="vpn_settings" android:title="@string/vpn_settings_title" android:icon="@drawable/ic_vpn_key" android:order="0" android:summary="@string/summary_placeholder" settings:userRestriction="no_config_vpn" settings:useAdminDisabledSummary="true" /> <com.android.settingslib.RestrictedPreference android:key="manage_mobile_plan" android:title="@string/manage_mobile_plan_title" android:persistent="false" android:order="0" settings:userRestriction="no_config_mobile_networks" settings:useAdminDisabledSummary="true" /> Loading @@ -88,4 +80,22 @@ android:key="proxy_settings" android:title="@string/proxy_settings_title" /> <com.android.settingslib.RestrictedPreference android:fragment="com.android.settings.vpn2.VpnSettings" android:key="vpn_settings" android:title="@string/vpn_settings_title" android:icon="@drawable/ic_vpn_key" android:order="10" android:summary="@string/summary_placeholder" settings:userRestriction="no_config_vpn" settings:useAdminDisabledSummary="true" /> <com.android.settings.network.PrivateDnsModeDialogPreference android:key="private_dns_settings" android:title="@string/select_private_dns_configuration_title" android:order="15" android:dialogTitle="@string/select_private_dns_configuration_dialog_title" android:dialogLayout="@layout/private_dns_mode_dialog" android:positiveButtonText="@string/save" /> </PreferenceScreen>
src/com/android/settings/network/NetworkDashboardFragment.java +4 −5 Original line number Diff line number Diff line Loading @@ -49,10 +49,8 @@ public class NetworkDashboardFragment extends DashboardFragment implements private static final String TAG = "NetworkDashboardFrag"; private static final int MENU_NETWORK_RESET = Menu.FIRST; private static final int MENU_PRIVATE_DNS = Menu.FIRST + 1; private NetworkResetActionMenuController mNetworkResetController; private PrivateDnsMenuController mPrivateDnsMenuController; @Override public int getMetricsCategory() { Loading @@ -73,8 +71,6 @@ public class NetworkDashboardFragment extends DashboardFragment implements public void onAttach(Context context) { super.onAttach(context); mNetworkResetController = new NetworkResetActionMenuController(context, MENU_NETWORK_RESET); mPrivateDnsMenuController = new PrivateDnsMenuController(getFragmentManager(), MENU_PRIVATE_DNS); } @Override Loading @@ -86,7 +82,6 @@ public class NetworkDashboardFragment extends DashboardFragment implements public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); mNetworkResetController.buildMenuItem(menu); mPrivateDnsMenuController.buildMenuItem(menu); } @Override Loading @@ -109,6 +104,8 @@ public class NetworkDashboardFragment extends DashboardFragment implements new MobileNetworkPreferenceController(context); final VpnPreferenceController vpnPreferenceController = new VpnPreferenceController(context); final PrivateDnsPreferenceController privateDnsPreferenceController = new PrivateDnsPreferenceController(context); if (lifecycle != null) { lifecycle.addObserver(airplaneModePreferenceController); Loading @@ -116,6 +113,7 @@ public class NetworkDashboardFragment extends DashboardFragment implements lifecycle.addObserver(wifiPreferenceController); lifecycle.addObserver(mobileNetworkPreferenceController); lifecycle.addObserver(vpnPreferenceController); lifecycle.addObserver(privateDnsPreferenceController); } final List<AbstractPreferenceController> controllers = new ArrayList<>(); Loading @@ -126,6 +124,7 @@ public class NetworkDashboardFragment extends DashboardFragment implements controllers.add(new ProxyPreferenceController(context)); controllers.add(mobilePlanPreferenceController); controllers.add(wifiPreferenceController); controllers.add(privateDnsPreferenceController); return controllers; } Loading
src/com/android/settings/network/PrivateDnsModeDialogFragment.java→src/com/android/settings/network/PrivateDnsModeDialogPreference.java +54 −52 Original line number Diff line number Diff line Loading @@ -20,19 +20,18 @@ import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC; import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; import android.app.AlertDialog; import android.app.Dialog; import android.app.FragmentManager; import android.content.ActivityNotFoundException; import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.provider.Settings; import android.support.annotation.VisibleForTesting; import android.text.Editable; import android.text.TextWatcher; import android.text.method.LinkMovementMethod; import android.view.LayoutInflater; import android.util.AttributeSet; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; Loading @@ -41,8 +40,9 @@ import android.widget.TextView; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.overlay.FeatureFactory; import com.android.settings.utils.AnnotationSpan; import com.android.settingslib.CustomDialogPreference; import com.android.settingslib.HelpUtils; import java.util.HashMap; Loading @@ -51,7 +51,7 @@ import java.util.Map; /** * Dialog to set the private dns */ public class PrivateDnsModeDialogFragment extends InstrumentedDialogFragment implements public class PrivateDnsModeDialogPreference extends CustomDialogPreference implements DialogInterface.OnClickListener, RadioGroup.OnCheckedChangeListener, TextWatcher { public static final String ANNOTATION_URL = "url"; Loading @@ -77,41 +77,44 @@ public class PrivateDnsModeDialogFragment extends InstrumentedDialogFragment imp @VisibleForTesting RadioGroup mRadioGroup; @VisibleForTesting Button mSaveButton; @VisibleForTesting String mMode; public static void show(FragmentManager fragmentManager) { if (fragmentManager.findFragmentByTag(TAG) == null) { final PrivateDnsModeDialogFragment fragment = new PrivateDnsModeDialogFragment(); fragment.show(fragmentManager, TAG); public PrivateDnsModeDialogPreference(Context context) { super(context); } public PrivateDnsModeDialogPreference(Context context, AttributeSet attrs) { super(context, attrs); } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final Context context = getContext(); public PrivateDnsModeDialogPreference(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } final AlertDialog dialog = new AlertDialog.Builder(context) .setTitle(R.string.select_private_dns_configuration_title) .setView(buildPrivateDnsView(context)) .setPositiveButton(R.string.save, this) .setNegativeButton(R.string.dlg_cancel, null) .create(); public PrivateDnsModeDialogPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } dialog.setOnShowListener(dialogInterface -> { mSaveButton = dialog.getButton(DialogInterface.BUTTON_POSITIVE); updateDialogInfo(); }); return dialog; private final AnnotationSpan.LinkInfo mUrlLinkInfo = new AnnotationSpan.LinkInfo( ANNOTATION_URL, (widget) -> { final Context context = widget.getContext(); final Intent intent = HelpUtils.getHelpIntent(context, context.getString(R.string.help_uri_private_dns), context.getClass().getName()); if (intent != null) { try { widget.startActivityForResult(intent, 0); } catch (ActivityNotFoundException e) { Log.w(TAG, "Activity was not found for intent, " + intent.toString()); } } }); private View buildPrivateDnsView(final Context context) { @Override protected void onBindDialogView(View view) { final Context context = getContext(); final ContentResolver contentResolver = context.getContentResolver(); mMode = Settings.Global.getString(contentResolver, MODE_KEY); final View view = LayoutInflater.from(context).inflate(R.layout.private_dns_mode_dialog, null); mEditText = view.findViewById(R.id.private_dns_mode_provider_hostname); mEditText.addTextChangedListener(this); mEditText.setText(Settings.Global.getString(contentResolver, HOSTNAME_KEY)); Loading @@ -131,26 +134,20 @@ public class PrivateDnsModeDialogFragment extends InstrumentedDialogFragment imp helpTextView.setText(AnnotationSpan.linkify( context.getText(R.string.private_dns_help_message), linkInfo)); } return view; } @Override public void onClick(DialogInterface dialog, int which) { final Context context = getContext(); if (mMode.equals(PRIVATE_DNS_MODE_PROVIDER_HOSTNAME)) { // Only clickable if hostname is valid, so we could save it safely Settings.Global.putString(getContext().getContentResolver(), HOSTNAME_KEY, Settings.Global.putString(context.getContentResolver(), HOSTNAME_KEY, mEditText.getText().toString()); } mMetricsFeatureProvider.action(getContext(), FeatureFactory.getFactory(context).getMetricsFeatureProvider().action(context, MetricsProto.MetricsEvent.ACTION_PRIVATE_DNS_MODE, mMode); Settings.Global.putString(getContext().getContentResolver(), MODE_KEY, mMode); } @Override public int getMetricsCategory() { return MetricsProto.MetricsEvent.DIALOG_PRIVATE_DNS; Settings.Global.putString(context.getContentResolver(), MODE_KEY, mMode); } @Override Loading Loading @@ -179,9 +176,7 @@ public class PrivateDnsModeDialogFragment extends InstrumentedDialogFragment imp @Override public void afterTextChanged(Editable s) { if (mSaveButton != null) { mSaveButton.setEnabled(isWeaklyValidatedHostname(mEditText.getText().toString())); } updateDialogInfo(); } private boolean isWeaklyValidatedHostname(String hostname) { Loading @@ -193,17 +188,24 @@ public class PrivateDnsModeDialogFragment extends InstrumentedDialogFragment imp return hostname.matches(WEAK_HOSTNAME_REGEX); } private Button getSaveButton() { final AlertDialog dialog = (AlertDialog) getDialog(); if (dialog == null) { return null; } return dialog.getButton(DialogInterface.BUTTON_POSITIVE); } private void updateDialogInfo() { final boolean modeProvider = PRIVATE_DNS_MODE_PROVIDER_HOSTNAME.equals(mMode); if (mEditText != null) { mEditText.setEnabled(modeProvider); } if (mSaveButton != null) { mSaveButton.setEnabled( modeProvider final Button saveButton = getSaveButton(); if (saveButton != null) { saveButton.setEnabled(modeProvider ? isWeaklyValidatedHostname(mEditText.getText().toString()) : true); } } }
src/com/android/settings/network/PrivateDnsMenuController.java→src/com/android/settings/network/PrivateDnsPreferenceController.java +17 −18 Original line number Diff line number Diff line Loading @@ -16,29 +16,28 @@ package com.android.settings.network; import android.app.FragmentManager; import android.view.Menu; import android.view.MenuItem; import android.content.Context; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.core.lifecycle.LifecycleObserver; public class PrivateDnsMenuController { private final FragmentManager mFragmentManager; private final int mMenuId; public class PrivateDnsPreferenceController extends BasePreferenceController implements PreferenceControllerMixin, LifecycleObserver { private static final String KEY_PRIVATE_DNS_SETTINGS = "private_dns_settings"; public PrivateDnsMenuController(FragmentManager fragmentManager, int menuId) { mFragmentManager = fragmentManager; mMenuId = menuId; public PrivateDnsPreferenceController(Context context) { super(context, KEY_PRIVATE_DNS_SETTINGS); } public void buildMenuItem(Menu menu) { if (menu != null) { MenuItem item = menu.add(0 /* groupId */, mMenuId, 0 /* order */, R.string.select_private_dns_configuration_title); item.setOnMenuItemClickListener(target -> { PrivateDnsModeDialogFragment.show(mFragmentManager); return true; }); @Override public String getPreferenceKey() { return KEY_PRIVATE_DNS_SETTINGS; } @Override public int getAvailabilityStatus() { return AVAILABLE; } }
src/com/android/settings/network/VpnPreferenceController.java +0 −2 Original line number Diff line number Diff line Loading @@ -180,13 +180,11 @@ public class VpnPreferenceController extends AbstractPreferenceController mNetworkCallback = new ConnectivityManager.NetworkCallback() { @Override public void onAvailable(Network network) { Log.d(TAG, "onAvailable " + network.netId); updateSummary(); } @Override public void onLost(Network network) { Log.d(TAG, "onLost " + network.netId); updateSummary(); } }; Loading