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

Commit 71aee278 authored by Lorenzo Colitti's avatar Lorenzo Colitti Committed by Chiachang Wang
Browse files

Make NetworkAgent stop subclassing Handler.

Subclassing Handler is not appropriate for a system API because
it is an implementation detail and allows users of this class to
post messages to the handler in ways that allow inappropriate
access to internals that aren't part of the API contract.

Also fix some lint errors.

Test: builds
Bug: 138306002
Change-Id: I79478ceff6bbcae879d1025098d177de0d15dbee
Merged-In: I79478ceff6bbcae879d1025098d177de0d15dbee
parent c5d825c1
Loading
Loading
Loading
Loading
+108 −99
Original line number Diff line number Diff line
@@ -43,9 +43,10 @@ import java.util.concurrent.atomic.AtomicBoolean;
 *
 * @hide
 */
public abstract class NetworkAgent extends Handler {
public abstract class NetworkAgent {
    public final Network network;

    private final Handler mHandler;
    private volatile AsyncChannel mAsyncChannel;
    private final String LOG_TAG;
    private static final boolean DBG = true;
@@ -232,7 +233,7 @@ public abstract class NetworkAgent extends Handler {
    public NetworkAgent(Looper looper, Context context, String logTag, NetworkInfo ni,
            NetworkCapabilities nc, LinkProperties lp, int score, NetworkMisc misc,
            int providerId) {
        super(looper);
        mHandler = new NetworkAgentHandler(looper);
        LOG_TAG = logTag;
        mContext = context;
        mProviderId = providerId;
@@ -243,8 +244,14 @@ public abstract class NetworkAgent extends Handler {
        if (VDBG) log("Registering NetworkAgent");
        ConnectivityManager cm = (ConnectivityManager)mContext.getSystemService(
                Context.CONNECTIVITY_SERVICE);
        network = cm.registerNetworkAgent(new Messenger(this), new NetworkInfo(ni),
                new LinkProperties(lp), new NetworkCapabilities(nc), score, misc, providerId);
        network = cm.registerNetworkAgent(new Messenger(mHandler), new NetworkInfo(ni),
                new LinkProperties(lp), new NetworkCapabilities(nc), score, misc,
                providerId);
    }

    private class NetworkAgentHandler extends Handler {
        NetworkAgentHandler(Looper looper) {
            super(looper);
        }

        @Override
@@ -294,14 +301,14 @@ public abstract class NetworkAgent extends Handler {
                    }
                    if (currentTimeMs >= (mLastBwRefreshTime + BW_REFRESH_MIN_WIN_MS)) {
                        mPollLceScheduled = false;
                    if (mPollLcePending.getAndSet(true) == false) {
                        if (!mPollLcePending.getAndSet(true)) {
                            pollLceData();
                        }
                    } else {
                        // deliver the request at a later time rather than discard it completely.
                        if (!mPollLceScheduled) {
                        long waitTime = mLastBwRefreshTime + BW_REFRESH_MIN_WIN_MS -
                                currentTimeMs + 1;
                            long waitTime = mLastBwRefreshTime + BW_REFRESH_MIN_WIN_MS
                                    - currentTimeMs + 1;
                            mPollLceScheduled = sendEmptyMessageDelayed(
                                    CMD_REQUEST_BANDWIDTH_UPDATE, waitTime);
                        }
@@ -311,8 +318,9 @@ public abstract class NetworkAgent extends Handler {
                case CMD_REPORT_NETWORK_STATUS: {
                    String redirectUrl = ((Bundle) msg.obj).getString(REDIRECT_URL_KEY);
                    if (VDBG) {
                    log("CMD_REPORT_NETWORK_STATUS(" +
                            (msg.arg1 == VALID_NETWORK ? "VALID, " : "INVALID, ") + redirectUrl);
                        log("CMD_REPORT_NETWORK_STATUS("
                                + (msg.arg1 == VALID_NETWORK ? "VALID, " : "INVALID, ")
                                + redirectUrl);
                    }
                    networkStatus(msg.arg1, redirectUrl);
                    break;
@@ -356,6 +364,7 @@ public abstract class NetworkAgent extends Handler {
                }
            }
        }
    }

    private void queueOrSendMessage(int what, Object obj) {
        queueOrSendMessage(what, 0, 0, obj);