aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLee Chou <leechou@google.com>2020-11-27 11:43:47 +0800
committerLee Chou <leechou@google.com>2020-11-27 11:43:47 +0800
commit38f55735a6c618352557ce5f694cae050323e147 (patch)
treed55a145e3b22e8d91b00a9b346ded88546dfd1aa
parent4b9d590707bc38d92b150aff7df513db9cf8b7ca (diff)
downloadrobolectric-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.java35
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));
}
}