Remove window.console reference from ConsoleLogger.
This is causing issues with users using GWT w/ node.js [1] and
also caused issues with SDM earlier.
[1] https://github.com/google/closure-compiler-js/issues/77
Bug: #9412
Bug-Link: https://github.com/gwtproject/gwt/issues/9412
Change-Id: I4e0e5d6c04560d6dd4776eeb386c5a811b1cf8a2
diff --git a/user/super/com/google/gwt/emul/javaemul/internal/ConsoleLogger.java b/user/super/com/google/gwt/emul/javaemul/internal/ConsoleLogger.java
index 0f30941..ea5a530 100644
--- a/user/super/com/google/gwt/emul/javaemul/internal/ConsoleLogger.java
+++ b/user/super/com/google/gwt/emul/javaemul/internal/ConsoleLogger.java
@@ -24,7 +24,7 @@
*/
public class ConsoleLogger {
public static ConsoleLogger createIfSupported() {
- return getConsole() != null ? new ConsoleLogger() : null;
+ return JsUtils.typeOf(getConsole()).equals("undefined") ? null : new ConsoleLogger();
}
public void log(String level, String message) {
@@ -101,6 +101,8 @@
public static LogFn groupEnd;
}
- @JsProperty(namespace = "<window>", name = "window.console")
+ // Using <window> due to https://code.google.com/archive/p/fbug/issues/2914 but probably not
+ // necessary anymore.
+ @JsProperty(namespace = "<window>", name = "console")
private static native Console getConsole();
}
diff --git a/user/super/com/google/gwt/emul/javaemul/internal/JsUtils.java b/user/super/com/google/gwt/emul/javaemul/internal/JsUtils.java
index 14a8e50..03fb8a1 100644
--- a/user/super/com/google/gwt/emul/javaemul/internal/JsUtils.java
+++ b/user/super/com/google/gwt/emul/javaemul/internal/JsUtils.java
@@ -31,6 +31,9 @@
@JsMethod(namespace = "<window>")
public static native int parseInt(String s, int radix);
+ @JsMethod(namespace = "<window>", name = "typeof")
+ public static native String typeOf(Object obj);
+
public static native boolean isUndefined(Object value) /*-{
return value === undefined;
}-*/;
@@ -63,9 +66,5 @@
map[key] = value;
} catch(ignored) { }
}-*/;
-
- public static native String typeOf(Object o) /*-{
- return typeof o;
- }-*/;
}