WifiConfigManager: protect CONFIGURED_NETWORKS_CHANGED_ACTION with permissions

Guard with ACCESS_WIFI_STATE & ACCESS_FINE_LOCATION permissions.

Bug: 158874479
Bug: 159373687
Test: presubmit unit tests
Test: Verify Settings still works correctly.

Change-Id: I88d93006ff379105e13e1b339ec51757a56ac863
Merged-In: I88d93006ff379105e13e1b339ec51757a56ac863
Merged-In: I657063f68701d57cfeb3765dfbab25ba50ef7b97
diff --git a/service/java/com/android/server/wifi/WifiConfigManager.java b/service/java/com/android/server/wifi/WifiConfigManager.java
index 25a5a20..fa2a560 100644
--- a/service/java/com/android/server/wifi/WifiConfigManager.java
+++ b/service/java/com/android/server/wifi/WifiConfigManager.java
@@ -625,7 +625,13 @@
         maskPasswordsInWifiConfiguration(broadcastNetwork);
         intent.putExtra(WifiManager.EXTRA_WIFI_CONFIGURATION, broadcastNetwork);
         intent.putExtra(WifiManager.EXTRA_CHANGE_REASON, reason);
-        mContext.sendBroadcastAsUser(intent, UserHandle.ALL);
+        mContext.sendBroadcastAsUserMultiplePermissions(
+                intent,
+                UserHandle.ALL,
+                new String[]{
+                        android.Manifest.permission.ACCESS_WIFI_STATE,
+                        android.Manifest.permission.ACCESS_FINE_LOCATION,
+                });
     }
 
     /**
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java b/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java
index 9fa67a0..ea6ea11 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java
@@ -3511,8 +3511,8 @@
     private int verifyNetworkInBroadcastAndReturnReason(WifiConfiguration configuration) {
         ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
         ArgumentCaptor<UserHandle> userHandleCaptor = ArgumentCaptor.forClass(UserHandle.class);
-        mContextConfigStoreMockOrder.verify(mContext)
-                .sendBroadcastAsUser(intentCaptor.capture(), userHandleCaptor.capture());
+        mContextConfigStoreMockOrder.verify(mContext).sendBroadcastAsUserMultiplePermissions(
+                intentCaptor.capture(), userHandleCaptor.capture(), any());
 
         assertEquals(userHandleCaptor.getValue(), UserHandle.ALL);
         Intent intent = intentCaptor.getValue();