Loading packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java +0 −1 Original line number Diff line number Diff line Loading @@ -346,7 +346,6 @@ public class InternetDialogController implements AccessPointController.AccessPoi mCallback = null; } @VisibleForTesting boolean isAirplaneModeEnabled() { return mGlobalSettings.getInt(Settings.Global.AIRPLANE_MODE_ON, 0) != 0; } Loading packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegate.java +122 −62 Original line number Diff line number Diff line Loading @@ -30,7 +30,6 @@ import android.telephony.ServiceState; import android.telephony.SignalStrength; import android.telephony.SubscriptionManager; import android.telephony.TelephonyDisplayInfo; import android.telephony.TelephonyManager; import android.text.Html; import android.text.Layout; import android.text.TextUtils; Loading @@ -50,9 +49,14 @@ import android.widget.Switch; import android.widget.TextView; import androidx.annotation.MainThread; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.annotation.WorkerThread; import androidx.lifecycle.Lifecycle; import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LifecycleRegistry; import androidx.lifecycle.MutableLiveData; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; Loading Loading @@ -110,7 +114,6 @@ public class InternetDialogDelegate implements protected boolean mCanConfigWifi; private final InternetDialogManager mInternetDialogManager; private TelephonyManager mTelephonyManager; @Nullable private AlertDialog mAlertDialog; private final UiEventLogger mUiEventLogger; Loading Loading @@ -169,6 +172,13 @@ public class InternetDialogDelegate implements @Nullable private Job mClickJob; // These are to reduce the UI janky frame duration. b/323286540 private LifecycleRegistry mLifecycleRegistry; @VisibleForTesting LifecycleOwner mLifecycleOwner; @VisibleForTesting MutableLiveData<InternetContent> mDataInternetContent = new MutableLiveData<>(); @AssistedFactory public interface Factory { InternetDialogDelegate create( Loading Loading @@ -205,7 +215,6 @@ public class InternetDialogDelegate implements mInternetDialogManager = internetDialogManager; mInternetDialogController = internetDialogController; mDefaultDataSubId = mInternetDialogController.getDefaultDataSubscriptionId(); mTelephonyManager = mInternetDialogController.getTelephonyManager(); mCanConfigMobileData = canConfigMobileData; mCanConfigWifi = canConfigWifi; mCanChangeWifiState = WifiEnterpriseRestrictionUtils.isChangeWifiStateAllowed(context); Loading @@ -227,6 +236,14 @@ public class InternetDialogDelegate implements mDialog.dismiss(); } mDialog = dialog; mLifecycleOwner = new LifecycleOwner() { @NonNull @Override public Lifecycle getLifecycle() { return mLifecycleRegistry; } }; mLifecycleRegistry = new LifecycleRegistry(mLifecycleOwner); return dialog; } Loading @@ -249,7 +266,9 @@ public class InternetDialogDelegate implements mWifiNetworkHeight = context.getResources() .getDimensionPixelSize(R.dimen.internet_dialog_wifi_network_height); mLifecycleRegistry.setCurrentState(Lifecycle.State.CREATED); mDataInternetContent.observe( mLifecycleOwner, (internetContent) -> updateDialogUI(internetContent)); mInternetDialogTitle = mDialogView.requireViewById(R.id.internet_dialog_title); mInternetDialogSubTitle = mDialogView.requireViewById(R.id.internet_dialog_subtitle); mDivider = mDialogView.requireViewById(R.id.divider); Loading Loading @@ -294,6 +313,8 @@ public class InternetDialogDelegate implements if (DEBUG) { Log.d(TAG, "onStart"); } mLifecycleRegistry.setCurrentState(Lifecycle.State.RESUMED); mInternetDialogController.onStart(this, mCanConfigWifi); if (!mCanConfigWifi) { hideWifiViews(); Loading @@ -315,6 +336,7 @@ public class InternetDialogDelegate implements if (DEBUG) { Log.d(TAG, "onStop"); } mLifecycleRegistry.setCurrentState(Lifecycle.State.DESTROYED); mMobileNetworkLayout.setOnClickListener(null); mConnectedWifListLayout.setOnClickListener(null); if (mSecondaryMobileNetworkLayout != null) { Loading Loading @@ -348,31 +370,50 @@ public class InternetDialogDelegate implements * otherwise {@code false}. */ void updateDialog(boolean shouldUpdateMobileNetwork) { mBackgroundExecutor.execute(() -> { mDataInternetContent.postValue(getInternetContent(shouldUpdateMobileNetwork)); }); } private void updateDialogUI(InternetContent internetContent) { if (DEBUG) { Log.d(TAG, "updateDialog "); } mInternetDialogTitle.setText(getDialogTitleText()); mInternetDialogSubTitle.setText(getSubtitleText()); mInternetDialogTitle.setText(internetContent.mInternetDialogTitleString); mInternetDialogSubTitle.setText(internetContent.mInternetDialogSubTitle); mAirplaneModeButton.setVisibility( mInternetDialogController.isAirplaneModeEnabled() ? View.VISIBLE : View.GONE); internetContent.mIsAirplaneModeEnabled ? View.VISIBLE : View.GONE); updateEthernet(); if (shouldUpdateMobileNetwork) { setMobileDataLayout(mInternetDialogController.activeNetworkIsCellular(), mInternetDialogController.isCarrierNetworkActive()); } updateEthernet(internetContent); setMobileDataLayout(internetContent); if (!mCanConfigWifi) { return; } final boolean isDeviceLocked = mInternetDialogController.isDeviceLocked(); final boolean isWifiEnabled = mInternetDialogController.isWifiEnabled(); final boolean isWifiScanEnabled = mInternetDialogController.isWifiScanEnabled(); updateWifiToggle(isWifiEnabled, isDeviceLocked); updateConnectedWifi(isWifiEnabled, isDeviceLocked); updateWifiListAndSeeAll(isWifiEnabled, isDeviceLocked); updateWifiScanNotify(isWifiEnabled, isWifiScanEnabled, isDeviceLocked); updateWifiToggle(internetContent); updateConnectedWifi(internetContent); updateWifiListAndSeeAll(internetContent); updateWifiScanNotify(internetContent); } private InternetContent getInternetContent(boolean shouldUpdateMobileNetwork) { InternetContent internetContent = new InternetContent(); internetContent.mShouldUpdateMobileNetwork = shouldUpdateMobileNetwork; internetContent.mInternetDialogTitleString = getDialogTitleText(); internetContent.mInternetDialogSubTitle = getSubtitleText(); internetContent.mActiveNetworkIsCellular = mInternetDialogController.activeNetworkIsCellular(); internetContent.mIsCarrierNetworkActive = mInternetDialogController.isCarrierNetworkActive(); internetContent.mIsAirplaneModeEnabled = mInternetDialogController.isAirplaneModeEnabled(); internetContent.mHasEthernet = mInternetDialogController.hasEthernet(); internetContent.mIsWifiEnabled = mInternetDialogController.isWifiEnabled(); internetContent.mHasActiveSubIdOnDds = mInternetDialogController.hasActiveSubIdOnDds(); internetContent.mIsMobileDataEnabled = mInternetDialogController.isMobileDataEnabled(); internetContent.mIsDeviceLocked = mInternetDialogController.isDeviceLocked(); internetContent.mIsWifiScanEnabled = mInternetDialogController.isWifiScanEnabled(); return internetContent; } private void setOnClickListener(SystemUIDialog dialog) { Loading Loading @@ -436,39 +477,39 @@ public class InternetDialogDelegate implements } @MainThread private void updateEthernet() { private void updateEthernet(InternetContent internetContent) { mEthernetLayout.setVisibility( mInternetDialogController.hasEthernet() ? View.VISIBLE : View.GONE); internetContent.mHasEthernet ? View.VISIBLE : View.GONE); } private void setMobileDataLayout(boolean activeNetworkIsCellular, boolean isCarrierNetworkActive) { if (mDialog != null) { setMobileDataLayout(mDialog, activeNetworkIsCellular, isCarrierNetworkActive); private void setMobileDataLayout(InternetContent internetContent) { if (!internetContent.mShouldUpdateMobileNetwork && mDialog == null) { return; } setMobileDataLayout(mDialog, internetContent); } private void setMobileDataLayout(SystemUIDialog dialog, boolean activeNetworkIsCellular, boolean isCarrierNetworkActive) { boolean isNetworkConnected = activeNetworkIsCellular || isCarrierNetworkActive; private void setMobileDataLayout(SystemUIDialog dialog, InternetContent internetContent) { boolean isNetworkConnected = internetContent.mActiveNetworkIsCellular || internetContent.mIsCarrierNetworkActive; // 1. Mobile network should be gone if airplane mode ON or the list of active // subscriptionId is null. // 2. Carrier network should be gone if airplane mode ON and Wi-Fi is OFF. if (DEBUG) { Log.d(TAG, "setMobileDataLayout, isCarrierNetworkActive = " + isCarrierNetworkActive); Log.d(TAG, "setMobileDataLayout, isCarrierNetworkActive = " + internetContent.mIsCarrierNetworkActive); } boolean isWifiEnabled = mInternetDialogController.isWifiEnabled(); if (!mInternetDialogController.hasActiveSubIdOnDds() && (!isWifiEnabled || !isCarrierNetworkActive)) { if (!internetContent.mHasActiveSubIdOnDds && (!internetContent.mIsWifiEnabled || !internetContent.mIsCarrierNetworkActive)) { mMobileNetworkLayout.setVisibility(View.GONE); if (mSecondaryMobileNetworkLayout != null) { mSecondaryMobileNetworkLayout.setVisibility(View.GONE); } } else { mMobileNetworkLayout.setVisibility(View.VISIBLE); mMobileDataToggle.setChecked(mInternetDialogController.isMobileDataEnabled()); mMobileDataToggle.setChecked(internetContent.mIsMobileDataEnabled); mMobileTitleText.setText(getMobileNetworkTitle(mDefaultDataSubId)); String summary = getMobileNetworkSummary(mDefaultDataSubId); if (!TextUtils.isEmpty(summary)) { Loading Loading @@ -508,7 +549,7 @@ public class InternetDialogDelegate implements if (stub != null) { stub.inflate(); } mSecondaryMobileNetworkLayout = dialog.findViewById( mSecondaryMobileNetworkLayout = mDialogView.findViewById( R.id.secondary_mobile_network_layout); mSecondaryMobileNetworkLayout.setOnClickListener( this::onClickConnectedSecondarySub); Loading Loading @@ -567,7 +608,7 @@ public class InternetDialogDelegate implements } // Set airplane mode to the summary for carrier network if (mInternetDialogController.isAirplaneModeEnabled()) { if (internetContent.mIsAirplaneModeEnabled) { mAirplaneModeSummaryText.setVisibility(View.VISIBLE); mAirplaneModeSummaryText.setText( dialog.getContext().getText(R.string.airplane_mode)); Loading @@ -579,17 +620,18 @@ public class InternetDialogDelegate implements } @MainThread private void updateWifiToggle(boolean isWifiEnabled, boolean isDeviceLocked) { if (mWiFiToggle.isChecked() != isWifiEnabled) { mWiFiToggle.setChecked(isWifiEnabled); private void updateWifiToggle(InternetContent internetContent) { if (mWiFiToggle.isChecked() != internetContent.mIsWifiEnabled) { mWiFiToggle.setChecked(internetContent.mIsWifiEnabled); } if (isDeviceLocked) { if (internetContent.mIsDeviceLocked) { mWifiToggleTitleText.setTextAppearance((mConnectedWifiEntry != null) ? R.style.TextAppearance_InternetDialog_Active : R.style.TextAppearance_InternetDialog); } mTurnWifiOnLayout.setBackground( (isDeviceLocked && mConnectedWifiEntry != null) ? mBackgroundOn : null); (internetContent.mIsDeviceLocked && mConnectedWifiEntry != null) ? mBackgroundOn : null); if (!mCanChangeWifiState && mWiFiToggle.isEnabled()) { mWiFiToggle.setEnabled(false); Loading @@ -601,8 +643,9 @@ public class InternetDialogDelegate implements } @MainThread private void updateConnectedWifi(boolean isWifiEnabled, boolean isDeviceLocked) { if (mDialog == null || !isWifiEnabled || mConnectedWifiEntry == null || isDeviceLocked) { private void updateConnectedWifi(InternetContent internetContent) { if (mDialog == null || !internetContent.mIsWifiEnabled || mConnectedWifiEntry == null || internetContent.mIsDeviceLocked) { mConnectedWifListLayout.setVisibility(View.GONE); mShareWifiButton.setVisibility(View.GONE); return; Loading @@ -627,8 +670,8 @@ public class InternetDialogDelegate implements } @MainThread private void updateWifiListAndSeeAll(boolean isWifiEnabled, boolean isDeviceLocked) { if (!isWifiEnabled || isDeviceLocked) { private void updateWifiListAndSeeAll(InternetContent internetContent) { if (!internetContent.mIsWifiEnabled || internetContent.mIsDeviceLocked) { mWifiRecyclerView.setVisibility(View.GONE); mSeeAllLayout.setVisibility(View.GONE); return; Loading Loading @@ -670,9 +713,10 @@ public class InternetDialogDelegate implements } @MainThread private void updateWifiScanNotify(boolean isWifiEnabled, boolean isWifiScanEnabled, boolean isDeviceLocked) { if (mDialog == null || isWifiEnabled || !isWifiScanEnabled || isDeviceLocked) { private void updateWifiScanNotify(InternetContent internetContent) { if (mDialog == null || internetContent.mIsWifiEnabled || !internetContent.mIsWifiScanEnabled || internetContent.mIsDeviceLocked) { mWifiScanNotifyLayout.setVisibility(View.GONE); return; } Loading Loading @@ -805,62 +849,62 @@ public class InternetDialogDelegate implements @Override public void onRefreshCarrierInfo() { mHandler.post(() -> updateDialog(true /* shouldUpdateMobileNetwork */)); updateDialog(true /* shouldUpdateMobileNetwork */); } @Override public void onSimStateChanged() { mHandler.post(() -> updateDialog(true /* shouldUpdateMobileNetwork */)); updateDialog(true /* shouldUpdateMobileNetwork */); } @Override @WorkerThread public void onCapabilitiesChanged(Network network, NetworkCapabilities networkCapabilities) { mHandler.post(() -> updateDialog(true /* shouldUpdateMobileNetwork */)); updateDialog(true /* shouldUpdateMobileNetwork */); } @Override @WorkerThread public void onLost(Network network) { mHandler.post(() -> updateDialog(true /* shouldUpdateMobileNetwork */)); updateDialog(true /* shouldUpdateMobileNetwork */); } @Override public void onSubscriptionsChanged(int defaultDataSubId) { mDefaultDataSubId = defaultDataSubId; mTelephonyManager = mTelephonyManager.createForSubscriptionId(mDefaultDataSubId); mHandler.post(() -> updateDialog(true /* shouldUpdateMobileNetwork */)); updateDialog(true /* shouldUpdateMobileNetwork */); } @Override public void onUserMobileDataStateChanged(boolean enabled) { mHandler.post(() -> updateDialog(true /* shouldUpdateMobileNetwork */)); updateDialog(true /* shouldUpdateMobileNetwork */); } @Override public void onServiceStateChanged(ServiceState serviceState) { mHandler.post(() -> updateDialog(true /* shouldUpdateMobileNetwork */)); updateDialog(true /* shouldUpdateMobileNetwork */); } @Override @WorkerThread public void onDataConnectionStateChanged(int state, int networkType) { mHandler.post(() -> updateDialog(true /* shouldUpdateMobileNetwork */)); updateDialog(true /* shouldUpdateMobileNetwork */); } @Override public void onSignalStrengthsChanged(SignalStrength signalStrength) { mHandler.post(() -> updateDialog(true /* shouldUpdateMobileNetwork */)); updateDialog(true /* shouldUpdateMobileNetwork */); } @Override public void onDisplayInfoChanged(TelephonyDisplayInfo telephonyDisplayInfo) { mHandler.post(() -> updateDialog(true /* shouldUpdateMobileNetwork */)); updateDialog(true /* shouldUpdateMobileNetwork */); } @Override public void onCarrierNetworkChange(boolean active) { mHandler.post(() -> updateDialog(true /* shouldUpdateMobileNetwork */)); updateDialog(true /* shouldUpdateMobileNetwork */); } @Override Loading Loading @@ -912,4 +956,20 @@ public class InternetDialogDelegate implements return mId; } } @VisibleForTesting static class InternetContent { CharSequence mInternetDialogTitleString = ""; CharSequence mInternetDialogSubTitle = ""; boolean mIsAirplaneModeEnabled = false; boolean mHasEthernet = false; boolean mShouldUpdateMobileNetwork = false; boolean mActiveNetworkIsCellular = false; boolean mIsCarrierNetworkActive = false; boolean mIsWifiEnabled = false; boolean mHasActiveSubIdOnDds = false; boolean mIsMobileDataEnabled = false; boolean mIsDeviceLocked = false; boolean mIsWifiScanEnabled = false; } } Loading
packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java +0 −1 Original line number Diff line number Diff line Loading @@ -346,7 +346,6 @@ public class InternetDialogController implements AccessPointController.AccessPoi mCallback = null; } @VisibleForTesting boolean isAirplaneModeEnabled() { return mGlobalSettings.getInt(Settings.Global.AIRPLANE_MODE_ON, 0) != 0; } Loading
packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegate.java +122 −62 Original line number Diff line number Diff line Loading @@ -30,7 +30,6 @@ import android.telephony.ServiceState; import android.telephony.SignalStrength; import android.telephony.SubscriptionManager; import android.telephony.TelephonyDisplayInfo; import android.telephony.TelephonyManager; import android.text.Html; import android.text.Layout; import android.text.TextUtils; Loading @@ -50,9 +49,14 @@ import android.widget.Switch; import android.widget.TextView; import androidx.annotation.MainThread; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.annotation.WorkerThread; import androidx.lifecycle.Lifecycle; import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LifecycleRegistry; import androidx.lifecycle.MutableLiveData; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; Loading Loading @@ -110,7 +114,6 @@ public class InternetDialogDelegate implements protected boolean mCanConfigWifi; private final InternetDialogManager mInternetDialogManager; private TelephonyManager mTelephonyManager; @Nullable private AlertDialog mAlertDialog; private final UiEventLogger mUiEventLogger; Loading Loading @@ -169,6 +172,13 @@ public class InternetDialogDelegate implements @Nullable private Job mClickJob; // These are to reduce the UI janky frame duration. b/323286540 private LifecycleRegistry mLifecycleRegistry; @VisibleForTesting LifecycleOwner mLifecycleOwner; @VisibleForTesting MutableLiveData<InternetContent> mDataInternetContent = new MutableLiveData<>(); @AssistedFactory public interface Factory { InternetDialogDelegate create( Loading Loading @@ -205,7 +215,6 @@ public class InternetDialogDelegate implements mInternetDialogManager = internetDialogManager; mInternetDialogController = internetDialogController; mDefaultDataSubId = mInternetDialogController.getDefaultDataSubscriptionId(); mTelephonyManager = mInternetDialogController.getTelephonyManager(); mCanConfigMobileData = canConfigMobileData; mCanConfigWifi = canConfigWifi; mCanChangeWifiState = WifiEnterpriseRestrictionUtils.isChangeWifiStateAllowed(context); Loading @@ -227,6 +236,14 @@ public class InternetDialogDelegate implements mDialog.dismiss(); } mDialog = dialog; mLifecycleOwner = new LifecycleOwner() { @NonNull @Override public Lifecycle getLifecycle() { return mLifecycleRegistry; } }; mLifecycleRegistry = new LifecycleRegistry(mLifecycleOwner); return dialog; } Loading @@ -249,7 +266,9 @@ public class InternetDialogDelegate implements mWifiNetworkHeight = context.getResources() .getDimensionPixelSize(R.dimen.internet_dialog_wifi_network_height); mLifecycleRegistry.setCurrentState(Lifecycle.State.CREATED); mDataInternetContent.observe( mLifecycleOwner, (internetContent) -> updateDialogUI(internetContent)); mInternetDialogTitle = mDialogView.requireViewById(R.id.internet_dialog_title); mInternetDialogSubTitle = mDialogView.requireViewById(R.id.internet_dialog_subtitle); mDivider = mDialogView.requireViewById(R.id.divider); Loading Loading @@ -294,6 +313,8 @@ public class InternetDialogDelegate implements if (DEBUG) { Log.d(TAG, "onStart"); } mLifecycleRegistry.setCurrentState(Lifecycle.State.RESUMED); mInternetDialogController.onStart(this, mCanConfigWifi); if (!mCanConfigWifi) { hideWifiViews(); Loading @@ -315,6 +336,7 @@ public class InternetDialogDelegate implements if (DEBUG) { Log.d(TAG, "onStop"); } mLifecycleRegistry.setCurrentState(Lifecycle.State.DESTROYED); mMobileNetworkLayout.setOnClickListener(null); mConnectedWifListLayout.setOnClickListener(null); if (mSecondaryMobileNetworkLayout != null) { Loading Loading @@ -348,31 +370,50 @@ public class InternetDialogDelegate implements * otherwise {@code false}. */ void updateDialog(boolean shouldUpdateMobileNetwork) { mBackgroundExecutor.execute(() -> { mDataInternetContent.postValue(getInternetContent(shouldUpdateMobileNetwork)); }); } private void updateDialogUI(InternetContent internetContent) { if (DEBUG) { Log.d(TAG, "updateDialog "); } mInternetDialogTitle.setText(getDialogTitleText()); mInternetDialogSubTitle.setText(getSubtitleText()); mInternetDialogTitle.setText(internetContent.mInternetDialogTitleString); mInternetDialogSubTitle.setText(internetContent.mInternetDialogSubTitle); mAirplaneModeButton.setVisibility( mInternetDialogController.isAirplaneModeEnabled() ? View.VISIBLE : View.GONE); internetContent.mIsAirplaneModeEnabled ? View.VISIBLE : View.GONE); updateEthernet(); if (shouldUpdateMobileNetwork) { setMobileDataLayout(mInternetDialogController.activeNetworkIsCellular(), mInternetDialogController.isCarrierNetworkActive()); } updateEthernet(internetContent); setMobileDataLayout(internetContent); if (!mCanConfigWifi) { return; } final boolean isDeviceLocked = mInternetDialogController.isDeviceLocked(); final boolean isWifiEnabled = mInternetDialogController.isWifiEnabled(); final boolean isWifiScanEnabled = mInternetDialogController.isWifiScanEnabled(); updateWifiToggle(isWifiEnabled, isDeviceLocked); updateConnectedWifi(isWifiEnabled, isDeviceLocked); updateWifiListAndSeeAll(isWifiEnabled, isDeviceLocked); updateWifiScanNotify(isWifiEnabled, isWifiScanEnabled, isDeviceLocked); updateWifiToggle(internetContent); updateConnectedWifi(internetContent); updateWifiListAndSeeAll(internetContent); updateWifiScanNotify(internetContent); } private InternetContent getInternetContent(boolean shouldUpdateMobileNetwork) { InternetContent internetContent = new InternetContent(); internetContent.mShouldUpdateMobileNetwork = shouldUpdateMobileNetwork; internetContent.mInternetDialogTitleString = getDialogTitleText(); internetContent.mInternetDialogSubTitle = getSubtitleText(); internetContent.mActiveNetworkIsCellular = mInternetDialogController.activeNetworkIsCellular(); internetContent.mIsCarrierNetworkActive = mInternetDialogController.isCarrierNetworkActive(); internetContent.mIsAirplaneModeEnabled = mInternetDialogController.isAirplaneModeEnabled(); internetContent.mHasEthernet = mInternetDialogController.hasEthernet(); internetContent.mIsWifiEnabled = mInternetDialogController.isWifiEnabled(); internetContent.mHasActiveSubIdOnDds = mInternetDialogController.hasActiveSubIdOnDds(); internetContent.mIsMobileDataEnabled = mInternetDialogController.isMobileDataEnabled(); internetContent.mIsDeviceLocked = mInternetDialogController.isDeviceLocked(); internetContent.mIsWifiScanEnabled = mInternetDialogController.isWifiScanEnabled(); return internetContent; } private void setOnClickListener(SystemUIDialog dialog) { Loading Loading @@ -436,39 +477,39 @@ public class InternetDialogDelegate implements } @MainThread private void updateEthernet() { private void updateEthernet(InternetContent internetContent) { mEthernetLayout.setVisibility( mInternetDialogController.hasEthernet() ? View.VISIBLE : View.GONE); internetContent.mHasEthernet ? View.VISIBLE : View.GONE); } private void setMobileDataLayout(boolean activeNetworkIsCellular, boolean isCarrierNetworkActive) { if (mDialog != null) { setMobileDataLayout(mDialog, activeNetworkIsCellular, isCarrierNetworkActive); private void setMobileDataLayout(InternetContent internetContent) { if (!internetContent.mShouldUpdateMobileNetwork && mDialog == null) { return; } setMobileDataLayout(mDialog, internetContent); } private void setMobileDataLayout(SystemUIDialog dialog, boolean activeNetworkIsCellular, boolean isCarrierNetworkActive) { boolean isNetworkConnected = activeNetworkIsCellular || isCarrierNetworkActive; private void setMobileDataLayout(SystemUIDialog dialog, InternetContent internetContent) { boolean isNetworkConnected = internetContent.mActiveNetworkIsCellular || internetContent.mIsCarrierNetworkActive; // 1. Mobile network should be gone if airplane mode ON or the list of active // subscriptionId is null. // 2. Carrier network should be gone if airplane mode ON and Wi-Fi is OFF. if (DEBUG) { Log.d(TAG, "setMobileDataLayout, isCarrierNetworkActive = " + isCarrierNetworkActive); Log.d(TAG, "setMobileDataLayout, isCarrierNetworkActive = " + internetContent.mIsCarrierNetworkActive); } boolean isWifiEnabled = mInternetDialogController.isWifiEnabled(); if (!mInternetDialogController.hasActiveSubIdOnDds() && (!isWifiEnabled || !isCarrierNetworkActive)) { if (!internetContent.mHasActiveSubIdOnDds && (!internetContent.mIsWifiEnabled || !internetContent.mIsCarrierNetworkActive)) { mMobileNetworkLayout.setVisibility(View.GONE); if (mSecondaryMobileNetworkLayout != null) { mSecondaryMobileNetworkLayout.setVisibility(View.GONE); } } else { mMobileNetworkLayout.setVisibility(View.VISIBLE); mMobileDataToggle.setChecked(mInternetDialogController.isMobileDataEnabled()); mMobileDataToggle.setChecked(internetContent.mIsMobileDataEnabled); mMobileTitleText.setText(getMobileNetworkTitle(mDefaultDataSubId)); String summary = getMobileNetworkSummary(mDefaultDataSubId); if (!TextUtils.isEmpty(summary)) { Loading Loading @@ -508,7 +549,7 @@ public class InternetDialogDelegate implements if (stub != null) { stub.inflate(); } mSecondaryMobileNetworkLayout = dialog.findViewById( mSecondaryMobileNetworkLayout = mDialogView.findViewById( R.id.secondary_mobile_network_layout); mSecondaryMobileNetworkLayout.setOnClickListener( this::onClickConnectedSecondarySub); Loading Loading @@ -567,7 +608,7 @@ public class InternetDialogDelegate implements } // Set airplane mode to the summary for carrier network if (mInternetDialogController.isAirplaneModeEnabled()) { if (internetContent.mIsAirplaneModeEnabled) { mAirplaneModeSummaryText.setVisibility(View.VISIBLE); mAirplaneModeSummaryText.setText( dialog.getContext().getText(R.string.airplane_mode)); Loading @@ -579,17 +620,18 @@ public class InternetDialogDelegate implements } @MainThread private void updateWifiToggle(boolean isWifiEnabled, boolean isDeviceLocked) { if (mWiFiToggle.isChecked() != isWifiEnabled) { mWiFiToggle.setChecked(isWifiEnabled); private void updateWifiToggle(InternetContent internetContent) { if (mWiFiToggle.isChecked() != internetContent.mIsWifiEnabled) { mWiFiToggle.setChecked(internetContent.mIsWifiEnabled); } if (isDeviceLocked) { if (internetContent.mIsDeviceLocked) { mWifiToggleTitleText.setTextAppearance((mConnectedWifiEntry != null) ? R.style.TextAppearance_InternetDialog_Active : R.style.TextAppearance_InternetDialog); } mTurnWifiOnLayout.setBackground( (isDeviceLocked && mConnectedWifiEntry != null) ? mBackgroundOn : null); (internetContent.mIsDeviceLocked && mConnectedWifiEntry != null) ? mBackgroundOn : null); if (!mCanChangeWifiState && mWiFiToggle.isEnabled()) { mWiFiToggle.setEnabled(false); Loading @@ -601,8 +643,9 @@ public class InternetDialogDelegate implements } @MainThread private void updateConnectedWifi(boolean isWifiEnabled, boolean isDeviceLocked) { if (mDialog == null || !isWifiEnabled || mConnectedWifiEntry == null || isDeviceLocked) { private void updateConnectedWifi(InternetContent internetContent) { if (mDialog == null || !internetContent.mIsWifiEnabled || mConnectedWifiEntry == null || internetContent.mIsDeviceLocked) { mConnectedWifListLayout.setVisibility(View.GONE); mShareWifiButton.setVisibility(View.GONE); return; Loading @@ -627,8 +670,8 @@ public class InternetDialogDelegate implements } @MainThread private void updateWifiListAndSeeAll(boolean isWifiEnabled, boolean isDeviceLocked) { if (!isWifiEnabled || isDeviceLocked) { private void updateWifiListAndSeeAll(InternetContent internetContent) { if (!internetContent.mIsWifiEnabled || internetContent.mIsDeviceLocked) { mWifiRecyclerView.setVisibility(View.GONE); mSeeAllLayout.setVisibility(View.GONE); return; Loading Loading @@ -670,9 +713,10 @@ public class InternetDialogDelegate implements } @MainThread private void updateWifiScanNotify(boolean isWifiEnabled, boolean isWifiScanEnabled, boolean isDeviceLocked) { if (mDialog == null || isWifiEnabled || !isWifiScanEnabled || isDeviceLocked) { private void updateWifiScanNotify(InternetContent internetContent) { if (mDialog == null || internetContent.mIsWifiEnabled || !internetContent.mIsWifiScanEnabled || internetContent.mIsDeviceLocked) { mWifiScanNotifyLayout.setVisibility(View.GONE); return; } Loading Loading @@ -805,62 +849,62 @@ public class InternetDialogDelegate implements @Override public void onRefreshCarrierInfo() { mHandler.post(() -> updateDialog(true /* shouldUpdateMobileNetwork */)); updateDialog(true /* shouldUpdateMobileNetwork */); } @Override public void onSimStateChanged() { mHandler.post(() -> updateDialog(true /* shouldUpdateMobileNetwork */)); updateDialog(true /* shouldUpdateMobileNetwork */); } @Override @WorkerThread public void onCapabilitiesChanged(Network network, NetworkCapabilities networkCapabilities) { mHandler.post(() -> updateDialog(true /* shouldUpdateMobileNetwork */)); updateDialog(true /* shouldUpdateMobileNetwork */); } @Override @WorkerThread public void onLost(Network network) { mHandler.post(() -> updateDialog(true /* shouldUpdateMobileNetwork */)); updateDialog(true /* shouldUpdateMobileNetwork */); } @Override public void onSubscriptionsChanged(int defaultDataSubId) { mDefaultDataSubId = defaultDataSubId; mTelephonyManager = mTelephonyManager.createForSubscriptionId(mDefaultDataSubId); mHandler.post(() -> updateDialog(true /* shouldUpdateMobileNetwork */)); updateDialog(true /* shouldUpdateMobileNetwork */); } @Override public void onUserMobileDataStateChanged(boolean enabled) { mHandler.post(() -> updateDialog(true /* shouldUpdateMobileNetwork */)); updateDialog(true /* shouldUpdateMobileNetwork */); } @Override public void onServiceStateChanged(ServiceState serviceState) { mHandler.post(() -> updateDialog(true /* shouldUpdateMobileNetwork */)); updateDialog(true /* shouldUpdateMobileNetwork */); } @Override @WorkerThread public void onDataConnectionStateChanged(int state, int networkType) { mHandler.post(() -> updateDialog(true /* shouldUpdateMobileNetwork */)); updateDialog(true /* shouldUpdateMobileNetwork */); } @Override public void onSignalStrengthsChanged(SignalStrength signalStrength) { mHandler.post(() -> updateDialog(true /* shouldUpdateMobileNetwork */)); updateDialog(true /* shouldUpdateMobileNetwork */); } @Override public void onDisplayInfoChanged(TelephonyDisplayInfo telephonyDisplayInfo) { mHandler.post(() -> updateDialog(true /* shouldUpdateMobileNetwork */)); updateDialog(true /* shouldUpdateMobileNetwork */); } @Override public void onCarrierNetworkChange(boolean active) { mHandler.post(() -> updateDialog(true /* shouldUpdateMobileNetwork */)); updateDialog(true /* shouldUpdateMobileNetwork */); } @Override Loading Loading @@ -912,4 +956,20 @@ public class InternetDialogDelegate implements return mId; } } @VisibleForTesting static class InternetContent { CharSequence mInternetDialogTitleString = ""; CharSequence mInternetDialogSubTitle = ""; boolean mIsAirplaneModeEnabled = false; boolean mHasEthernet = false; boolean mShouldUpdateMobileNetwork = false; boolean mActiveNetworkIsCellular = false; boolean mIsCarrierNetworkActive = false; boolean mIsWifiEnabled = false; boolean mHasActiveSubIdOnDds = false; boolean mIsMobileDataEnabled = false; boolean mIsDeviceLocked = false; boolean mIsWifiScanEnabled = false; } }