WCM: track PNO scan state

Add a flag to track if PNO scan is started.

Bug: 29822923
Change-Id: I96416eb5a6590a52800b962838d2e87d9f52bb1a
Tests: Wifi Framework Unit Tests
diff --git a/service/java/com/android/server/wifi/WifiConnectivityManager.java b/service/java/com/android/server/wifi/WifiConnectivityManager.java
index e781d07..fa50bb0 100644
--- a/service/java/com/android/server/wifi/WifiConnectivityManager.java
+++ b/service/java/com/android/server/wifi/WifiConnectivityManager.java
@@ -148,6 +148,7 @@
     private String mLastConnectionAttemptBssid = null;
     private int mPeriodicSingleScanInterval = PERIODIC_SCAN_INTERVAL_MS;
     private long mLastPeriodicSingleScanTimeStamp = RESET_TIME_STAMP;
+    private boolean mPnoScanStarted = false;
 
     // PNO settings
     private int mMin5GHzRssi;
@@ -332,7 +333,7 @@
             // while PNO scan didn't.
             // Note: We don't update the background scan metrics any more as it is
             //       not in use.
-            if (!mScreenOn && mWifiState == WIFI_STATE_DISCONNECTED) {
+            if (mPnoScanStarted) {
                 if (wasConnectAttempted) {
                     mWifiMetrics.incrementNumConnectivityWatchdogPnoBad();
                 } else {
@@ -860,6 +861,7 @@
         mPnoScanListener.clearScanDetails();
 
         mScanner.startDisconnectedPnoScan(scanSettings, pnoSettings, mPnoScanListener);
+        mPnoScanStarted = true;
     }
 
     // Start a ConnectedPNO scan when screen is off and Wifi is connected
@@ -903,6 +905,16 @@
         mPnoScanListener.clearScanDetails();
 
         mScanner.startConnectedPnoScan(scanSettings, pnoSettings, mPnoScanListener);
+        mPnoScanStarted = true;
+    }
+
+    // Stop a PNO scan. This includes both DisconnectedPNO and ConnectedPNO scans.
+    private void stopPnoScan() {
+        if (mPnoScanStarted) {
+            mScanner.stopPnoScan(mPnoScanListener);
+        }
+
+        mPnoScanStarted = false;
     }
 
     // Set up watchdog timer
@@ -989,7 +1001,7 @@
         } else {
             mScanner.stopBackgroundScan(mPeriodicScanListener);
         }
-        mScanner.stopPnoScan(mPnoScanListener);
+        stopPnoScan();
         mScanRestartCount = 0;
     }