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

Commit 2515cf85 authored by Robert Greenwalt's avatar Robert Greenwalt Committed by Android Git Automerger
Browse files

am 98e0b146: Make PhoneStateListeners not call TelephonyManager

Merge commit '98e0b146' into eclair-mr2

* commit '98e0b146':
  Make PhoneStateListeners not call TelephonyManager
parents a1c0506e 98e0b146
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -94,6 +94,8 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {

    private Bundle mCellLocation = new Bundle();

    private int mDataConnectionNetworkType;

    static final int PHONE_STATE_PERMISSION_MASK =
                PhoneStateListener.LISTEN_CALL_FORWARDING_INDICATOR |
                PhoneStateListener.LISTEN_CALL_STATE |
@@ -187,7 +189,8 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
                    }
                    if ((events & PhoneStateListener.LISTEN_DATA_CONNECTION_STATE) != 0) {
                        try {
                            r.callback.onDataConnectionStateChanged(mDataConnectionState);
                            r.callback.onDataConnectionStateChanged(mDataConnectionState,
                                mDataConnectionNetworkType);
                        } catch (RemoteException ex) {
                            remove(r.binder);
                        }
@@ -345,7 +348,7 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
    }

    public void notifyDataConnection(int state, boolean isDataConnectivityPossible,
            String reason, String apn, String[] apnTypes, String interfaceName) {
            String reason, String apn, String[] apnTypes, String interfaceName, int networkType) {
        if (!checkNotifyPermission("notifyDataConnection()" )) {
            return;
        }
@@ -356,11 +359,12 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
            mDataConnectionApn = apn;
            mDataConnectionApnTypes = apnTypes;
            mDataConnectionInterfaceName = interfaceName;
            mDataConnectionNetworkType = networkType;
            for (int i = mRecords.size() - 1; i >= 0; i--) {
                Record r = mRecords.get(i);
                if ((r.events & PhoneStateListener.LISTEN_DATA_CONNECTION_STATE) != 0) {
                    try {
                        r.callback.onDataConnectionStateChanged(state);
                        r.callback.onDataConnectionStateChanged(state, networkType);
                    } catch (RemoteException ex) {
                        remove(r.binder);
                    }
+9 −9
Original line number Diff line number Diff line
@@ -782,7 +782,7 @@ public class StatusBarPolicy {
        public void onServiceStateChanged(ServiceState state) {
            mServiceState = state;
            updateSignalStrength();
            updateCdmaRoamingIcon();
            updateCdmaRoamingIcon(state);
            updateDataIcon();
        }

@@ -796,9 +796,9 @@ public class StatusBarPolicy {
        }

        @Override
        public void onDataConnectionStateChanged(int state) {
        public void onDataConnectionStateChanged(int state, int networkType) {
            mDataState = state;
            updateDataNetType();
            updateDataNetType(networkType);
            updateDataIcon();
        }

@@ -835,7 +835,7 @@ public class StatusBarPolicy {
    }

    private boolean isCdma() {
        return ((mPhone != null) && (mPhone.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA));
        return (mSignalStrength != null) && !mSignalStrength.isGsm();
    }

    private boolean isEvdo() {
@@ -889,6 +889,7 @@ public class StatusBarPolicy {
            else if (asu >= 4)  iconLevel = 2;
            else iconLevel = 1;

            // Though mPhone is a Manager, this call is not an IPC
            if (mPhone.isNetworkRoaming()) {
                iconList = sSignalImages_r;
            } else {
@@ -956,8 +957,7 @@ public class StatusBarPolicy {
        return (levelEvdoDbm < levelEvdoSnr) ? levelEvdoDbm : levelEvdoSnr;
    }

    private final void updateDataNetType() {
        int net = mPhone.getNetworkType();
    private final void updateDataNetType(int net) {

        switch (net) {
        case TelephonyManager.NETWORK_TYPE_EDGE:
@@ -1211,7 +1211,7 @@ public class StatusBarPolicy {
        }
    }

    private final void updateCdmaRoamingIcon() {
    private final void updateCdmaRoamingIcon(ServiceState state) {
        if (!hasService()) {
            mService.setIconVisibility(mCdmaRoamingIndicatorIcon, false);
            return;
@@ -1223,8 +1223,8 @@ public class StatusBarPolicy {
        }

        int[] iconList = sRoamingIndicatorImages_cdma;
        int iconIndex = mPhone.getCdmaEriIconIndex();
        int iconMode = mPhone.getCdmaEriIconMode();
        int iconIndex = state.getCdmaEriIconIndex();
        int iconMode = state.getCdmaEriIconMode();

        if (iconIndex == -1) {
            Log.e(TAG, "getCdmaEriIconIndex returned null, skipping ERI icon update");
+11 −2
Original line number Diff line number Diff line
@@ -205,6 +205,13 @@ public class PhoneStateListener {
        // default implementation empty
    }

    /**
     * @hide
     * same as above, but with the network type.  Both called.
     */
    public void onDataConnectionStateChanged(int state, int networkType) {
    }

    /**
     * Callback invoked when data activity state changes.
     *
@@ -264,8 +271,9 @@ public class PhoneStateListener {
            Message.obtain(mHandler, LISTEN_CALL_STATE, state, 0, incomingNumber).sendToTarget();
        }

        public void onDataConnectionStateChanged(int state) {
            Message.obtain(mHandler, LISTEN_DATA_CONNECTION_STATE, state, 0, null).sendToTarget();
        public void onDataConnectionStateChanged(int state, int networkType) {
            Message.obtain(mHandler, LISTEN_DATA_CONNECTION_STATE, state, networkType, null).
                    sendToTarget();
        }

        public void onDataActivity(int direction) {
@@ -299,6 +307,7 @@ public class PhoneStateListener {
                    PhoneStateListener.this.onCallStateChanged(msg.arg1, (String)msg.obj);
                    break;
                case LISTEN_DATA_CONNECTION_STATE:
                    PhoneStateListener.this.onDataConnectionStateChanged(msg.arg1, msg.arg2);
                    PhoneStateListener.this.onDataConnectionStateChanged(msg.arg1);
                    break;
                case LISTEN_DATA_ACTIVITY:
+41 −0
Original line number Diff line number Diff line
@@ -120,6 +120,8 @@ public class ServiceState implements Parcelable {
    private int mSystemId;
    private int mCdmaRoamingIndicator;
    private int mCdmaDefaultRoamingIndicator;
    private int mCdmaEriIconIndex;
    private int mCdmaEriIconMode;

    /**
     * Create a new ServiceState from a intent notifier Bundle
@@ -166,6 +168,8 @@ public class ServiceState implements Parcelable {
        mSystemId = s.mSystemId;
        mCdmaRoamingIndicator = s.mCdmaRoamingIndicator;
        mCdmaDefaultRoamingIndicator = s.mCdmaDefaultRoamingIndicator;
        mCdmaEriIconIndex = s.mCdmaEriIconIndex;
        mCdmaEriIconMode = s.mCdmaEriIconMode;
    }

    /**
@@ -184,6 +188,8 @@ public class ServiceState implements Parcelable {
        mSystemId = in.readInt();
        mCdmaRoamingIndicator = in.readInt();
        mCdmaDefaultRoamingIndicator = in.readInt();
        mCdmaEriIconIndex = in.readInt();
        mCdmaEriIconMode = in.readInt();
    }

    public void writeToParcel(Parcel out, int flags) {
@@ -199,6 +205,8 @@ public class ServiceState implements Parcelable {
        out.writeInt(mSystemId);
        out.writeInt(mCdmaRoamingIndicator);
        out.writeInt(mCdmaDefaultRoamingIndicator);
        out.writeInt(mCdmaEriIconIndex);
        out.writeInt(mCdmaEriIconMode);
    }

    public int describeContents() {
@@ -253,6 +261,20 @@ public class ServiceState implements Parcelable {
        return this.mCdmaDefaultRoamingIndicator;
    }

    /**
     * @hide
     */
    public int getCdmaEriIconIndex() {
        return this.mCdmaEriIconIndex;
    }

    /**
     * @hide
     */
    public int getCdmaEriIconMode() {
        return this.mCdmaEriIconMode;
    }

    /**
     * Get current registered operator name in long alphanumeric format
     *
@@ -412,8 +434,11 @@ public class ServiceState implements Parcelable {
        mSystemId = -1;
        mCdmaRoamingIndicator = -1;
        mCdmaDefaultRoamingIndicator = -1;
        mCdmaEriIconIndex = -1;
        mCdmaEriIconMode = -1;
    }

    // TODO - can't this be combined with the above func..
    public void setStateOff() {
        mState = STATE_POWER_OFF;
        mRoaming = false;
@@ -427,6 +452,8 @@ public class ServiceState implements Parcelable {
        mSystemId = -1;
        mCdmaRoamingIndicator = -1;
        mCdmaDefaultRoamingIndicator = -1;
        mCdmaEriIconIndex = -1;
        mCdmaEriIconMode = -1;
    }

    public void setState(int state) {
@@ -451,6 +478,20 @@ public class ServiceState implements Parcelable {
        this.mCdmaDefaultRoamingIndicator = roaming;
    }

    /**
     * @hide
     */
    public void setCdmaEriIconIndex(int index) {
        this.mCdmaEriIconIndex = index;
    }

    /**
     * @hide
     */
    public void setCdmaEriIconMode(int mode) {
        this.mCdmaEriIconMode = mode;
    }

    public void setOperatorName(String longName, String shortName, String numeric) {
        mOperatorAlphaLong = longName;
        mOperatorAlphaShort = shortName;
+4 −1
Original line number Diff line number Diff line
@@ -93,13 +93,16 @@ public class DefaultPhoneNotifier implements PhoneNotifier {
    }

    public void notifyDataConnection(Phone sender, String reason) {
        TelephonyManager telephony = TelephonyManager.getDefault();
        try {
            mRegistry.notifyDataConnection(
                    convertDataState(sender.getDataConnectionState()),
                    sender.isDataConnectivityPossible(), reason,
                    sender.getActiveApn(),
                    sender.getActiveApnTypes(),
                    sender.getInterfaceName(null));
                    sender.getInterfaceName(null),
                    ((telephony!=null) ? telephony.getNetworkType() :
                    TelephonyManager.NETWORK_TYPE_UNKNOWN));
        } catch (RemoteException ex) {
            // system process is dead
        }
Loading