Offset 36, 15 lines modifiedOffset 36, 14 lines modified
36 import·android.net.CaptivePortalData$Builder;36 import·android.net.CaptivePortalData$Builder;
37 import·java.io.Serializable;37 import·java.io.Serializable;
38 import·android.net.metrics.IpConnectivityLog$Event;38 import·android.net.metrics.IpConnectivityLog$Event;
39 import·android.net.metrics.NetworkEvent;39 import·android.net.metrics.NetworkEvent;
40 import·android.net.RouteInfo$RouteKey;40 import·android.net.RouteInfo$RouteKey;
41 import·java.util.function.ToIntFunction;41 import·java.util.function.ToIntFunction;
42 import·java.util.Comparator;42 import·java.util.Comparator;
43 import·android.content.pm.PackageManager$NameNotFoundException; 
44 import·com.android.server.connectivity.NetworkRanker$Scoreable;43 import·com.android.server.connectivity.NetworkRanker$Scoreable;
45 import·java.util.Arrays;44 import·java.util.Arrays;
46 import·android.net.NetworkInfo$State;45 import·android.net.NetworkInfo$State;
47 import·com.android.connectivity.android.net.UidRangeParcel;46 import·com.android.connectivity.android.net.UidRangeParcel;
48 import·com.android.connectivity.android.net.netd.aidl.NativeUidRangeConfig;47 import·com.android.connectivity.android.net.netd.aidl.NativeUidRangeConfig;
49 import·android.os.IBinder$DeathRecipient;48 import·android.os.IBinder$DeathRecipient;
50 import·android.net.ConnectivityDiagnosticsManager$ConnectivityReport;49 import·android.net.ConnectivityDiagnosticsManager$ConnectivityReport;
Offset 53, 17 lines modifiedOffset 52, 18 lines modified
53 import·android.net.ConnectivitySettingsManager;52 import·android.net.ConnectivitySettingsManager;
54 import·android.net.ConnectivityDiagnosticsManager$DataStallReport;53 import·android.net.ConnectivityDiagnosticsManager$DataStallReport;
55 import·android.net.Uri;54 import·android.net.Uri;
56 import·android.net.TransportInfo;55 import·android.net.TransportInfo;
57 import·android.net.VpnTransportInfo;56 import·android.net.VpnTransportInfo;
58 import·java.util.TreeSet;57 import·java.util.TreeSet;
59 import·android.content.ComponentName;58 import·android.content.ComponentName;
60 import·android.content.pm.PackageManager; 
61 import·com.android.connectivity.android.net.IDnsResolver$Stub;59 import·com.android.connectivity.android.net.IDnsResolver$Stub;
62 import·android.net.DnsResolverServiceManager;60 import·android.net.DnsResolverServiceManager;
 61 import·android.content.pm.PackageManager;
 62 import·android.content.pm.PackageManager$NameNotFoundException;
63 import·android.net.NetworkSpecifier;63 import·android.net.NetworkSpecifier;
64 import·android.net.MatchAllNetworkSpecifier;64 import·android.net.MatchAllNetworkSpecifier;
65 import·com.android.server.connectivity.NetworkDiagnostics;65 import·com.android.server.connectivity.NetworkDiagnostics;
66 import·android.os.SystemClock;66 import·android.os.SystemClock;
67 import·java.util.ConcurrentModificationException;67 import·java.util.ConcurrentModificationException;
68 import·java.io.Writer;68 import·java.io.Writer;
69 import·com.android.connectivity.com.android.internal.util.IndentingPrintWriter;69 import·com.android.connectivity.com.android.internal.util.IndentingPrintWriter;
Offset 77, 14 lines modifiedOffset 77, 15 lines modified
77 import·android.net.ConnectivityManager;77 import·android.net.ConnectivityManager;
78 import·android.os.Parcelable;78 import·android.os.Parcelable;
79 import·android.os.Bundle;79 import·android.os.Bundle;
80 import·java.util.Iterator;80 import·java.util.Iterator;
81 import·java.util.Collection;81 import·java.util.Collection;
82 import·android.net.RouteInfo;82 import·android.net.RouteInfo;
83 import·java.net.InetAddress;83 import·java.net.InetAddress;
 84 import·android.os.PersistableBundle;
84 import·android.net.IConnectivityDiagnosticsCallback;85 import·android.net.IConnectivityDiagnosticsCallback;
85 import·com.android.server.connectivity.ProfileNetworkPreferences$Preference;86 import·com.android.server.connectivity.ProfileNetworkPreferences$Preference;
86 import·android.net.IOnCompleteListener;87 import·android.net.IOnCompleteListener;
87 import·android.net.UidRange;88 import·android.net.UidRange;
88 import·com.android.server.connectivity.DnsManager$PrivateDnsValidationUpdate;89 import·com.android.server.connectivity.DnsManager$PrivateDnsValidationUpdate;
89 import·java.io.PrintWriter;90 import·java.io.PrintWriter;
90 import·java.io.FileDescriptor;91 import·java.io.FileDescriptor;
Offset 96, 15 lines modifiedOffset 97, 14 lines modified
96 import·android.net.ProxyInfo;97 import·android.net.ProxyInfo;
97 import·com.android.connectivity.android.net.DataStallReportParcelable;98 import·com.android.connectivity.android.net.DataStallReportParcelable;
98 import·android.os.Message;99 import·android.os.Message;
99 import·android.net.CaptivePortalData;100 import·android.net.CaptivePortalData;
100 import·com.android.connectivity.android.net.shared.PrivateDnsConfig;101 import·com.android.connectivity.android.net.shared.PrivateDnsConfig;
101 import·com.android.server.connectivity.NetworkNotificationManager$NotificationType;102 import·com.android.server.connectivity.NetworkNotificationManager$NotificationType;
102 import·android.net.NetworkScore;103 import·android.net.NetworkScore;
103 import·android.os.PersistableBundle; 
104 import·android.content.ContentResolver;104 import·android.content.ContentResolver;
105 import·android.net.INetworkAgent;105 import·android.net.INetworkAgent;
106 import·android.net.NetworkAgentConfig;106 import·android.net.NetworkAgentConfig;
107 import·android.net.NetworkScore$Builder;107 import·android.net.NetworkScore$Builder;
108 import·android.net.NetworkCapabilities;108 import·android.net.NetworkCapabilities;
109 import·android.net.LinkProperties;109 import·android.net.LinkProperties;
110 import·android.net.NetworkInfo;110 import·android.net.NetworkInfo;
Offset 203, 15 lines modifiedOffset 203, 15 lines modified
203 ····private·static·final·int·EVENT_REGISTER_NETWORK_OFFER·=·52;203 ····private·static·final·int·EVENT_REGISTER_NETWORK_OFFER·=·52;
204 ····private·static·final·int·EVENT_REGISTER_NETWORK_PROVIDER·=·17;204 ····private·static·final·int·EVENT_REGISTER_NETWORK_PROVIDER·=·17;
205 ····private·static·final·int·EVENT_REGISTER_NETWORK_REQUEST·=·19;205 ····private·static·final·int·EVENT_REGISTER_NETWORK_REQUEST·=·19;
206 ····private·static·final·int·EVENT_REGISTER_NETWORK_REQUEST_WITH_INTENT·=·26;206 ····private·static·final·int·EVENT_REGISTER_NETWORK_REQUEST_WITH_INTENT·=·26;
207 ····private·static·final·int·EVENT_RELEASE_NETWORK_REQUEST·=·22;207 ····private·static·final·int·EVENT_RELEASE_NETWORK_REQUEST·=·22;
208 ····private·static·final·int·EVENT_RELEASE_NETWORK_REQUEST_WITH_INTENT·=·27;208 ····private·static·final·int·EVENT_RELEASE_NETWORK_REQUEST_WITH_INTENT·=·27;
209 ····private·static·final·int·EVENT_REPORT_NETWORK_ACTIVITY·=·49;209 ····private·static·final·int·EVENT_REPORT_NETWORK_ACTIVITY·=·49;
210 ····private·static·final·int·EVENT_REPORT_NETWORK_CONNECTIVITY·=·36;210 ····private·static·final·int·EVENT_REVALIDATE_NETWORK·=·36;
211 ····private·static·final·int·EVENT_SET_ACCEPT_PARTIAL_CONNECTIVITY·=·44;211 ····private·static·final·int·EVENT_SET_ACCEPT_PARTIAL_CONNECTIVITY·=·44;
212 ····private·static·final·int·EVENT_SET_ACCEPT_UNVALIDATED·=·28;212 ····private·static·final·int·EVENT_SET_ACCEPT_UNVALIDATED·=·28;
213 ····private·static·final·int·EVENT_SET_AVOID_UNVALIDATED·=·35;213 ····private·static·final·int·EVENT_SET_AVOID_UNVALIDATED·=·35;
214 ····private·static·final·int·EVENT_SET_OEM_NETWORK_PREFERENCE·=·48;214 ····private·static·final·int·EVENT_SET_OEM_NETWORK_PREFERENCE·=·48;
215 ····private·static·final·int·EVENT_SET_PROFILE_NETWORK_PREFERENCE·=·50;215 ····private·static·final·int·EVENT_SET_PROFILE_NETWORK_PREFERENCE·=·50;
216 ····private·static·final·int·EVENT_SET_REQUIRE_VPN_FOR_UIDS·=·47;216 ····private·static·final·int·EVENT_SET_REQUIRE_VPN_FOR_UIDS·=·47;
217 ····private·static·final·int·EVENT_SET_TEST_ALLOW_BAD_WIFI_UNTIL·=·55;217 ····private·static·final·int·EVENT_SET_TEST_ALLOW_BAD_WIFI_UNTIL·=·55;
Offset 226, 22 lines modifiedOffset 226, 22 lines modified
226 ····static·final·int·MAX_NETWORK_REQUESTS_PER_UID·=·100;226 ····static·final·int·MAX_NETWORK_REQUESTS_PER_UID·=·100;
227 ····private·static·final·int·MAX_NETWORK_REQUEST_LOGS·=·20;227 ····private·static·final·int·MAX_NETWORK_REQUEST_LOGS·=·20;
228 ····private·static·final·int·MAX_OEM_NETWORK_PREFERENCE_LOGS·=·20;228 ····private·static·final·int·MAX_OEM_NETWORK_PREFERENCE_LOGS·=·20;
229 ····private·static·final·long·MAX_TEST_ALLOW_BAD_WIFI_UNTIL_MS·=·300000L;229 ····private·static·final·long·MAX_TEST_ALLOW_BAD_WIFI_UNTIL_MS·=·300000L;
230 ····private·static·final·int·MAX_WAKELOCK_LOGS·=·20;230 ····private·static·final·int·MAX_WAKELOCK_LOGS·=·20;
231 ····private·static·final·String·NETWORK_ARG·=·"networks";231 ····private·static·final·String·NETWORK_ARG·=·"networks";
232 ····private·static·final·String·NETWORK_RESTORE_DELAY_PROP_NAME·=·"android.telephony.apn-restore";232 ····private·static·final·String·NETWORK_RESTORE_DELAY_PROP_NAME·=·"android.telephony.apn-restore";
233 ····static·final·int·PREFERENCE_ORDER_DEFAULT·=·1000;233 ····static·final·int·PREFERENCE_PRIORITY_DEFAULT·=·1000;
234 ····static·final·int·PREFERENCE_ORDER_INVALID·=·Integer.MAX_VALUE;234 ····static·final·int·PREFERENCE_PRIORITY_INVALID·=·Integer.MAX_VALUE;
235 ····static·final·int·PREFERENCE_ORDER_LOWEST·=·999;235 ····static·final·int·PREFERENCE_PRIORITY_LOWEST·=·999;
236 ····static·final·int·PREFERENCE_ORDER_MOBILE_DATA_PREFERERRED·=·30;236 ····static·final·int·PREFERENCE_PRIORITY_MOBILE_DATA_PREFERERRED·=·30;
237 ····static·final·int·PREFERENCE_ORDER_NONE·=·0;237 ····static·final·int·PREFERENCE_PRIORITY_NONE·=·0;
238 ····static·final·int·PREFERENCE_ORDER_OEM·=·10;238 ····static·final·int·PREFERENCE_PRIORITY_OEM·=·10;
239 ····static·final·int·PREFERENCE_ORDER_PROFILE·=·20;239 ····static·final·int·PREFERENCE_PRIORITY_PROFILE·=·20;
240 ····static·final·int·PREFERENCE_ORDER_VPN·=·0;240 ····static·final·int·PREFERENCE_PRIORITY_VPN·=·0;
241 ····private·static·final·int·PROMPT_UNVALIDATED_DELAY_MS·=·8000;241 ····private·static·final·int·PROMPT_UNVALIDATED_DELAY_MS·=·8000;
242 ····private·static·final·int·PROVISIONING_NOTIFICATION_HIDE·=·0;242 ····private·static·final·int·PROVISIONING_NOTIFICATION_HIDE·=·0;
243 ····private·static·final·int·PROVISIONING_NOTIFICATION_SHOW·=·1;243 ····private·static·final·int·PROVISIONING_NOTIFICATION_SHOW·=·1;
244 ····private·static·final·String·REQUEST_ARG·=·"requests";244 ····private·static·final·String·REQUEST_ARG·=·"requests";
245 ····private·static·final·int·RESTORE_DEFAULT_NETWORK_DELAY·=·60000;245 ····private·static·final·int·RESTORE_DEFAULT_NETWORK_DELAY·=·60000;
246 ····public·static·final·String·SHORT_ARG·=·"--short";246 ····public·static·final·String·SHORT_ARG·=·"--short";
247 ····private·static·final·String·TAG;247 ····private·static·final·String·TAG;
Offset 857, 15 lines modifiedOffset 857, 15 lines modified
857 ························if·(bestNetwork·==·null·&&·this.isDefaultBlocked(connectivityService$NetworkRequestInfo))·{857 ························if·(bestNetwork·==·null·&&·this.isDefaultBlocked(connectivityService$NetworkRequestInfo))·{
858 ····························mNoServiceNetwork·=·this.mNoServiceNetwork;858 ····························mNoServiceNetwork·=·this.mNoServiceNetwork;
859 ························}859 ························}
860 ························else·{860 ························else·{
861 ····························mNoServiceNetwork·=·bestNetwork;861 ····························mNoServiceNetwork·=·bestNetwork;
862 ························}862 ························}
863 ························if·(connectivityService$NetworkRequestInfo.getSatisfier()·!=·mNoServiceNetwork)·{863 ························if·(connectivityService$NetworkRequestInfo.getSatisfier()·!=·mNoServiceNetwork)·{
864 ····························connectivityService$NetworkReassignment.addRequestReassignment(new·ConnectivityService$NetworkReassignment$RequestReassignment(connectivityService$NetworkRequestInfo,·ConnectivityService$NetworkRequestInfo.access$9400(connectivityService$NetworkRequestInfo),·networkRequest2,·connectivityService$NetworkRequestInfo.getSatisfier(),·mNoServiceNetwork));864 ····························connectivityService$NetworkReassignment.addRequestReassignment(new·ConnectivityService$NetworkReassignment$RequestReassignment(connectivityService$NetworkRequestInfo,·ConnectivityService$NetworkRequestInfo.access$9200(connectivityService$NetworkRequestInfo),·networkRequest2,·connectivityService$NetworkRequestInfo.getSatisfier(),·mNoServiceNetwork));
865 ························}865 ························}
866 ························continue·Label_0251_Outer;866 ························continue·Label_0251_Outer;
867 ····················}867 ····················}
868 ················}868 ················}
869 ················final·NetworkRequest·networkRequest2·=·null;869 ················final·NetworkRequest·networkRequest2·=·null;
870 ················continue;870 ················continue;
871 ············}871 ············}
Offset 1524, 29 lines modifiedOffset 1524, 15 lines modified
1524 ············indentingPrintWriter.println();1524 ············indentingPrintWriter.println();
1525 ············networkDiagnostics.waitForMeasurements();1525 ············networkDiagnostics.waitForMeasurements();
1526 ············networkDiagnostics.dump(indentingPrintWriter);1526 ············networkDiagnostics.dump(indentingPrintWriter);
1527 ········}1527 ········}
1528 ····}1528 ····}
1529 ····1529 ····
1530 ····private·void·dumpNetworkRequests(final·IndentingPrintWriter·indentingPrintWriter)·{1530 ····private·void·dumpNetworkRequests(final·IndentingPrintWriter·indentingPrintWriter)·{
1531 ········ConnectivityService$NetworkRequestInfo[]·requestsSortedById·=·null;1531 ········final·ConnectivityService$NetworkRequestInfo[]·requestsSortedById·=·this.requestsSortedById();
1532 ····Label_0013_Outer: 
1533 ········while·(requestsSortedById·==·null)·{ 
1534 ············while·(true)·{ 
1535 ················try·{ 
1536 ····················requestsSortedById·=·this.requestsSortedById(); 
1537 ····················continue·Label_0013_Outer; 
1538 ················} 
1539 ················catch·(ConcurrentModificationException·ex)·{ 
1540 ····················continue; 
1541 ················} 
1542 ················break; 
1543 ············} 
1544 ············break; 
1545 ········} 
1546 ········for·(int·length·=·requestsSortedById.length,·i·=·0;·i·<·length;·++i)·{1532 ········for·(int·length·=·requestsSortedById.length,·i·=·0;·i·<·length;·++i)·{
1547 ············indentingPrintWriter.println(requestsSortedById[i].toString());1533 ············indentingPrintWriter.println(requestsSortedById[i].toString());
1548 ········}1534 ········}
1549 ····}1535 ····}
1550 ····1536 ····
1551 ····private·void·dumpNetworks(final·IndentingPrintWriter·indentingPrintWriter)·{1537 ····private·void·dumpNetworks(final·IndentingPrintWriter·indentingPrintWriter)·{
1552 ········final·NetworkAgentInfo[]·networksSortedById·=·this.networksSortedById();1538 ········final·NetworkAgentInfo[]·networksSortedById·=·this.networksSortedById();
Offset 1905, 14 lines modifiedOffset 1891, 29 lines modified
1905 ············if·(vpnInfo·!=·null)·{1891 ············if·(vpnInfo·!=·null)·{
1906 ················list.add(vpnInfo);1892 ················list.add(vpnInfo);
1907 ············}1893 ············}
1908 ········}1894 ········}
1909 ········return·list.toArray(new·UnderlyingNetworkInfo[list.size()]);1895 ········return·list.toArray(new·UnderlyingNetworkInfo[list.size()]);
1910 ····}1896 ····}
1911 ····1897 ····
 1898 ····private·int·getAppUid(final·String·s,·final·UserHandle·userHandle)·{
 1899 ········final·PackageManager·packageManager·=·this.mContext.createContextAsUser(userHandle,·0).getPackageManager();
 1900 ········final·long·clearCallingIdentity·=·Binder.clearCallingIdentity();
 1901 ········final·PackageManager·packageManager2·=·packageManager;
 1902 ········try·{
 1903 ············return·packageManager2.getPackageUid(s,·0);
 1904 ········}
 1905 ········catch·(PackageManager$NameNotFoundException·ex)·{
 1906 ············return·-1;
 1907 ········}
 1908 ········finally·{
 1909 ············Binder.restoreCallingIdentity(clearCallingIdentity);
 1910 ········}
 1911 ····}
 1912 ····
