diff options
author | pkanwar <pkanwar@google.com> | 2018-03-22 18:13:54 -0700 |
---|---|---|
committer | Mehdi Alizadeh <mett@google.com> | 2018-03-27 19:41:59 -0700 |
commit | 0ae2f996c3c6550226a476caf2e1d5c0f110c1eb (patch) | |
tree | 855659001c4185bd256178ae71d7c669ee9232df /service | |
parent | 5b09fc76e4a2e05c5e5a24e96ff29be2fd49ed9f (diff) |
Adds ContentObserver for certificate downloaded notification
Adds ContentObserver to receive a notification everytime carrier network
certificate is downloaded.
Bug: 74090333
Test: manual test and unit tests
Change-Id: Ia8ac30ebbc8413d63a2b07b667ede056719e2bcd
Diffstat (limited to 'service')
-rw-r--r-- | service/java/com/android/server/wifi/CarrierNetworkConfig.java | 17 | ||||
-rw-r--r-- | service/java/com/android/server/wifi/WifiInjector.java | 3 |
2 files changed, 18 insertions, 2 deletions
diff --git a/service/java/com/android/server/wifi/CarrierNetworkConfig.java b/service/java/com/android/server/wifi/CarrierNetworkConfig.java index db107bf6c..91e22afe1 100644 --- a/service/java/com/android/server/wifi/CarrierNetworkConfig.java +++ b/service/java/com/android/server/wifi/CarrierNetworkConfig.java @@ -16,12 +16,17 @@ package com.android.server.wifi; +import android.annotation.NonNull; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.database.ContentObserver; +import android.net.Uri; import android.net.wifi.EAPConstants; import android.net.wifi.WifiEnterpriseConfig; +import android.os.Handler; +import android.os.Looper; import android.os.PersistableBundle; import android.telephony.CarrierConfigManager; import android.telephony.ImsiEncryptionInfo; @@ -45,11 +50,13 @@ public class CarrierNetworkConfig { private static final int ENCODED_SSID_INDEX = 0; private static final int EAP_TYPE_INDEX = 1; private static final int CONFIG_ELEMENT_SIZE = 2; + private static final Uri CONTENT_URI = Uri.parse("content://carrier_information/carrier"); private final Map<String, NetworkInfo> mCarrierNetworkMap; private boolean mIsCarrierImsiEncryptionInfoAvailable = false; - public CarrierNetworkConfig(Context context) { + public CarrierNetworkConfig(@NonNull Context context, @NonNull Looper looper, + @NonNull FrameworkFacade framework) { mCarrierNetworkMap = new HashMap<>(); updateNetworkConfig(context); @@ -62,6 +69,14 @@ public class CarrierNetworkConfig { updateNetworkConfig(context); } }, filter); + + framework.registerContentObserver(context, CONTENT_URI, false, + new ContentObserver(new Handler(looper)) { + @Override + public void onChange(boolean selfChange) { + updateNetworkConfig(context); + } + }); } /** diff --git a/service/java/com/android/server/wifi/WifiInjector.java b/service/java/com/android/server/wifi/WifiInjector.java index 4313ff4cf..ad7d78a04 100644 --- a/service/java/com/android/server/wifi/WifiInjector.java +++ b/service/java/com/android/server/wifi/WifiInjector.java @@ -167,13 +167,14 @@ public class WifiInjector { mBatteryStats = IBatteryStats.Stub.asInterface(mFrameworkFacade.getService( BatteryStats.SERVICE_NAME)); mWifiStateTracker = new WifiStateTracker(mBatteryStats); - mCarrierNetworkConfig = new CarrierNetworkConfig(mContext); // Now create and start handler threads mWifiServiceHandlerThread = new HandlerThread("WifiService"); mWifiServiceHandlerThread.start(); mWifiStateMachineHandlerThread = new HandlerThread("WifiStateMachine"); mWifiStateMachineHandlerThread.start(); Looper wifiStateMachineLooper = mWifiStateMachineHandlerThread.getLooper(); + mCarrierNetworkConfig = new CarrierNetworkConfig(mContext, + mWifiServiceHandlerThread.getLooper(), mFrameworkFacade); WifiAwareMetrics awareMetrics = new WifiAwareMetrics(mClock); mWifiMetrics = new WifiMetrics(mClock, wifiStateMachineLooper, awareMetrics); // Modules interacting with Native. |