diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2017-09-21 23:34:01 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2017-09-21 23:34:01 +0000 |
commit | c68e577ba6981a1fa30d22edb320480047a1dd45 (patch) | |
tree | 88d21d42f54a8f390060453b15e43bd95b82e7c3 | |
parent | 878d86fe3c9240a3acbaa93927167b88d813a4f1 (diff) | |
parent | ecd351791654c61a4dab7ceca97b9bb6f1dd4568 (diff) | |
download | telephony-oreo-dr1-release.tar.gz |
Merge cherrypicks of [2937968, 2940489, 2939606, 2939607, 2940434, 2940435, 2940436, 2940437, 2940509, 2940510, 2940118, 2940119, 2940120, 2940121, 2940122, 2938726, 2938728, 2940550, 2940552, 2940554, 2940556, 2940511, 2940512, 2940513, 2940514, 2940515, 2940558, 2940649, 2940650, 2940441, 2940442, 2940559, 2940560, 2940561, 2940562, 2940563, 2940564, 2938336, 2940565, 2940566, 2940516, 2940443, 2940517, 2940444, 2940445] into oc-dr1-releaseandroid-8.0.0_r33android-8.0.0_r25oreo-dr1-release
Change-Id: Ic9c18ab2b479dda7c671dc19622a4b7d5f001de9
4 files changed, 66 insertions, 2 deletions
diff --git a/src/java/com/android/internal/telephony/GsmCdmaPhone.java b/src/java/com/android/internal/telephony/GsmCdmaPhone.java index d608c70dfb..4251567302 100644 --- a/src/java/com/android/internal/telephony/GsmCdmaPhone.java +++ b/src/java/com/android/internal/telephony/GsmCdmaPhone.java @@ -2060,6 +2060,7 @@ public class GsmCdmaPhone extends Phone { private void syncClirSetting() { SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getContext()); int clirSetting = sp.getInt(CLIR_KEY + getPhoneId(), -1); + Rlog.i(LOG_TAG, "syncClirSetting: " + CLIR_KEY + getPhoneId() + "=" + clirSetting); if (clirSetting >= 0) { mCi.setCLIR(clirSetting, null); } diff --git a/src/java/com/android/internal/telephony/Phone.java b/src/java/com/android/internal/telephony/Phone.java index 11c8e610a8..0238793b6b 100644 --- a/src/java/com/android/internal/telephony/Phone.java +++ b/src/java/com/android/internal/telephony/Phone.java @@ -1362,6 +1362,8 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getContext()); SharedPreferences.Editor editor = sp.edit(); editor.putInt(CLIR_KEY + getPhoneId(), commandInterfaceCLIRMode); + Rlog.i(LOG_TAG, "saveClirSetting: " + CLIR_KEY + getPhoneId() + "=" + + commandInterfaceCLIRMode); // Commit and log the result. if (!editor.commit()) { diff --git a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java index 3b29516749..c714eae522 100644 --- a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java +++ b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java @@ -113,6 +113,10 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { void onPhoneStateChanged(PhoneConstants.State oldState, PhoneConstants.State newState); } + public interface SharedPreferenceProxy { + SharedPreferences getDefaultSharedPreferences(Context context); + } + private static final boolean DBG = true; // When true, dumps the state of ImsPhoneCallTracker after changes to foreground and background @@ -598,6 +602,13 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { */ private boolean mShouldUpdateImsConfigOnDisconnect = false; + /** + * Default implementation for retrieving shared preferences; uses the actual PreferencesManager. + */ + private SharedPreferenceProxy mSharedPreferenceProxy = (Context context) -> { + return PreferenceManager.getDefaultSharedPreferences(context); + }; + // Callback fires when ImsManager MMTel Feature changes state private ImsServiceProxy.INotifyStatusChanged mNotifyStatusChangedCallback = () -> { try { @@ -678,6 +689,16 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { sendEmptyMessage(EVENT_GET_IMS_SERVICE); } + /** + * Test-only method used to mock out access to the shared preferences through the + * {@link PreferenceManager}. + * @param sharedPreferenceProxy + */ + @VisibleForTesting + public void setSharedPreferenceProxy(SharedPreferenceProxy sharedPreferenceProxy) { + mSharedPreferenceProxy = sharedPreferenceProxy; + } + private int getPackageUid(Context context, String pkg) { if (pkg == null) { return NetworkStats.UID_ALL; @@ -794,8 +815,16 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { public Connection dial(String dialString, int videoState, Bundle intentExtras) throws CallStateException { - SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(mPhone.getContext()); - int oirMode = sp.getInt(Phone.CLIR_KEY, CommandsInterface.CLIR_DEFAULT); + int oirMode; + if (mSharedPreferenceProxy != null && mPhone.getDefaultPhone() != null) { + SharedPreferences sp = mSharedPreferenceProxy.getDefaultSharedPreferences( + mPhone.getContext()); + oirMode = sp.getInt(Phone.CLIR_KEY + mPhone.getDefaultPhone().getPhoneId(), + CommandsInterface.CLIR_DEFAULT); + } else { + loge("dial; could not get default CLIR mode."); + oirMode = CommandsInterface.CLIR_DEFAULT; + } return dial(dialString, oirMode, videoState, intentExtras); } diff --git a/tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneCallTrackerTest.java b/tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneCallTrackerTest.java index db3f29fe2f..713467790e 100644 --- a/tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneCallTrackerTest.java +++ b/tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneCallTrackerTest.java @@ -37,11 +37,13 @@ import static org.mockito.Mockito.verify; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; import android.os.Message; import android.support.test.filters.FlakyTest; +import android.telecom.VideoProfile; import android.telephony.PhoneNumberUtils; import android.telephony.ims.feature.ImsFeature; import android.test.suitebuilder.annotation.SmallTest; @@ -56,6 +58,8 @@ import com.android.ims.ImsReasonInfo; import com.android.ims.ImsServiceClass; import com.android.ims.internal.ImsCallSession; import com.android.internal.telephony.Call; +import com.android.internal.telephony.CallStateException; +import com.android.internal.telephony.CommandsInterface; import com.android.internal.telephony.Connection; import com.android.internal.telephony.PhoneConstants; import com.android.internal.telephony.TelephonyTest; @@ -65,6 +69,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; +import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; @@ -80,6 +85,8 @@ public class ImsPhoneCallTrackerTest extends TelephonyTest { private int mServiceId; @Mock private ImsCallSession mImsCallSession; + @Mock + private SharedPreferences mSharedPreferences; private Handler mCTHander; private class ImsCTHandlerThread extends HandlerThread { @@ -347,6 +354,31 @@ public class ImsPhoneCallTrackerTest extends TelephonyTest { assertEquals(Call.State.HOLDING, mCTUT.mBackgroundCall.getState()); } + /** + * Ensures that the dial method will perform a shared preferences lookup using the correct + * shared preference key to determine the CLIR mode. + */ + @Test + @SmallTest + public void testDialClirMode() { + mCTUT.setSharedPreferenceProxy((Context context) -> { + return mSharedPreferences; + }); + ArgumentCaptor<String> mStringCaptor = ArgumentCaptor.forClass(String.class); + doReturn(CommandsInterface.CLIR_INVOCATION).when(mSharedPreferences).getInt( + mStringCaptor.capture(), anyInt()); + + try { + mCTUT.dial("+17005554141", VideoProfile.STATE_AUDIO_ONLY, null); + } catch (CallStateException cse) { + cse.printStackTrace(); + Assert.fail("unexpected exception thrown" + cse.getMessage()); + } + + // Ensure that the correct key was queried from the shared prefs. + assertEquals("clir_key0", mStringCaptor.getValue()); + } + @FlakyTest @Test @SmallTest |