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

Commit 6677fbed authored by Charlotte Lu's avatar Charlotte Lu Committed by Android (Google) Code Review
Browse files

Merge "Add WEP dialog in System UI" into main

parents dd3bd465 7ac48a8a
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -47,7 +47,7 @@ abstract class SpaDialogWindowTypeActivity : ComponentActivity() {
        super.finish()
    }

    abstract val dialogWindowType: Int?
    abstract fun getDialogWindowType(): Int?

    @Composable
    abstract fun Content()
@@ -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)
        }
    }
+30 −8
Original line number Diff line number Diff line
@@ -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 {
    /**
@@ -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()
@@ -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)
                }
            }

@@ -502,5 +523,6 @@ open class WifiUtils {
            }

        const val SSID = "ssid"
        const val DIALOG_WINDOW_TYPE = "dialog_window_type"
    }
}
+33 −3
Original line number Diff line number Diff line
@@ -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;
@@ -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;

@@ -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
@@ -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
@@ -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
@@ -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);
@@ -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 */);
+1 −1
Original line number Diff line number Diff line
@@ -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);

+10 −6
Original line number Diff line number Diff line
@@ -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.
 */
@@ -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
@@ -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,
@@ -202,7 +206,7 @@ public class InternetDialogDelegate implements

        mUiEventLogger = uiEventLogger;
        mDialogTransitionAnimator = dialogTransitionAnimator;
        mAdapter = new InternetAdapter(mInternetDialogController);
        mAdapter = new InternetAdapter(mInternetDialogController, coroutineScope);
    }

    @Override
Loading