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

Commit 5401fbce authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

Merge "CellularDataService: mCallbackMap is not thread safe" into rvc-dev am: 6ff894b7

Change-Id: Ia23c3ff669b9dc56de2e30b44cf2cf3d6fdfa095
parents 7669cabe 6ff894b7
Loading
Loading
Loading
Loading
+4 −13
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ import android.hardware.radio.V1_0.RegState;
import android.hardware.radio.V1_4.DataRegStateResult.VopsInfo.hidl_discriminator;
import android.os.AsyncResult;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
import android.os.Message;
import android.telephony.AccessNetworkConstants;
@@ -41,8 +40,9 @@ import android.text.TextUtils;
import com.android.telephony.Rlog;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.Map;

/**
 * Implementation of network services for Cellular. It's a service that handles network requests
@@ -63,12 +63,7 @@ public class CellularNetworkService extends NetworkService {

    private class CellularNetworkServiceProvider extends NetworkServiceProvider {

        private final ConcurrentHashMap<Message, NetworkServiceCallback> mCallbackMap =
                new ConcurrentHashMap<>();

        private final Looper mLooper;

        private final HandlerThread mHandlerThread;
        private final Map<Message, NetworkServiceCallback> mCallbackMap = new HashMap<>();

        private final Handler mHandler;

@@ -79,10 +74,7 @@ public class CellularNetworkService extends NetworkService {

            mPhone = PhoneFactory.getPhone(getSlotIndex());

            mHandlerThread = new HandlerThread(CellularNetworkService.class.getSimpleName());
            mHandlerThread.start();
            mLooper = mHandlerThread.getLooper();
            mHandler = new Handler(mLooper) {
            mHandler = new Handler(Looper.myLooper()) {
                @Override
                public void handleMessage(Message message) {
                    NetworkServiceCallback callback = mCallbackMap.remove(message);
@@ -497,7 +489,6 @@ public class CellularNetworkService extends NetworkService {
        @Override
        public void close() {
            mCallbackMap.clear();
            mHandlerThread.quit();
            mPhone.mCi.unregisterForNetworkStateChanged(mHandler);
        }
    }
+1 −10
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ package com.android.internal.telephony.dataconnection;
import android.net.LinkProperties;
import android.os.AsyncResult;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
import android.os.Message;
import android.telephony.SubscriptionManager;
@@ -56,12 +55,8 @@ public class CellularDataService extends DataService {

        private final Map<Message, DataServiceCallback> mCallbackMap = new HashMap<>();

        private final Looper mLooper;

        private final Handler mHandler;

        private final HandlerThread mHandlerThread;

        private final Phone mPhone;

        private CellularDataServiceProvider(int slotId) {
@@ -69,10 +64,7 @@ public class CellularDataService extends DataService {

            mPhone = PhoneFactory.getPhone(getSlotIndex());

            mHandlerThread = new HandlerThread(CellularDataService.class.getSimpleName());
            mHandlerThread.start();
            mLooper = mHandlerThread.getLooper();
            mHandler = new Handler(mLooper) {
            mHandler = new Handler(Looper.myLooper()) {
                @Override
                public void handleMessage(Message message) {
                    DataServiceCallback callback = mCallbackMap.remove(message);
@@ -206,7 +198,6 @@ public class CellularDataService extends DataService {
        @Override
        public void close() {
            mPhone.mCi.unregisterForDataCallListChanged(mHandler);
            mHandlerThread.quit();
        }
    }