1912 ····private·static·int·getBlockedState(int·n,·final·boolean·b,·final·boolean·b2)·{1913 ····private·static·int·getBlockedState(int·n,·final·boolean·b,·final·boolean·b2)·{
1913 ········if·(!b)·{1914 ········if·(!b)·{
1914 ············n·&=·(char)(-1);1915 ············n·&=·(char)(-1);
1915 ········}1916 ········}
1916 ········int·n2;1917 ········int·n2;
1917 ········if·(b2)·{1918 ········if·(b2)·{
1918 ············n2·=·(n·|·0x10);1919 ············n2·=·(n·|·0x10);
Offset 1920, 27 lines modifiedOffset 1921, 27 lines modified
1920 ········else·{1921 ········else·{
1921 ············n2·=·(n·&·0xFFFFFFEF);1922 ············n2·=·(n·&·0xFFFFFFEF);
1922 ········}1923 ········}
1923 ········return·n2;1924 ········return·n2;
1924 ····}1925 ····}
1925 ····1926 ····
1926 ····private·NetworkAgentInfo·getDefaultNetwork()·{1927 ····private·NetworkAgentInfo·getDefaultNetwork()·{
1927 ········return·ConnectivityService$NetworkRequestInfo.access$9000(this.mDefaultRequest);1928 ········return·ConnectivityService$NetworkRequestInfo.access$8800(this.mDefaultRequest);
1928 ····}1929 ····}
1929 ····1930 ····
1930 ····private·NetworkAgentInfo·getDefaultNetworkForUid(final·int·n)·{1931 ····private·NetworkAgentInfo·getDefaultNetworkForUid(final·int·n)·{
1931 ········ConnectivityService$NetworkRequestInfo·mDefaultRequest·=·this.mDefaultRequest;1932 ········ConnectivityService$NetworkRequestInfo·mDefaultRequest·=·this.mDefaultRequest;
1932 ········for·(final·ConnectivityService$NetworkRequestInfo·connectivityService$NetworkRequestInfo·:·this.mDefaultNetworkRequests)·{1933 ········for·(final·ConnectivityService$NetworkRequestInfo·connectivityService$NetworkRequestInfo·:·this.mDefaultNetworkRequests)·{
1933 ············final·Set·uidRanges·=·((NetworkRequest)connectivityService$NetworkRequestInfo.mRequests.get(0)).networkCapabilities.getUidRanges();1934 ············final·Set·uidRanges·=·((NetworkRequest)connectivityService$NetworkRequestInfo.mRequests.get(0)).networkCapabilities.getUidRanges();
1934 ············if·(uidRanges·==·null)·{1935 ············if·(uidRanges·==·null)·{
1935 ················continue;1936 ················continue;
1936 ············}1937 ············}
1937 ············final·Iterator<UidRange>·iterator2·=·uidRanges.iterator();1938 ············final·Iterator<UidRange>·iterator2·=·uidRanges.iterator();
1938 ············while·(iterator2.hasNext())·{1939 ············while·(iterator2.hasNext())·{
1939 ················if·(((UidRange)iterator2.next()).contains(n)·&&·connectivityService$NetworkRequestInfo.hasHigherOrderThan(mDefaultRequest))·{1940 ················if·(((UidRange)iterator2.next()).contains(n)·&&·connectivityService$NetworkRequestInfo.hasHigherPriorityThan(mDefaultRequest))·{
1940 ····················mDefaultRequest·=·connectivityService$NetworkRequestInfo;1941 ····················mDefaultRequest·=·connectivityService$NetworkRequestInfo;
1941 ················}1942 ················}
1942 ············}1943 ············}
1943 ········}1944 ········}
1944 ········return·mDefaultRequest.getSatisfier();1945 ········return·mDefaultRequest.getSatisfier();
1945 ····}1946 ····}
1946 ····1947 ····
Offset 1960, 15 lines modifiedOffset 1961, 15 lines modified
1960 ········}1961 ········}
1961 ········return·list;1962 ········return·list;
1962 ····}1963 ····}
1963 ····1964 ····
1964 ····private·ConnectivityService$NetworkRequestInfo·getDefaultRequestTrackingUid(final·int·n)·{1965 ····private·ConnectivityService$NetworkRequestInfo·getDefaultRequestTrackingUid(final·int·n)·{
1965 ········ConnectivityService$NetworkRequestInfo·mDefaultRequest·=·this.mDefaultRequest;1966 ········ConnectivityService$NetworkRequestInfo·mDefaultRequest·=·this.mDefaultRequest;
1966 ········for·(final·ConnectivityService$NetworkRequestInfo·connectivityService$NetworkRequestInfo·:·this.mDefaultNetworkRequests)·{1967 ········for·(final·ConnectivityService$NetworkRequestInfo·connectivityService$NetworkRequestInfo·:·this.mDefaultNetworkRequests)·{
1967 ············if·(((NetworkRequest)connectivityService$NetworkRequestInfo.mRequests.get(0)).networkCapabilities.appliesToUid(n)·&&·connectivityService$NetworkRequestInfo.hasHigherOrderThan(mDefaultRequest))·{1968 ············if·(((NetworkRequest)connectivityService$NetworkRequestInfo.mRequests.get(0)).networkCapabilities.appliesToUid(n)·&&·connectivityService$NetworkRequestInfo.hasHigherPriorityThan(mDefaultRequest))·{
1968 ················mDefaultRequest·=·connectivityService$NetworkRequestInfo;1969 ················mDefaultRequest·=·connectivityService$NetworkRequestInfo;
1969 ············}1970 ············}
1970 ········}1971 ········}
1971 ········return·mDefaultRequest;1972 ········return·mDefaultRequest;
1972 ····}1973 ····}
1973 ····1974 ····
1974 ····private·static·IDnsResolver·getDnsResolver(final·Context·context)·{1975 ····private·static·IDnsResolver·getDnsResolver(final·Context·context)·{
Offset 2043, 29 lines modifiedOffset 2044, 22 lines modified
2043 ············if·(httpProxy·!=·null)·{2044 ············if·(httpProxy·!=·null)·{
2044 ················proxyInfo·=·new·ProxyInfo(httpProxy);2045 ················proxyInfo·=·new·ProxyInfo(httpProxy);
2045 ············}2046 ············}
2046 ············return·proxyInfo;2047 ············return·proxyInfo;
2047 ········}2048 ········}
2048 ····}2049 ····}
2049 ····2050 ····
2050 ····private·List·getMatchingPermissionedCallbacks(final·NetworkAgentInfo·networkAgentInfo,·final·int·n)·{2051 ····private·List·getMatchingPermissionedCallbacks(final·NetworkAgentInfo·networkAgentInfo)·{
2051 ········final·ArrayList<IConnectivityDiagnosticsCallback>·list·=·new·ArrayList<IConnectivityDiagnosticsCallback>();2052 ········final·ArrayList<IConnectivityDiagnosticsCallback>·list·=·new·ArrayList<IConnectivityDiagnosticsCallback>();
2052 ········for·(final·Map.Entry<K,·ConnectivityService$ConnectivityDiagnosticsCallbackInfo>·entry·:·this.mConnectivityDiagnosticsCallbacks.entrySet())·{2053 ········for·(final·Map.Entry<K,·ConnectivityService$ConnectivityDiagnosticsCallbackInfo>·entry·:·this.mConnectivityDiagnosticsCallbacks.entrySet())·{
2053 ············final·ConnectivityService$ConnectivityDiagnosticsCallbackInfo·connectivityService$ConnectivityDiagnosticsCallbackInfo·=·(ConnectivityService$ConnectivityDiagnosticsCallbackInfo)entry.getValue();2054 ············final·ConnectivityService$ConnectivityDiagnosticsCallbackInfo·connectivityService$ConnectivityDiagnosticsCallbackInfo·=·(ConnectivityService$ConnectivityDiagnosticsCallbackInfo)entry.getValue();
2054 ············final·ConnectivityService$NetworkRequestInfo·access$10300·=·ConnectivityService$ConnectivityDiagnosticsCallbackInfo.access$10300(connectivityService$ConnectivityDiagnosticsCallbackInfo);2055 ············final·ConnectivityService$NetworkRequestInfo·access$10100·=·ConnectivityService$ConnectivityDiagnosticsCallbackInfo.access$10100(connectivityService$ConnectivityDiagnosticsCallbackInfo);
 2056 ············if·(networkAgentInfo.satisfies((NetworkRequest)access$10100.mRequests.get(0))·&&·this.checkConnectivityDiagnosticsPermissions(access$10100.mPid,·access$10100.mUid,·networkAgentInfo,·ConnectivityService$ConnectivityDiagnosticsCallbackInfo.access$10200(connectivityService$ConnectivityDiagnosticsCallbackInfo)))·{
 2057 ················list.add(ConnectivityService$ConnectivityDiagnosticsCallbackInfo.access$10000((ConnectivityService$ConnectivityDiagnosticsCallbackInfo)entry.getValue()));
2055 ············if·(!networkAgentInfo.satisfies((NetworkRequest)access$10300.mRequests.get(0)))·{ 
2056 ················continue; 
2057 ············} 
2058 ············if·(n·!=·-1·&&·n·!=·access$10300.mUid)·{ 
2059 ················continue; 
2060 ············}2058 ············}
2061 ············if·(!this.checkConnectivityDiagnosticsPermissions(access$10300.mPid,·access$10300.mUid,·networkAgentInfo,·ConnectivityService$ConnectivityDiagnosticsCallbackInfo.access$10400(connectivityService$ConnectivityDiagnosticsCallbackInfo)))·{ 
2062 ················continue; 
2063 ············} 
2064 ············list.add(ConnectivityService$ConnectivityDiagnosticsCallbackInfo.access$10200((ConnectivityService$ConnectivityDiagnosticsCallbackInfo)entry.getValue())); 
2065 ········}2059 ········}
2066 ········return·list;2060 ········return·list;
2067 ····}2061 ····}
2068 ····2062 ····
2069 ····private·Network·getNetwork(final·NetworkAgentInfo·networkAgentInfo)·{2063 ····private·Network·getNetwork(final·NetworkAgentInfo·networkAgentInfo)·{
2070 ········Network·network;2064 ········Network·network;
2071 ········if·(networkAgentInfo·!=·null)·{2065 ········if·(networkAgentInfo·!=·null)·{
Offset 2314, 15 lines modifiedOffset 2308, 15 lines modified
2314 ····private·void·handleDataStallSuspected(final·NetworkAgentInfo·networkAgentInfo,·final·long·n,·final·int·n2,·final·PersistableBundle·persistableBundle)·{2308 ····private·void·handleDataStallSuspected(final·NetworkAgentInfo·networkAgentInfo,·final·long·n,·final·int·n2,·final·PersistableBundle·persistableBundle)·{
2315 ········final·Network·network;2309 ········final·Network·network;
2316 ········final·LinkProperties·linkProperties;2310 ········final·LinkProperties·linkProperties;
2317 ········final·ConnectivityDiagnosticsManager$DataStallReport·connectivityDiagnosticsManager$DataStallReport·=·new·ConnectivityDiagnosticsManager$DataStallReport(network,·n,·n2,·linkProperties,·this.getNetworkCapabilitiesWithoutUids(networkAgentInfo.networkCapabilities),·persistableBundle);2311 ········final·ConnectivityDiagnosticsManager$DataStallReport·connectivityDiagnosticsManager$DataStallReport·=·new·ConnectivityDiagnosticsManager$DataStallReport(network,·n,·n2,·linkProperties,·this.getNetworkCapabilitiesWithoutUids(networkAgentInfo.networkCapabilities),·persistableBundle);
2318 ········network·=·networkAgentInfo.network;2312 ········network·=·networkAgentInfo.network;
2319 ········linkProperties·=·networkAgentInfo.linkProperties;2313 ········linkProperties·=·networkAgentInfo.linkProperties;
2320 ········final·ConnectivityDiagnosticsManager$DataStallReport·connectivityDiagnosticsManager$DataStallReport2·=·connectivityDiagnosticsManager$DataStallReport;2314 ········final·ConnectivityDiagnosticsManager$DataStallReport·connectivityDiagnosticsManager$DataStallReport2·=·connectivityDiagnosticsManager$DataStallReport;
2321 ········for·(final·IConnectivityDiagnosticsCallback·connectivityDiagnosticsCallback·:·this.getMatchingPermissionedCallbacks(networkAgentInfo,·-1))·{2315 ········for·(final·IConnectivityDiagnosticsCallback·connectivityDiagnosticsCallback·:·this.getMatchingPermissionedCallbacks(networkAgentInfo))·{
2322 ············try·{2316 ············try·{
2323 ················connectivityDiagnosticsCallback.onDataStallSuspected(connectivityDiagnosticsManager$DataStallReport2);2317 ················connectivityDiagnosticsCallback.onDataStallSuspected(connectivityDiagnosticsManager$DataStallReport2);
2324 ············}2318 ············}
2325 ············catch·(RemoteException·ex)·{2319 ············catch·(RemoteException·ex)·{
2326 ················loge("Error·invoking·onDataStallSuspected",·(Throwable)ex);2320 ················loge("Error·invoking·onDataStallSuspected",·(Throwable)ex);
2327 ············}2321 ············}
2328 ········}2322 ········}
Offset 2428, 64 lines modifiedOffset 2422, 42 lines modified
2428 ····················o·=·this.mLegacyTypeTracker;2422 ····················o·=·this.mLegacyTypeTracker;
2429 ····················((ConnectivityService$LegacyTypeTracker)o).remove(networkAgentInfo,·defaultNetwork);2423 ····················((ConnectivityService$LegacyTypeTracker)o).remove(networkAgentInfo,·defaultNetwork);
2430 ················}2424 ················}
2431 ············}2425 ············}
2432 ········}2426 ········}
2433 ····}2427 ····}
2434 ····2428 ····
 2429 ····private·void·handleNetworkConnectivityReported(final·NetworkAgentInfo·networkAgentInfo,·final·boolean·b)·{
2435 ····private·void·handleNetworkConnectivityReported(final·ConnectivityService$ReportedNetworkConnectivityInfo·connectivityService$ReportedNetworkConnectivityInfo)·{ 
2436 ········final·NetworkAgentInfo·nai·=·connectivityService$ReportedNetworkConnectivityInfo.nai; 
2437 ········final·ConnectivityDiagnosticsManager$ConnectivityReport·connectivityReport·=·nai.getConnectivityReport(); 
2438 ········int·reporterUid; 
2439 ········if·(connectivityService$ReportedNetworkConnectivityInfo.isNetworkRevalidating)·{ 
2440 ············reporterUid·=·-1; 
2441 ········} 
2442 ········else·{ 
2443 ············reporterUid·=·connectivityService$ReportedNetworkConnectivityInfo.reporterUid; 
2444 ········} 
2445 ········for·(final·IConnectivityDiagnosticsCallback·connectivityDiagnosticsCallback·:·this.getMatchingPermissionedCallbacks(nai,·reporterUid))·{2430 ········for·(final·IConnectivityDiagnosticsCallback·connectivityDiagnosticsCallback·:·this.getMatchingPermissionedCallbacks(networkAgentInfo))·{
2446 ············try·{2431 ············try·{
 2432 ················connectivityDiagnosticsCallback.onNetworkConnectivityReported(networkAgentInfo.network,·b);
2447 ················final·Network·network·=·nai.network; 
2448 ················try·{ 
2449 ····················connectivityDiagnosticsCallback.onNetworkConnectivityReported(network,·connectivityService$ReportedNetworkConnectivityInfo.hasConnectivity); 
2450 ················} 
2451 ················catch·(RemoteException·ex)·{ 
2452 ····················loge("Error·invoking·onNetworkConnectivityReported",·(Throwable)ex); 
2453 ················} 
2454 ············}2433 ············}
2455 ············catch·(RemoteException·ex3)·{}2434 ············catch·(RemoteException·ex)·{
2456 ············if·(!connectivityService$ReportedNetworkConnectivityInfo.isNetworkRevalidating·&&·connectivityReport·!=·null)·{ 
2457 ················final·IConnectivityDiagnosticsCallback·connectivityDiagnosticsCallback2·=·connectivityDiagnosticsCallback; 
2458 ················try·{ 
2459 ····················connectivityDiagnosticsCallback2.onConnectivityReportAvailable(connectivityReport); 
2460 ················} 
2461 ················catch·(RemoteException·ex2)·{ 
2462 ····················loge("Error·invoking·onConnectivityReportAvailable",·(Throwable)ex2);2435 ················loge("Error·invoking·onNetworkConnectivityReported",·(Throwable)ex);
2463 ················} 
2464 ············}2436 ············}
2465 ········}2437 ········}
2466 ····}2438 ····}
2467 ····2439 ····
2468 ····private·void·handleNetworkTestedWithExtras(final·ConnectivityService$ConnectivityReportEvent·connectivityService$ConnectivityReportEvent,·final·PersistableBundle·persistableBundle)·{2440 ····private·void·handleNetworkTestedWithExtras(final·ConnectivityService$ConnectivityReportEvent·connectivityService$ConnectivityReportEvent,·final·PersistableBundle·persistableBundle)·{
2469 ········final·NetworkAgentInfo·access$10500·=·ConnectivityService$ConnectivityReportEvent.access$10500(connectivityService$ConnectivityReportEvent);2441 ········final·NetworkAgentInfo·access$10300·=·ConnectivityService$ConnectivityReportEvent.access$10300(connectivityService$ConnectivityReportEvent);
2470 ········final·Network·network;2442 ········final·Network·network;
2471 ········final·long·access$10501;2443 ········final·long·access$10301;
2472 ········final·LinkProperties·linkProperties;2444 ········final·LinkProperties·linkProperties;
2473 ········final·ConnectivityDiagnosticsManager$ConnectivityReport·connectivityReport·=·new·ConnectivityDiagnosticsManager$ConnectivityReport(network,·access$10501,·linkProperties,·this.getNetworkCapabilitiesWithoutUids(access$10500.networkCapabilities),·persistableBundle);2445 ········final·ConnectivityDiagnosticsManager$ConnectivityReport·connectivityReport·=·new·ConnectivityDiagnosticsManager$ConnectivityReport(network,·access$10301,·linkProperties,·this.getNetworkCapabilitiesWithoutUids(access$10300.networkCapabilities),·persistableBundle);
2474 ········network·=·ConnectivityService$ConnectivityReportEvent.access$10500(connectivityService$ConnectivityReportEvent).network;2446 ········network·=·ConnectivityService$ConnectivityReportEvent.access$10300(connectivityService$ConnectivityReportEvent).network;
2475 ········access$10501·=·ConnectivityService$ConnectivityReportEvent.access$10600(connectivityService$ConnectivityReportEvent);2447 ········access$10301·=·ConnectivityService$ConnectivityReportEvent.access$10400(connectivityService$ConnectivityReportEvent);
2476 ········linkProperties·=·access$10500.linkProperties;2448 ········linkProperties·=·access$10300.linkProperties;
2477 ········final·ConnectivityDiagnosticsManager$ConnectivityReport·connectivityDiagnosticsManager$ConnectivityReport·=·connectivityReport;2449 ········final·ConnectivityDiagnosticsManager$ConnectivityReport·connectivityDiagnosticsManager$ConnectivityReport·=·connectivityReport;
2478 ········access$10500.setConnectivityReport(connectivityReport);2450 ········access$10300.setConnectivityReport(connectivityReport);
2479 ········for·(final·IConnectivityDiagnosticsCallback·connectivityDiagnosticsCallback·:·this.getMatchingPermissionedCallbacks(access$10500,·-1))·{2451 ········for·(final·IConnectivityDiagnosticsCallback·connectivityDiagnosticsCallback·:·this.getMatchingPermissionedCallbacks(access$10300))·{
2480 ············try·{2452 ············try·{
2481 ················connectivityDiagnosticsCallback.onConnectivityReportAvailable(connectivityDiagnosticsManager$ConnectivityReport);2453 ················connectivityDiagnosticsCallback.onConnectivityReportAvailable(connectivityDiagnosticsManager$ConnectivityReport);
2482 ············}2454 ············}
2483 ············catch·(RemoteException·ex)·{2455 ············catch·(RemoteException·ex)·{
2484 ················loge("Error·invoking·onConnectivityReportAvailable",·(Throwable)ex);2456 ················loge("Error·invoking·onConnectivityReport",·(Throwable)ex);
2485 ············}2457 ············}
2486 ········}2458 ········}
2487 ····}2459 ····}
2488 ····2460 ····
2489 ····private·void·handleNetworkUnvalidated(final·NetworkAgentInfo·networkAgentInfo)·{2461 ····private·void·handleNetworkUnvalidated(final·NetworkAgentInfo·networkAgentInfo)·{
2490 ········final·NetworkCapabilities·networkCapabilities·=·networkAgentInfo.networkCapabilities;2462 ········final·NetworkCapabilities·networkCapabilities·=·networkAgentInfo.networkCapabilities;
2491 ········final·StringBuilder·sb·=·new·StringBuilder();2463 ········final·StringBuilder·sb·=·new·StringBuilder();
Offset 2546, 53 lines modifiedOffset 2518, 53 lines modified
2546 ················this.showNetworkNotification(networkAgentInfoForNetwork,·NetworkNotificationManager$NotificationType.NO_INTERNET);2518 ················this.showNetworkNotification(networkAgentInfoForNetwork,·NetworkNotificationManager$NotificationType.NO_INTERNET);
2547 ············}2519 ············}
2548 ········}2520 ········}
2549 ····}2521 ····}
2550 ····2522 ····
2551 ····private·void·handleRegisterConnectivityDiagnosticsCallback(final·ConnectivityService$ConnectivityDiagnosticsCallbackInfo·connectivityService$ConnectivityDiagnosticsCallbackInfo)·{2523 ····private·void·handleRegisterConnectivityDiagnosticsCallback(final·ConnectivityService$ConnectivityDiagnosticsCallbackInfo·connectivityService$ConnectivityDiagnosticsCallbackInfo)·{
2552 ········this.ensureRunningOnConnectivityServiceThread();2524 ········this.ensureRunningOnConnectivityServiceThread();
2553 ········final·IConnectivityDiagnosticsCallback·access$10200·=·ConnectivityService$ConnectivityDiagnosticsCallbackInfo.access$10200(connectivityService$ConnectivityDiagnosticsCallbackInfo);2525 ········final·IConnectivityDiagnosticsCallback·access$10000·=·ConnectivityService$ConnectivityDiagnosticsCallbackInfo.access$10000(connectivityService$ConnectivityDiagnosticsCallbackInfo);
2554 ········final·IBinder·binder·=·access$10200.asBinder();2526 ········final·IBinder·binder·=·access$10000.asBinder();
2555 ········final·ConnectivityService$NetworkRequestInfo·access$10201·=·ConnectivityService$ConnectivityDiagnosticsCallbackInfo.access$10300(connectivityService$ConnectivityDiagnosticsCallbackInfo);2527 ········final·ConnectivityService$NetworkRequestInfo·access$10001·=·ConnectivityService$ConnectivityDiagnosticsCallbackInfo.access$10100(connectivityService$ConnectivityDiagnosticsCallbackInfo);
2556 ········if·(!access$10201.isMultilayerRequest())·{2528 ········if·(!access$10001.isMultilayerRequest())·{
2557 ············if·(this.mConnectivityDiagnosticsCallbacks.containsKey(binder))·{2529 ············if·(this.mConnectivityDiagnosticsCallbacks.containsKey(binder))·{
2558 ················if·(ConnectivityService.VDBG)·{2530 ················if·(ConnectivityService.VDBG)·{
2559 ····················log("Diagnostics·callback·is·already·registered");2531 ····················log("Diagnostics·callback·is·already·registered");
2560 ················}2532 ················}
2561 ················access$10201.decrementRequestCount();2533 ················access$10001.decrementRequestCount();
2562 ················return;2534 ················return;
2563 ············}2535 ············}
2564 ············this.mConnectivityDiagnosticsCallbacks.put(binder,·connectivityService$ConnectivityDiagnosticsCallbackInfo);2536 ············this.mConnectivityDiagnosticsCallbacks.put(binder,·connectivityService$ConnectivityDiagnosticsCallbackInfo);
2565 ············final·IBinder·binder2·=·binder;2537 ············final·IBinder·binder2·=·binder;
2566 ············try·{2538 ············try·{
2567 ················binder2.linkToDeath((IBinder$DeathRecipient)connectivityService$ConnectivityDiagnosticsCallbackInfo,·0);2539 ················binder2.linkToDeath((IBinder$DeathRecipient)connectivityService$ConnectivityDiagnosticsCallbackInfo,·0);
2568 ················final·ArrayList<NetworkAgentInfo>·list·=·new·ArrayList<NetworkAgentInfo>();2540 ················final·ArrayList<NetworkAgentInfo>·list·=·new·ArrayList<NetworkAgentInfo>();
2569 ················Object·mNetworkForNetId·=·this.mNetworkForNetId;2541 ················Object·mNetworkForNetId·=·this.mNetworkForNetId;
2570 ················//·monitorenter(mNetworkForNetId)2542 ················//·monitorenter(mNetworkForNetId)
2571 ················int·i·=·0;2543 ················int·i·=·0;
2572 ················try·{2544 ················try·{
2573 ····················while·(i·<·this.mNetworkForNetId.size())·{2545 ····················while·(i·<·this.mNetworkForNetId.size())·{
2574 ························final·NetworkAgentInfo·networkAgentInfo·=·(NetworkAgentInfo)this.mNetworkForNetId.valueAt(i);2546 ························final·NetworkAgentInfo·networkAgentInfo·=·(NetworkAgentInfo)this.mNetworkForNetId.valueAt(i);
2575 ························if·(networkAgentInfo.satisfies((NetworkRequest)access$10201.mRequests.get(0)))·{2547 ························if·(networkAgentInfo.satisfies((NetworkRequest)access$10001.mRequests.get(0)))·{
2576 ····························list.add(networkAgentInfo);2548 ····························list.add(networkAgentInfo);
2577 ························}2549 ························}
2578 ························++i;2550 ························++i;
2579 ····················}2551 ····················}
2580 ····················//·monitorexit(mNetworkForNetId)2552 ····················//·monitorexit(mNetworkForNetId)
2581 ····················final·Iterator<Object>·iterator·=·list.iterator();2553 ····················final·Iterator<Object>·iterator·=·list.iterator();
2582 ····················while·(iterator.hasNext())·{2554 ····················while·(iterator.hasNext())·{
2583 ························mNetworkForNetId·=·iterator.next();2555 ························mNetworkForNetId·=·iterator.next();
2584 ························final·ConnectivityDiagnosticsManager$ConnectivityReport·connectivityReport·=·((NetworkAgentInfo)mNetworkForNetId).getConnectivityReport();2556 ························final·ConnectivityDiagnosticsManager$ConnectivityReport·connectivityReport·=·((NetworkAgentInfo)mNetworkForNetId).getConnectivityReport();
2585 ························if·(connectivityReport·==·null)·{2557 ························if·(connectivityReport·==·null)·{
2586 ····························continue;2558 ····························continue;
2587 ························}2559 ························}
2588 ························if·(!this.checkConnectivityDiagnosticsPermissions(access$10201.mPid,·access$10201.mUid,·(NetworkAgentInfo)mNetworkForNetId,·ConnectivityService$ConnectivityDiagnosticsCallbackInfo.access$10400(connectivityService$ConnectivityDiagnosticsCallbackInfo)))·{2560 ························if·(!this.checkConnectivityDiagnosticsPermissions(access$10001.mPid,·access$10001.mUid,·(NetworkAgentInfo)mNetworkForNetId,·ConnectivityService$ConnectivityDiagnosticsCallbackInfo.access$10200(connectivityService$ConnectivityDiagnosticsCallbackInfo)))·{
2589 ····························continue;2561 ····························continue;
2590 ························}2562 ························}
2591 ························final·IConnectivityDiagnosticsCallback·connectivityDiagnosticsCallback·=·access$10200;2563 ························final·IConnectivityDiagnosticsCallback·connectivityDiagnosticsCallback·=·access$10000;
2592 ························try·{2564 ························try·{
2593 ····························connectivityDiagnosticsCallback.onConnectivityReportAvailable(connectivityReport);2565 ····························connectivityDiagnosticsCallback.onConnectivityReportAvailable(connectivityReport);
2594 ························}2566 ························}
2595 ························catch·(RemoteException·ex)·{}2567 ························catch·(RemoteException·ex)·{}
2596 ····················}2568 ····················}
2597 ····················return;2569 ····················return;
2598 ················}2570 ················}
Offset 2637, 28 lines modifiedOffset 2609, 14 lines modified
2637 ············log("Received·offer·from·an·unregistered·provider");2609 ············log("Received·offer·from·an·unregistered·provider");
2638 ············return;2610 ············return;
2639 ········}2611 ········}
2640 ········final·ConnectivityService$NetworkOfferInfo·networkOfferInfoByCallback·=·this.findNetworkOfferInfoByCallback(networkOffer.callback);2612 ········final·ConnectivityService$NetworkOfferInfo·networkOfferInfoByCallback·=·this.findNetworkOfferInfoByCallback(networkOffer.callback);
2641 ········if·(networkOfferInfoByCallback·!=·null)·{2613 ········if·(networkOfferInfoByCallback·!=·null)·{
2642 ············this.handleUnregisterNetworkOffer(networkOfferInfoByCallback);2614 ············this.handleUnregisterNetworkOffer(networkOfferInfoByCallback);
2643 ············networkOffer.migrateFrom(networkOfferInfoByCallback.offer);2615 ············networkOffer.migrateFrom(networkOfferInfoByCallback.offer);
2644 ············final·StringBuilder·sb·=·new·StringBuilder(); 
2645 ············sb.append("update·offer·from·providerId·"); 
2646 ············sb.append(networkOffer.providerId); 
2647 ············sb.append("·new·:·"); 
2648 ············sb.append(networkOffer); 
2649 ············log(sb.toString()); 
2650 ········} 
2651 ········else·{ 
2652 ············final·StringBuilder·sb2·=·new·StringBuilder(); 
2653 ············sb2.append("register·offer·from·providerId·"); 
2654 ············sb2.append(networkOffer.providerId); 
2655 ············sb2.append("·:·"); 
2656 ············sb2.append(networkOffer); 
2657 ············log(sb2.toString()); 
2658 ········}2616 ········}
2659 ········final·ConnectivityService$NetworkOfferInfo·e·=·new·ConnectivityService$NetworkOfferInfo(this,·networkOffer);2617 ········final·ConnectivityService$NetworkOfferInfo·e·=·new·ConnectivityService$NetworkOfferInfo(this,·networkOffer);
2660 ········try·{2618 ········try·{
2661 ············final·NetworkOffer·offer·=·e.offer;2619 ············final·NetworkOffer·offer·=·e.offer;
2662 ············try·{2620 ············try·{
2663 ················final·INetworkOfferCallback·callback·=·offer.callback;2621 ················final·INetworkOfferCallback·callback·=·offer.callback;
2664 ················try·{2622 ················try·{
Offset 2827, 15 lines modifiedOffset 2785, 15 lines modified
2827 ····························try·{2785 ····························try·{
2828 ································final·int·netId·=·network.getNetId();2786 ································final·int·netId·=·network.getNetId();
2829 ································try·{2787 ································try·{
2830 ····································final·Set·uids·=·connectivityService$NetworkRequestInfo.getUids();2788 ····································final·Set·uids·=·connectivityService$NetworkRequestInfo.getUids();
2831 ····································try·{2789 ····································try·{
2832 ········································final·UidRangeParcel[]·uidRangeStableParcels·=·toUidRangeStableParcels(uids);2790 ········································final·UidRangeParcel[]·uidRangeStableParcels·=·toUidRangeStableParcels(uids);
2833 ········································try·{2791 ········································try·{
2834 ············································final·NativeUidRangeConfig·nativeUidRangeConfig·=·new·NativeUidRangeConfig(netId,·uidRangeStableParcels,·connectivityService$NetworkRequestInfo.getPreferenceOrderForNetd());2792 ············································final·NativeUidRangeConfig·nativeUidRangeConfig·=·new·NativeUidRangeConfig(netId,·uidRangeStableParcels,·connectivityService$NetworkRequestInfo.getPriorityForNetd());
2835 ············································final·INetd·netd·=·mNetd;2793 ············································final·INetd·netd·=·mNetd;
2836 ············································try·{2794 ············································try·{
2837 ················································netd.networkRemoveUidRangesParcel(nativeUidRangeConfig);2795 ················································netd.networkRemoveUidRangesParcel(nativeUidRangeConfig);
2838 ············································}2796 ············································}
2839 ············································catch·(RemoteException·ex)·{2797 ············································catch·(RemoteException·ex)·{
2840 ················································loge("Exception·setting·network·preference·default·network",·(Throwable)ex);2798 ················································loge("Exception·setting·network·preference·default·network",·(Throwable)ex);
2841 ············································}2799 ············································}
Offset 2883, 23 lines modifiedOffset 2841, 26 lines modified
2883 ············if·(this.mDefaultRequest·==·connectivityService$NetworkRequestInfo)·{2841 ············if·(this.mDefaultRequest·==·connectivityService$NetworkRequestInfo)·{
2884 ················continue;2842 ················continue;
2885 ············}2843 ············}
2886 ············this.handleRemoveNetworkRequest(connectivityService$NetworkRequestInfo);2844 ············this.handleRemoveNetworkRequest(connectivityService$NetworkRequestInfo);
2887 ········}2845 ········}
2888 ····}2846 ····}
2889 ····2847 ····
2890 ····private·void·handleReportNetworkConnectivity(final·NetworkAgentInfo·networkAgentInfo,·final·int·i,·final·boolean·b)·{2848 ····private·void·handleReportNetworkConnectivity(final·Network·network,·final·int·i,·final·boolean·b)·{
2891 ········if·(networkAgentInfo·==·null·||·networkAgentInfo·!=·this.getNetworkAgentInfoForNetwork(networkAgentInfo.network)·||·networkAgentInfo.networkInfo.getState()·==·NetworkInfo$State.DISCONNECTED)·{2849 ········NetworkAgentInfo·networkAgentInfo;
 2850 ········if·(network·==·null)·{
 2851 ············networkAgentInfo·=·this.getDefaultNetwork();
 2852 ········}
 2853 ········else·{
 2854 ············networkAgentInfo·=·this.getNetworkAgentInfoForNetwork(network);
 2855 ········}
 2856 ········if·(networkAgentInfo·==·null·||·networkAgentInfo.networkInfo.getState()·==·NetworkInfo$State.DISCONNECTING·||·networkAgentInfo.networkInfo.getState()·==·NetworkInfo$State.DISCONNECTED)·{
2892 ············return;2857 ············return;
2893 ········}2858 ········}
2894 ········final·boolean·lastValidated·=·networkAgentInfo.lastValidated; 
2895 ········final·int·n·=·5; 
2896 ········if·(b·==·lastValidated)·{2859 ········if·(b·==·networkAgentInfo.lastValidated)·{
2897 ············final·ConnectivityService$ConnectivityDiagnosticsHandler·mConnectivityDiagnosticsHandler·=·this.mConnectivityDiagnosticsHandler; 
2898 ············mConnectivityDiagnosticsHandler.sendMessage(mConnectivityDiagnosticsHandler.obtainMessage(n,·(Object)new·ConnectivityService$ReportedNetworkConnectivityInfo(b,·false,·i,·networkAgentInfo,·(ConnectivityService$1)null))); 
2899 ············return;2860 ············return;
2900 ········}2861 ········}
2901 ········final·int·netId·=·networkAgentInfo.network.getNetId();2862 ········final·int·netId·=·networkAgentInfo.network.getNetId();
2902 ········final·StringBuilder·sb·=·new·StringBuilder();2863 ········final·StringBuilder·sb·=·new·StringBuilder();
2903 ········sb.append("reportNetworkConnectivity(");2864 ········sb.append("reportNetworkConnectivity(");
2904 ········sb.append(netId);2865 ········sb.append(netId);
2905 ········sb.append(",·");2866 ········sb.append(",·");
Offset 2909, 16 lines modifiedOffset 2870, 14 lines modified
2909 ········log(sb.toString());2870 ········log(sb.toString());
2910 ········if·(!networkAgentInfo.everConnected)·{2871 ········if·(!networkAgentInfo.everConnected)·{
2911 ············return;2872 ············return;
2912 ········}2873 ········}
2913 ········if·(this.isNetworkWithCapabilitiesBlocked(this.getNetworkCapabilitiesInternal(networkAgentInfo),·i,·false))·{2874 ········if·(this.isNetworkWithCapabilitiesBlocked(this.getNetworkCapabilitiesInternal(networkAgentInfo),·i,·false))·{
2914 ············return;2875 ············return;
2915 ········}2876 ········}
2916 ········final·ConnectivityService$ConnectivityDiagnosticsHandler·mConnectivityDiagnosticsHandler2·=·this.mConnectivityDiagnosticsHandler; 
2917 ········mConnectivityDiagnosticsHandler2.sendMessage(mConnectivityDiagnosticsHandler2.obtainMessage(n,·(Object)new·ConnectivityService$ReportedNetworkConnectivityInfo(b,·true,·i,·networkAgentInfo,·(ConnectivityService$1)null))); 
2918 ········networkAgentInfo.networkMonitor().forceReevaluation(i);2877 ········networkAgentInfo.networkMonitor().forceReevaluation(i);
2919 ····}2878 ····}
2920 ····2879 ····
2921 ····private·void·handleSetAcceptPartialConnectivity(final·Network·obj,·final·boolean·b,·final·boolean·b2)·{2880 ····private·void·handleSetAcceptPartialConnectivity(final·Network·obj,·final·boolean·b,·final·boolean·b2)·{
2922 ········final·StringBuilder·sb·=·new·StringBuilder();2881 ········final·StringBuilder·sb·=·new·StringBuilder();
2923 ········sb.append("handleSetAcceptPartialConnectivity·network=");2882 ········sb.append("handleSetAcceptPartialConnectivity·network=");
2924 ········sb.append(obj);2883 ········sb.append(obj);
Offset 3115, 37 lines modifiedOffset 3074, 31 lines modified
3115 ········final·ConnectivityService$ConnectivityDiagnosticsCallbackInfo·connectivityService$ConnectivityDiagnosticsCallbackInfo·=·(ConnectivityService$ConnectivityDiagnosticsCallbackInfo)this.mConnectivityDiagnosticsCallbacks.remove(binder);3074 ········final·ConnectivityService$ConnectivityDiagnosticsCallbackInfo·connectivityService$ConnectivityDiagnosticsCallbackInfo·=·(ConnectivityService$ConnectivityDiagnosticsCallbackInfo)this.mConnectivityDiagnosticsCallbacks.remove(binder);
3116 ········if·(connectivityService$ConnectivityDiagnosticsCallbackInfo·==·null)·{3075 ········if·(connectivityService$ConnectivityDiagnosticsCallbackInfo·==·null)·{
3117 ············if·(ConnectivityService.VDBG)·{3076 ············if·(ConnectivityService.VDBG)·{
3118 ················log("Removing·diagnostics·callback·that·is·not·currently·registered");3077 ················log("Removing·diagnostics·callback·that·is·not·currently·registered");
3119 ············}3078 ············}
3120 ············return;3079 ············return;
3121 ········}3080 ········}
3122 ········final·ConnectivityService$NetworkRequestInfo·access$10300·=·ConnectivityService$ConnectivityDiagnosticsCallbackInfo.access$10300(connectivityService$ConnectivityDiagnosticsCallbackInfo);3081 ········final·ConnectivityService$NetworkRequestInfo·access$10100·=·ConnectivityService$ConnectivityDiagnosticsCallbackInfo.access$10100(connectivityService$ConnectivityDiagnosticsCallbackInfo);
3123 ········if·(i·!=·access$10300.mUid·&&·i·!=·1000)·{3082 ········if·(i·!=·access$10100.mUid·&&·i·!=·1000)·{
3124 ············final·StringBuilder·sb·=·new·StringBuilder();3083 ············final·StringBuilder·sb·=·new·StringBuilder();
3125 ············sb.append("Uid(");3084 ············sb.append("Uid(");
3126 ············sb.append(i);3085 ············sb.append(i);
3127 ············sb.append(")·not·registrant's·(");3086 ············sb.append(")·not·registrant's·(");
3128 ············sb.append(access$10300.mUid);3087 ············sb.append(access$10100.mUid);
3129 ············sb.append(")·or·System's");3088 ············sb.append(")·or·System's");
3130 ············loge(sb.toString());3089 ············loge(sb.toString());
3131 ············return;3090 ············return;
3132 ········}3091 ········}
3133 ········access$10300.decrementRequestCount();3092 ········access$10100.decrementRequestCount();
3134 ········binder.unlinkToDeath((IBinder$DeathRecipient)connectivityService$ConnectivityDiagnosticsCallbackInfo,·0);3093 ········binder.unlinkToDeath((IBinder$DeathRecipient)connectivityService$ConnectivityDiagnosticsCallbackInfo,·0);
3135 ····}3094 ····}
3136 ····3095 ····
3137 ····private·void·handleUnregisterNetworkOffer(final·ConnectivityService$NetworkOfferInfo·o)·{3096 ····private·void·handleUnregisterNetworkOffer(final·ConnectivityService$NetworkOfferInfo·o)·{
3138 ········this.ensureRunningOnConnectivityServiceThread();3097 ········this.ensureRunningOnConnectivityServiceThread();
3139 ········final·StringBuilder·sb·=·new·StringBuilder(); 
3140 ········sb.append("unregister·offer·from·providerId·"); 
3141 ········sb.append(o.offer.providerId); 
3142 ········sb.append("·:·"); 
3143 ········sb.append(o.offer); 
3144 ········log(sb.toString()); 
3145 ········this.mNetworkOffers.remove(o);3098 ········this.mNetworkOffers.remove(o);
3146 ········o.offer.callback.asBinder().unlinkToDeath((IBinder$DeathRecipient)o,·0);3099 ········o.offer.callback.asBinder().unlinkToDeath((IBinder$DeathRecipient)o,·0);
3147 ····}3100 ····}
3148 ····3101 ····
3149 ····private·void·handleUnregisterNetworkProvider(final·Messenger·key)·{3102 ····private·void·handleUnregisterNetworkProvider(final·Messenger·key)·{
3150 ········final·ConnectivityService$NetworkProviderInfo·connectivityService$NetworkProviderInfo·=·(ConnectivityService$NetworkProviderInfo)this.mNetworkProviderInfos.remove(key);3103 ········final·ConnectivityService$NetworkProviderInfo·connectivityService$NetworkProviderInfo·=·(ConnectivityService$NetworkProviderInfo)this.mNetworkProviderInfos.remove(key);
3151 ········if·(connectivityService$NetworkProviderInfo·==·null)·{3104 ········if·(connectivityService$NetworkProviderInfo·==·null)·{
Offset 3593, 15 lines modifiedOffset 3546, 15 lines modified
3593 ········································································try·{3546 ········································································try·{
3594 ············································································final·int·netId3·=·network3.getNetId();3547 ············································································final·int·netId3·=·network3.getNetId();
3595 ············································································try·{3548 ············································································try·{
3596 ················································································final·Set·uids2·=·connectivityService$NetworkRequestInfo.getUids();3549 ················································································final·Set·uids2·=·connectivityService$NetworkRequestInfo.getUids();
3597 ················································································try·{3550 ················································································try·{
3598 ····················································································final·UidRangeParcel[]·uidRangeStableParcels·=·toUidRangeStableParcels(uids2);3551 ····················································································final·UidRangeParcel[]·uidRangeStableParcels·=·toUidRangeStableParcels(uids2);
3599 ····················································································try·{3552 ····················································································try·{
3600 ························································································final·NativeUidRangeConfig·nativeUidRangeConfig·=·new·NativeUidRangeConfig(netId3,·uidRangeStableParcels,·connectivityService$NetworkRequestInfo.getPreferenceOrderForNetd());3553 ························································································final·NativeUidRangeConfig·nativeUidRangeConfig·=·new·NativeUidRangeConfig(netId3,·uidRangeStableParcels,·connectivityService$NetworkRequestInfo.getPriorityForNetd());
3601 ························································································final·INetd·netd·=·mNetd;3554 ························································································final·INetd·netd·=·mNetd;
3602 ························································································try·{3555 ························································································try·{
3603 ····························································································netd.networkAddUidRangesParcel(nativeUidRangeConfig);3556 ····························································································netd.networkAddUidRangesParcel(nativeUidRangeConfig);
3604 ····························································································if·(networkAgentInfo·==·null)·{3557 ····························································································if·(networkAgentInfo·==·null)·{
3605 ································································································return;3558 ································································································return;
3606 ····························································································}3559 ····························································································}
3607 ····························································································final·INetd·mNetd2·=·this.mNetd;3560 ····························································································final·INetd·mNetd2·=·this.mNetd;
Offset 3611, 15 lines modifiedOffset 3564, 15 lines modified
3611 ····································································································try·{3564 ····································································································try·{
3612 ········································································································final·int·netId4·=·network4.getNetId();3565 ········································································································final·int·netId4·=·network4.getNetId();
3613 ········································································································try·{3566 ········································································································try·{
3614 ············································································································final·Set·uids3·=·connectivityService$NetworkRequestInfo.getUids();3567 ············································································································final·Set·uids3·=·connectivityService$NetworkRequestInfo.getUids();
3615 ············································································································try·{3568 ············································································································try·{
3616 ················································································································final·UidRangeParcel[]·uidRangeStableParcels2·=·toUidRangeStableParcels(uids3);3569 ················································································································final·UidRangeParcel[]·uidRangeStableParcels2·=·toUidRangeStableParcels(uids3);
3617 ················································································································try·{3570 ················································································································try·{
3618 ····················································································································final·NativeUidRangeConfig·nativeUidRangeConfig2·=·new·NativeUidRangeConfig(netId4,·uidRangeStableParcels2,·connectivityService$NetworkRequestInfo.getPreferenceOrderForNetd());3571 ····················································································································final·NativeUidRangeConfig·nativeUidRangeConfig2·=·new·NativeUidRangeConfig(netId4,·uidRangeStableParcels2,·connectivityService$NetworkRequestInfo.getPriorityForNetd());
3619 ····················································································································final·INetd·netd2·=·mNetd2;3572 ····················································································································final·INetd·netd2·=·mNetd2;
3620 ····················································································································try·{3573 ····················································································································try·{
3621 ························································································································netd2.networkRemoveUidRangesParcel(nativeUidRangeConfig2);3574 ························································································································netd2.networkRemoveUidRangesParcel(nativeUidRangeConfig2);
3622 ························································································································return;3575 ························································································································return;
3623 ························································································································try·{3576 ························································································································try·{
3624 ····························································································································try·{3577 ····························································································································try·{
3625 ································································································································final·StringBuilder·sb3·=·new·StringBuilder();3578 ································································································································final·StringBuilder·sb3·=·new·StringBuilder();
Offset 4006, 31 lines modifiedOffset 3959, 14 lines modified
4006 ············}3959 ············}
4007 ············networkInfo2.setDetailedState(networkInfo$DetailedState,·networkInfo.getReason(),·networkInfo.getExtraInfo());3960 ············networkInfo2.setDetailedState(networkInfo$DetailedState,·networkInfo.getReason(),·networkInfo.getExtraInfo());
4008 ········}3961 ········}
4009 ········networkInfo2.setRoaming(networkAgentInfo.networkCapabilities.hasCapability(18)·^·true);3962 ········networkInfo2.setRoaming(networkAgentInfo.networkCapabilities.hasCapability(18)·^·true);
4010 ········return·networkInfo2;3963 ········return·networkInfo2;
4011 ····}3964 ····}
4012 ····3965 ····
4013 ····private·int·networkMonitorValidationResultToConnDiagsValidationResult(final·int·n)·{ 
4014 ········if·((n·&·0x4)·!=·0x0)·{ 
4015 ············return·3; 
4016 ········} 
4017 ········if·((n·&·0x1)·==·0x0)·{ 
4018 ············return·0; 
4019 ········} 
4020 ········int·n2; 
4021 ········if·((n·&·0x2)·!=·0x0)·{ 
4022 ············n2·=·2; 
4023 ········} 
4024 ········else·{ 
4025 ············n2·=·1; 
4026 ········} 
4027 ········return·n2; 
4028 ····} 
4029 ···· 
4030 ····private·boolean·networkRequiresPrivateDnsValidation(final·NetworkAgentInfo·networkAgentInfo)·{3966 ····private·boolean·networkRequiresPrivateDnsValidation(final·NetworkAgentInfo·networkAgentInfo)·{
4031 ········return·NetworkMonitorUtils.isPrivateDnsValidationRequired(networkAgentInfo.networkCapabilities);3967 ········return·NetworkMonitorUtils.isPrivateDnsValidationRequired(networkAgentInfo.networkCapabilities);
4032 ····}3968 ····}
4033 ····3969 ····
4034 ····private·NetworkAgentInfo[]·networksSortedById()·{3970 ····private·NetworkAgentInfo[]·networksSortedById()·{
4035 ········final·NetworkAgentInfo[]·a·=·(NetworkAgentInfo[])this.mNetworkAgentInfos.toArray((Object[])new·NetworkAgentInfo[0]);3971 ········final·NetworkAgentInfo[]·a·=·(NetworkAgentInfo[])this.mNetworkAgentInfos.toArray((Object[])new·NetworkAgentInfo[0]);
4036 ········Arrays.sort(a,·Comparator.comparingInt((ToIntFunction<?·super·NetworkAgentInfo>)ConnectivityService$$ExternalSyntheticLambda14.INSTANCE));3972 ········Arrays.sort(a,·Comparator.comparingInt((ToIntFunction<?·super·NetworkAgentInfo>)ConnectivityService$$ExternalSyntheticLambda14.INSTANCE));
Offset 4157, 20 lines modifiedOffset 4093, 20 lines modified
4157 ········}4093 ········}
4158 ········networkAgentInfo.declaredCapabilities·=·new·NetworkCapabilities(networkCapabilities);4094 ········networkAgentInfo.declaredCapabilities·=·new·NetworkCapabilities(networkCapabilities);
4159 ····}4095 ····}
4160 ····4096 ····
4161 ····private·void·processDefaultNetworkChanges(final·ConnectivityService$NetworkReassignment·connectivityService$NetworkReassignment)·{4097 ····private·void·processDefaultNetworkChanges(final·ConnectivityService$NetworkReassignment·connectivityService$NetworkReassignment)·{
4162 ········boolean·b·=·false;4098 ········boolean·b·=·false;
4163 ········for·(final·ConnectivityService$NetworkRequestInfo·connectivityService$NetworkRequestInfo·:·this.mDefaultNetworkRequests)·{4099 ········for·(final·ConnectivityService$NetworkRequestInfo·connectivityService$NetworkRequestInfo·:·this.mDefaultNetworkRequests)·{
4164 ············final·ConnectivityService$NetworkReassignment$RequestReassignment·access$9200·=·ConnectivityService$NetworkReassignment.access$9200(connectivityService$NetworkReassignment,·connectivityService$NetworkRequestInfo);4100 ············final·ConnectivityService$NetworkReassignment$RequestReassignment·access$9000·=·ConnectivityService$NetworkReassignment.access$9000(connectivityService$NetworkReassignment,·connectivityService$NetworkRequestInfo);
4165 ············if·(access$9200·==·null)·{4101 ············if·(access$9000·==·null)·{
4166 ················continue;4102 ················continue;
4167 ············}4103 ············}
4168 ············b·=·true;4104 ············b·=·true;
4169 ············this.makeDefault(connectivityService$NetworkRequestInfo,·access$9200.mOldNetwork,·access$9200.mNewNetwork);4105 ············this.makeDefault(connectivityService$NetworkRequestInfo,·access$9000.mOldNetwork,·access$9000.mNewNetwork);
4170 ········}4106 ········}
4171 ········if·(b)·{4107 ········if·(b)·{
4172 ············this.scheduleReleaseNetworkTransitionWakelock();4108 ············this.scheduleReleaseNetworkTransitionWakelock();
4173 ········}4109 ········}
4174 ····}4110 ····}
4175 ····4111 ····
4176 ····private·void·processLinkPropertiesFromAgent(final·NetworkAgentInfo·networkAgentInfo,·final·LinkProperties·linkProperties)·{4112 ····private·void·processLinkPropertiesFromAgent(final·NetworkAgentInfo·networkAgentInfo,·final·LinkProperties·linkProperties)·{
Offset 4274, 15 lines modifiedOffset 4210, 15 lines modified
4274 ········catch·(Exception·ex)·{}4210 ········catch·(Exception·ex)·{}
4275 ····}4211 ····}
4276 ····4212 ····
4277 ····private·Network·registerNetworkAgentInternal(final·INetworkAgent·networkAgent,·final·NetworkInfo·networkInfo,·final·LinkProperties·linkProperties,·final·NetworkCapabilities·networkCapabilities,·final·NetworkScore·networkScore,·final·NetworkAgentConfig·networkAgentConfig,·final·int·n,·final·int·n2)·{4213 ····private·Network·registerNetworkAgentInternal(final·INetworkAgent·networkAgent,·final·NetworkInfo·networkInfo,·final·LinkProperties·linkProperties,·final·NetworkCapabilities·networkCapabilities,·final·NetworkScore·networkScore,·final·NetworkAgentConfig·networkAgentConfig,·final·int·n,·final·int·n2)·{
4278 ········NetworkCapabilities·networkCapabilities3;4214 ········NetworkCapabilities·networkCapabilities3;
4279 ········if·(networkCapabilities.hasTransport(7))·{4215 ········if·(networkCapabilities.hasTransport(7))·{
4280 ············final·NetworkCapabilities·networkCapabilities2·=·new·NetworkCapabilities(networkCapabilities);4216 ············final·NetworkCapabilities·networkCapabilities2·=·new·NetworkCapabilities(networkCapabilities);
4281 ············networkCapabilities2.restrictCapabilitiesForTestNetwork(n2);4217 ············networkCapabilities2.restrictCapabilitesForTestNetwork(n2);
4282 ············networkCapabilities3·=·networkCapabilities2;4218 ············networkCapabilities3·=·networkCapabilities2;
4283 ········}4219 ········}
4284 ········else·{4220 ········else·{
4285 ············networkCapabilities3·=·networkCapabilities;4221 ············networkCapabilities3·=·networkCapabilities;
4286 ········}4222 ········}
4287 ········final·LinkProperties·linkProperties2·=·new·LinkProperties(linkProperties);4223 ········final·LinkProperties·linkProperties2·=·new·LinkProperties(linkProperties);
4288 ········final·NetworkCapabilities·networkCapabilities4·=·new·NetworkCapabilities(networkCapabilities3);4224 ········final·NetworkCapabilities·networkCapabilities4·=·new·NetworkCapabilities(networkCapabilities3);
Offset 4748, 23 lines modifiedOffset 4684, 18 lines modified
4748 ················return·false;4684 ················return·false;
4749 ············}4685 ············}
4750 ········}4686 ········}
4751 ········return·b;4687 ········return·b;
4752 ····}4688 ····}
4753 ····4689 ····
4754 ····private·void·updateAvoidBadWifi()·{4690 ····private·void·updateAvoidBadWifi()·{
4755 ········this.ensureRunningOnConnectivityServiceThread(); 
4756 ········final·Iterator·iterator·=·this.mNetworkAgentInfos.iterator();4691 ········final·Iterator·iterator·=·this.mNetworkAgentInfos.iterator();
4757 ········while·(iterator.hasNext())·{4692 ········while·(iterator.hasNext())·{
4758 ············((NetworkAgentInfo)iterator.next()).updateScoreForNetworkAgentUpdate();4693 ············((NetworkAgentInfo)iterator.next()).updateScoreForNetworkAgentUpdate();
4759 ········}4694 ········}
4760 ········final·Iterator<ConnectivityService$NetworkOfferInfo>·iterator2·=·new·ArrayList<ConnectivityService$NetworkOfferInfo>(this.mNetworkOffers).iterator(); 
4761 ········while·(iterator2.hasNext())·{ 
4762 ············this.updateOfferScore(((ConnectivityService$NetworkOfferInfo)iterator2.next()).offer); 
4763 ········} 
4764 ········this.rematchAllNetworksAndRequests();4695 ········this.rematchAllNetworksAndRequests();
4765 ····}4696 ····}
4766 ····4697 ····
4767 ····private·void·updateCapabilities(final·int·n,·final·NetworkAgentInfo·networkAgentInfo,·final·NetworkCapabilities·networkCapabilities)·{4698 ····private·void·updateCapabilities(final·int·n,·final·NetworkAgentInfo·networkAgentInfo,·final·NetworkCapabilities·networkCapabilities)·{
4768 ········final·NetworkCapabilities·mixInCapabilities·=·this.mixInCapabilities(networkAgentInfo,·networkCapabilities);4699 ········final·NetworkCapabilities·mixInCapabilities·=·this.mixInCapabilities(networkAgentInfo,·networkCapabilities);
4769 ········if·(Objects.equals(networkAgentInfo.networkCapabilities,·mixInCapabilities))·{4700 ········if·(Objects.equals(networkAgentInfo.networkCapabilities,·mixInCapabilities))·{
4770 ············return;4701 ············return;
Offset 4976, 25 lines modifiedOffset 4907, 25 lines modified
4976 ················catch·(Exception·ex9)·{}4907 ················catch·(Exception·ex9)·{}
4977 ············}4908 ············}
4978 ············catch·(Exception·ex10)·{}4909 ············catch·(Exception·ex10)·{}
4979 ········}4910 ········}
4980 ····}4911 ····}
4981 ····4912 ····
4982 ····private·void·updateLegacyTypeTrackerAndVpnLockdownForRematch(final·ConnectivityService$NetworkReassignment·connectivityService$NetworkReassignment,·final·Collection·collection)·{4913 ····private·void·updateLegacyTypeTrackerAndVpnLockdownForRematch(final·ConnectivityService$NetworkReassignment·connectivityService$NetworkReassignment,·final·Collection·collection)·{
4983 ········final·ConnectivityService$NetworkReassignment$RequestReassignment·access$9200·=·ConnectivityService$NetworkReassignment.access$9200(connectivityService$NetworkReassignment,·this.mDefaultRequest);4914 ········final·ConnectivityService$NetworkReassignment$RequestReassignment·access$9000·=·ConnectivityService$NetworkReassignment.access$9000(connectivityService$NetworkReassignment,·this.mDefaultRequest);
4984 ········NetworkAgentInfo·mNewNetwork·=·null;4915 ········NetworkAgentInfo·mNewNetwork·=·null;
4985 ········NetworkAgentInfo·mOldNetwork;4916 ········NetworkAgentInfo·mOldNetwork;
4986 ········if·(access$9200·!=·null)·{4917 ········if·(access$9000·!=·null)·{
4987 ············mOldNetwork·=·access$9200.mOldNetwork;4918 ············mOldNetwork·=·access$9000.mOldNetwork;
4988 ········}4919 ········}
4989 ········else·{4920 ········else·{
4990 ············mOldNetwork·=·null;4921 ············mOldNetwork·=·null;
4991 ········}4922 ········}
4992 ········if·(access$9200·!=·null)·{4923 ········if·(access$9000·!=·null)·{
4993 ············mNewNetwork·=·access$9200.mNewNetwork;4924 ············mNewNetwork·=·access$9000.mNewNetwork;
4994 ········}4925 ········}
4995 ········if·(mOldNetwork·!=·mNewNetwork)·{4926 ········if·(mOldNetwork·!=·mNewNetwork)·{
4996 ············if·(mOldNetwork·!=·null)·{4927 ············if·(mOldNetwork·!=·null)·{
4997 ················this.mLegacyTypeTracker.remove(mOldNetwork.networkInfo.getType(),·mOldNetwork,·true);4928 ················this.mLegacyTypeTracker.remove(mOldNetwork.networkInfo.getType(),·mOldNetwork,·true);
4998 ············}4929 ············}
4999 ············if·(mNewNetwork·!=·null)·{4930 ············if·(mNewNetwork·!=·null)·{
5000 ················int·mDefaultInetConditionPublished;4931 ················int·mDefaultInetConditionPublished;
Offset 5245, 27 lines modifiedOffset 5176, 14 lines modified
5245 ············sb.append(networkScore);5176 ············sb.append(networkScore);
5246 ············log(sb.toString());5177 ············log(sb.toString());
5247 ········}5178 ········}
5248 ········networkAgentInfo.setScore(networkScore);5179 ········networkAgentInfo.setScore(networkScore);
5249 ········this.rematchAllNetworksAndRequests();5180 ········this.rematchAllNetworksAndRequests();
5250 ····}5181 ····}
5251 ····5182 ····
5252 ····private·void·updateOfferScore(final·NetworkOffer·networkOffer)·{ 
5253 ········final·NetworkCapabilities·caps·=·networkOffer.caps; 
5254 ········boolean·b·=·false; 
5255 ········if·(caps.hasTransport(0)·&&·!this.avoidBadWifi())·{ 
5256 ············b·=·true; 
5257 ········} 
5258 ········final·NetworkOffer·obj·=·new·NetworkOffer(networkOffer.score.withYieldToBadWiFi(b),·networkOffer.caps,·networkOffer.callback,·networkOffer.providerId); 
5259 ········if·(networkOffer.equals(obj))·{ 
5260 ············return; 
5261 ········} 
5262 ········this.handleRegisterNetworkOffer(obj); 
5263 ····} 
5264 ···· 
5265 ····private·void·updatePrivateDns(final·NetworkAgentInfo·networkAgentInfo,·final·PrivateDnsConfig·privateDnsConfig)·{5183 ····private·void·updatePrivateDns(final·NetworkAgentInfo·networkAgentInfo,·final·PrivateDnsConfig·privateDnsConfig)·{
5266 ········this.mDnsManager.updatePrivateDns(networkAgentInfo.network,·privateDnsConfig);5184 ········this.mDnsManager.updatePrivateDns(networkAgentInfo.network,·privateDnsConfig);
5267 ········this.updateDnses(networkAgentInfo.linkProperties,·null,·networkAgentInfo.network.getNetId());5185 ········this.updateDnses(networkAgentInfo.linkProperties,·null,·networkAgentInfo.network.getNetId());
5268 ····}5186 ····}
5269 ····5187 ····
5270 ····private·void·updateProxy(final·LinkProperties·linkProperties,·final·LinkProperties·linkProperties2)·{5188 ····private·void·updateProxy(final·LinkProperties·linkProperties,·final·LinkProperties·linkProperties2)·{
5271 ········ProxyInfo·httpProxy·=·null;5189 ········ProxyInfo·httpProxy·=·null;
Offset 5757, 14 lines modifiedOffset 5675, 25 lines modified
5757 ············final·StringBuilder·sb·=·new·StringBuilder();5675 ············final·StringBuilder·sb·=·new·StringBuilder();
5758 ············sb.append(OemNetworkPreferences.oemNetworkPreferenceToString(intValue));5676 ············sb.append(OemNetworkPreferences.oemNetworkPreferenceToString(intValue));
5759 ············sb.append("·is·an·invalid·value.");5677 ············sb.append("·is·an·invalid·value.");
5760 ············throw·new·IllegalArgumentException(sb.toString());5678 ············throw·new·IllegalArgumentException(sb.toString());
5761 ········}5679 ········}
5762 ····}5680 ····}
5763 ····5681 ····
 5682 ····private·void·verifyCallingUidAndPackage(final·String·str,·final·int·i)·{
 5683 ········if·(this.getAppUid(str,·UserHandle.getUserHandleForUid(i))·==·i)·{
 5684 ············return;
 5685 ········}
 5686 ········final·StringBuilder·sb·=·new·StringBuilder();
 5687 ········sb.append(str);
 5688 ········sb.append("·does·not·belong·to·uid·");
 5689 ········sb.append(i);
 5690 ········throw·new·SecurityException(sb.toString());
 5691 ····}
 5692 ····
5764 ····private·void·wakeupModifyInterface(final·String·str,·final·NetworkCapabilities·networkCapabilities,·final·boolean·b)·{5693 ····private·void·wakeupModifyInterface(final·String·str,·final·NetworkCapabilities·networkCapabilities,·final·boolean·b)·{
5765 ········if·(!networkCapabilities.hasTransport(1))·{5694 ········if·(!networkCapabilities.hasTransport(1))·{
5766 ············return;5695 ············return;
5767 ········}5696 ········}
5768 ········final·int·integer·=·this.mResources.get().getInteger(2130968581);5697 ········final·int·integer·=·this.mResources.get().getInteger(2130968581);
5769 ········final·int·integer2·=·this.mResources.get().getInteger(2130968582);5698 ········final·int·integer2·=·this.mResources.get().getInteger(2130968582);
5770 ········if·(integer·==·0·||·integer2·==·0)·{5699 ········if·(integer·==·0·||·integer2·==·0)·{
Offset 6422, 19 lines modifiedOffset 6351, 15 lines modified
6422 ········}6351 ········}
6423 ····}6352 ····}
6424 ····6353 ····
6425 ····public·void·offerNetwork(final·int·n,·final·NetworkScore·obj,·final·NetworkCapabilities·obj2,·final·INetworkOfferCallback·obj3)·{6354 ····public·void·offerNetwork(final·int·n,·final·NetworkScore·obj,·final·NetworkCapabilities·obj2,·final·INetworkOfferCallback·obj3)·{
6426 ········Objects.requireNonNull(obj);6355 ········Objects.requireNonNull(obj);
6427 ········Objects.requireNonNull(obj2);6356 ········Objects.requireNonNull(obj2);
6428 ········Objects.requireNonNull(obj3);6357 ········Objects.requireNonNull(obj3);
6429 ········boolean·b·=·false; 
6430 ········if·(obj2.hasTransport(0)·&&·!this.avoidBadWifi())·{ 
6431 ············b·=·true; 
6432 ········} 
6433 ········final·NetworkOffer·networkOffer·=·new·NetworkOffer(FullScore.makeProspectiveScore(obj,·obj2,·b),·obj2,·obj3,·n);6358 ········final·NetworkOffer·networkOffer·=·new·NetworkOffer(FullScore.makeProspectiveScore(obj,·obj2),·obj2,·obj3,·n);
6434 ········final·ConnectivityService$InternalHandler·mHandler·=·this.mHandler;6359 ········final·ConnectivityService$InternalHandler·mHandler·=·this.mHandler;
6435 ········mHandler.sendMessage(mHandler.obtainMessage(52,·(Object)networkOffer));6360 ········mHandler.sendMessage(mHandler.obtainMessage(52,·(Object)networkOffer));
6436 ····}6361 ····}
6437 ····6362 ····
6438 ····public·void·onSendFinished(final·PendingIntent·obj,·final·Intent·intent,·final·int·n,·final·String·s,·final·Bundle·bundle)·{6363 ····public·void·onSendFinished(final·PendingIntent·obj,·final·Intent·intent,·final·int·n,·final·String·s,·final·Bundle·bundle)·{
6439 ········final·StringBuilder·sb·=·new·StringBuilder();6364 ········final·StringBuilder·sb·=·new·StringBuilder();
6440 ········sb.append("Finished·sending·");6365 ········sb.append("Finished·sending·");
Offset 6483, 26 lines modifiedOffset 6408, 23 lines modified
6483 ········sb.append(obj2);6408 ········sb.append(obj2);
6484 ········log(sb.toString());6409 ········log(sb.toString());
6485 ········final·ConnectivityService$InternalHandler·mHandler·=·this.mHandler;6410 ········final·ConnectivityService$InternalHandler·mHandler·=·this.mHandler;
6486 ········mHandler.sendMessage(mHandler.obtainMessage(26,·(Object)obj2));6411 ········mHandler.sendMessage(mHandler.obtainMessage(26,·(Object)obj2));
6487 ········return·networkRequest;6412 ········return·networkRequest;
6488 ····}6413 ····}
6489 ····6414 ····
6490 ····public·void·registerConnectivityDiagnosticsCallback(final·IConnectivityDiagnosticsCallback·obj,·final·NetworkRequest·obj2,·final·String·obj3)·{6415 ····public·void·registerConnectivityDiagnosticsCallback(final·IConnectivityDiagnosticsCallback·connectivityDiagnosticsCallback,·final·NetworkRequest·networkRequest,·final·String·s)·{
6491 ········Objects.requireNonNull(obj,·"callback·must·not·be·null"); 
6492 ········Objects.requireNonNull(obj2,·"request·must·not·be·null"); 
6493 ········Objects.requireNonNull(obj3,·"callingPackageName·must·not·be·null"); 
6494 ········final·int·legacyType·=·obj2.legacyType;6416 ········final·int·legacyType·=·networkRequest.legacyType;
6495 ········final·int·n·=·-1;6417 ········final·int·n·=·-1;
6496 ········if·(legacyType·==·n)·{6418 ········if·(legacyType·==·n)·{
6497 ············final·int·callingUid·=·this.mDeps.getCallingUid();6419 ············final·int·callingUid·=·this.mDeps.getCallingUid();
6498 ············this.mAppOpsManager.checkPackage(callingUid,·obj3);6420 ············this.mAppOpsManager.checkPackage(callingUid,·s);
6499 ············final·NetworkCapabilities·networkCapabilities·=·new·NetworkCapabilities(obj2.networkCapabilities);6421 ············final·NetworkCapabilities·networkCapabilities·=·new·NetworkCapabilities(networkRequest.networkCapabilities);
6500 ············this.restrictRequestUidsForCallerAndSetRequestorInfo(networkCapabilities,·callingUid,·obj3);6422 ············this.restrictRequestUidsForCallerAndSetRequestorInfo(networkCapabilities,·callingUid,·s);
6501 ············final·ConnectivityService$ConnectivityDiagnosticsCallbackInfo·connectivityService$ConnectivityDiagnosticsCallbackInfo·=·new·ConnectivityService$ConnectivityDiagnosticsCallbackInfo(this,·obj,·new·ConnectivityService$NetworkRequestInfo(this,·callingUid,·new·NetworkRequest(networkCapabilities,·n,·this.nextNetworkRequestId(),·NetworkRequest$Type.LISTEN)),·obj3);6423 ············final·ConnectivityService$ConnectivityDiagnosticsCallbackInfo·connectivityService$ConnectivityDiagnosticsCallbackInfo·=·new·ConnectivityService$ConnectivityDiagnosticsCallbackInfo(this,·connectivityDiagnosticsCallback,·new·ConnectivityService$NetworkRequestInfo(this,·callingUid,·new·NetworkRequest(networkCapabilities,·n,·this.nextNetworkRequestId(),·NetworkRequest$Type.LISTEN)),·s);
6502 ············final·ConnectivityService$ConnectivityDiagnosticsHandler·mConnectivityDiagnosticsHandler·=·this.mConnectivityDiagnosticsHandler;6424 ············final·ConnectivityService$ConnectivityDiagnosticsHandler·mConnectivityDiagnosticsHandler·=·this.mConnectivityDiagnosticsHandler;
6503 ············mConnectivityDiagnosticsHandler.sendMessage(mConnectivityDiagnosticsHandler.obtainMessage(1,·(Object)connectivityService$ConnectivityDiagnosticsCallbackInfo));6425 ············mConnectivityDiagnosticsHandler.sendMessage(mConnectivityDiagnosticsHandler.obtainMessage(1,·(Object)connectivityService$ConnectivityDiagnosticsCallbackInfo));
6504 ············return;6426 ············return;
6505 ········}6427 ········}
6506 ········throw·new·IllegalArgumentException("ConnectivityManager.TYPE_*·are·deprecated.·Please·use·NetworkCapabilities·instead.");6428 ········throw·new·IllegalArgumentException("ConnectivityManager.TYPE_*·are·deprecated.·Please·use·NetworkCapabilities·instead.");
6507 ····}6429 ····}
6508 ····6430 ····
Offset 6598, 16 lines modifiedOffset 6520, 20 lines modified
6598 ········NetworkAgentInfo·networkAgentInfo;6520 ········NetworkAgentInfo·networkAgentInfo;
6599 ········if·(network·==·null)·{6521 ········if·(network·==·null)·{
6600 ············networkAgentInfo·=·this.getDefaultNetwork();6522 ············networkAgentInfo·=·this.getDefaultNetwork();
6601 ········}6523 ········}
6602 ········else·{6524 ········else·{
6603 ············networkAgentInfo·=·this.getNetworkAgentInfoForNetwork(network);6525 ············networkAgentInfo·=·this.getNetworkAgentInfoForNetwork(network);
6604 ········}6526 ········}
 6527 ········if·(networkAgentInfo·!=·null)·{
 6528 ············final·ConnectivityService$ConnectivityDiagnosticsHandler·mConnectivityDiagnosticsHandler·=·this.mConnectivityDiagnosticsHandler;
 6529 ············mConnectivityDiagnosticsHandler.sendMessage(mConnectivityDiagnosticsHandler.obtainMessage(5,·encodeBool,·0,·(Object)networkAgentInfo));
 6530 ········}
6605 ········final·ConnectivityService$InternalHandler·mHandler·=·this.mHandler;6531 ········final·ConnectivityService$InternalHandler·mHandler·=·this.mHandler;
6606 ········mHandler.sendMessage(mHandler.obtainMessage(36,·callingUid,·encodeBool,·(Object)networkAgentInfo));6532 ········mHandler.sendMessage(mHandler.obtainMessage(36,·callingUid,·encodeBool,·(Object)network));
6607 ····}6533 ····}
6608 ····6534 ····
6609 ····public·boolean·requestBandwidthUpdate(final·Network·network)·{6535 ····public·boolean·requestBandwidthUpdate(final·Network·network)·{
6610 ········this.enforceAccessPermission();6536 ········this.enforceAccessPermission();
6611 ········if·(network·==·null)·{6537 ········if·(network·==·null)·{
6612 ············return·false;6538 ············return·false;
6613 ········}6539 ········}
Offset 6731, 14 lines modifiedOffset 6657, 15 lines modified
6731 ········}6657 ········}
6732 ····}6658 ····}
6733 ····6659 ····
6734 ····public·boolean·requestRouteToHostAddress(final·int·i,·final·byte[]·addr,·final·String·s,·final·String·s2)·{6660 ····public·boolean·requestRouteToHostAddress(final·int·i,·final·byte[]·addr,·final·String·s,·final·String·s2)·{
6735 ········if·(this.disallowedBecauseSystemCaller())·{6661 ········if·(this.disallowedBecauseSystemCaller())·{
6736 ············return·false;6662 ············return·false;
6737 ········}6663 ········}
 6664 ········this.verifyCallingUidAndPackage(s,·this.mDeps.getCallingUid());
6738 ········this.enforceChangePermission(s,·s2);6665 ········this.enforceChangePermission(s,·s2);
6739 ········if·(this.mProtectedNetworks.contains(i))·{6666 ········if·(this.mProtectedNetworks.contains(i))·{
6740 ············this.enforceConnectivityRestrictedNetworksPermission();6667 ············this.enforceConnectivityRestrictedNetworksPermission();
6741 ········}6668 ········}
6742 ········try·{6669 ········try·{
6743 ············final·InetAddress·byAddress·=·InetAddress.getByAddress(addr);6670 ············final·InetAddress·byAddress·=·InetAddress.getByAddress(addr);
6744 ············if·(!ConnectivityManager.isNetworkTypeValid(i))·{6671 ············if·(!ConnectivityManager.isNetworkTypeValid(i))·{
Offset 6987, 34 lines modifiedOffset 6914, 32 lines modified
6987 ····public·boolean·shouldAvoidBadWifi()·{6914 ····public·boolean·shouldAvoidBadWifi()·{
6988 ········if·(this.checkNetworkStackPermission())·{6915 ········if·(this.checkNetworkStackPermission())·{
6989 ············return·this.avoidBadWifi();6916 ············return·this.avoidBadWifi();
6990 ········}6917 ········}
6991 ········throw·new·SecurityException("avoidBadWifi·requires·NETWORK_STACK·permission");6918 ········throw·new·SecurityException("avoidBadWifi·requires·NETWORK_STACK·permission");
6992 ····}6919 ····}
6993 ····6920 ····
6994 ····public·void·simulateDataStall(final·int·detectionMethod,·final·long·timestampMillis,·final·Network·obj,·final·PersistableBundle·obj2)·{6921 ····public·void·simulateDataStall(final·int·detectionMethod,·final·long·timestampMillis,·final·Network·network,·final·PersistableBundle·persistableBundle)·{
6995 ········Objects.requireNonNull(obj,·"network·must·not·be·null"); 
6996 ········Objects.requireNonNull(obj2,·"extras·must·not·be·null"); 
6997 ········this.enforceAnyPermissionOf("android.permission.MANAGE_TEST_NETWORKS",·"android.permission.NETWORK_STACK");6922 ········this.enforceAnyPermissionOf("android.permission.MANAGE_TEST_NETWORKS",·"android.permission.NETWORK_STACK");
6998 ········if·(!this.getNetworkCapabilitiesInternal(obj).hasTransport(7))·{6923 ········if·(!this.getNetworkCapabilitiesInternal(network).hasTransport(7))·{
6999 ············throw·new·SecurityException("Data·Stall·simluation·is·only·possible·for·test·networks");6924 ············throw·new·SecurityException("Data·Stall·simluation·is·only·possible·for·test·networks");
7000 ········}6925 ········}
7001 ········final·NetworkAgentInfo·networkAgentInfoForNetwork·=·this.getNetworkAgentInfoForNetwork(obj);6926 ········final·NetworkAgentInfo·networkAgentInfoForNetwork·=·this.getNetworkAgentInfoForNetwork(network);
7002 ········if·(networkAgentInfoForNetwork·!=·null·&&·networkAgentInfoForNetwork.creatorUid·==·this.mDeps.getCallingUid())·{6927 ········if·(networkAgentInfoForNetwork·!=·null·&&·networkAgentInfoForNetwork.creatorUid·==·this.mDeps.getCallingUid())·{
7003 ············final·DataStallReportParcelable·dataStallReportParcelable·=·new·DataStallReportParcelable();6928 ············final·DataStallReportParcelable·dataStallReportParcelable·=·new·DataStallReportParcelable();
7004 ············dataStallReportParcelable.timestampMillis·=·timestampMillis;6929 ············dataStallReportParcelable.timestampMillis·=·timestampMillis;
7005 ············dataStallReportParcelable.detectionMethod·=·detectionMethod;6930 ············dataStallReportParcelable.detectionMethod·=·detectionMethod;
7006 ············if·(this.hasDataStallDetectionMethod(dataStallReportParcelable,·1))·{6931 ············if·(this.hasDataStallDetectionMethod(dataStallReportParcelable,·1))·{
7007 ················dataStallReportParcelable.dnsConsecutiveTimeouts·=·obj2.getInt("dnsConsecutiveTimeouts");6932 ················dataStallReportParcelable.dnsConsecutiveTimeouts·=·persistableBundle.getInt("dnsConsecutiveTimeouts");
7008 ············}6933 ············}
7009 ············if·(this.hasDataStallDetectionMethod(dataStallReportParcelable,·2))·{6934 ············if·(this.hasDataStallDetectionMethod(dataStallReportParcelable,·2))·{
7010 ················dataStallReportParcelable.tcpPacketFailRate·=·obj2.getInt("tcpPacketFailRate");6935 ················dataStallReportParcelable.tcpPacketFailRate·=·persistableBundle.getInt("tcpPacketFailRate");
7011 ················dataStallReportParcelable.tcpMetricsCollectionPeriodMillis·=·obj2.getInt("tcpMetricsCollectionPeriodMillis");6936 ················dataStallReportParcelable.tcpMetricsCollectionPeriodMillis·=·persistableBundle.getInt("tcpMetricsCollectionPeriodMillis");
7012 ············}6937 ············}
7013 ············this.notifyDataStallSuspected(dataStallReportParcelable,·obj.getNetId());6938 ············this.notifyDataStallSuspected(dataStallReportParcelable,·network.getNetId());
7014 ············return;6939 ············return;
7015 ········}6940 ········}
7016 ········throw·new·SecurityException("Data·Stall·simulation·is·only·possible·for·network·creators");6941 ········throw·new·SecurityException("Data·Stall·simulation·is·only·possible·for·network·creators");
7017 ····}6942 ····}
7018 ····6943 ····
7019 ····public·void·startCaptivePortalApp(final·Network·network)·{6944 ····public·void·startCaptivePortalApp(final·Network·network)·{
7020 ········this.enforceNetworkStackOrSettingsPermission();6945 ········this.enforceNetworkStackOrSettingsPermission();