Fix testcase error

- Because BatteryFixSlice.updateBatteryTipAvailabilityCache() doesn't
run in ShadowThreadUtils shadow function, add a function to override
default behavior.

Fixes: 144405844
Test: make RunSettingsRoboTests
Change-Id: I72ee40a7a8fc524ab7bdc1fd838f8243159f2d21
diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSliceTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSliceTest.java
index e20305d..dcfba42 100644
--- a/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSliceTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSliceTest.java
@@ -40,7 +40,6 @@
 
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.MockitoAnnotations;
@@ -82,7 +81,6 @@
     }
 
     @Test
-    @Ignore
     public void updateBatteryTipAvailabilityCache_hasImportantTip_shouldReturnTrue() {
         final List<BatteryTip> tips = new ArrayList<>();
         tips.add(new LowBatteryTip(BatteryTip.StateType.INVISIBLE, false, ""));
@@ -108,7 +106,6 @@
     }
 
     @Test
-    @Ignore
     @Config(shadows = {
             BatteryFixSliceTest.ShadowEarlyWarningTip.class,
             BatteryFixSliceTest.ShadowSliceBackgroundWorker.class
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowThreadUtils.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowThreadUtils.java
index 285d88d..61ce13d 100644
--- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowThreadUtils.java
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowThreadUtils.java
@@ -16,16 +16,21 @@
 
 package com.android.settings.testutils.shadow;
 
+import android.util.Log;
+
 import com.android.settingslib.utils.ThreadUtils;
 
 import org.robolectric.annotation.Implementation;
 import org.robolectric.annotation.Implements;
 import org.robolectric.annotation.Resetter;
 
+import java.util.concurrent.Callable;
+
 @Implements(ThreadUtils.class)
 public class ShadowThreadUtils {
 
     private static boolean sIsMainThread = true;
+    private static final String TAG = "ShadowThreadUtils";
 
     @Resetter
     public static void reset() {
@@ -38,6 +43,15 @@
     }
 
     @Implementation
+    protected static void postOnBackgroundThread(Callable callable) {
+        try {
+            callable.call();
+        } catch (Exception e) {
+            Log.e(TAG, e.getMessage(), e);
+        }
+    }
+
+    @Implementation
     protected static void postOnMainThread(Runnable runnable) {
         runnable.run();
     }