Add AndroidInterceptor for System.logW am: 38f55735a6

Original change: https://android-review.googlesource.com/c/platform/external/robolectric-shadows/+/1512632

Change-Id: I3f5f0fdba7c7dc3b5a832a9bc6315c318b860e86
diff --git a/robolectric/src/main/java/org/robolectric/android/AndroidInterceptors.java b/robolectric/src/main/java/org/robolectric/android/AndroidInterceptors.java
index 8a2159e..51ea2a7 100644
--- a/robolectric/src/main/java/org/robolectric/android/AndroidInterceptors.java
+++ b/robolectric/src/main/java/org/robolectric/android/AndroidInterceptors.java
@@ -31,7 +31,7 @@
         new SystemTimeInterceptor(),
         new SystemArrayCopyInterceptor(),
         new LocaleAdjustLanguageCodeInterceptor(),
-        new SystemLogEInterceptor(),
+        new SystemLogInterceptor(),
         new NoOpInterceptor()
     );
   }
@@ -196,34 +196,45 @@
     }
   }
 
-  public static class SystemLogEInterceptor extends Interceptor {
-    public SystemLogEInterceptor() {
-      super(new MethodRef(System.class.getName(), "logE"));
+  /** AndroidInterceptor for System.logE and System.logW. */
+  public static class SystemLogInterceptor extends Interceptor {
+    public SystemLogInterceptor() {
+      super(
+          new MethodRef(System.class.getName(), "logE"),
+          new MethodRef(System.class.getName(), "logW"));
     }
 
     static void logE(Object... params) {
-      String message = "System.logE: ";
+      log("System.logE: ", params);
+    }
+
+    static void logW(Object... params) {
+      log("System.logW: ", params);
+    }
+
+    static void log(String prefix, Object... params) {
+      StringBuilder message = new StringBuilder(prefix);
       for (Object param : params) {
-        message += param.toString();
+        message.append(param.toString());
       }
       System.err.println(message);
     }
 
     @Override
     public Function<Object, Object> handle(MethodSignature methodSignature) {
-      return new Function<Object, Object>() {
-        @Override
-        public Object call(Class<?> theClass, Object value, Object[] params) {
+      return (theClass, value, params) -> {
+        if ("logE".equals(methodSignature.methodName)) {
           logE(params);
-          return null;
+        } else if ("logW".equals(methodSignature.methodName)) {
+          logW(params);
         }
+        return null;
       };
     }
 
     @Override
     public MethodHandle getMethodHandle(String methodName, MethodType type) throws NoSuchMethodException, IllegalAccessException {
-      return lookup.findStatic(getClass(), "logE",
-          methodType(void.class, Object[].class));
+      return lookup.findStatic(getClass(), methodName, methodType(void.class, Object[].class));
     }
   }