Merge "Stop exposing LTE_CA as a RAT type." into nyc-mr1-dev
diff --git a/src/java/com/android/internal/telephony/RatRatcheter.java b/src/java/com/android/internal/telephony/RatRatcheter.java
index b782bc8..d582af0 100644
--- a/src/java/com/android/internal/telephony/RatRatcheter.java
+++ b/src/java/com/android/internal/telephony/RatRatcheter.java
@@ -22,6 +22,7 @@
 import android.os.PersistableBundle;
 import android.os.UserHandle;
 import android.telephony.CarrierConfigManager;
+import android.telephony.ServiceState;
 import android.telephony.Rlog;
 import android.util.SparseArray;
 import android.util.SparseIntArray;
@@ -74,6 +75,19 @@
         }
     }
 
+    public void ratchetRat(ServiceState oldSS, ServiceState newSS) {
+        int newVoiceRat = ratchetRat(oldSS.getRilVoiceRadioTechnology(),
+                newSS.getRilVoiceRadioTechnology());
+        int newDataRat = ratchetRat(oldSS.getRilDataRadioTechnology(),
+                newSS.getRilDataRadioTechnology());
+        boolean newUsingCA = oldSS.isUsingCarrierAggregation() ||
+                newSS.isUsingCarrierAggregation();
+
+        newSS.setRilVoiceRadioTechnology(newVoiceRat);
+        newSS.setRilDataRadioTechnology(newDataRat);
+        newSS.setIsUsingCarrierAggregation(newUsingCA);
+    }
+
     private BroadcastReceiver mConfigChangedReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
diff --git a/src/java/com/android/internal/telephony/ServiceStateTracker.java b/src/java/com/android/internal/telephony/ServiceStateTracker.java
index 58d3f6f..a919af2 100644
--- a/src/java/com/android/internal/telephony/ServiceStateTracker.java
+++ b/src/java/com/android/internal/telephony/ServiceStateTracker.java
@@ -2549,10 +2549,7 @@
         // ratchet the new tech up through it's rat family but don't drop back down
         // until cell change
         if (hasLocationChanged == false) {
-            mNewSS.setRilVoiceRadioTechnology(mRatRatcheter.ratchetRat(
-                    mSS.getRilVoiceRadioTechnology(), mNewSS.getRilVoiceRadioTechnology()));
-            mNewSS.setRilDataRadioTechnology(mRatRatcheter.ratchetRat(
-                    mSS.getRilDataRadioTechnology(), mNewSS.getRilDataRadioTechnology()));
+            mRatRatcheter.ratchetRat(mSS, mNewSS);
         }
 
         boolean hasRilVoiceRadioTechnologyChanged =
@@ -2800,12 +2797,7 @@
         // ratchet the new tech up through it's rat family but don't drop back down
         // until cell change
         if (hasLocationChanged == false) {
-            mNewSS.setRilVoiceRadioTechnology(mRatRatcheter.ratchetRat(
-                    mSS.getRilVoiceRadioTechnology(),
-                    mNewSS.getRilVoiceRadioTechnology()));
-            mNewSS.setRilDataRadioTechnology(mRatRatcheter.ratchetRat(
-                    mSS.getRilDataRadioTechnology(),
-                    mNewSS.getRilDataRadioTechnology()));
+            mRatRatcheter.ratchetRat(mSS, mNewSS);
         }
 
         boolean hasRilVoiceRadioTechnologyChanged =
@@ -3006,12 +2998,7 @@
         // ratchet the new tech up through it's rat family but don't drop back down
         // until cell change
         if (hasLocationChanged == false) {
-            mNewSS.setRilVoiceRadioTechnology(mRatRatcheter.ratchetRat(
-                    mSS.getRilVoiceRadioTechnology(),
-                    mNewSS.getRilVoiceRadioTechnology()));
-            mNewSS.setRilDataRadioTechnology(mRatRatcheter.ratchetRat(
-                    mSS.getRilDataRadioTechnology(),
-                    mNewSS.getRilDataRadioTechnology()));
+            mRatRatcheter.ratchetRat(mSS, mNewSS);
         }
 
         boolean hasVoiceRadioTechnologyChanged = mSS.getRilVoiceRadioTechnology()