Loading res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -12562,6 +12562,8 @@ <string name="to_switch_networks_disconnect_ethernet">To switch networks, disconnect ethernet</string> <!-- Summary for cannot switch networks to Wi-Fi nor mobile data networks while connected to an ethernet network. [CHAR LIMIT=60] --> <string name="cannot_switch_networks_while_connected">Cannot switch networks while connected</string> <!-- Title for airplane mode network panel. [CHAR LIMIT=60] --> <string name="airplane_mode_network_panel_title">Airplane mode networks</string> <!-- Summary text separator for preferences including a short description (eg. "Connected / 5G"). [CHAR LIMIT=50] --> src/com/android/settings/network/InternetUpdater.java +3 −4 Original line number Diff line number Diff line Loading @@ -149,17 +149,16 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange public InternetUpdater(Context context, Lifecycle lifecycle, OnInternetTypeChangedListener listener) { if (lifecycle == null) { throw new IllegalArgumentException("Lifecycle must be set"); } mContext = context; mAirplaneModeEnabler = new AirplaneModeEnabler(mContext, this); mConnectivityManager = mContext.getSystemService(ConnectivityManager.class); mWifiManager = mContext.getSystemService(WifiManager.class); mWifiStateFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION); mOnInternetTypeChangedListener = listener; if (lifecycle != null) { lifecycle.addObserver(this); } } /** @OnLifecycleEvent(ON_RESUME) */ @OnLifecycleEvent(ON_RESUME) Loading src/com/android/settings/panel/InternetConnectivityPanel.java +69 −3 Original line number Diff line number Diff line Loading @@ -16,6 +16,10 @@ package com.android.settings.panel; import static androidx.lifecycle.Lifecycle.Event.ON_PAUSE; import static androidx.lifecycle.Lifecycle.Event.ON_RESUME; import static com.android.settings.network.InternetUpdater.INTERNET_APM_NETWORKS; import static com.android.settings.network.NetworkProviderSettings.ACTION_NETWORK_PROVIDER_SETTINGS; import android.app.settings.SettingsEnums; Loading @@ -24,9 +28,14 @@ import android.content.Intent; import android.net.Uri; import android.provider.Settings; import androidx.annotation.VisibleForTesting; import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.OnLifecycleEvent; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.network.AirplaneModePreferenceController; import com.android.settings.network.InternetUpdater; import com.android.settings.slices.CustomSliceRegistry; import java.util.ArrayList; Loading @@ -35,9 +44,15 @@ import java.util.List; /** * Represents the Internet Connectivity Panel. */ public class InternetConnectivityPanel implements PanelContent { public class InternetConnectivityPanel implements PanelContent, LifecycleObserver, InternetUpdater.OnInternetTypeChangedListener { private final Context mContext; @VisibleForTesting boolean mIsProviderModelEnabled; private PanelContentCallback mCallback; private InternetUpdater mInternetUpdater; private @InternetUpdater.InternetType int mInternetType; public static InternetConnectivityPanel create(Context context) { return new InternetConnectivityPanel(context); Loading @@ -45,12 +60,37 @@ public class InternetConnectivityPanel implements PanelContent { private InternetConnectivityPanel(Context context) { mContext = context.getApplicationContext(); mIsProviderModelEnabled = Utils.isProviderModelEnabled(mContext); mInternetUpdater = new InternetUpdater(context, null /* Lifecycle */, this); mInternetType = mInternetUpdater.getInternetType(); } /** @OnLifecycleEvent(ON_RESUME) */ @OnLifecycleEvent(ON_RESUME) public void onResume() { if (!mIsProviderModelEnabled) { return; } mInternetUpdater.onResume(); } /** @OnLifecycleEvent(ON_PAUSE) */ @OnLifecycleEvent(ON_PAUSE) public void onPause() { if (!mIsProviderModelEnabled) { return; } mInternetUpdater.onPause(); } @Override public CharSequence getTitle() { return mContext.getText(Utils.isProviderModelEnabled(mContext) ? R.string.provider_internet_settings : R.string.internet_connectivity_panel_title); if (mIsProviderModelEnabled) { return mContext.getText(mInternetType == INTERNET_APM_NETWORKS ? R.string.airplane_mode_network_panel_title : R.string.provider_internet_settings); } return mContext.getText(R.string.internet_connectivity_panel_title); } @Override Loading Loading @@ -93,4 +133,30 @@ public class InternetConnectivityPanel implements PanelContent { public int getMetricsCategory() { return SettingsEnums.PANEL_INTERNET_CONNECTIVITY; } @Override public void registerCallback(PanelContentCallback callback) { mCallback = callback; } /** * Called when internet type is changed. * * @param internetType the internet type */ public void onInternetTypeChanged(@InternetUpdater.InternetType int internetType) { final boolean needRefresh = internetType != mInternetType && (internetType == INTERNET_APM_NETWORKS || mInternetType == INTERNET_APM_NETWORKS); mInternetType = internetType; if (needRefresh) { refresh(); } } private void refresh() { if (mCallback != null) { mCallback.onTitleChanged(); } } } src/com/android/settings/panel/PanelContentCallback.java +5 −0 Original line number Diff line number Diff line Loading @@ -37,4 +37,9 @@ public interface PanelContentCallback { * It will be called when panel requests to close itself. */ void forceClose(); /** * It will be called when panel requests to change the title. */ void onTitleChanged(); } src/com/android/settings/panel/PanelFragment.java +7 −0 Original line number Diff line number Diff line Loading @@ -514,6 +514,13 @@ public class PanelFragment extends Fragment { getFragmentActivity().finish(); } @Override public void onTitleChanged() { ThreadUtils.postOnMainThread(() -> { mTitleView.setText(mPanel.getTitle()); }); } @VisibleForTesting FragmentActivity getFragmentActivity() { return getActivity(); Loading Loading
res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -12562,6 +12562,8 @@ <string name="to_switch_networks_disconnect_ethernet">To switch networks, disconnect ethernet</string> <!-- Summary for cannot switch networks to Wi-Fi nor mobile data networks while connected to an ethernet network. [CHAR LIMIT=60] --> <string name="cannot_switch_networks_while_connected">Cannot switch networks while connected</string> <!-- Title for airplane mode network panel. [CHAR LIMIT=60] --> <string name="airplane_mode_network_panel_title">Airplane mode networks</string> <!-- Summary text separator for preferences including a short description (eg. "Connected / 5G"). [CHAR LIMIT=50] -->
src/com/android/settings/network/InternetUpdater.java +3 −4 Original line number Diff line number Diff line Loading @@ -149,17 +149,16 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange public InternetUpdater(Context context, Lifecycle lifecycle, OnInternetTypeChangedListener listener) { if (lifecycle == null) { throw new IllegalArgumentException("Lifecycle must be set"); } mContext = context; mAirplaneModeEnabler = new AirplaneModeEnabler(mContext, this); mConnectivityManager = mContext.getSystemService(ConnectivityManager.class); mWifiManager = mContext.getSystemService(WifiManager.class); mWifiStateFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION); mOnInternetTypeChangedListener = listener; if (lifecycle != null) { lifecycle.addObserver(this); } } /** @OnLifecycleEvent(ON_RESUME) */ @OnLifecycleEvent(ON_RESUME) Loading
src/com/android/settings/panel/InternetConnectivityPanel.java +69 −3 Original line number Diff line number Diff line Loading @@ -16,6 +16,10 @@ package com.android.settings.panel; import static androidx.lifecycle.Lifecycle.Event.ON_PAUSE; import static androidx.lifecycle.Lifecycle.Event.ON_RESUME; import static com.android.settings.network.InternetUpdater.INTERNET_APM_NETWORKS; import static com.android.settings.network.NetworkProviderSettings.ACTION_NETWORK_PROVIDER_SETTINGS; import android.app.settings.SettingsEnums; Loading @@ -24,9 +28,14 @@ import android.content.Intent; import android.net.Uri; import android.provider.Settings; import androidx.annotation.VisibleForTesting; import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.OnLifecycleEvent; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.network.AirplaneModePreferenceController; import com.android.settings.network.InternetUpdater; import com.android.settings.slices.CustomSliceRegistry; import java.util.ArrayList; Loading @@ -35,9 +44,15 @@ import java.util.List; /** * Represents the Internet Connectivity Panel. */ public class InternetConnectivityPanel implements PanelContent { public class InternetConnectivityPanel implements PanelContent, LifecycleObserver, InternetUpdater.OnInternetTypeChangedListener { private final Context mContext; @VisibleForTesting boolean mIsProviderModelEnabled; private PanelContentCallback mCallback; private InternetUpdater mInternetUpdater; private @InternetUpdater.InternetType int mInternetType; public static InternetConnectivityPanel create(Context context) { return new InternetConnectivityPanel(context); Loading @@ -45,12 +60,37 @@ public class InternetConnectivityPanel implements PanelContent { private InternetConnectivityPanel(Context context) { mContext = context.getApplicationContext(); mIsProviderModelEnabled = Utils.isProviderModelEnabled(mContext); mInternetUpdater = new InternetUpdater(context, null /* Lifecycle */, this); mInternetType = mInternetUpdater.getInternetType(); } /** @OnLifecycleEvent(ON_RESUME) */ @OnLifecycleEvent(ON_RESUME) public void onResume() { if (!mIsProviderModelEnabled) { return; } mInternetUpdater.onResume(); } /** @OnLifecycleEvent(ON_PAUSE) */ @OnLifecycleEvent(ON_PAUSE) public void onPause() { if (!mIsProviderModelEnabled) { return; } mInternetUpdater.onPause(); } @Override public CharSequence getTitle() { return mContext.getText(Utils.isProviderModelEnabled(mContext) ? R.string.provider_internet_settings : R.string.internet_connectivity_panel_title); if (mIsProviderModelEnabled) { return mContext.getText(mInternetType == INTERNET_APM_NETWORKS ? R.string.airplane_mode_network_panel_title : R.string.provider_internet_settings); } return mContext.getText(R.string.internet_connectivity_panel_title); } @Override Loading Loading @@ -93,4 +133,30 @@ public class InternetConnectivityPanel implements PanelContent { public int getMetricsCategory() { return SettingsEnums.PANEL_INTERNET_CONNECTIVITY; } @Override public void registerCallback(PanelContentCallback callback) { mCallback = callback; } /** * Called when internet type is changed. * * @param internetType the internet type */ public void onInternetTypeChanged(@InternetUpdater.InternetType int internetType) { final boolean needRefresh = internetType != mInternetType && (internetType == INTERNET_APM_NETWORKS || mInternetType == INTERNET_APM_NETWORKS); mInternetType = internetType; if (needRefresh) { refresh(); } } private void refresh() { if (mCallback != null) { mCallback.onTitleChanged(); } } }
src/com/android/settings/panel/PanelContentCallback.java +5 −0 Original line number Diff line number Diff line Loading @@ -37,4 +37,9 @@ public interface PanelContentCallback { * It will be called when panel requests to close itself. */ void forceClose(); /** * It will be called when panel requests to change the title. */ void onTitleChanged(); }
src/com/android/settings/panel/PanelFragment.java +7 −0 Original line number Diff line number Diff line Loading @@ -514,6 +514,13 @@ public class PanelFragment extends Fragment { getFragmentActivity().finish(); } @Override public void onTitleChanged() { ThreadUtils.postOnMainThread(() -> { mTitleView.setText(mPanel.getTitle()); }); } @VisibleForTesting FragmentActivity getFragmentActivity() { return getActivity(); Loading