Do not dump Wifi before service started

Bug: 229148323
Test: dump before Wifi service started
Change-Id: Ib329991915f7a5549b7297ac0f1dcaabcf524312
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java
index df2ff66..65c5c8b 100644
--- a/service/java/com/android/server/wifi/WifiServiceImpl.java
+++ b/service/java/com/android/server/wifi/WifiServiceImpl.java
@@ -271,6 +271,7 @@
     public final CountryCodeTracker mCountryCodeTracker;
     private final MultiInternetManager mMultiInternetManager;
     private int mVerboseAlwaysOnLevel = -1;
+    private boolean mIsWifiServiceStarted = false;
 
     /**
      * Callback for use with LocalOnlyHotspot to unregister requesting applications upon death.
@@ -658,6 +659,7 @@
             mActiveModeWarden.start();
             registerForCarrierConfigChange();
             mWifiInjector.getAdaptiveConnectivityEnabledSettingObserver().initialize();
+            mIsWifiServiceStarted = true;
         });
     }
 
@@ -4753,6 +4755,10 @@
                     + ", uid=" + Binder.getCallingUid());
             return;
         }
+        if (!mIsWifiServiceStarted) {
+            pw.println("Wifi Service is not started. no dump available");
+            return;
+        }
         mWifiThreadRunner.run(() -> {
             String arg0 = args != null && args.length > 0 ? args[0] : null;
             if (WifiMetrics.PROTO_DUMP_ARG.equals(arg0)) {
diff --git a/service/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java b/service/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java
index 2d79e55..c91e679 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java
@@ -703,10 +703,11 @@
      */
     @Test
     public void testWifiMetricsDump() {
-        mLooper.startAutoDispatch();
+        mWifiServiceImpl.checkAndStartWifi();
+        mLooper.dispatchAll();
         mWifiServiceImpl.dump(new FileDescriptor(), new PrintWriter(new StringWriter()),
                 new String[]{mWifiMetrics.PROTO_DUMP_ARG});
-        mLooper.stopAutoDispatchAndIgnoreExceptions();
+        mLooper.dispatchAll();
         verify(mWifiMetrics).setNonPersistentMacRandomizationForceEnabled(anyBoolean());
         verify(mWifiMetrics).setIsScanningAlwaysEnabled(anyBoolean());
         verify(mWifiMetrics).setVerboseLoggingEnabled(anyBoolean());
@@ -721,10 +722,10 @@
      */
     @Test
     public void testDumpNullArgs() {
-        mLooper.startAutoDispatch();
+        mWifiServiceImpl.checkAndStartWifi();
+        mLooper.dispatchAll();
         mWifiServiceImpl.dump(new FileDescriptor(), new PrintWriter(new StringWriter()), null);
-        mLooper.stopAutoDispatchAndIgnoreExceptions();
-
+        mLooper.dispatchAll();
         verify(mWifiDiagnostics).captureBugReportData(
                 WifiDiagnostics.REPORT_REASON_USER_ACTION);
         verify(mWifiDiagnostics).dump(any(), any(), any());
@@ -8604,9 +8605,10 @@
 
     @Test
     public void testDumpShouldDumpWakeupController() {
-        mLooper.startAutoDispatch();
+        mWifiServiceImpl.checkAndStartWifi();
+        mLooper.dispatchAll();
         mWifiServiceImpl.dump(new FileDescriptor(), new PrintWriter(new StringWriter()), null);
-        mLooper.stopAutoDispatchAndIgnoreExceptions();
+        mLooper.dispatchAll();
         verify(mWakeupController).dump(any(), any(), any());
     }