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

Commit 6e01d6d3 authored by Matt Garnes's avatar Matt Garnes
Browse files

Merge CAF branch 'LA.BR.1.2.1_rb2.18' into caf/cm-12.0.

parents badd6d14 3beef087
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -384,7 +384,8 @@ public abstract class IccPhoneBookInterfaceManager {
            AtomicBoolean status = new AtomicBoolean(false);
            Message response = mBaseHandler.obtainMessage(EVENT_LOAD_DONE, status);
            if (mAdnCache != null) {
                mAdnCache.requestLoadAllAdnLike(efid, mAdnCache.extensionEfForEf(efid), response);
                mAdnCache.requestLoadAllAdnLike(efid,
                        mAdnCache.extensionEfForEf(efid), null, response);
                waitForResult(status);
            } else {
                loge("Failure while trying to load from SIM due to uninitialised adncache");
+22 −15
Original line number Diff line number Diff line
@@ -830,7 +830,7 @@ public abstract class InboundSmsHandler extends StateMachine {

        intent.putExtra("pdus", pdus);
        intent.putExtra("format", tracker.getFormat());
        if (isBlockedByFirewall(intent)) {
        if (isSmsBlockedByFirewall(intent)) {
            // send firewall block mms intent
            sendBlockRecordBroadcast(mContext, intent, true, resultReceiver);
        } else {
@@ -1137,8 +1137,8 @@ public abstract class InboundSmsHandler extends StateMachine {
     * @param isSms judge it is a sms or mms
     * @param receiver which handler this broadcast at last
     */
    public void sendBlockRecordBroadcast(Context context, Intent intent,
            boolean isSms, BroadcastReceiver receiver) {
    public void sendBlockRecordBroadcast(Context context, Intent intent, boolean isSms,
            BroadcastReceiver receiver) {
        final SmsMessage[] messages = Telephony.Sms.Intents.getMessagesFromIntent(intent);
        if (messages != null) {
            Intent sendIntent;
@@ -1160,30 +1160,37 @@ public abstract class InboundSmsHandler extends StateMachine {
      * @param intent is sms intent
     * @return this mms address is saved in firewall databases
     */
    public boolean isBlockedByFirewall(Intent intent) {
        final SmsMessage[] messages = Telephony.Sms.Intents.getMessagesFromIntent(intent);
        String number = null;
        if (messages == null || messages.length < 1) {
            loge("Failed to parse SMS pdu");
            return false;
        }
        number = messages[0].getDisplayOriginatingAddress();
    public boolean isBlockedByFirewall(Intent intent, String address) {
        boolean isForbidden = false;
        // Add to check the firewall when firewall provider is built.
        final ContentResolver cr = mContext.getContentResolver();
        if (cr.acquireProvider(FIREWALL_PROVIDER_URI) != null && null != number) {
        if (cr.acquireProvider(FIREWALL_PROVIDER_URI) != null && null != address) {
            Bundle extras = new Bundle();
            extras.putString(EXTRA_NUMBER, number);
            extras.putString(EXTRA_NUMBER, address);
            extras.putLong(PhoneConstants.SUBSCRIPTION_KEY, mPhone.getSubId());
            extras = cr.call(FIREWALL_PROVIDER_URI, IS_FORBIDDEN, null, extras);
            if (extras != null) {
                isForbidden = extras.getBoolean(IS_FORBIDDEN);
            }
        }
        log("isForbidden = "+isForbidden );
        Log.d("RCS_UI", "isBlocked: address=" + address + ", isForbidden=" + isForbidden);
        return isForbidden;
    }

    public boolean isSmsBlockedByFirewall(Intent intent) {
        final SmsMessage[] messages = Telephony.Sms.Intents.getMessagesFromIntent(intent);
        if (messages == null || messages.length < 1) {
            loge("Failed to parse SMS pdu");
            return false;
        }
        String number = messages[0].getDisplayOriginatingAddress();
        return isBlockedByFirewall(intent, number);
    }

    public boolean isMmsBlockedByFirewall(Intent intent, String address) {
        return isBlockedByFirewall(intent, address);
    }

    /**
     * Log with debug level.
     * @param s the string to log
+35 −11
Original line number Diff line number Diff line
@@ -153,6 +153,7 @@ public class ModemBindingPolicyHandler extends Handler {
    //***** Events
    private static final int EVENT_MODEM_RAT_CAPS_AVAILABLE = 1;
    private static final int EVENT_UPDATE_BINDING_DONE = 2;
    private static final int EVENT_SET_NW_MODE_DONE = 3;

    //*****Constants
    private static final int SUCCESS = 1;
@@ -163,6 +164,7 @@ public class ModemBindingPolicyHandler extends Handler {
    private static ModemStackController mModemStackController;
    private CommandsInterface[] mCi;
    private Context mContext;
    private int mNumOfSetPrefNwModeSuccess = 0;
    private int mNumPhones = TelephonyManager.getDefault().getPhoneCount();
    private boolean mModemRatCapabilitiesAvailable = false;
    private boolean mIsSetPrefNwModeInProgress = false;
@@ -170,6 +172,7 @@ public class ModemBindingPolicyHandler extends Handler {
    private int[] mPreferredStackId = new int[mNumPhones];
    private int[] mCurrentStackId = new int[mNumPhones];
    private int[] mPrefNwMode = new int[mNumPhones];
    private int[] mNwModeinSubIdTable = new int[mNumPhones];
    private HashMap<Integer, Message> mStoredResponse = new HashMap<Integer, Message>();

    //Modem capabilities as per StackId
@@ -230,11 +233,38 @@ public class ModemBindingPolicyHandler extends Handler {
                handleModemRatCapsAvailable();
                break;

            case EVENT_SET_NW_MODE_DONE:
                handleSetPreferredNetwork(msg);
                break;

            default:
                break;
        }
    }

    private void handleSetPreferredNetwork(Message msg) {
        AsyncResult ar = (AsyncResult) msg.obj;
        int index = (Integer) ar.userObj;
        if (ar.exception == null) {
            mNumOfSetPrefNwModeSuccess++;
            // set nw mode success for all the subs, then update value to DB
            if (mNumOfSetPrefNwModeSuccess == mNumPhones) {
                for (int i = 0; i < mNumPhones; i++) {
                    logd("Updating network mode in DB for slot[" + i + "] with "
                            + mNwModeinSubIdTable[i]);
                    TelephonyManager.putIntAtIndex(mContext.getContentResolver(),
                            android.provider.Settings.Global.PREFERRED_NETWORK_MODE,
                            i, mNwModeinSubIdTable[i]);
                }
                mNumOfSetPrefNwModeSuccess = 0;
            }
        } else {
            logd("Failed to set preferred network mode for slot" + index);
            mNumOfSetPrefNwModeSuccess = 0;
        }

    }

    private void handleUpdateBindingDone(AsyncResult ar) {
        mIsSetPrefNwModeInProgress = false;

@@ -259,37 +289,31 @@ public class ModemBindingPolicyHandler extends Handler {
    */
    public void updatePrefNwTypeIfRequired(){
        boolean updateRequired = false;
        int[] nwModeinSubIdTable = new int[mNumPhones];
        syncPreferredNwModeFromDB();
        SubscriptionController subCtrlr = SubscriptionController.getInstance();
        for (int i=0; i < mNumPhones; i++ ) {
            long[] subIdList = subCtrlr.getSubId(i);
            if (subIdList != null && subIdList[0] > 0) {
                long subId = subIdList[0];
                nwModeinSubIdTable[i] = subCtrlr.getNwMode(subId);
                if (nwModeinSubIdTable[i] == SubscriptionManager.DEFAULT_NW_MODE){
                mNwModeinSubIdTable[i] = subCtrlr.getNwMode(subId);
                if (mNwModeinSubIdTable[i] == SubscriptionManager.DEFAULT_NW_MODE){
                    updateRequired = false;
                    break;
                }
                if (nwModeinSubIdTable[i] != mPrefNwMode[i]) {
                if (mNwModeinSubIdTable[i] != mPrefNwMode[i]) {
                    updateRequired = true;
                }
            }
        }

        if (updateRequired) {
            for (int i=0; i < mNumPhones; i++ ) {
                logd("Updating Value in DB for slot[" + i + "] with " + nwModeinSubIdTable[i]);
                TelephonyManager.putIntAtIndex( mContext.getContentResolver(),
                        android.provider.Settings.Global.PREFERRED_NETWORK_MODE,
                        i, nwModeinSubIdTable[i]);
            }
            if (FAILURE == updateStackBindingIfRequired(false)) {
                //In case of Update Stack Binding not required or failure, send setPrefNwType to
                //RIL immediately. In case of success after stack binding completed setPrefNwType
                //request is anyways sent.
                for (int i=0; i < mNumPhones; i++ ) {
                    mCi[i].setPreferredNetworkType(nwModeinSubIdTable[i], null);
                    Message msg = obtainMessage(EVENT_SET_NW_MODE_DONE, i);
                    mCi[i].setPreferredNetworkType(mNwModeinSubIdTable[i], msg);
                }
            }
       }
+9 −0
Original line number Diff line number Diff line
@@ -897,6 +897,13 @@ public interface Phone {
     */
    public void addParticipant(String dialString) throws CallStateException;

    /**
     * Initiate to add a participant in an IMS call.
     *
     * @exception CallStateException operation is not supported.
     */
    public void addParticipant(String dialString, Message onComplete) throws CallStateException;

    /**
     * Handles PIN MMI commands (PIN/PIN2/PUK/PUK2), which are initiated
     * without SEND (so <code>dial</code> is not appropriate).
@@ -1992,4 +1999,6 @@ public interface Phone {
    public void setLocalCallHold(int lchStatus);

    public boolean isImsVtCallPresent();

    public void notifyCallForwardingIndicator();
}
+6 −0
Original line number Diff line number Diff line
@@ -2138,4 +2138,10 @@ public abstract class PhoneBase extends Handler implements Phone {
        throw new CallStateException("addParticipant is not supported in this phone "
                + this);
    }

    @Override
    public void addParticipant(String dialString, Message onComplete) throws CallStateException {
        throw new CallStateException("addParticipant is not supported in this phone "
                + this);
    }
}
Loading