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

Commit a79403f1 authored by Zoey Chen's avatar Zoey Chen
Browse files

[Provider Model] Launch InternetDialog from tile and onReceive

    - Call from SystemUI: Inject
    - Call from outside: Receiver

Bug: 187779230
Test: build pass
Change-Id: Ib127ad43831ada06fa6a07802b3648b30faac5b0
parent 1d8649a7
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -65,6 +65,7 @@ import com.android.systemui.power.EnhancedEstimates;
import com.android.systemui.power.PowerUI;
import com.android.systemui.privacy.PrivacyItemController;
import com.android.systemui.qs.ReduceBrightColorsController;
import com.android.systemui.qs.tiles.dialog.InternetDialogFactory;
import com.android.systemui.recents.OverviewProxyService;
import com.android.systemui.recents.Recents;
import com.android.systemui.screenrecord.RecordingController;
@@ -360,6 +361,7 @@ public class Dependency {
    @Inject Lazy<PrivacyDotViewController> mPrivacyDotViewControllerLazy;
    @Inject Lazy<EdgeBackGestureHandler> mEdgeBackGestureHandler;
    @Inject Lazy<UiEventLogger> mUiEventLogger;
    @Inject Lazy<InternetDialogFactory> mInternetDialogFactory;

    @Inject
    public Dependency() {
@@ -573,6 +575,7 @@ public class Dependency {
                mSystemStatusAnimationSchedulerLazy::get);
        mProviders.put(PrivacyDotViewController.class, mPrivacyDotViewControllerLazy::get);
        mProviders.put(EdgeBackGestureHandler.class, mEdgeBackGestureHandler::get);
        mProviders.put(InternetDialogFactory.class, mInternetDialogFactory::get);
        mProviders.put(UiEventLogger.class, mUiEventLogger::get);

        Dependency.setInstance(this);
+15 −2
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import android.provider.Settings;
import android.service.quicksettings.Tile;
import android.text.Html;
import android.text.TextUtils;
import android.util.FeatureFlagUtils;
import android.util.Log;
import android.view.View;
import android.widget.Switch;
@@ -51,6 +52,7 @@ import com.android.systemui.qs.AlphaControlledSignalTileView;
import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.qs.tiles.dialog.InternetDialogFactory;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.NetworkController.IconState;
import com.android.systemui.statusbar.policy.NetworkController.MobileDataIndicators;
@@ -75,6 +77,8 @@ public class InternetTile extends QSTileImpl<SignalState> {
    private int mLastTileState = -1;

    protected final InternetSignalCallback mSignalCallback = new InternetSignalCallback();
    private final InternetDialogFactory mInternetDialogFactory;
    final Handler mHandler;

    @Inject
    public InternetTile(
@@ -86,10 +90,13 @@ public class InternetTile extends QSTileImpl<SignalState> {
            StatusBarStateController statusBarStateController,
            ActivityStarter activityStarter,
            QSLogger qsLogger,
            NetworkController networkController
            NetworkController networkController,
            InternetDialogFactory internetDialogFactory
    ) {
        super(host, backgroundLooper, mainHandler, falsingManager, metricsLogger,
                statusBarStateController, activityStarter, qsLogger);
        mInternetDialogFactory = internetDialogFactory;
        mHandler = mainHandler;
        mController = networkController;
        mDataController = mController.getMobileDataController();
        mController.observe(getLifecycle(), mSignalCallback);
@@ -114,7 +121,13 @@ public class InternetTile extends QSTileImpl<SignalState> {

    @Override
    protected void handleClick(@Nullable View view) {
        if (!FeatureFlagUtils.isEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL)) {
            mActivityStarter.postStartActivityDismissingKeyguard(INTERNET_PANEL, 0);
        } else {
            mHandler.post(() -> {
                mInternetDialogFactory.create(true);
            });
        }
    }

    @Override
+62 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2021 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.android.systemui.qs.tiles.dialog

import android.content.Context
import android.os.Handler
import android.util.Log
import com.android.internal.logging.UiEventLogger
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import javax.inject.Inject

private const val TAG = "InternetDialogFactory"
private val DEBUG = Log.isLoggable(TAG, Log.DEBUG)

/**
 * Factory to create [InternetDialog] objects.
 */
@SysUISingleton
class InternetDialogFactory @Inject constructor(
        @Main private val handler: Handler,
        private val internetDialogController: InternetDialogController,
        private val context: Context,
        private val uiEventLogger: UiEventLogger
) {
    companion object {
        var internetDialog: InternetDialog? = null
    }

    /** Creates a [InternetDialog]. */
    fun create(aboveStatusBar: Boolean) {
        if (internetDialog != null) {
            if (DEBUG) {
                Log.d(TAG, "InternetDialog is showing, do not create it twice.")
            }
            return
        } else {
            internetDialog = InternetDialog(context, this, internetDialogController, aboveStatusBar,
                    uiEventLogger, handler)
        }
    }

    fun destroyDialog() {
        if (DEBUG) {
            Log.d(TAG, "destroyDialog")
        }
        internetDialog = null
    }
}
+16 −1
Original line number Diff line number Diff line
@@ -69,8 +69,11 @@ import com.android.systemui.R;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.demomode.DemoMode;
import com.android.systemui.demomode.DemoModeController;
import com.android.systemui.qs.tiles.dialog.InternetDialogFactory;
import com.android.systemui.qs.tiles.dialog.InternetDialogUtil;
import com.android.systemui.settings.CurrentUserTracker;
import com.android.systemui.statusbar.policy.DeviceProvisionedController.DeviceProvisionedListener;
import com.android.systemui.telephony.TelephonyListenerManager;
@@ -187,6 +190,8 @@ public class NetworkControllerImpl extends BroadcastReceiver
    private boolean mUserSetup;
    private boolean mSimDetected;
    private boolean mForceCellularValidated;
    private InternetDialogFactory mInternetDialogFactory;
    private Handler mMainHandler;

    private ConfigurationController.ConfigurationListener mConfigurationListener =
            new ConfigurationController.ConfigurationListener() {
@@ -215,7 +220,9 @@ public class NetworkControllerImpl extends BroadcastReceiver
            NetworkScoreManager networkScoreManager,
            AccessPointControllerImpl accessPointController,
            DemoModeController demoModeController,
            CarrierConfigTracker carrierConfigTracker) {
            CarrierConfigTracker carrierConfigTracker,
            @Main Handler handler,
            InternetDialogFactory internetDialogFactory) {
        this(context, connectivityManager,
                telephonyManager,
                telephonyListenerManager,
@@ -234,6 +241,8 @@ public class NetworkControllerImpl extends BroadcastReceiver
                demoModeController,
                carrierConfigTracker);
        mReceiverHandler.post(mRegisterListeners);
        mMainHandler = handler;
        mInternetDialogFactory = internetDialogFactory;
    }

    @VisibleForTesting
@@ -464,6 +473,9 @@ public class NetworkControllerImpl extends BroadcastReceiver
        filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
        filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED);
        filter.addAction(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED);
        if (InternetDialogUtil.isProviderModelEnabled(mContext)) {
            filter.addAction(Settings.Panel.ACTION_INTERNET_CONNECTIVITY);
        }
        mBroadcastDispatcher.registerReceiverWithHandler(this, filter, mReceiverHandler);
        mListening = true;

@@ -772,6 +784,9 @@ public class NetworkControllerImpl extends BroadcastReceiver
                mConfig = Config.readConfig(mContext);
                mReceiverHandler.post(this::handleConfigurationChanged);
                break;
            case Settings.Panel.ACTION_INTERNET_CONNECTIVITY:
                mMainHandler.post(() -> mInternetDialogFactory.create(true));
                break;
            default:
                int subId = intent.getIntExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX,
                        SubscriptionManager.INVALID_SUBSCRIPTION_ID);