Loading packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/SpaDialogWindowTypeActivity.kt +2 −2 Original line number Diff line number Diff line Loading @@ -47,7 +47,7 @@ abstract class SpaDialogWindowTypeActivity : ComponentActivity() { super.finish() } abstract val dialogWindowType: Int? abstract fun getDialogWindowType(): Int? @Composable abstract fun Content() Loading @@ -67,7 +67,7 @@ abstract class SpaDialogWindowTypeActivity : ComponentActivity() { } override fun onCreate(savedInstanceState: Bundle?) { dialogWindowType?.let { window?.setType(it) } getDialogWindowType()?.let { window?.setType(it) } super.onCreate(savedInstanceState) } } Loading packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.kt +30 −8 Original line number Diff line number Diff line Loading @@ -28,19 +28,21 @@ import android.net.wifi.sharedconnectivity.app.NetworkProviderInfo import android.os.Bundle import android.os.SystemClock import android.util.Log import android.view.WindowManager import androidx.annotation.VisibleForTesting import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.lifecycleScope import com.android.settingslib.R import com.android.settingslib.flags.Flags.newStatusBarIcons import java.util.Locale import kotlin.coroutines.resume import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.asExecutor import kotlinx.coroutines.launch import kotlinx.coroutines.suspendCancellableCoroutine import kotlinx.coroutines.withContext import java.util.Locale import kotlin.coroutines.resume open class WifiUtils { /** Loading Loading @@ -473,9 +475,28 @@ open class WifiUtils { context: Context, lifecycleOwner: LifecycleOwner, ssid: String, onAllowed: () -> Unit, onAllowed: () -> Unit ) { lifecycleOwner.lifecycleScope.launch { checkWepAllowed( context, lifecycleOwner.lifecycleScope, ssid, WindowManager.LayoutParams.FIRST_APPLICATION_WINDOW, { intent -> context.startActivity(intent) }, onAllowed ) } @JvmStatic fun checkWepAllowed( context: Context, coroutineScope: CoroutineScope, ssid: String, dialogWindowType: Int, onStartActivity: (intent: Intent) -> Unit, onAllowed: () -> Unit, ): Job = coroutineScope.launch { val wifiManager = context.getSystemService(WifiManager::class.java) ?: return@launch if (wifiManager.queryWepAllowed()) { onAllowed() Loading @@ -485,10 +506,10 @@ open class WifiUtils { "com.android.settings", "com.android.settings.network.WepNetworkDialogActivity" ) putExtra(DIALOG_WINDOW_TYPE, dialogWindowType) putExtra(SSID, ssid) } context.startActivity(intent) } }.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) onStartActivity(intent) } } Loading @@ -502,5 +523,6 @@ open class WifiUtils { } const val SSID = "ssid" const val DIALOG_WINDOW_TYPE = "dialog_window_type" } } packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetAdapter.java +33 −3 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; Loading @@ -37,8 +38,12 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.settingslib.Utils; import com.android.settingslib.wifi.WifiUtils; import com.android.systemui.res.R; import com.android.wifi.flags.Flags; import com.android.wifitrackerlib.WifiEntry; import kotlinx.coroutines.CoroutineScope; import kotlinx.coroutines.Job; import java.util.List; import java.util.concurrent.atomic.AtomicReference; Loading @@ -50,6 +55,7 @@ public class InternetAdapter extends RecyclerView.Adapter<InternetAdapter.Intern private static final String TAG = "InternetAdapter"; private final InternetDialogController mInternetDialogController; private final CoroutineScope mCoroutineScope; @Nullable private List<WifiEntry> mWifiEntries; @VisibleForTesting Loading @@ -60,8 +66,9 @@ public class InternetAdapter extends RecyclerView.Adapter<InternetAdapter.Intern protected View mHolderView; protected Context mContext; public InternetAdapter(InternetDialogController controller) { public InternetAdapter(InternetDialogController controller, CoroutineScope coroutineScope) { mInternetDialogController = controller; mCoroutineScope = coroutineScope; } @Override Loading @@ -70,7 +77,7 @@ public class InternetAdapter extends RecyclerView.Adapter<InternetAdapter.Intern mContext = viewGroup.getContext(); mHolderView = LayoutInflater.from(mContext).inflate(R.layout.internet_list_item, viewGroup, false); return new InternetViewHolder(mHolderView, mInternetDialogController); return new InternetViewHolder(mHolderView, mInternetDialogController, mCoroutineScope); } @Override Loading Loading @@ -131,11 +138,16 @@ public class InternetAdapter extends RecyclerView.Adapter<InternetAdapter.Intern final ImageView mWifiEndIcon; final Context mContext; final InternetDialogController mInternetDialogController; final CoroutineScope mCoroutineScope; @Nullable private Job mJob; InternetViewHolder(View view, InternetDialogController internetDialogController) { InternetViewHolder(View view, InternetDialogController internetDialogController, CoroutineScope coroutineScope) { super(view); mContext = view.getContext(); mInternetDialogController = internetDialogController; mCoroutineScope = coroutineScope; mContainerLayout = view.requireViewById(R.id.internet_container); mWifiListLayout = view.requireViewById(R.id.wifi_list); mWifiNetworkLayout = view.requireViewById(R.id.wifi_network_layout); Loading Loading @@ -176,6 +188,24 @@ public class InternetAdapter extends RecyclerView.Adapter<InternetAdapter.Intern } void onWifiClick(@NonNull WifiEntry wifiEntry, @NonNull View view) { if (Flags.androidVWifiApi() && wifiEntry.getSecurityTypes().contains( WifiEntry.SECURITY_WEP)) { if (mJob == null) { mJob = WifiUtils.checkWepAllowed(mContext, mCoroutineScope, wifiEntry.getSsid(), WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG, intent -> { mInternetDialogController.startActivity(intent, view); return null; }, () -> { wifiConnect(wifiEntry, view); return null; }); } return; } wifiConnect(wifiEntry, view); } void wifiConnect(@NonNull WifiEntry wifiEntry, @NonNull View view) { if (wifiEntry.shouldEditBeforeConnect()) { final Intent intent = WifiUtils.getWifiDialogIntent(wifiEntry.getKey(), true /* connectForCaller */); Loading packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java +1 −1 Original line number Diff line number Diff line Loading @@ -747,7 +747,7 @@ public class InternetDialogController implements AccessPointController.AccessPoi return summary; } private void startActivity(Intent intent, View view) { void startActivity(Intent intent, View view) { ActivityTransitionAnimator.Controller controller = mDialogTransitionAnimator.createActivityTransitionController(view); Loading packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegate.java +10 −6 Original line number Diff line number Diff line Loading @@ -68,13 +68,15 @@ import com.android.systemui.statusbar.phone.SystemUIDialog; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.wifitrackerlib.WifiEntry; import java.util.List; import java.util.concurrent.Executor; import dagger.assisted.Assisted; import dagger.assisted.AssistedFactory; import dagger.assisted.AssistedInject; import kotlinx.coroutines.CoroutineScope; import java.util.List; import java.util.concurrent.Executor; /** * Dialog for showing mobile network, connected Wi-Fi network and Wi-Fi networks. */ Loading Loading @@ -165,7 +167,8 @@ public class InternetDialogDelegate implements InternetDialogDelegate create( @Assisted(ABOVE_STATUS_BAR) boolean aboveStatusBar, @Assisted(CAN_CONFIG_MOBILE_DATA) boolean canConfigMobileData, @Assisted(CAN_CONFIG_WIFI) boolean canConfigWifi); @Assisted(CAN_CONFIG_WIFI) boolean canConfigWifi, @Assisted CoroutineScope coroutineScope); } @AssistedInject Loading @@ -176,6 +179,7 @@ public class InternetDialogDelegate implements @Assisted(ABOVE_STATUS_BAR) boolean canConfigMobileData, @Assisted(CAN_CONFIG_MOBILE_DATA) boolean canConfigWifi, @Assisted(CAN_CONFIG_WIFI) boolean aboveStatusBar, @Assisted CoroutineScope coroutineScope, UiEventLogger uiEventLogger, DialogTransitionAnimator dialogTransitionAnimator, @Main Handler handler, Loading @@ -202,7 +206,7 @@ public class InternetDialogDelegate implements mUiEventLogger = uiEventLogger; mDialogTransitionAnimator = dialogTransitionAnimator; mAdapter = new InternetAdapter(mInternetDialogController); mAdapter = new InternetAdapter(mInternetDialogController, coroutineScope); } @Override Loading Loading
packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/SpaDialogWindowTypeActivity.kt +2 −2 Original line number Diff line number Diff line Loading @@ -47,7 +47,7 @@ abstract class SpaDialogWindowTypeActivity : ComponentActivity() { super.finish() } abstract val dialogWindowType: Int? abstract fun getDialogWindowType(): Int? @Composable abstract fun Content() Loading @@ -67,7 +67,7 @@ abstract class SpaDialogWindowTypeActivity : ComponentActivity() { } override fun onCreate(savedInstanceState: Bundle?) { dialogWindowType?.let { window?.setType(it) } getDialogWindowType()?.let { window?.setType(it) } super.onCreate(savedInstanceState) } } Loading
packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.kt +30 −8 Original line number Diff line number Diff line Loading @@ -28,19 +28,21 @@ import android.net.wifi.sharedconnectivity.app.NetworkProviderInfo import android.os.Bundle import android.os.SystemClock import android.util.Log import android.view.WindowManager import androidx.annotation.VisibleForTesting import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.lifecycleScope import com.android.settingslib.R import com.android.settingslib.flags.Flags.newStatusBarIcons import java.util.Locale import kotlin.coroutines.resume import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.asExecutor import kotlinx.coroutines.launch import kotlinx.coroutines.suspendCancellableCoroutine import kotlinx.coroutines.withContext import java.util.Locale import kotlin.coroutines.resume open class WifiUtils { /** Loading Loading @@ -473,9 +475,28 @@ open class WifiUtils { context: Context, lifecycleOwner: LifecycleOwner, ssid: String, onAllowed: () -> Unit, onAllowed: () -> Unit ) { lifecycleOwner.lifecycleScope.launch { checkWepAllowed( context, lifecycleOwner.lifecycleScope, ssid, WindowManager.LayoutParams.FIRST_APPLICATION_WINDOW, { intent -> context.startActivity(intent) }, onAllowed ) } @JvmStatic fun checkWepAllowed( context: Context, coroutineScope: CoroutineScope, ssid: String, dialogWindowType: Int, onStartActivity: (intent: Intent) -> Unit, onAllowed: () -> Unit, ): Job = coroutineScope.launch { val wifiManager = context.getSystemService(WifiManager::class.java) ?: return@launch if (wifiManager.queryWepAllowed()) { onAllowed() Loading @@ -485,10 +506,10 @@ open class WifiUtils { "com.android.settings", "com.android.settings.network.WepNetworkDialogActivity" ) putExtra(DIALOG_WINDOW_TYPE, dialogWindowType) putExtra(SSID, ssid) } context.startActivity(intent) } }.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) onStartActivity(intent) } } Loading @@ -502,5 +523,6 @@ open class WifiUtils { } const val SSID = "ssid" const val DIALOG_WINDOW_TYPE = "dialog_window_type" } }
packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetAdapter.java +33 −3 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; Loading @@ -37,8 +38,12 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.settingslib.Utils; import com.android.settingslib.wifi.WifiUtils; import com.android.systemui.res.R; import com.android.wifi.flags.Flags; import com.android.wifitrackerlib.WifiEntry; import kotlinx.coroutines.CoroutineScope; import kotlinx.coroutines.Job; import java.util.List; import java.util.concurrent.atomic.AtomicReference; Loading @@ -50,6 +55,7 @@ public class InternetAdapter extends RecyclerView.Adapter<InternetAdapter.Intern private static final String TAG = "InternetAdapter"; private final InternetDialogController mInternetDialogController; private final CoroutineScope mCoroutineScope; @Nullable private List<WifiEntry> mWifiEntries; @VisibleForTesting Loading @@ -60,8 +66,9 @@ public class InternetAdapter extends RecyclerView.Adapter<InternetAdapter.Intern protected View mHolderView; protected Context mContext; public InternetAdapter(InternetDialogController controller) { public InternetAdapter(InternetDialogController controller, CoroutineScope coroutineScope) { mInternetDialogController = controller; mCoroutineScope = coroutineScope; } @Override Loading @@ -70,7 +77,7 @@ public class InternetAdapter extends RecyclerView.Adapter<InternetAdapter.Intern mContext = viewGroup.getContext(); mHolderView = LayoutInflater.from(mContext).inflate(R.layout.internet_list_item, viewGroup, false); return new InternetViewHolder(mHolderView, mInternetDialogController); return new InternetViewHolder(mHolderView, mInternetDialogController, mCoroutineScope); } @Override Loading Loading @@ -131,11 +138,16 @@ public class InternetAdapter extends RecyclerView.Adapter<InternetAdapter.Intern final ImageView mWifiEndIcon; final Context mContext; final InternetDialogController mInternetDialogController; final CoroutineScope mCoroutineScope; @Nullable private Job mJob; InternetViewHolder(View view, InternetDialogController internetDialogController) { InternetViewHolder(View view, InternetDialogController internetDialogController, CoroutineScope coroutineScope) { super(view); mContext = view.getContext(); mInternetDialogController = internetDialogController; mCoroutineScope = coroutineScope; mContainerLayout = view.requireViewById(R.id.internet_container); mWifiListLayout = view.requireViewById(R.id.wifi_list); mWifiNetworkLayout = view.requireViewById(R.id.wifi_network_layout); Loading Loading @@ -176,6 +188,24 @@ public class InternetAdapter extends RecyclerView.Adapter<InternetAdapter.Intern } void onWifiClick(@NonNull WifiEntry wifiEntry, @NonNull View view) { if (Flags.androidVWifiApi() && wifiEntry.getSecurityTypes().contains( WifiEntry.SECURITY_WEP)) { if (mJob == null) { mJob = WifiUtils.checkWepAllowed(mContext, mCoroutineScope, wifiEntry.getSsid(), WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG, intent -> { mInternetDialogController.startActivity(intent, view); return null; }, () -> { wifiConnect(wifiEntry, view); return null; }); } return; } wifiConnect(wifiEntry, view); } void wifiConnect(@NonNull WifiEntry wifiEntry, @NonNull View view) { if (wifiEntry.shouldEditBeforeConnect()) { final Intent intent = WifiUtils.getWifiDialogIntent(wifiEntry.getKey(), true /* connectForCaller */); Loading
packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java +1 −1 Original line number Diff line number Diff line Loading @@ -747,7 +747,7 @@ public class InternetDialogController implements AccessPointController.AccessPoi return summary; } private void startActivity(Intent intent, View view) { void startActivity(Intent intent, View view) { ActivityTransitionAnimator.Controller controller = mDialogTransitionAnimator.createActivityTransitionController(view); Loading
packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegate.java +10 −6 Original line number Diff line number Diff line Loading @@ -68,13 +68,15 @@ import com.android.systemui.statusbar.phone.SystemUIDialog; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.wifitrackerlib.WifiEntry; import java.util.List; import java.util.concurrent.Executor; import dagger.assisted.Assisted; import dagger.assisted.AssistedFactory; import dagger.assisted.AssistedInject; import kotlinx.coroutines.CoroutineScope; import java.util.List; import java.util.concurrent.Executor; /** * Dialog for showing mobile network, connected Wi-Fi network and Wi-Fi networks. */ Loading Loading @@ -165,7 +167,8 @@ public class InternetDialogDelegate implements InternetDialogDelegate create( @Assisted(ABOVE_STATUS_BAR) boolean aboveStatusBar, @Assisted(CAN_CONFIG_MOBILE_DATA) boolean canConfigMobileData, @Assisted(CAN_CONFIG_WIFI) boolean canConfigWifi); @Assisted(CAN_CONFIG_WIFI) boolean canConfigWifi, @Assisted CoroutineScope coroutineScope); } @AssistedInject Loading @@ -176,6 +179,7 @@ public class InternetDialogDelegate implements @Assisted(ABOVE_STATUS_BAR) boolean canConfigMobileData, @Assisted(CAN_CONFIG_MOBILE_DATA) boolean canConfigWifi, @Assisted(CAN_CONFIG_WIFI) boolean aboveStatusBar, @Assisted CoroutineScope coroutineScope, UiEventLogger uiEventLogger, DialogTransitionAnimator dialogTransitionAnimator, @Main Handler handler, Loading @@ -202,7 +206,7 @@ public class InternetDialogDelegate implements mUiEventLogger = uiEventLogger; mDialogTransitionAnimator = dialogTransitionAnimator; mAdapter = new InternetAdapter(mInternetDialogController); mAdapter = new InternetAdapter(mInternetDialogController, coroutineScope); } @Override Loading