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

Commit 3ec8e7fb authored by Wink Saville's avatar Wink Saville
Browse files

Use networkType to display wifi and mobile notification separately.

There are two bugs one is I was clearing the notification in
CaptivePortalTracker when entering the ActivateState. (double check
according to bug 5021626 we should be calling enter)

Second is we could have the need to display both icons but can't
because we only allow one.

The solution I'm proposing here is to allow two notifications and
have then controlled separately.

Bug: 10886908
Change-Id: I30e7130bc542535492d175640a4990c592f32806
parent 09be37b2
Loading
Loading
Loading
Loading
+6 −10
Original line number Diff line number Diff line
@@ -179,10 +179,6 @@ public class CaptivePortalTracker extends StateMachine {
    }

    private class DefaultState extends State {
        @Override
        public void enter() {
            setNotificationOff();
        }

        @Override
        public boolean processMessage(Message message) {
@@ -208,6 +204,7 @@ public class CaptivePortalTracker extends StateMachine {
    private class NoActiveNetworkState extends State {
        @Override
        public void enter() {
            setNotificationOff();
            mNetworkInfo = null;
        }

@@ -236,11 +233,6 @@ public class CaptivePortalTracker extends StateMachine {
    }

    private class ActiveNetworkState extends State {
        @Override
        public void enter() {
            setNotificationOff();
        }

        @Override
        public boolean processMessage(Message message) {
            NetworkInfo info;
@@ -284,6 +276,8 @@ public class CaptivePortalTracker extends StateMachine {
            if (DBG) log(getName() + message.toString());
            switch (message.what) {
                case CMD_DELAYED_CAPTIVE_CHECK:
                    setNotificationOff();

                    if (message.arg1 == mDelayedCheckToken) {
                        InetAddress server = lookupHost(mServer);
                        boolean captive = server != null && isCaptivePortal(server);
@@ -362,8 +356,10 @@ public class CaptivePortalTracker extends StateMachine {

    private void setNotificationOff() {
        try {
            mConnService.setProvisioningNotificationVisible(false, ConnectivityManager.TYPE_NONE,
            if (mNetworkInfo != null) {
                mConnService.setProvisioningNotificationVisible(false, mNetworkInfo.getType(),
                    null, null);
            }
        } catch (RemoteException e) {
            log("setNotificationOff: " + e);
        }
+9 −7
Original line number Diff line number Diff line
@@ -3987,8 +3987,8 @@ public class ConnectivityService extends IConnectivityManager.Stub {
                return timeOutMs;
            }

            // Start off with notification off
            setProvNotificationVisible(false, ConnectivityManager.TYPE_NONE, null, null);
            // Start off with mobile notification off
            setProvNotificationVisible(false, ConnectivityManager.TYPE_MOBILE_HIPRI, null, null);

            CheckMp checkMp = new CheckMp(mContext, this);
            CheckMp.CallBack cb = new CheckMp.CallBack() {
@@ -4013,7 +4013,8 @@ public class ConnectivityService extends IConnectivityManager.Stub {
                            }
                            if (TextUtils.isEmpty(url) == false) {
                                if (DBG) log("CheckMp.onComplete: warm (redirected), url=" + url);
                                setProvNotificationVisible(true, ni.getType(), ni.getExtraInfo(),
                                setProvNotificationVisible(true,
                                        ConnectivityManager.TYPE_MOBILE_HIPRI, ni.getExtraInfo(),
                                        url);
                            } else {
                                if (DBG) log("CheckMp.onComplete: warm (redirected), no url");
@@ -4024,7 +4025,8 @@ public class ConnectivityService extends IConnectivityManager.Stub {
                            String url = getMobileProvisioningUrl();
                            if (TextUtils.isEmpty(url) == false) {
                                if (DBG) log("CheckMp.onComplete: warm (no dns/tcp), url=" + url);
                                setProvNotificationVisible(true, ni.getType(), ni.getExtraInfo(),
                                setProvNotificationVisible(true,
                                        ConnectivityManager.TYPE_MOBILE_HIPRI, ni.getExtraInfo(),
                                        url);
                            } else {
                                if (DBG) log("CheckMp.onComplete: warm (no dns/tcp), no url");
@@ -4426,7 +4428,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {

    private void handleMobileProvisioningAction(String url) {
        // Notication mark notification as not visible
        setProvNotificationVisible(false, ConnectivityManager.TYPE_NONE, null, null);
        setProvNotificationVisible(false, ConnectivityManager.TYPE_MOBILE_HIPRI, null, null);

        // If provisioning network handle as a special case,
        // otherwise launch browser with the intent directly.
@@ -4512,14 +4514,14 @@ public class ConnectivityService extends IConnectivityManager.Stub {
            notification.setLatestEventInfo(mContext, title, details, notification.contentIntent);

            try {
                notificationManager.notify(NOTIFICATION_ID, 1, notification);
                notificationManager.notify(NOTIFICATION_ID, networkType, notification);
            } catch (NullPointerException npe) {
                loge("setNotificaitionVisible: visible notificationManager npe=" + npe);
                npe.printStackTrace();
            }
        } else {
            try {
                notificationManager.cancel(NOTIFICATION_ID, 1);
                notificationManager.cancel(NOTIFICATION_ID, networkType);
            } catch (NullPointerException npe) {
                loge("setNotificaitionVisible: cancel notificationManager npe=" + npe);
                npe.printStackTrace();