Fixed the incorrect APN dedupling

Fixed that APN settings can't be merged when one APN
entry has MTU set, but the other doesn't. Also default
MTU unset value to 0 for backwards compatability.

Test: atest DataProfileManagerTest & Manual testing
Fix: 226563054
Change-Id: I02190be62855f5f3b86c41677bbf7ff6a362e652
This commit is contained in:
Jack Yu
2022-04-25 18:24:04 -07:00
parent 75fb4d3021
commit 1d470caabb

View File

@@ -1293,8 +1293,8 @@ public class ApnSetting implements Parcelable {
&& Objects.equals(this.mOperatorNumeric, other.mOperatorNumeric) && Objects.equals(this.mOperatorNumeric, other.mOperatorNumeric)
&& Objects.equals(this.mProtocol, other.mProtocol) && Objects.equals(this.mProtocol, other.mProtocol)
&& Objects.equals(this.mRoamingProtocol, other.mRoamingProtocol) && Objects.equals(this.mRoamingProtocol, other.mRoamingProtocol)
&& xorEqualsInt(this.mMtuV4, other.mMtuV4) && mtuUnsetOrEquals(this.mMtuV4, other.mMtuV4)
&& xorEqualsInt(this.mMtuV6, other.mMtuV6) && mtuUnsetOrEquals(this.mMtuV6, other.mMtuV6)
&& Objects.equals(this.mCarrierEnabled, other.mCarrierEnabled) && Objects.equals(this.mCarrierEnabled, other.mCarrierEnabled)
&& Objects.equals(this.mNetworkTypeBitmask, other.mNetworkTypeBitmask) && Objects.equals(this.mNetworkTypeBitmask, other.mNetworkTypeBitmask)
&& Objects.equals(this.mLingeringNetworkTypeBitmask, && Objects.equals(this.mLingeringNetworkTypeBitmask,
@@ -1322,7 +1322,12 @@ public class ApnSetting implements Parcelable {
// Equal or one is not specified. // Equal or one is not specified.
private boolean xorEqualsInt(int first, int second) { private boolean xorEqualsInt(int first, int second) {
return first == UNSPECIFIED_INT || second == UNSPECIFIED_INT return first == UNSPECIFIED_INT || second == UNSPECIFIED_INT
|| Objects.equals(first, second); || first == second;
}
// Equal or one is not specified. Specific to MTU where <= 0 indicates unset.
private boolean mtuUnsetOrEquals(int first, int second) {
return first <= 0 || second <= 0 || first == second;
} }
private String nullToEmpty(String stringValue) { private String nullToEmpty(String stringValue) {