From ba1f56050f4f4324c9a7364512cb2c30b27966cf Mon Sep 17 00:00:00 2001 From: Etan Cohen Date: Fri, 28 Jul 2017 14:41:24 -0700 Subject: [PATCH] [AWARE][CTS] Check for location setting for test needing to disable Wi-Fi Disabling Wi-Fi API which is available to CTS only disables the infrastructure mode (association to an AP). This disables the Wi-Fi chip (HAL/driver/firmware) only if location scanning is disabled, otherwise the chip is still enabled. The failing CTS Wi-Fi Aware test relied on disabling the Wi-Fi chip. This cannot be done from CTS. Added a check for location scan setting and skip the test if enabled. Cannot fail and require the tester to disable location scans since other CTS tests require it to be enabled. Bug: 64125460 Test: run cts with and without location scans Change-Id: I0582926dbf854c14b57dcdeb383db9b5f2a353a2 --- .../net/wifi/aware/cts/SingleDeviceTest.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/cts/net/src/android/net/wifi/aware/cts/SingleDeviceTest.java b/tests/cts/net/src/android/net/wifi/aware/cts/SingleDeviceTest.java index d4982a51b1..87e22d82b7 100644 --- a/tests/cts/net/src/android/net/wifi/aware/cts/SingleDeviceTest.java +++ b/tests/cts/net/src/android/net/wifi/aware/cts/SingleDeviceTest.java @@ -37,7 +37,9 @@ import android.net.wifi.aware.WifiAwareManager; import android.net.wifi.aware.WifiAwareSession; import android.os.Handler; import android.os.HandlerThread; +import android.provider.Settings; import android.test.AndroidTestCase; +import android.util.Log; import java.util.ArrayDeque; import java.util.ArrayList; @@ -74,6 +76,13 @@ public class SingleDeviceTest extends AndroidTestCase { // used to store any WifiAwareSession allocated during tests - will clean-up after tests private List mSessions = new ArrayList<>(); + // Return true if location is enabled. + private boolean isLocationEnabled() { + return Settings.Secure.getInt(getContext().getContentResolver(), + Settings.Secure.LOCATION_MODE, Settings.Secure.LOCATION_MODE_OFF) != + Settings.Secure.LOCATION_MODE_OFF; + } + private class WifiAwareBroadcastReceiver extends BroadcastReceiver { private CountDownLatch mBlocker = new CountDownLatch(1); @@ -422,6 +431,18 @@ public class SingleDeviceTest extends AndroidTestCase { return; } + if (isLocationEnabled()) { + /* Can't execute this test with location on since it means that Aware will not get + * disabled even if we disable Wi-Fi (which when location is enabled does not correspond + * to disabling the Wi-Fi chip). + * + * Considering other tests may require locationing to be enable we can't also fail the + * test in such a case. Hence it is skipped. + */ + Log.d(TAG, "Skipping test since location scans are enabled"); + return; + } + IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(WifiAwareManager.ACTION_WIFI_AWARE_STATE_CHANGED);