1 /* 2 * Copyright (C) 2018 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.telephony.ims; 18 19 import android.os.Message; 20 import android.os.RemoteException; 21 import android.telephony.ims.feature.CapabilityChangeRequest; 22 import android.telephony.ims.feature.ImsFeature; 23 import android.telephony.ims.feature.MmTelFeature; 24 import android.telephony.ims.stub.ImsCallSessionImplBase; 25 import android.telephony.ims.stub.ImsEcbmImplBase; 26 import android.telephony.ims.stub.ImsMultiEndpointImplBase; 27 import android.telephony.ims.stub.ImsRegistrationImplBase; 28 import android.telephony.ims.stub.ImsUtImplBase; 29 30 public class TestMmTelFeature extends MmTelFeature { 31 32 public boolean queryConfigurationResult = false; 33 public int setCapabilitiesResult = ImsFeature.CAPABILITY_SUCCESS; 34 public CapabilityChangeRequest lastRequest; 35 public boolean isUtInterfaceCalled = false; 36 37 private final TestImsCallSession mCallSession = new TestImsCallSession(); 38 private class TestImsCallSession extends ImsCallSessionImplBase { 39 40 @Override sendDtmf(char c, Message result)41 public void sendDtmf(char c, Message result) { 42 // Just call result to signify complete for test. 43 if (result.replyTo != null) { 44 try { 45 result.replyTo.send(result); 46 } catch (RemoteException e) { 47 // eat error, test will fail. 48 } 49 } 50 } 51 } 52 incomingCall(ImsCallSessionImplBase c)53 public void incomingCall(ImsCallSessionImplBase c) throws RemoteException { 54 notifyIncomingCall(c, null); 55 } 56 57 @Override createCallProfile(int callSessionType, int callType)58 public ImsCallProfile createCallProfile(int callSessionType, int callType) { 59 return super.createCallProfile(callSessionType, callType); 60 } 61 62 @Override createCallSession(ImsCallProfile profile)63 public ImsCallSessionImplBase createCallSession(ImsCallProfile profile) { 64 return mCallSession; 65 } 66 67 @Override getUt()68 public ImsUtImplBase getUt() { 69 isUtInterfaceCalled = true; 70 return super.getUt(); 71 } 72 73 @Override getEcbm()74 public ImsEcbmImplBase getEcbm() { 75 return super.getEcbm(); 76 } 77 78 @Override getMultiEndpoint()79 public ImsMultiEndpointImplBase getMultiEndpoint() { 80 return super.getMultiEndpoint(); 81 } 82 83 @Override setUiTtyMode(int mode, Message onCompleteMessage)84 public void setUiTtyMode(int mode, Message onCompleteMessage) { 85 try { 86 // just send complete message. 87 onCompleteMessage.replyTo.send(onCompleteMessage); 88 } catch (RemoteException e) { 89 // do nothing, test will fail. 90 } 91 } 92 93 @Override queryCapabilityConfiguration(@mTelCapabilities.MmTelCapability int capability, @ImsRegistrationImplBase.ImsRegistrationTech int radioTech)94 public boolean queryCapabilityConfiguration(@MmTelCapabilities.MmTelCapability int capability, 95 @ImsRegistrationImplBase.ImsRegistrationTech int radioTech) { 96 // Base implementation - Override to provide functionality 97 return queryConfigurationResult; 98 } 99 100 @Override changeEnabledCapabilities(CapabilityChangeRequest request, CapabilityCallbackProxy c)101 public void changeEnabledCapabilities(CapabilityChangeRequest request, 102 CapabilityCallbackProxy c) { 103 lastRequest = request; 104 if (setCapabilitiesResult != ImsFeature.CAPABILITY_SUCCESS) { 105 // Take the first value to enable and return it as an error. 106 CapabilityChangeRequest.CapabilityPair capPair = request.getCapabilitiesToEnable() 107 .get(0); 108 c.onChangeCapabilityConfigurationError(capPair.getCapability(), capPair.getRadioTech(), 109 ImsFeature.CAPABILITY_ERROR_GENERIC); 110 } 111 } 112 sendSetFeatureState(int state)113 public void sendSetFeatureState(int state) { 114 setFeatureState(state); 115 } 116 117 @Override onFeatureRemoved()118 public void onFeatureRemoved() { 119 } 120 121 @Override onFeatureReady()122 public void onFeatureReady() { 123 } 124 } 125