Merge "Import translations. DO NOT MERGE"
diff --git a/services/net/java/android/net/ip/IpManager.java b/services/net/java/android/net/ip/IpManager.java
index 9c9719f..06b6ee7 100644
--- a/services/net/java/android/net/ip/IpManager.java
+++ b/services/net/java/android/net/ip/IpManager.java
@@ -43,6 +43,7 @@
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
+import java.util.Objects;
/**
@@ -113,10 +114,9 @@
private static final int CMD_STOP = 1;
private static final int CMD_START = 2;
private static final int CMD_CONFIRM = 3;
- private static final int CMD_UPDATE_DHCPV4_RESULTS = 4;
- private static final int EVENT_PRE_DHCP_ACTION_COMPLETE = 5;
+ private static final int EVENT_PRE_DHCP_ACTION_COMPLETE = 4;
// Sent by NetlinkTracker to communicate netlink events.
- private static final int EVENT_NETLINK_LINKPROPERTIES_CHANGED = 6;
+ private static final int EVENT_NETLINK_LINKPROPERTIES_CHANGED = 5;
private static final int MAX_LOG_RECORDS = 1000;
@@ -285,6 +285,12 @@
return delta;
}
+ private boolean linkPropertiesUnchanged(LinkProperties newLp) {
+ synchronized (mLock) {
+ return Objects.equals(newLp, mLinkProperties);
+ }
+ }
+
private LinkProperties assembleLinkProperties() {
// [1] Create a new LinkProperties object to populate.
LinkProperties newLp = new LinkProperties();
@@ -343,6 +349,19 @@
}
}
+ private void handleIPv4Success(DhcpResults dhcpResults) {
+ mDhcpResults = new DhcpResults(dhcpResults);
+ setLinkProperties(assembleLinkProperties());
+ mCallback.onIPv4ProvisioningSuccess(dhcpResults);
+ }
+
+ private void handleIPv4Failure() {
+ clearIPv4Address();
+ mDhcpResults = null;
+ setLinkProperties(assembleLinkProperties());
+ mCallback.onIPv4ProvisioningFailure();
+ }
+
class StoppedState extends State {
@Override
public void enter() {
@@ -418,9 +437,9 @@
// handle the result accordingly.
if (mStaticIpConfig != null) {
if (applyStaticIpConfig()) {
- sendMessage(CMD_UPDATE_DHCPV4_RESULTS, new DhcpResults(mStaticIpConfig));
+ handleIPv4Success(new DhcpResults(mStaticIpConfig));
} else {
- sendMessage(CMD_UPDATE_DHCPV4_RESULTS);
+ handleIPv4Failure();
}
} else {
// Start DHCPv4.
@@ -465,21 +484,6 @@
}
break;
- case CMD_UPDATE_DHCPV4_RESULTS: {
- final DhcpResults dhcpResults = (DhcpResults) msg.obj;
- if (dhcpResults != null) {
- mDhcpResults = new DhcpResults(dhcpResults);
- setLinkProperties(assembleLinkProperties());
- mCallback.onIPv4ProvisioningSuccess(dhcpResults);
- } else {
- clearIPv4Address();
- mDhcpResults = null;
- setLinkProperties(assembleLinkProperties());
- mCallback.onIPv4ProvisioningFailure();
- }
- break;
- }
-
case EVENT_PRE_DHCP_ACTION_COMPLETE:
// It's possible to reach here if, for example, someone
// calls completedPreDhcpAction() after provisioning with
@@ -492,6 +496,9 @@
case EVENT_NETLINK_LINKPROPERTIES_CHANGED: {
final LinkProperties newLp = assembleLinkProperties();
+ if (linkPropertiesUnchanged(newLp)) {
+ break;
+ }
final ProvisioningChange delta = setLinkProperties(newLp);
// NOTE: The only receiver of these callbacks currently
@@ -527,15 +534,10 @@
final DhcpResults dhcpResults = (DhcpResults) msg.obj;
switch (msg.arg1) {
case DhcpStateMachine.DHCP_SUCCESS:
- mDhcpResults = new DhcpResults(dhcpResults);
- setLinkProperties(assembleLinkProperties());
- mCallback.onIPv4ProvisioningSuccess(dhcpResults);
+ handleIPv4Success(dhcpResults);
break;
case DhcpStateMachine.DHCP_FAILURE:
- clearIPv4Address();
- mDhcpResults = null;
- setLinkProperties(assembleLinkProperties());
- mCallback.onIPv4ProvisioningFailure();
+ handleIPv4Failure();
break;
default:
Log.e(TAG, "Unknown CMD_POST_DHCP_ACTION status:" + msg.arg1);