wifi: refine API: notifyCountryCodeChanged

Feedback from API council:
1. Change to return void
2. Rethrow exception instead of logging
3. Consider passing and notifying the new value for country code

Bug: 216637965
Test: atest -c WifiNl80211ManagerTest
Trst: atest -c FrameworksWifiTests
Change-Id: If40f9434e20fd960a65de37c341d8bd6f57ed9d9
This commit is contained in:
Les Lee 2022-02-09 15:15:59 +08:00
parent 9c29783be8
commit 49c0582b47
3 changed files with 15 additions and 14 deletions

View File

@ -8856,7 +8856,7 @@ package android.net.wifi.nl80211 {
method @Nullable public android.net.wifi.nl80211.DeviceWiphyCapabilities getDeviceWiphyCapabilities(@NonNull String);
method @NonNull public java.util.List<android.net.wifi.nl80211.NativeScanResult> getScanResults(@NonNull String, int);
method @Nullable public android.net.wifi.nl80211.WifiNl80211Manager.TxPacketCounters getTxPacketCounters(@NonNull String);
method public boolean notifyCountryCodeChanged();
method public void notifyCountryCodeChanged(@Nullable String);
method @Nullable public static android.net.wifi.nl80211.WifiNl80211Manager.OemSecurityType parseOemSecurityTypeElement(int, int, @NonNull byte[]);
method @Deprecated public boolean registerApCallback(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.nl80211.WifiNl80211Manager.SoftApCallback);
method public boolean registerCountryCodeChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.nl80211.WifiNl80211Manager.CountryCodeChangedListener);

View File

@ -1269,18 +1269,19 @@ public class WifiNl80211Manager {
* support the NL80211_CMD_REG_CHANGED (otherwise it will find out on its own). The wificond
* updates in internal state in response to this Country Code update.
*
* @return true on success, false otherwise.
* @param newCountryCode new country code. An ISO-3166-alpha2 country code which is 2-Character
* alphanumeric.
*/
public boolean notifyCountryCodeChanged() {
try {
if (mWificond != null) {
mWificond.notifyCountryCodeChanged();
return true;
}
} catch (RemoteException e1) {
Log.e(TAG, "Failed to notify country code changed due to remote exception");
public void notifyCountryCodeChanged(@Nullable String newCountryCode) {
if (mWificond == null) {
new RemoteException("Wificond service doesn't exist!").rethrowFromSystemServer();
}
try {
mWificond.notifyCountryCodeChanged();
Log.i(TAG, "Receive country code change to " + newCountryCode);
} catch (RemoteException re) {
re.rethrowFromSystemServer();
}
return false;
}
/**

View File

@ -1143,17 +1143,17 @@ public class WifiNl80211ManagerTest {
@Test
public void testNotifyCountryCodeChanged() throws Exception {
doNothing().when(mWificond).notifyCountryCodeChanged();
assertTrue(mWificondControl.notifyCountryCodeChanged());
mWificondControl.notifyCountryCodeChanged(TEST_COUNTRY_CODE);
verify(mWificond).notifyCountryCodeChanged();
}
/**
* Tests notifyCountryCodeChanged with RemoteException
*/
@Test
@Test(expected = RuntimeException.class)
public void testNotifyCountryCodeChangedRemoteException() throws Exception {
doThrow(new RemoteException()).when(mWificond).notifyCountryCodeChanged();
assertFalse(mWificondControl.notifyCountryCodeChanged());
mWificondControl.notifyCountryCodeChanged(TEST_COUNTRY_CODE);
verify(mWificond).notifyCountryCodeChanged();
}