# HG changeset patch # User Jaroslav Tulach # Date 1355551858 -3600 # Node ID 1848c77df886350f9ac0c102d9bb59a840532365 # Parent 92224eba98cb626af986c4fbe1eb9b767a3cddd1 Class.forName can load java.lang.String diff -r 92224eba98cb -r 1848c77df886 emul/src/main/java/java/lang/Class.java --- a/emul/src/main/java/java/lang/Class.java Sat Dec 15 06:16:43 2012 +0100 +++ b/emul/src/main/java/java/lang/Class.java Sat Dec 15 07:10:58 2012 +0100 @@ -144,8 +144,18 @@ */ public static Class forName(String className) throws ClassNotFoundException { - throw new UnsupportedOperationException(); + Class c = loadCls(className.replace('.', '_')); + if (c == null) { + throw new ClassNotFoundException(); + } + return c; } + + @JavaScriptBody(args = "c", body = + "if (vm[c]) return vm[c].$class;" + + "else return null;" + ) + private static native Class loadCls(String c); /** diff -r 92224eba98cb -r 1848c77df886 vm/src/test/java/org/apidesign/vm4brwsr/tck/CompareStringsTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/tck/CompareStringsTest.java Sat Dec 15 06:16:43 2012 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/tck/CompareStringsTest.java Sat Dec 15 07:10:58 2012 +0100 @@ -36,6 +36,10 @@ return sb.toString().toString(); } + @Compare public String nameOfStringClass() throws Exception { + return Class.forName("java.lang.String").getName(); + } + @Factory public static Object[] create() { return CompareVMs.create(CompareStringsTest.class);