Merge Android 12 QPR1

Bug: 210511427
Merged-In: Iac4194fe385a55c888040f159a89fc787cbe06d5
Change-Id: I5b49c7c004f79eb7b7f2595ac6dfde58d71856f6
diff --git a/scanning/scanner_impl.cpp b/scanning/scanner_impl.cpp
index 48ca30f..9a0372b 100644
--- a/scanning/scanner_impl.cpp
+++ b/scanning/scanner_impl.cpp
@@ -243,10 +243,9 @@
     }
   }
 
-  // Also scan the default frequencies if there is frequency data passed down but more than 30% of
+  // Also scan the default frequencies if more than kPercentNetworksWithFreq of
   // networks don't have frequency data.
-  if (unique_frequencies.size() > 0 && num_networks_no_freqs * 100 / match_ssids->size()
-      > kPercentNetworksWithFreq) {
+  if (num_networks_no_freqs * 100 > kPercentNetworksWithFreq * match_ssids->size()) {
     // Filter out frequencies not supported by chip.
     const auto band_2g = client_interface_->GetBandInfo().band_2g;
     for (const auto frequency : kPnoScanDefaultFreqs2G) {
diff --git a/tests/scanner_unittest.cpp b/tests/scanner_unittest.cpp
index dde640e..869a21b 100644
--- a/tests/scanner_unittest.cpp
+++ b/tests/scanner_unittest.cpp
@@ -51,6 +51,8 @@
 
 constexpr uint32_t kFakeInterfaceIndex = 12;
 constexpr uint32_t kFakeScanIntervalMs = 10000;
+vector<uint32_t> kDefaultFrequencies = {2412, 2417, 2422, 2427, 2432, 2437, 2447, 2452, 2457,
+                                        2462, 5180, 5200, 5220, 5240, 5745, 5765, 5785, 5805};
 
 // This is a helper function to mock the behavior of ScanUtils::Scan()
 // when we expect a error code.
@@ -509,10 +511,9 @@
   pno_settings.pno_networks_.push_back(network);
   pno_settings.pno_networks_.push_back(network2);
 
-  std::set<int32_t> default_frequencies = {2412, 2417, 2422, 2427, 2432, 2437, 2447, 2452, 2457,
-                                           2462, 5180, 5200, 5220, 5240, 5745, 5765, 5785, 5805};
-  default_frequencies.insert(5640); // add frequency from saved network
-  vector<uint32_t> expected_frequencies(default_frequencies.begin(), default_frequencies.end());
+  std::set<uint32_t> frequencies(kDefaultFrequencies.begin(), kDefaultFrequencies.end());
+  frequencies.insert(5640); // add frequency from saved network
+  vector<uint32_t> expected_frequencies(frequencies.begin(), frequencies.end());
 
   // Mock BandInfo to make sure the default_frequencies don't get filtered out as invalid.
   BandInfo band_info;
@@ -529,8 +530,8 @@
   EXPECT_TRUE(success);
 }
 
-// Verify that when there is no frequency data all pno networks, an empty list is passed into
-// StartScheduledScan in order to scan all frequencies.
+// Verify that when there is no frequency data in pno networks, default frequencies is passed into
+// StartScheduledScan frequencies.
 TEST_F(ScannerTest, TestStartPnoScanEmptyList) {
   bool success = false;
   ScanCapabilities scan_capabilities_test_frequencies(
@@ -553,7 +554,7 @@
   pno_settings.pno_networks_.push_back(network2);
   EXPECT_CALL(
       scan_utils_,
-      StartScheduledScan(_, _, _, _, _, _, _, _, Eq(vector<uint32_t>{}), _)).
+      StartScheduledScan(_, _, _, _, _, _, _, _, Eq(kDefaultFrequencies), _)).
           WillOnce(Return(true));
   EXPECT_TRUE(scanner_impl.startPnoScan(pno_settings, &success).isOk());
   EXPECT_TRUE(success);