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

Commit 7ac48a8a authored by Charlotte Lu's avatar Charlotte Lu
Browse files

Add WEP dialog in System UI

Test: Visual Test
Flag: NONE
Fix: 328365908
Change-Id: I169eaf829684ad62bb566cd554880e137734e2f1
parent 726607cc
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