Fix public API of LinkProperties.

bug:15142362
Change-Id: I1457111da7d3bd09998f7e010febb8bb4c45c8bc
This commit is contained in:
Robert Greenwalt
2014-06-06 10:30:11 -07:00
parent 4a52c697d2
commit 69aceaf7f2
3 changed files with 74 additions and 57 deletions

View File

@@ -30,6 +30,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Hashtable;
import java.util.List;
/**
* Describes the properties of a network link.
@@ -58,10 +59,12 @@ public class LinkProperties implements Parcelable {
private Hashtable<String, LinkProperties> mStackedLinks =
new Hashtable<String, LinkProperties>();
// @hide
/**
* @hide
*/
public static class CompareResult<T> {
public Collection<T> removed = new ArrayList<T>();
public Collection<T> added = new ArrayList<T>();
public List<T> removed = new ArrayList<T>();
public List<T> added = new ArrayList<T>();
@Override
public String toString() {
@@ -81,7 +84,7 @@ public class LinkProperties implements Parcelable {
if (source != null) {
mIfaceName = source.getInterfaceName();
for (LinkAddress l : source.getLinkAddresses()) mLinkAddresses.add(l);
for (InetAddress i : source.getDnses()) mDnses.add(i);
for (InetAddress i : source.getDnsServers()) mDnses.add(i);
mDomains = source.getDomains();
for (RouteInfo r : source.getRoutes()) mRoutes.add(r);
mHttpProxy = (source.getHttpProxy() == null) ?
@@ -98,6 +101,7 @@ public class LinkProperties implements Parcelable {
* will have their interface changed to match this new value.
*
* @param iface The name of the network interface used for this link.
* @hide
*/
public void setInterfaceName(String iface) {
mIfaceName = iface;
@@ -117,9 +121,11 @@ public class LinkProperties implements Parcelable {
return mIfaceName;
}
// @hide
public Collection<String> getAllInterfaceNames() {
Collection interfaceNames = new ArrayList<String>(mStackedLinks.size() + 1);
/**
* @hide
*/
public List<String> getAllInterfaceNames() {
List<String> interfaceNames = new ArrayList<String>(mStackedLinks.size() + 1);
if (mIfaceName != null) interfaceNames.add(new String(mIfaceName));
for (LinkProperties stacked: mStackedLinks.values()) {
interfaceNames.addAll(stacked.getAllInterfaceNames());
@@ -134,23 +140,23 @@ public class LinkProperties implements Parcelable {
* prefix lengths for each address. This is a simplified utility alternative to
* {@link LinkProperties#getLinkAddresses}.
*
* @return An umodifiable {@link Collection} of {@link InetAddress} for this link.
* @return An umodifiable {@link List} of {@link InetAddress} for this link.
* @hide
*/
public Collection<InetAddress> getAddresses() {
Collection<InetAddress> addresses = new ArrayList<InetAddress>();
public List<InetAddress> getAddresses() {
List<InetAddress> addresses = new ArrayList<InetAddress>();
for (LinkAddress linkAddress : mLinkAddresses) {
addresses.add(linkAddress.getAddress());
}
return Collections.unmodifiableCollection(addresses);
return Collections.unmodifiableList(addresses);
}
/**
* Returns all the addresses on this link and all the links stacked above it.
* @hide
*/
public Collection<InetAddress> getAllAddresses() {
Collection<InetAddress> addresses = new ArrayList<InetAddress>();
public List<InetAddress> getAllAddresses() {
List<InetAddress> addresses = new ArrayList<InetAddress>();
for (LinkAddress linkAddress : mLinkAddresses) {
addresses.add(linkAddress.getAddress());
}
@@ -174,6 +180,7 @@ public class LinkProperties implements Parcelable {
* same address/prefix does not already exist. If it does exist it is replaced.
* @param address The {@code LinkAddress} to add.
* @return true if {@code address} was added or updated, false otherwise.
* @hide
*/
public boolean addLinkAddress(LinkAddress address) {
if (address == null) {
@@ -200,6 +207,7 @@ public class LinkProperties implements Parcelable {
*
* @param toRemove A {@link LinkAddress} specifying the address to remove.
* @return true if the address was removed, false if it did not exist.
* @hide
*/
public boolean removeLinkAddress(LinkAddress toRemove) {
int i = findLinkAddressIndex(toRemove);
@@ -214,18 +222,18 @@ public class LinkProperties implements Parcelable {
* Returns all the {@link LinkAddress} on this link. Typically a link will have
* one IPv4 address and one or more IPv6 addresses.
*
* @return An unmodifiable {@link Collection} of {@link LinkAddress} for this link.
* @return An unmodifiable {@link List} of {@link LinkAddress} for this link.
*/
public Collection<LinkAddress> getLinkAddresses() {
return Collections.unmodifiableCollection(mLinkAddresses);
public List<LinkAddress> getLinkAddresses() {
return Collections.unmodifiableList(mLinkAddresses);
}
/**
* Returns all the addresses on this link and all the links stacked above it.
* @hide
*/
public Collection<LinkAddress> getAllLinkAddresses() {
Collection<LinkAddress> addresses = new ArrayList<LinkAddress>();
public List<LinkAddress> getAllLinkAddresses() {
List<LinkAddress> addresses = new ArrayList<LinkAddress>();
addresses.addAll(mLinkAddresses);
for (LinkProperties stacked: mStackedLinks.values()) {
addresses.addAll(stacked.getAllLinkAddresses());
@@ -239,6 +247,7 @@ public class LinkProperties implements Parcelable {
*
* @param addresses The {@link Collection} of {@link LinkAddress} to set in this
* object.
* @hide
*/
public void setLinkAddresses(Collection<LinkAddress> addresses) {
mLinkAddresses.clear();
@@ -250,20 +259,21 @@ public class LinkProperties implements Parcelable {
/**
* Adds the given {@link InetAddress} to the list of DNS servers.
*
* @param dns The {@link InetAddress} to add to the list of DNS servers.
* @param dnsServer The {@link InetAddress} to add to the list of DNS servers.
* @hide
*/
public void addDns(InetAddress dns) {
if (dns != null) mDnses.add(dns);
public void addDnsServer(InetAddress dnsServer) {
if (dnsServer != null) mDnses.add(dnsServer);
}
/**
* Returns all the {@link LinkAddress} for DNS servers on this link.
*
* @return An umodifiable {@link Collection} of {@link InetAddress} for DNS servers on
* @return An umodifiable {@link List} of {@link InetAddress} for DNS servers on
* this link.
*/
public Collection<InetAddress> getDnses() {
return Collections.unmodifiableCollection(mDnses);
public List<InetAddress> getDnsServers() {
return Collections.unmodifiableList(mDnses);
}
/**
@@ -271,6 +281,7 @@ public class LinkProperties implements Parcelable {
*
* @param domains A {@link String} listing in priority order the comma separated
* domains to search when resolving host names on this link.
* @hide
*/
public void setDomains(String domains) {
mDomains = domains;
@@ -323,6 +334,7 @@ public class LinkProperties implements Parcelable {
* proper course is to add either un-named or properly named {@link RouteInfo}.
*
* @param route A {@link RouteInfo} to add to this object.
* @hide
*/
public void addRoute(RouteInfo route) {
if (route != null) {
@@ -339,18 +351,18 @@ public class LinkProperties implements Parcelable {
/**
* Returns all the {@link RouteInfo} set on this link.
*
* @return An unmodifiable {@link Collection} of {@link RouteInfo} for this link.
* @return An unmodifiable {@link List} of {@link RouteInfo} for this link.
*/
public Collection<RouteInfo> getRoutes() {
return Collections.unmodifiableCollection(mRoutes);
public List<RouteInfo> getRoutes() {
return Collections.unmodifiableList(mRoutes);
}
/**
* Returns all the routes on this link and all the links stacked above it.
* @hide
*/
public Collection<RouteInfo> getAllRoutes() {
Collection<RouteInfo> routes = new ArrayList();
public List<RouteInfo> getAllRoutes() {
List<RouteInfo> routes = new ArrayList();
routes.addAll(mRoutes);
for (LinkProperties stacked: mStackedLinks.values()) {
routes.addAll(stacked.getAllRoutes());
@@ -364,6 +376,7 @@ public class LinkProperties implements Parcelable {
* not enforce it and applications may ignore them.
*
* @param proxy A {@link ProxyInfo} defining the Http Proxy to use on this link.
* @hide
*/
public void setHttpProxy(ProxyInfo proxy) {
mHttpProxy = proxy;
@@ -419,16 +432,17 @@ public class LinkProperties implements Parcelable {
* Returns all the links stacked on top of this link.
* @hide
*/
public Collection<LinkProperties> getStackedLinks() {
Collection<LinkProperties> stacked = new ArrayList<LinkProperties>();
public List<LinkProperties> getStackedLinks() {
List<LinkProperties> stacked = new ArrayList<LinkProperties>();
for (LinkProperties link : mStackedLinks.values()) {
stacked.add(new LinkProperties(link));
}
return Collections.unmodifiableCollection(stacked);
return Collections.unmodifiableList(stacked);
}
/**
* Clears this object to its initial state.
* @hide
*/
public void clear() {
mIfaceName = null;
@@ -486,6 +500,7 @@ public class LinkProperties implements Parcelable {
* Returns true if this link has an IPv4 address.
*
* @return {@code true} if there is an IPv4 address, {@code false} otherwise.
* @hide
*/
public boolean hasIPv4Address() {
for (LinkAddress address : mLinkAddresses) {
@@ -500,6 +515,7 @@ public class LinkProperties implements Parcelable {
* Returns true if this link has an IPv6 address.
*
* @return {@code true} if there is an IPv6 address, {@code false} otherwise.
* @hide
*/
public boolean hasIPv6Address() {
for (LinkAddress address : mLinkAddresses) {
@@ -543,7 +559,7 @@ public class LinkProperties implements Parcelable {
* @hide
*/
public boolean isIdenticalDnses(LinkProperties target) {
Collection<InetAddress> targetDnses = target.getDnses();
Collection<InetAddress> targetDnses = target.getDnsServers();
String targetDomains = target.getDomains();
if (mDomains == null) {
if (targetDomains != null) return false;
@@ -696,7 +712,7 @@ public class LinkProperties implements Parcelable {
result.removed = new ArrayList<InetAddress>(mDnses);
result.added.clear();
if (target != null) {
for (InetAddress newAddress : target.getDnses()) {
for (InetAddress newAddress : target.getDnsServers()) {
if (! result.removed.remove(newAddress)) {
result.added.add(newAddress);
}
@@ -831,7 +847,7 @@ public class LinkProperties implements Parcelable {
addressCount = in.readInt();
for (int i=0; i<addressCount; i++) {
try {
netProp.addDns(InetAddress.getByAddress(in.createByteArray()));
netProp.addDnsServer(InetAddress.getByAddress(in.createByteArray()));
} catch (UnknownHostException e) { }
}
netProp.setDomains(in.readString());

View File

@@ -88,8 +88,8 @@ public class LinkPropertiesTest extends TestCase {
source.addLinkAddress(LINKADDRV4);
source.addLinkAddress(LINKADDRV6);
// set 2 dnses
source.addDns(DNS1);
source.addDns(DNS2);
source.addDnsServer(DNS1);
source.addDnsServer(DNS2);
// set 2 gateways
source.addRoute(new RouteInfo(GATEWAY1));
source.addRoute(new RouteInfo(GATEWAY2));
@@ -101,8 +101,8 @@ public class LinkPropertiesTest extends TestCase {
target.setInterfaceName(NAME);
target.addLinkAddress(LINKADDRV4);
target.addLinkAddress(LINKADDRV6);
target.addDns(DNS1);
target.addDns(DNS2);
target.addDnsServer(DNS1);
target.addDnsServer(DNS2);
target.addRoute(new RouteInfo(GATEWAY1));
target.addRoute(new RouteInfo(GATEWAY2));
target.setMtu(MTU);
@@ -114,8 +114,8 @@ public class LinkPropertiesTest extends TestCase {
target.setInterfaceName("qmi1");
target.addLinkAddress(LINKADDRV4);
target.addLinkAddress(LINKADDRV6);
target.addDns(DNS1);
target.addDns(DNS2);
target.addDnsServer(DNS1);
target.addDnsServer(DNS2);
target.addRoute(new RouteInfo(GATEWAY1));
target.addRoute(new RouteInfo(GATEWAY2));
target.setMtu(MTU);
@@ -127,8 +127,8 @@ public class LinkPropertiesTest extends TestCase {
target.addLinkAddress(new LinkAddress(
NetworkUtils.numericToInetAddress("75.208.6.2"), 32));
target.addLinkAddress(LINKADDRV6);
target.addDns(DNS1);
target.addDns(DNS2);
target.addDnsServer(DNS1);
target.addDnsServer(DNS2);
target.addRoute(new RouteInfo(GATEWAY1));
target.addRoute(new RouteInfo(GATEWAY2));
target.setMtu(MTU);
@@ -139,8 +139,8 @@ public class LinkPropertiesTest extends TestCase {
target.addLinkAddress(LINKADDRV4);
target.addLinkAddress(LINKADDRV6);
// change dnses
target.addDns(NetworkUtils.numericToInetAddress("75.208.7.2"));
target.addDns(DNS2);
target.addDnsServer(NetworkUtils.numericToInetAddress("75.208.7.2"));
target.addDnsServer(DNS2);
target.addRoute(new RouteInfo(GATEWAY1));
target.addRoute(new RouteInfo(GATEWAY2));
target.setMtu(MTU);
@@ -150,8 +150,8 @@ public class LinkPropertiesTest extends TestCase {
target.setInterfaceName(NAME);
target.addLinkAddress(LINKADDRV4);
target.addLinkAddress(LINKADDRV6);
target.addDns(DNS1);
target.addDns(DNS2);
target.addDnsServer(DNS1);
target.addDnsServer(DNS2);
// change gateway
target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress("75.208.8.2")));
target.addRoute(new RouteInfo(GATEWAY2));
@@ -162,8 +162,8 @@ public class LinkPropertiesTest extends TestCase {
target.setInterfaceName(NAME);
target.addLinkAddress(LINKADDRV4);
target.addLinkAddress(LINKADDRV6);
target.addDns(DNS1);
target.addDns(DNS2);
target.addDnsServer(DNS1);
target.addDnsServer(DNS2);
target.addRoute(new RouteInfo(GATEWAY1));
target.addRoute(new RouteInfo(GATEWAY2));
// change mtu
@@ -185,8 +185,8 @@ public class LinkPropertiesTest extends TestCase {
source.addLinkAddress(LINKADDRV4);
source.addLinkAddress(LINKADDRV6);
// set 2 dnses
source.addDns(DNS1);
source.addDns(DNS2);
source.addDnsServer(DNS1);
source.addDnsServer(DNS2);
// set 2 gateways
source.addRoute(new RouteInfo(GATEWAY1));
source.addRoute(new RouteInfo(GATEWAY2));
@@ -197,8 +197,8 @@ public class LinkPropertiesTest extends TestCase {
target.setInterfaceName(NAME);
target.addLinkAddress(LINKADDRV6);
target.addLinkAddress(LINKADDRV4);
target.addDns(DNS2);
target.addDns(DNS1);
target.addDnsServer(DNS2);
target.addDnsServer(DNS1);
target.addRoute(new RouteInfo(GATEWAY2));
target.addRoute(new RouteInfo(GATEWAY1));
target.setMtu(MTU);

View File

@@ -2691,7 +2691,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
dnsDiff = curLp.compareDnses(newLp);
} else if (newLp != null) {
routeDiff.added = newLp.getAllRoutes();
dnsDiff.added = newLp.getDnses();
dnsDiff.added = newLp.getDnsServers();
}
boolean routesChanged = (routeDiff.removed.size() != 0 || routeDiff.added.size() != 0);
@@ -2915,7 +2915,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
if (nt != null && nt.getNetworkInfo().isConnected() && !nt.isTeardownRequested()) {
LinkProperties p = nt.getLinkProperties();
if (p == null) return;
Collection<InetAddress> dnses = p.getDnses();
Collection<InetAddress> dnses = p.getDnsServers();
int netId = nt.getNetwork().netId;
if (mNetConfigs[netType].isDefault()) {
String network = nt.getNetworkInfo().getTypeName();
@@ -5625,7 +5625,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
}
private void updateDnses(LinkProperties newLp, LinkProperties oldLp, int netId) {
if (oldLp == null || (newLp.isIdenticalDnses(oldLp) == false)) {
Collection<InetAddress> dnses = newLp.getDnses();
Collection<InetAddress> dnses = newLp.getDnsServers();
if (dnses.size() == 0 && mDefaultDns != null) {
dnses = new ArrayList();
dnses.add(mDefaultDns);
@@ -5790,7 +5790,8 @@ public class ConnectivityService extends IConnectivityManager.Stub {
isNewDefault = true;
updateActiveDefaultNetwork(newNetwork);
if (newNetwork.linkProperties != null) {
setDefaultDnsSystemProperties(newNetwork.linkProperties.getDnses());
setDefaultDnsSystemProperties(
newNetwork.linkProperties.getDnsServers());
} else {
setDefaultDnsSystemProperties(new ArrayList<InetAddress>());
}