diff options
author | Lee Chou <leechou@google.com> | 2020-11-27 11:43:47 +0800 |
---|---|---|
committer | Lee Chou <leechou@google.com> | 2020-11-27 11:43:47 +0800 |
commit | 38f55735a6c618352557ce5f694cae050323e147 (patch) | |
tree | d55a145e3b22e8d91b00a9b346ded88546dfd1aa | |
parent | 4b9d590707bc38d92b150aff7df513db9cf8b7ca (diff) | |
download | robolectric-shadows-38f55735a6c618352557ce5f694cae050323e147.tar.gz |
Add AndroidInterceptor for System.logW
Imported Android Interceptor code from cl/310946673 to fix issue with
logW
Test: m RunSettingsLibRoboTests
Merged-In: If371c1b78c48017fe8a7e6b34bf65e3026cabf2a
Change-Id: I4a141b58d1d69ddf43254f11b1147adb456d213a
-rw-r--r-- | robolectric/src/main/java/org/robolectric/android/AndroidInterceptors.java | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/robolectric/src/main/java/org/robolectric/android/AndroidInterceptors.java b/robolectric/src/main/java/org/robolectric/android/AndroidInterceptors.java index 8a2159efa..51ea2a779 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 @@ public class AndroidInterceptors { new SystemTimeInterceptor(), new SystemArrayCopyInterceptor(), new LocaleAdjustLanguageCodeInterceptor(), - new SystemLogEInterceptor(), + new SystemLogInterceptor(), new NoOpInterceptor() ); } @@ -196,34 +196,45 @@ public class AndroidInterceptors { } } - 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)); } } |