package com.mopub.mobileads.test.support;
import android.telephony.TelephonyManager;
import org.robolectric.annotation.Implements;
import org.robolectric.shadows.ShadowTelephonyManager;
@Implements(TelephonyManager.class)
public class MoPubShadowTelephonyManager extends ShadowTelephonyManager {
private boolean mNeedsReadPhoneState;
private boolean mHasReadPhoneState;
public MoPubShadowTelephonyManager() {
mNeedsReadPhoneState = false;
mHasReadPhoneState = false;
}
/**
* Some Lenovo & other phones require READ_PHONE_STATE on getNetworkOperatorName().
*/
public void setNeedsReadPhoneState(boolean needsReadPhoneState) {
mNeedsReadPhoneState = needsReadPhoneState;
}
@Override
public void setReadPhoneStatePermission(final boolean readPhoneStatePermission) {
// Robolectric hides its checkReadPhoneState method so we need to hack our own.
mHasReadPhoneState = readPhoneStatePermission;
super.setReadPhoneStatePermission(readPhoneStatePermission);
}
@Override
public String getNetworkOperatorName() {
if (!mNeedsReadPhoneState || mHasReadPhoneState) {
return super.getNetworkOperatorName();
} else {
throw new SecurityException("READ_PHONE_STATE is required.");
}
}
}