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

Commit 6dbeb975 authored by Nazanin Bakhshi's avatar Nazanin Bakhshi Committed by Automerger Merge Worker
Browse files

Merge "Improve InboundSmsHandler logging" into rvc-dev am: f232258f

Change-Id: Ibbf550d39dc994f11c56387c8b1d9ce27f3749eb
parents 317bdae0 f232258f
Loading
Loading
Loading
Loading
+48 −30
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ public class CarrierServicesSmsFilter {
    private final String mLogTag;
    private final CallbackTimeoutHandler mCallbackTimeoutHandler;
    private final LocalLog mLocalLog;
    private final long mMessageId;
    private FilterAggregator mFilterAggregator;

    @VisibleForTesting
@@ -73,7 +74,8 @@ public class CarrierServicesSmsFilter {
            String pduFormat,
            CarrierServicesSmsFilterCallbackInterface carrierServicesSmsFilterCallback,
            String logTag,
            LocalLog localLog) {
            LocalLog localLog,
            long msgId) {
        mContext = context;
        mPhone = phone;
        mPdus = pdus;
@@ -83,6 +85,7 @@ public class CarrierServicesSmsFilter {
        mLogTag = logTag;
        mCallbackTimeoutHandler = new CallbackTimeoutHandler();
        mLocalLog = localLog;
        mMessageId = msgId;
    }

    /**
@@ -102,7 +105,8 @@ public class CarrierServicesSmsFilter {
        }

        if (mFilterAggregator != null) {
            String errMsg = "Cannot reuse the same CarrierServiceSmsFilter object for filtering.";
            String errMsg = "filter: Cannot reuse the same CarrierServiceSmsFilter object for "
                    + "filtering";
            loge(errMsg);
            throw new RuntimeException(errMsg);
        }
@@ -131,10 +135,11 @@ public class CarrierServicesSmsFilter {
                    mContext.getPackageManager(),
                    new Intent(CarrierMessagingService.SERVICE_INTERFACE));
        } else {
            Rlog.e(mLogTag, "UiccCard not initialized.");
            loge("getCarrierAppPackageForFiltering: UiccCard not initialized");
        }
        if (carrierPackages != null && carrierPackages.size() == 1) {
            log("Found carrier package.");
            log("getCarrierAppPackageForFiltering: Found carrier package: "
                    + carrierPackages.get(0));
            return Optional.of(carrierPackages.get(0));
        }

@@ -144,21 +149,22 @@ public class CarrierServicesSmsFilter {
                getSystemAppForIntent(new Intent(CarrierMessagingService.SERVICE_INTERFACE));

        if (systemPackages != null && systemPackages.size() == 1) {
            log("Found system package.");
            log("getCarrierAppPackageForFiltering: Found system package: " + systemPackages.get(0));
            return Optional.of(systemPackages.get(0));
        }
        logv("Unable to find carrier package: " + carrierPackages
                + ", nor systemPackages: " + systemPackages);
        logv("getCarrierAppPackageForFiltering: Unable to find carrierPackages: " + carrierPackages
                + " or systemPackages: " + systemPackages);
        return Optional.empty();
    }

    private void filterWithPackage(String packageName, FilterAggregator filterAggregator) {
        CarrierSmsFilter smsFilter = new CarrierSmsFilter(mPdus, mDestPort, mPduFormat);
        CarrierSmsFilter smsFilter = new CarrierSmsFilter(mPdus, mDestPort, mPduFormat,
                packageName);
        CarrierSmsFilterCallback smsFilterCallback =
                new CarrierSmsFilterCallback(filterAggregator, smsFilter);
                new CarrierSmsFilterCallback(filterAggregator, smsFilter, packageName);
        filterAggregator.addToCallbacks(smsFilterCallback);

        smsFilter.filterSms(packageName, smsFilterCallback);
        smsFilter.filterSms(smsFilterCallback);
    }

    private List<String> getSystemAppForIntent(Intent intent) {
@@ -169,7 +175,7 @@ public class CarrierServicesSmsFilter {

        for (ResolveInfo info : receivers) {
            if (info.serviceInfo == null) {
                loge("Can't get service information from " + info);
                loge("getSystemAppForIntent: Can't get service information from " + info);
                continue;
            }
            String packageName = info.serviceInfo.packageName;
@@ -183,15 +189,15 @@ public class CarrierServicesSmsFilter {
    }

    private void log(String message) {
        Rlog.d(mLogTag, message);
        Rlog.d(mLogTag, message + ", id: " + mMessageId);
    }

    private void loge(String message) {
        Rlog.e(mLogTag, message);
        Rlog.e(mLogTag, message + ", id: " + mMessageId);
    }

    private void logv(String message) {
        Rlog.v(mLogTag, message);
        Rlog.v(mLogTag, message + ", id: " + mMessageId);
    }

    /**
@@ -213,24 +219,27 @@ public class CarrierServicesSmsFilter {
        private final String mSmsFormat;
        // Instantiated in filterSms.
        private volatile CarrierSmsFilterCallback mSmsFilterCallback;
        private final String mPackageName;

        CarrierSmsFilter(byte[][] pdus, int destPort, String smsFormat) {
        CarrierSmsFilter(byte[][] pdus, int destPort, String smsFormat, String packageName) {
            mPdus = pdus;
            mDestPort = destPort;
            mSmsFormat = smsFormat;
            mPackageName = packageName;
        }

        /**
         * Attempts to bind to a {@link CarrierMessagingService}. Filtering is initiated
         * asynchronously once the service is ready using {@link #onServiceReady()}.
         */
        void filterSms(String carrierPackageName, CarrierSmsFilterCallback smsFilterCallback) {
        void filterSms(CarrierSmsFilterCallback smsFilterCallback) {
            mSmsFilterCallback = smsFilterCallback;
            if (!bindToCarrierMessagingService(mContext, carrierPackageName)) {
                loge("bindService() for carrier messaging service failed");
            if (!bindToCarrierMessagingService(mContext, mPackageName)) {
                loge("CarrierSmsFilter::filterSms: bindService() for failed for " + mPackageName);
                smsFilterCallback.onFilterComplete(CarrierMessagingService.RECEIVE_OPTIONS_DEFAULT);
            } else {
                logv("bindService() for carrier messaging service succeeded");
                logv("CarrierSmsFilter::filterSms: bindService() for succeeded for "
                        + mPackageName);
            }
        }

@@ -241,11 +250,11 @@ public class CarrierServicesSmsFilter {
        @Override
        public void onServiceReady() {
            try {
                log("onServiceReady: calling filterSms");
                log("onServiceReady: calling filterSms on " + mPackageName);
                filterSms(new MessagePdu(Arrays.asList(mPdus)), mSmsFormat, mDestPort,
                        mPhone.getSubId(), mSmsFilterCallback);
            } catch (RuntimeException e) {
                loge("Exception filtering the SMS: " + e);
                loge("Exception filtering the SMS with " + mPackageName + ": " + e);
                mSmsFilterCallback.onFilterComplete(
                        CarrierMessagingService.RECEIVE_OPTIONS_DEFAULT);
            }
@@ -260,12 +269,14 @@ public class CarrierServicesSmsFilter {
        private final FilterAggregator mFilterAggregator;
        private final CarrierMessagingServiceWrapper mCarrierMessagingServiceWrapper;
        private boolean mIsOnFilterCompleteCalled;
        private final String mPackageName;

        CarrierSmsFilterCallback(FilterAggregator filterAggregator,
                CarrierMessagingServiceWrapper carrierMessagingServiceWrapper) {
                CarrierMessagingServiceWrapper carrierMessagingServiceWrapper, String packageName) {
            mFilterAggregator = filterAggregator;
            mCarrierMessagingServiceWrapper = carrierMessagingServiceWrapper;
            mIsOnFilterCompleteCalled = false;
            mPackageName = packageName;
        }

        /**
@@ -273,7 +284,8 @@ public class CarrierServicesSmsFilter {
         */
        @Override
        public void onFilterComplete(int result) {
            log("onFilterComplete called with result: " + result);
            log("CarrierSmsFilterCallback::onFilterComplete: Called from " + mPackageName
                    + " with result: " + result);
            // in the case that timeout has already passed and triggered, but the initial callback
            // is run afterwards, we should not follow through
            if (!mIsOnFilterCompleteCalled) {
@@ -285,22 +297,26 @@ public class CarrierServicesSmsFilter {

        @Override
        public void onSendSmsComplete(int result, int messageRef) {
            loge("Unexpected onSendSmsComplete call with result: " + result);
            loge("onSendSmsComplete: Unexpected call from " + mPackageName
                    + " with result: " + result);
        }

        @Override
        public void onSendMultipartSmsComplete(int result, int[] messageRefs) {
            loge("Unexpected onSendMultipartSmsComplete call with result: " + result);
            loge("onSendMultipartSmsComplete: Unexpected call from " + mPackageName
                    + " with result: " + result);
        }

        @Override
        public void onSendMmsComplete(int result, byte[] sendConfPdu) {
            loge("Unexpected onSendMmsComplete call with result: " + result);
            loge("onSendMmsComplete: Unexpected call from " + mPackageName
                    + " with result: " + result);
        }

        @Override
        public void onDownloadMmsComplete(int result) {
            loge("Unexpected onDownloadMmsComplete call with result: " + result);
            loge("onDownloadMmsComplete: Unexpected call from " + mPackageName
                    + " with result: " + result);
        }
    }

@@ -332,10 +348,12 @@ public class CarrierServicesSmsFilter {
                    }
                    //all onFilterCompletes called before timeout has triggered
                    //remove the pending message
                    log("onFilterComplete: called successfully with result = " + result);
                    log("FilterAggregator::onFilterComplete: called successfully with result = "
                            + result);
                    mCallbackTimeoutHandler.removeMessages(EVENT_ON_FILTER_COMPLETE_NOT_CALLED);
                } else {
                    log("onFilterComplete: waiting for pending filters " + mNumPendingFilters);
                    log("FilterAggregator::onFilterComplete: waiting for pending filters "
                            + mNumPendingFilters);
                }
            }
        }
@@ -357,7 +375,7 @@ public class CarrierServicesSmsFilter {
        @Override
        public void handleMessage(Message msg) {
            if (DBG) {
                log("CallbackTimeoutHandler handleMessage(" + msg.what + ")");
                log("CallbackTimeoutHandler: handleMessage(" + msg.what + ")");
            }

            switch(msg.what) {
+183 −69

File changed.

Preview size limit exceeded, changes collapsed.

+1 −2
Original line number Diff line number Diff line
@@ -79,8 +79,7 @@ public class CarrierServicesSmsFilterTest extends TelephonyTest {
        }
        mCarrierServicesSmsFilterUT = new CarrierServicesSmsFilter(
                mContext, mPhone, new byte[][]{SMS_PDU},
                0, "3gpp", mFilterCallback, getClass().getSimpleName(), new LocalLog(64)
        );
                0, "3gpp", mFilterCallback, getClass().getSimpleName(), new LocalLog(10), 1L);
    }

    @After