Offset 13, 15 lines modifiedOffset 13, 18 lines modified
13 import·android.os.WorkSource;13 import·android.os.WorkSource;
14 import·com.android.wifi.x.android.os.HandlerExecutor;14 import·com.android.wifi.x.android.os.HandlerExecutor;
15 import·android.net.wifi.WifiScanner$ScanSettings$HiddenNetwork;15 import·android.net.wifi.WifiScanner$ScanSettings$HiddenNetwork;
16 import·com.android.server.wifi.util.NativeUtil;16 import·com.android.server.wifi.util.NativeUtil;
17 import·com.android.wifi.x.com.android.internal.util.Preconditions;17 import·com.android.wifi.x.com.android.internal.util.Preconditions;
18 import·java.util.Objects;18 import·java.util.Objects;
19 import·android.text.TextUtils;19 import·android.text.TextUtils;
 20 import·java.util.stream.Collector;
 21 import·java.util.stream.Collectors;
20 import·java.util.ArrayList;22 import·java.util.ArrayList;
 23 import·java.util.List;
21 import·java.util.function.IntFunction;24 import·java.util.function.IntFunction;
22 import·android.content.pm.PackageManager;25 import·android.content.pm.PackageManager;
23 import·android.content.pm.PackageManager$NameNotFoundException;26 import·android.content.pm.PackageManager$NameNotFoundException;
24 import·android.content.pm.ApplicationInfo;27 import·android.content.pm.ApplicationInfo;
25 import·android.os.UserHandle;28 import·android.os.UserHandle;
26 import·java.util.function.Function;29 import·java.util.function.Function;
27 import·java.util.Comparator;30 import·java.util.Comparator;
Offset 30, 38 lines modifiedOffset 33, 37 lines modified
30 import·android.os.IBinder;33 import·android.os.IBinder;
31 import·android.os.Binder;34 import·android.os.Binder;
32 import·android.os.RemoteException;35 import·android.os.RemoteException;
33 import·android.net.wifi.INetworkRequestMatchCallback;36 import·android.net.wifi.INetworkRequestMatchCallback;
34 import·android.app.AlarmManager$OnAlarmListener;37 import·android.app.AlarmManager$OnAlarmListener;
35 import·java.util.Iterator;38 import·java.util.Iterator;
36 import·java.util.Set;39 import·java.util.Set;
37 import·java.util.Collection; 
38 import·android.util.Log;40 import·android.util.Log;
39 import·java.util.LinkedHashSet;41 import·java.util.LinkedHashSet;
40 import·android.net.MacAddress;42 import·android.net.MacAddress;
41 import·java.util.HashSet;43 import·java.util.HashSet;
 44 import·java.util.Collection;
42 import·android.net.wifi.ScanResult;45 import·android.net.wifi.ScanResult;
43 import·java.util.HashMap;46 import·java.util.HashMap;
44 import·android.net.NetworkCapabilities;47 import·android.net.NetworkCapabilities;
45 import·android.os.Looper;48 import·android.os.Looper;
46 import·android.net.wifi.WifiScanner;49 import·android.net.wifi.WifiScanner;
47 import·com.android.server.wifi.util.WifiPermissionsUtil;50 import·com.android.server.wifi.util.WifiPermissionsUtil;
48 import·android.net.wifi.WifiConfiguration;51 import·android.net.wifi.WifiConfiguration;
49 import·java.util.Map; 
50 import·android.net.wifi.WifiScanner$ScanSettings;52 import·android.net.wifi.WifiScanner$ScanSettings;
51 import·com.android.server.wifi.util.ExternalCallbackTracker;53 import·com.android.server.wifi.util.ExternalCallbackTracker;
52 import·android.os.Handler;54 import·android.os.Handler;
53 import·android.content.Context;55 import·android.content.Context;
54 import·android.companion.CompanionDeviceManager;56 import·android.companion.CompanionDeviceManager;
55 import·android.app.AppOpsManager;57 import·android.app.AppOpsManager;
56 import·android.app.AlarmManager;58 import·android.app.AlarmManager;
57 import·android.app.ActivityManager;59 import·android.app.ActivityManager;
58 import·android.net.wifi.WifiNetworkSpecifier;60 import·android.net.wifi.WifiNetworkSpecifier;
59 import·android.net.NetworkRequest;61 import·android.net.NetworkRequest;
60 import·java.util.List;62 import·java.util.Map;
61 import·com.android.wifi.x.android.net.NetworkFactory;63 import·com.android.wifi.x.android.net.NetworkFactory;
  
