OSDN Git Service

Don't ever report a null ServiceState
authorRobert Greenwalt <rgreenwalt@google.com>
Thu, 30 Jun 2011 19:24:26 +0000 (12:24 -0700)
committerRobert Greenwalt <rgreenwalt@google.com>
Thu, 30 Jun 2011 19:42:57 +0000 (12:42 -0700)
Report out of service if we don't know any better.  Sometimes when switching radios
we were finding nulls reported - it crashed some code and highlighted this problem.
If we don't have a service state we're certainly out of service, so this isn't a lie.

bug:4553701
Change-Id: I094798a5f9f39f45c0ba30179aaa8f88f9b3e405

telephony/java/android/telephony/ServiceState.java
telephony/java/com/android/internal/telephony/DefaultPhoneNotifier.java

index fce7cdc..2f010e5 100644 (file)
@@ -473,8 +473,8 @@ public class ServiceState implements Parcelable {
                 + " EmergOnly=" + mIsEmergencyOnly);
     }
 
-    public void setStateOutOfService() {
-        mState = STATE_OUT_OF_SERVICE;
+    private void setNullState(int state) {
+        mState = state;
         mRoaming = false;
         mOperatorAlphaLong = null;
         mOperatorAlphaShort = null;
@@ -491,23 +491,12 @@ public class ServiceState implements Parcelable {
         mIsEmergencyOnly = false;
     }
 
-    // TODO - can't this be combined with the above method?
+    public void setStateOutOfService() {
+        setNullState(STATE_OUT_OF_SERVICE);
+    }
+
     public void setStateOff() {
-        mState = STATE_POWER_OFF;
-        mRoaming = false;
-        mOperatorAlphaLong = null;
-        mOperatorAlphaShort = null;
-        mOperatorNumeric = null;
-        mIsManualNetworkSelection = false;
-        mRadioTechnology = 0;
-        mCssIndicator = false;
-        mNetworkId = -1;
-        mSystemId = -1;
-        mCdmaRoamingIndicator = -1;
-        mCdmaDefaultRoamingIndicator = -1;
-        mCdmaEriIconIndex = -1;
-        mCdmaEriIconMode = -1;
-        mIsEmergencyOnly = false;
+        setNullState(STATE_POWER_OFF);
     }
 
     public void setState(int state) {
index 910905a..aa7568b 100644 (file)
@@ -21,6 +21,7 @@ import android.net.LinkProperties;
 import android.os.Bundle;
 import android.os.RemoteException;
 import android.os.ServiceManager;
+import android.telephony.ServiceState;
 import android.telephony.TelephonyManager;
 import android.util.Log;
 
@@ -55,8 +56,13 @@ public class DefaultPhoneNotifier implements PhoneNotifier {
     }
 
     public void notifyServiceState(Phone sender) {
+        ServiceState ss = sender.getServiceState();
+        if (ss == null) {
+            ss = new ServiceState();
+            ss.setStateOutOfService();
+        }
         try {
-            mRegistry.notifyServiceState(sender.getServiceState());
+            mRegistry.notifyServiceState(ss);
         } catch (RemoteException ex) {
             // system process is dead
         }