Implements System.nanoTime with performance.now(). Change-Id: I70164d6f1214ab311dd0f94121140943b1c2dc1f
diff --git a/user/super/com/google/gwt/emul/java/lang/System.java b/user/super/com/google/gwt/emul/java/lang/System.java index 5767122..f1aaa83 100644 --- a/user/super/com/google/gwt/emul/java/lang/System.java +++ b/user/super/com/google/gwt/emul/java/lang/System.java
@@ -34,6 +34,8 @@ */ public final class System { + private static final int MILLIS_TO_NANOS = 1_000_000; + /** * Does nothing in web mode. To get output in web mode, subclass PrintStream * and call {@link #setErr(PrintStream)}. @@ -96,6 +98,10 @@ return (long) JsUtils.getTime(); } + public static long nanoTime() { + return (long) (JsUtils.performanceNow() * MILLIS_TO_NANOS); + } + /** * Has no effect; just here for source compatibility. *
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 160102c..077e50c 100644 --- a/user/super/com/google/gwt/emul/javaemul/internal/JsUtils.java +++ b/user/super/com/google/gwt/emul/javaemul/internal/JsUtils.java
@@ -27,6 +27,9 @@ @JsMethod(namespace = "<window>", name = "Date.now") public static native double getTime(); + @JsMethod(namespace = "<window>", name = "performance.now") + public static native double performanceNow(); + @JsMethod(namespace = "<window>") public static native int parseInt(String s, int radix);
diff --git a/user/test/com/google/gwt/emultest/java/lang/SystemTest.java b/user/test/com/google/gwt/emultest/java/lang/SystemTest.java index 090424d..9e3c33a 100644 --- a/user/test/com/google/gwt/emultest/java/lang/SystemTest.java +++ b/user/test/com/google/gwt/emultest/java/lang/SystemTest.java
@@ -18,6 +18,7 @@ import com.google.gwt.junit.client.GWTTestCase; import com.google.gwt.testing.TestUtils; +import java.sql.Date; import java.util.Arrays; /** @@ -323,4 +324,13 @@ // Note that default is not a String literal. assertEquals("default", System.getProperty("otherNonExistent", someConf)); } + + public void testNanoTime() { + assertTrue(System.nanoTime() > 0); + } + + public void testCurrentTimeMillis() { + assertTrue(System.currentTimeMillis() > Date.parse("1-1-2021")); + } } +