package biz.bokhorst.xprivacy;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.List;
import android.net.LinkAddress;
import android.net.LinkProperties;
public class XLinkProperties extends XHook {
private Methods mMethod;
private XLinkProperties(Methods method, String restrictionName, String specifier) {
super(restrictionName, method.name(), "LinkProperties." + method.name());
mMethod = method;
}
public String getClassName() {
return "android.net.LinkProperties";
}
// public List<InetAddress> getAddresses()
// public List<InetAddress> getAllAddresses()
// public List<LinkAddress> getAllLinkAddresses()
// public List<LinkAddress> getLinkAddresses()
// public @NonNull List<LinkProperties> getStackedLinks()
// http://developer.android.com/reference/android/net/LinkProperties.html
// http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.0.0_r1/android/net/LinkProperties.java
private enum Methods {
getAddresses, getAllAddresses, getAllLinkAddresses, getLinkAddresses, getStackedLinks
};
public static List<XHook> getInstances() {
List<XHook> listHook = new ArrayList<XHook>();
for (Methods addr : Methods.values())
listHook.add(new XLinkProperties(addr, PrivacyManager.cInternet, null));
return listHook;
}
@Override
protected void before(XParam param) throws Throwable {
// Do nothing
}
@Override
protected void after(XParam param) throws Throwable {
switch (mMethod) {
case getAddresses:
case getAllAddresses:
if (param.getResult() != null)
if (isRestricted(param))
param.setResult(new ArrayList<InetAddress>());
break;
case getAllLinkAddresses:
case getLinkAddresses:
if (param.getResult() != null)
if (isRestricted(param))
param.setResult(new ArrayList<LinkAddress>());
break;
case getStackedLinks:
if (param.getResult() != null)
if (isRestricted(param))
param.setResult(new ArrayList<LinkProperties>());
break;
}
}
}