62 public·class·WifiNetworkFactory·extends·NetworkFactory64 public·class·WifiNetworkFactory·extends·NetworkFactory
63 {65 {
64 ····public·static·final·int·CACHED_SCAN_RESULTS_MAX_AGE_IN_MILLIS·=·20000;66 ····public·static·final·int·CACHED_SCAN_RESULTS_MAX_AGE_IN_MILLIS·=·20000;
65 ····public·static·final·int·NETWORK_CONNECTION_TIMEOUT_MS·=·30000;67 ····public·static·final·int·NETWORK_CONNECTION_TIMEOUT_MS·=·30000;
66 ····public·static·final·int·NUM_OF_ACCESS_POINT_LIMIT_PER_APP·=·50;68 ····public·static·final·int·NUM_OF_ACCESS_POINT_LIMIT_PER_APP·=·50;
Offset 69, 15 lines modifiedOffset 71, 15 lines modified
69 ····private·static·final·int·SCORE_FILTER·=·60;71 ····private·static·final·int·SCORE_FILTER·=·60;
70 ····private·static·final·String·TAG·=·"WifiNetworkFactory";72 ····private·static·final·String·TAG·=·"WifiNetworkFactory";
71 ····public·static·final·String·UI_START_INTENT_ACTION·=·"com.android.settings.wifi.action.NETWORK_REQUEST";73 ····public·static·final·String·UI_START_INTENT_ACTION·=·"com.android.settings.wifi.action.NETWORK_REQUEST";
72 ····public·static·final·String·UI_START_INTENT_CATEGORY·=·"android.intent.category.DEFAULT";74 ····public·static·final·String·UI_START_INTENT_CATEGORY·=·"android.intent.category.DEFAULT";
73 ····public·static·final·String·UI_START_INTENT_EXTRA_APP_NAME·=·"com.android.settings.wifi.extra.APP_NAME";75 ····public·static·final·String·UI_START_INTENT_EXTRA_APP_NAME·=·"com.android.settings.wifi.extra.APP_NAME";
74 ····public·static·final·String·UI_START_INTENT_EXTRA_REQUEST_IS_FOR_SINGLE_NETWORK·=·"com.android.settings.wifi.extra.REQUEST_IS_FOR_SINGLE_NETWORK";76 ····public·static·final·String·UI_START_INTENT_EXTRA_REQUEST_IS_FOR_SINGLE_NETWORK·=·"com.android.settings.wifi.extra.REQUEST_IS_FOR_SINGLE_NETWORK";
75 ····public·static·final·int·USER_SELECTED_NETWORK_CONNECT_RETRY_MAX·=·3;77 ····public·static·final·int·USER_SELECTED_NETWORK_CONNECT_RETRY_MAX·=·3;
76 ····private·List·mActiveMatchedScanResults;78 ····private·Map·mActiveMatchedScanResults;
77 ····private·NetworkRequest·mActiveSpecificNetworkRequest;79 ····private·NetworkRequest·mActiveSpecificNetworkRequest;
78 ····private·WifiNetworkSpecifier·mActiveSpecificNetworkRequestSpecifier;80 ····private·WifiNetworkSpecifier·mActiveSpecificNetworkRequestSpecifier;
79 ····private·final·ActivityManager·mActivityManager;81 ····private·final·ActivityManager·mActivityManager;
80 ····private·final·AlarmManager·mAlarmManager;82 ····private·final·AlarmManager·mAlarmManager;
81 ····private·final·AppOpsManager·mAppOpsManager;83 ····private·final·AppOpsManager·mAppOpsManager;
82 ····private·String·mApprovedApp;84 ····private·String·mApprovedApp;
83 ····private·final·Clock·mClock;85 ····private·final·Clock·mClock;
Offset 150, 15 lines modifiedOffset 152, 15 lines modified
150 ····}152 ····}
151 ····153 ····
152 ····private·void·addNetworkToUserApprovedAccessPointMap(final·WifiConfiguration·wifiConfiguration)·{154 ····private·void·addNetworkToUserApprovedAccessPointMap(final·WifiConfiguration·wifiConfiguration)·{
153 ········if·(this.mActiveSpecificNetworkRequestSpecifier·!=·null)·{155 ········if·(this.mActiveSpecificNetworkRequestSpecifier·!=·null)·{
154 ············if·(this.mActiveMatchedScanResults·!=·null)·{156 ············if·(this.mActiveMatchedScanResults·!=·null)·{
155 ················final·HashSet<WifiNetworkFactory$AccessPoint>·set·=·new·HashSet<WifiNetworkFactory$AccessPoint>();157 ················final·HashSet<WifiNetworkFactory$AccessPoint>·set·=·new·HashSet<WifiNetworkFactory$AccessPoint>();
156 ················final·ScanResultMatchInfo·fromWifiConfiguration·=·ScanResultMatchInfo.fromWifiConfiguration(wifiConfiguration);158 ················final·ScanResultMatchInfo·fromWifiConfiguration·=·ScanResultMatchInfo.fromWifiConfiguration(wifiConfiguration);
157 ················for·(final·ScanResult·scanResult·:·this.mActiveMatchedScanResults)·{159 ················for·(final·ScanResult·scanResult·:·this.mActiveMatchedScanResults.values())·{
158 ····················final·ScanResultMatchInfo·fromScanResult·=·ScanResultMatchInfo.fromScanResult(scanResult);160 ····················final·ScanResultMatchInfo·fromScanResult·=·ScanResultMatchInfo.fromScanResult(scanResult);
159 ····················if·(fromScanResult.equals((Object)fromWifiConfiguration))·{161 ····················if·(fromScanResult.equals((Object)fromWifiConfiguration))·{
160 ························set.add(new·WifiNetworkFactory$AccessPoint(scanResult.SSID,·MacAddress.fromString(scanResult.BSSID),·fromScanResult.networkType));162 ························set.add(new·WifiNetworkFactory$AccessPoint(scanResult.SSID,·MacAddress.fromString(scanResult.BSSID),·fromScanResult.networkType));
161 ····················}163 ····················}
162 ················}164 ················}
163 ················if·(set.isEmpty())·{165 ················if·(set.isEmpty())·{
164 ····················return;166 ····················return;
Offset 320, 17 lines modifiedOffset 322, 17 lines modified
320 ····322 ····
321 ····private·boolean·doesScanResultMatchWifiNetworkSpecifier(final·WifiNetworkSpecifier·wifiNetworkSpecifier,·final·ScanResult·scanResult)·{323 ····private·boolean·doesScanResultMatchWifiNetworkSpecifier(final·WifiNetworkSpecifier·wifiNetworkSpecifier,·final·ScanResult·scanResult)·{
322 ········return·wifiNetworkSpecifier.ssidPatternMatcher.match(scanResult.SSID)·&&·MacAddress.fromString(scanResult.BSSID).matches((MacAddress)wifiNetworkSpecifier.bssidPatternMatcher.first,·(MacAddress)wifiNetworkSpecifier.bssidPatternMatcher.second)·&&·ScanResultMatchInfo.fromScanResult(scanResult).networkTypeEquals(ScanResultMatchInfo.fromWifiConfiguration(wifiNetworkSpecifier.wifiConfiguration),·false);324 ········return·wifiNetworkSpecifier.ssidPatternMatcher.match(scanResult.SSID)·&&·MacAddress.fromString(scanResult.BSSID).matches((MacAddress)wifiNetworkSpecifier.bssidPatternMatcher.first,·(MacAddress)wifiNetworkSpecifier.bssidPatternMatcher.second)·&&·ScanResultMatchInfo.fromScanResult(scanResult).networkTypeEquals(ScanResultMatchInfo.fromWifiConfiguration(wifiNetworkSpecifier.wifiConfiguration),·false);
323 ····}325 ····}
324 ····326 ····
325 ····private·String·findBestBssidFromActiveMatchedScanResultsForNetwork(final·ScanResultMatchInfo·scanResultMatchInfo)·{327 ····private·String·findBestBssidFromActiveMatchedScanResultsForNetwork(final·ScanResultMatchInfo·scanResultMatchInfo)·{
326 ········if·(this.mActiveSpecificNetworkRequestSpecifier·!=·null)·{328 ········if·(this.mActiveSpecificNetworkRequestSpecifier·!=·null)·{
327 ············final·List·mActiveMatchedScanResults·=·this.mActiveMatchedScanResults;329 ············final·Map·mActiveMatchedScanResults·=·this.mActiveMatchedScanResults;
328 ············if·(mActiveMatchedScanResults·!=·null)·{330 ············if·(mActiveMatchedScanResults·!=·null)·{
329 ················final·ScanResult·scanResult·=·(ScanResult)mActiveMatchedScanResults.stream().filter((Predicate<?·super·ScanResult>)new·-$$Lambda$WifiNetworkFactory$kgmvViUSRQFBmgULiV_K6mdrFGI(scanResultMatchInfo)).max(Comparator.comparing((Function<?·super·ScanResult,·?·extends·Comparable>)-$$Lambda$WifiNetworkFactory$uQTzBkFoCEwN-ndjhXTPHmeDMro.INSTANCE)).orElse(null);331 ················final·ScanResult·scanResult·=·(ScanResult)mActiveMatchedScanResults.values().stream().filter((Predicate<?·super·ScanResult>)new·-$$Lambda$WifiNetworkFactory$kgmvViUSRQFBmgULiV_K6mdrFGI(scanResultMatchInfo)).max(Comparator.comparing((Function<?·super·ScanResult,·?·extends·Comparable>)-$$Lambda$WifiNetworkFactory$uQTzBkFoCEwN-ndjhXTPHmeDMro.INSTANCE)).orElse(null);
330 ················final·String·s·=·"WifiNetworkFactory";332 ················final·String·s·=·"WifiNetworkFactory";
331 ················if·(scanResult·==·null)·{333 ················if·(scanResult·==·null)·{
332 ····················Log.wtf(s,·"Expected·to·find·at·least·one·matching·scan·result");334 ····················Log.wtf(s,·"Expected·to·find·at·least·one·matching·scan·result");
333 ····················return·null;335 ····················return·null;
334 ················}336 ················}
335 ················if·(this.mVerboseLoggingEnabled)·{337 ················if·(this.mVerboseLoggingEnabled)·{
336 ····················final·StringBuilder·sb·=·new·StringBuilder();338 ····················final·StringBuilder·sb·=·new·StringBuilder();
Offset 370, 15 lines modifiedOffset 372, 15 lines modified
370 ········}372 ········}
371 ········catch·(PackageManager$NameNotFoundException·ex3)·{}373 ········catch·(PackageManager$NameNotFoundException·ex3)·{}
372 ····}374 ····}
373 ····375 ····
374 ····private·ScanResult[]·getFilteredCachedScanResults()·{376 ····private·ScanResult[]·getFilteredCachedScanResults()·{
375 ········final·List·singleScanResults·=·this.mWifiScanner.getSingleScanResults();377 ········final·List·singleScanResults·=·this.mWifiScanner.getSingleScanResults();
376 ········if·(singleScanResults·!=·null·&&·!singleScanResults.isEmpty())·{378 ········if·(singleScanResults·!=·null·&&·!singleScanResults.isEmpty())·{
377 ············return·(ScanResult[])singleScanResults.stream().filter((Predicate)new·-$$Lambda$WifiNetworkFactory$5NdbAyhbBeUuRkn75lVVJopPxSM(this.mClock.getElapsedSinceBootMillis())).toArray((IntFunction)-$$Lambda$WifiNetworkFactory$W4xMyJR4v2tDNwebIWEtmJlmNZc.INSTANCE);379 ············return·(ScanResult[])singleScanResults.stream().filter((Predicate)new·-$$Lambda$WifiNetworkFactory$ATGrMu-WJcTIB14_5MdpeoV7zeM(this.mClock.getElapsedSinceBootMillis())).toArray((IntFunction)-$$Lambda$WifiNetworkFactory$uPA78n83TSspOaWHZLtCxZB_s7Y.INSTANCE);
378 ········}380 ········}
379 ········return·new·ScanResult[0];381 ········return·new·ScanResult[0];
380 ····}382 ····}
381 ····383 ····
382 ····private·List·getNetworksMatchingActiveNetworkRequest(final·ScanResult[]·array)·{384 ····private·List·getNetworksMatchingActiveNetworkRequest(final·ScanResult[]·array)·{
383 ········final·WifiNetworkSpecifier·mActiveSpecificNetworkRequestSpecifier·=·this.mActiveSpecificNetworkRequestSpecifier;385 ········final·WifiNetworkSpecifier·mActiveSpecificNetworkRequestSpecifier·=·this.mActiveSpecificNetworkRequestSpecifier;
384 ········final·String·s·=·"WifiNetworkFactory";386 ········final·String·s·=·"WifiNetworkFactory";
Offset 527, 19 lines modifiedOffset 529, 23 lines modified
527 ········Log.w("WifiNetworkFactory",·sb.toString());529 ········Log.w("WifiNetworkFactory",·sb.toString());
528 ········this.teardownForActiveRequest();530 ········this.teardownForActiveRequest();
529 ········this.mWifiMetrics.incrementNetworkRequestApiNumUserReject();531 ········this.mWifiMetrics.incrementNetworkRequestApiNumUserReject();
530 ····}532 ····}
531 ····533 ····
532 ····private·void·handleScanResults(final·ScanResult[]·array)·{534 ····private·void·handleScanResults(final·ScanResult[]·array)·{
533 ········final·List·networksMatchingActiveNetworkRequest·=·this.getNetworksMatchingActiveNetworkRequest(array);535 ········final·List·networksMatchingActiveNetworkRequest·=·this.getNetworksMatchingActiveNetworkRequest(array);
534 ········final·List·mActiveMatchedScanResults·=·this.mActiveMatchedScanResults;536 ········final·Map·mActiveMatchedScanResults·=·this.mActiveMatchedScanResults;
535 ········if·((mActiveMatchedScanResults·==·null·||·mActiveMatchedScanResults.isEmpty())·&&·!networksMatchingActiveNetworkRequest.isEmpty())·{537 ········if·((mActiveMatchedScanResults·==·null·||·mActiveMatchedScanResults.isEmpty())·&&·!networksMatchingActiveNetworkRequest.isEmpty())·{
536 ············this.mWifiMetrics.incrementNetworkRequestApiMatchSizeHistogram(networksMatchingActiveNetworkRequest.size());538 ············this.mWifiMetrics.incrementNetworkRequestApiMatchSizeHistogram(networksMatchingActiveNetworkRequest.size());
537 ········}539 ········}
538 ········this.mActiveMatchedScanResults·=·networksMatchingActiveNetworkRequest;540 ········if·(this.mActiveMatchedScanResults·==·null)·{
 541 ············this.mActiveMatchedScanResults·=·new·HashMap();
 542 ········}
 543 ········this.mActiveMatchedScanResults.putAll(networksMatchingActiveNetworkRequest.stream().collect(Collectors.toMap((Function<?·super·Object,·?>)-$$Lambda$WifiNetworkFactory$PUH4U6q6mSks0iS0hsoeLIAea9Y.INSTANCE,·(Function<?·super·Object,·?>)-$$Lambda$WifiNetworkFactory$zp-5HKBQD9pFgdsfos0zUbcOklM.INSTANCE)));
 544 ········this.mActiveMatchedScanResults.entrySet().removeIf((Predicate)new·-$$Lambda$WifiNetworkFactory$B7dCsMWFkmdPXXMQ8ckXD6OoOz4(this.mClock.getElapsedSinceBootMillis()));
539 ····}545 ····}
540 ····546 ····
541 ····private·boolean·isAccessPointApprovedForActiveRequest(final·String·s,·final·MacAddress·macAddress,·final·int·n)·{547 ····private·boolean·isAccessPointApprovedForActiveRequest(final·String·s,·final·MacAddress·macAddress,·final·int·n)·{
542 ········final·String·requestorPackageName·=·this.mActiveSpecificNetworkRequest.getRequestorPackageName();548 ········final·String·requestorPackageName·=·this.mActiveSpecificNetworkRequest.getRequestorPackageName();
543 ········final·boolean·accessPointApprovedInCompanionDeviceManager·=·this.isAccessPointApprovedInCompanionDeviceManager(macAddress,·UserHandle.getUserHandleForUid(this.mActiveSpecificNetworkRequest.getRequestorUid()),·requestorPackageName);549 ········final·boolean·accessPointApprovedInCompanionDeviceManager·=·this.isAccessPointApprovedInCompanionDeviceManager(macAddress,·UserHandle.getUserHandleForUid(this.mActiveSpecificNetworkRequest.getRequestorUid()),·requestorPackageName);
544 ········final·boolean·b·=·true;550 ········final·boolean·b·=·true;
545 ········if·(accessPointApprovedInCompanionDeviceManager)·{551 ········if·(accessPointApprovedInCompanionDeviceManager)·{
Offset 668, 35 lines modifiedOffset 674, 41 lines modified
668 ············Log.e("WifiNetworkFactory",·"Scan·triggered·when·periodic·scanning·paused.·Ignoring...");674 ············Log.e("WifiNetworkFactory",·"Scan·triggered·when·periodic·scanning·paused.·Ignoring...");
669 ············return;675 ············return;
670 ········}676 ········}
671 ········this.mAlarmManager.set(2,·this.mClock.getElapsedSinceBootMillis()·+·10000L,·"WifiNetworkFactory",·(AlarmManager$OnAlarmListener)this.mPeriodicScanTimerListener,·this.mHandler);677 ········this.mAlarmManager.set(2,·this.mClock.getElapsedSinceBootMillis()·+·10000L,·"WifiNetworkFactory",·(AlarmManager$OnAlarmListener)this.mPeriodicScanTimerListener,·this.mHandler);
672 ········this.mPeriodicScanTimerSet·=·true;678 ········this.mPeriodicScanTimerSet·=·true;
673 ····}679 ····}
674 ····680 ····
675 ····private·void·sendNetworkRequestMatchCallbacksForActiveRequest(final·List·list)·{681 ····private·void·sendNetworkRequestMatchCallbacksForActiveRequest(final·Collection·collection)·{
676 ········if·(list·!=·null)·{682 ········if·(collection.isEmpty())·{
677 ············if·(!list.isEmpty())·{683 ············return;
678 ················final·int·numCallbacks·=·this.mRegisteredCallbacks.getNumCallbacks();684 ········}
679 ················final·String·s·=·"WifiNetworkFactory";685 ········final·int·numCallbacks·=·this.mRegisteredCallbacks.getNumCallbacks();
680 ················if·(numCallbacks·==·0)·{686 ········final·String·s·=·"WifiNetworkFactory";
681 ····················Log.e(s,·"No·callback·registered·for·sending·network·request·matches.·Ignoring...");687 ········if·(numCallbacks·==·0)·{
682 ····················return;688 ············Log.e(s,·"No·callback·registered·for·sending·network·request·matches.·Ignoring...");
 689 ············return;
 690 ········}
 691 ········for·(final·INetworkRequestMatchCallback·networkRequestMatchCallback·:·this.mRegisteredCallbacks.getCallbacks())·{
 692 ············try·{
 693 ················final·ArrayList·list·=·new·ArrayList(collection);
 694 ················final·INetworkRequestMatchCallback·networkRequestMatchCallback2·=·networkRequestMatchCallback;
 695 ················try·{
 696 ····················networkRequestMatchCallback2.onMatch((List)list);
683 ················}697 ················}
684 ················for·(final·INetworkRequestMatchCallback·networkRequestMatchCallback·:·this.mRegisteredCallbacks.getCallbacks())·{698 ················catch·(RemoteException·ex)·{
685 ····················try·{699 ····················final·StringBuilder·sb·=·new·StringBuilder();
686 ························networkRequestMatchCallback.onMatch(list);700 ····················sb.append("Unable·to·invoke·network·request·match·callback·");
687 ····················}701 ····················sb.append(networkRequestMatchCallback);
688 ····················catch·(RemoteException·ex)·{702 ····················Log.e(s,·sb.toString(),·(Throwable)ex);
689 ························final·StringBuilder·sb·=·new·StringBuilder(); 
690 ························sb.append("Unable·to·invoke·network·request·match·callback·"); 
691 ························sb.append(networkRequestMatchCallback); 
692 ························Log.e(s,·sb.toString(),·(Throwable)ex); 
693 ····················} 
694 ················}703 ················}
 704 ················continue;
695 ············}705 ············}
 706 ············catch·(RemoteException·ex2)·{}
 707 ············break;
696 ········}708 ········}
697 ····}709 ····}
698 ····710 ····
699 ····private·void·setupForActiveRequest()·{711 ····private·void·setupForActiveRequest()·{
700 ········if·(this.mActiveSpecificNetworkRequest·!=·null)·{712 ········if·(this.mActiveSpecificNetworkRequest·!=·null)·{
701 ············this.cleanupActiveRequest();713 ············this.cleanupActiveRequest();
702 ········}714 ········}
Offset 908, 15 lines modifiedOffset 920, 18 lines modified
908 ············Log.v(s,·sb2.toString());920 ············Log.v(s,·sb2.toString());
909 ········}921 ········}
910 ········try·{922 ········try·{
911 ············try·{923 ············try·{
912 ················final·WifiNetworkFactory$NetworkFactoryUserSelectionCallback·wifiNetworkFactory$NetworkFactoryUserSelectionCallback·=·new·WifiNetworkFactory$NetworkFactoryUserSelectionCallback(this,·this.mActiveSpecificNetworkRequest);924 ················final·WifiNetworkFactory$NetworkFactoryUserSelectionCallback·wifiNetworkFactory$NetworkFactoryUserSelectionCallback·=·new·WifiNetworkFactory$NetworkFactoryUserSelectionCallback(this,·this.mActiveSpecificNetworkRequest);
913 ················try·{925 ················try·{
914 ····················networkRequestMatchCallback.onUserSelectionCallbackRegistration((INetworkRequestUserSelectionCallback)wifiNetworkFactory$NetworkFactoryUserSelectionCallback);926 ····················networkRequestMatchCallback.onUserSelectionCallbackRegistration((INetworkRequestUserSelectionCallback)wifiNetworkFactory$NetworkFactoryUserSelectionCallback);
915 ····················this.sendNetworkRequestMatchCallbacksForActiveRequest(this.mActiveMatchedScanResults);927 ····················final·Map·mActiveMatchedScanResults·=·this.mActiveMatchedScanResults;
 928 ····················if·(mActiveMatchedScanResults·!=·null)·{
 929 ························this.sendNetworkRequestMatchCallbacksForActiveRequest(mActiveMatchedScanResults.values());
 930 ····················}
916 ················}931 ················}
917 ················catch·(RemoteException·ex2)·{932 ················catch·(RemoteException·ex2)·{
918 ····················final·StringBuilder·sb3·=·new·StringBuilder();933 ····················final·StringBuilder·sb3·=·new·StringBuilder();
919 ····················sb3.append("Unable·to·invoke·user·selection·registration·callback·");934 ····················sb3.append("Unable·to·invoke·user·selection·registration·callback·");
920 ····················sb3.append(networkRequestMatchCallback);935 ····················sb3.append(networkRequestMatchCallback);
921 ····················Log.e(s,·sb3.toString(),·(Throwable)ex2);936 ····················Log.e(s,·sb3.toString(),·(Throwable)ex2);
922 ················}937 ················}
Offset 1104, 15 lines modifiedOffset 1119, 18 lines modified
1104 ····················final·StringBuilder·sb·=·new·StringBuilder();1119 ····················final·StringBuilder·sb·=·new·StringBuilder();
1105 ····················sb.append("Using·cached·");1120 ····················sb.append("Using·cached·");
1106 ····················sb.append(filteredCachedScanResults.length);1121 ····················sb.append(filteredCachedScanResults.length);
1107 ····················sb.append("·scan·results");1122 ····················sb.append("·scan·results");
1108 ····················Log.v(s,·sb.toString());1123 ····················Log.v(s,·sb.toString());
1109 ················}1124 ················}
1110 ················this.handleScanResults(filteredCachedScanResults);1125 ················this.handleScanResults(filteredCachedScanResults);
1111 ················this.sendNetworkRequestMatchCallbacksForActiveRequest(this.mActiveMatchedScanResults);1126 ················final·Map·mActiveMatchedScanResults·=·this.mActiveMatchedScanResults;
 1127 ················if·(mActiveMatchedScanResults·!=·null)·{
 1128 ····················this.sendNetworkRequestMatchCallbacksForActiveRequest(mActiveMatchedScanResults.values());
 1129 ················}
1112 ················this.startPeriodicScans();1130 ················this.startPeriodicScans();
1113 ············}1131 ············}
1114 ········}1132 ········}
1115 ····}1133 ····}
1116 ····1134 ····
1117 ····protected·void·releaseNetworkFor(final·NetworkRequest·networkRequest)·{1135 ····protected·void·releaseNetworkFor(final·NetworkRequest·networkRequest)·{
1118 ········final·NetworkSpecifier·networkSpecifier·=·networkRequest.getNetworkSpecifier();1136 ········final·NetworkSpecifier·networkSpecifier·=·networkRequest.getNetworkSpecifier();