Merge "Manully post the task in onReceive" into main
diff --git a/service/java/com/android/server/wifi/WifiDeviceStateChangeManager.java b/service/java/com/android/server/wifi/WifiDeviceStateChangeManager.java
index 5fa82fe..74df0a5 100644
--- a/service/java/com/android/server/wifi/WifiDeviceStateChangeManager.java
+++ b/service/java/com/android/server/wifi/WifiDeviceStateChangeManager.java
@@ -66,16 +66,15 @@
                     @Override
                     public void onReceive(Context context, Intent intent) {
                         String action = intent.getAction();
-                        if (TextUtils.equals(action, Intent.ACTION_SCREEN_ON)) {
-                            handleScreenStateChanged(true);
-                        } else if (TextUtils.equals(action, Intent.ACTION_SCREEN_OFF)) {
-                            handleScreenStateChanged(false);
+                        if (TextUtils.equals(action, Intent.ACTION_SCREEN_ON)
+                                || TextUtils.equals(action, Intent.ACTION_SCREEN_OFF)) {
+                            mHandler.post(() ->
+                                    handleScreenStateChanged(TextUtils.equals(action,
+                                            Intent.ACTION_SCREEN_ON)));
                         }
                     }
                 },
-                filter,
-                null,
-                mHandler);
+                filter);
         handleScreenStateChanged(mPowerManager.isInteractive());
         mIsWifiServiceStarted = true;
     }
diff --git a/service/tests/wifitests/src/com/android/server/wifi/WifiDeviceStateChangeManagerTest.java b/service/tests/wifitests/src/com/android/server/wifi/WifiDeviceStateChangeManagerTest.java
index ed4910a..95eac5f 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/WifiDeviceStateChangeManagerTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/WifiDeviceStateChangeManagerTest.java
@@ -74,7 +74,7 @@
         verify(mStateChangeCallback, never()).onScreenStateChanged(anyBoolean());
         mWifiDeviceStateChangeManager.handleBootCompleted();
         verify(mContext, atLeastOnce())
-                .registerReceiver(mBroadcastReceiverCaptor.capture(), any(), any(), any());
+                .registerReceiver(mBroadcastReceiverCaptor.capture(), any());
         verify(mStateChangeCallback).onScreenStateChanged(true);
         reset(mStateChangeCallback);
         setScreenState(true);
@@ -91,7 +91,7 @@
     public void testRegisterAfterBootCompleted() {
         mWifiDeviceStateChangeManager.handleBootCompleted();
         verify(mContext, atLeastOnce())
-                .registerReceiver(mBroadcastReceiverCaptor.capture(), any(), any(), any());
+                .registerReceiver(mBroadcastReceiverCaptor.capture(), any());
         mWifiDeviceStateChangeManager.registerStateChangeCallback(mStateChangeCallback);
         // Register after boot completed should immediately get a callback
         verify(mStateChangeCallback).onScreenStateChanged(true);
@@ -102,5 +102,6 @@
         assertNotNull(broadcastReceiver);
         Intent intent = new Intent(screenOn ? ACTION_SCREEN_ON : ACTION_SCREEN_OFF);
         broadcastReceiver.onReceive(mContext, intent);
+        mLooper.dispatchAll();
     }
 }