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

Commit 14d817c1 authored by Megha Patil's avatar Megha Patil
Browse files

Handling of Memory Not Full Event from SmsStorageMonitor

- Check if SMS over IMS is available
- Send Memory Not Full Event to ImsManager
- Receive the result of sending the event back
StorageMonitor
- Bug: b/240883268

Test: Tested Memory full and available conditions in Pixel6
Change-Id: I4f83dffc383ebd9202ebc9b8e6b555afa1f65bb8
parent 71f0a1f4
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -447,6 +447,20 @@ public class ImsSmsDispatcher extends SMSDispatcher {
        return SMSDispatcherUtil.calculateLength(isCdmaMo(), messageBody, use7bitOnly);
    }

    /**
     * Send the Memory Available Event to the ImsService
     */
    public void onMemoryAvailable() {
        logd("onMemoryAvailable ");
        int token = mNextToken.incrementAndGet();
        try {
            logd("onMemoryAvailable: token = " + token);
            getImsManager().onMemoryAvailable(token);
        } catch (ImsException e) {
            loge("onMemoryAvailable failed: " + e.getMessage());
        }
    }

    @Override
    public void sendSms(SmsTracker tracker) {
        logd("sendSms: "
+22 −0
Original line number Diff line number Diff line
@@ -409,6 +409,11 @@ public class SmsDispatchersController extends Handler {
        injectSmsPdu(msg, format, callback, false /* ignoreClass */, isOverIms, 0 /* unused */);
    }

    @VisibleForTesting
    public void setImsSmsDispatcher(ImsSmsDispatcher imsSmsDispatcher) {
        mImsSmsDispatcher = imsSmsDispatcher;
    }

    /**
     * Inject an SMS PDU into the android platform.
     *
@@ -573,6 +578,23 @@ public class SmsDispatchersController extends Handler {
        dispatcher.sendSms(tracker);
    }

    /**
     * Memory Available Event
     * @param result callback message
     */
    public void reportSmsMemoryStatus(Message result) {
        Rlog.d(TAG, "reportSmsMemoryStatus: ");
        try {
            mImsSmsDispatcher.onMemoryAvailable();
            AsyncResult.forMessage(result, null, null);
            result.sendToTarget();
        } catch (Exception e) {
            Rlog.e(TAG, "reportSmsMemoryStatus Failed ", e);
            AsyncResult.forMessage(result, null, e);
            result.sendToTarget();
        }
    }

    /**
     * SMS over IMS is supported if IMS is registered and SMS is supported on IMS.
     *
+13 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Resources;
import android.os.AsyncResult;
import android.os.Build;
import android.os.Handler;
@@ -212,6 +213,18 @@ public class SmsStorageMonitor extends Handler {

    private void sendMemoryStatusReport(boolean isAvailable) {
        mIsWaitingResponse = true;
        Resources r = mContext.getResources();
        if (r.getBoolean(com.android.internal.R.bool.config_smma_notification_supported_over_ims)) {
            IccSmsInterfaceManager smsIfcMngr = mPhone.getIccSmsInterfaceManager();
            if (smsIfcMngr != null) {
                Rlog.d(TAG, "sendMemoryStatusReport: smsIfcMngr is available");
                if (smsIfcMngr.mDispatchersController.isIms() && isAvailable) {
                    smsIfcMngr.mDispatchersController.reportSmsMemoryStatus(
                            obtainMessage(EVENT_REPORT_MEMORY_STATUS_DONE));
                    return;
                }
            }
        }
        mCi.reportSmsMemoryStatus(isAvailable, obtainMessage(EVENT_REPORT_MEMORY_STATUS_DONE));
    }