Allow execution in browser rather than Rhino. This should speed up our tests. Had to workaround Grizlly/Chrome misunderstanding about UTF-8
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Fri, 01 Mar 2013 14:10:57 +0100
changeset 8003661b82478e0
parent 799 abb0830cb220
child 801 8b3a9f510a9b
Allow execution in browser rather than Rhino. This should speed up our tests. Had to workaround Grizlly/Chrome misunderstanding about UTF-8
rt/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java
rt/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/impl/Console.java
rt/vmtest/src/main/java/org/apidesign/bck2brwsr/vmtest/impl/LaunchSetup.java
     1.1 --- a/rt/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java	Thu Feb 28 22:14:05 2013 +0100
     1.2 +++ b/rt/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java	Fri Mar 01 14:10:57 2013 +0100
     1.3 @@ -23,6 +23,7 @@
     1.4  import java.io.InputStream;
     1.5  import java.io.InterruptedIOException;
     1.6  import java.io.OutputStream;
     1.7 +import java.io.UnsupportedEncodingException;
     1.8  import java.io.Writer;
     1.9  import java.net.URI;
    1.10  import java.net.URISyntaxException;
    1.11 @@ -194,6 +195,9 @@
    1.12              public void service(Request request, Response response) throws Exception {
    1.13                  String id = request.getParameter("request");
    1.14                  String value = request.getParameter("result");
    1.15 +                if (value != null && value.indexOf((char)0xC5) != -1) {
    1.16 +                    value = toUTF8(value);
    1.17 +                }
    1.18                  
    1.19                  
    1.20                  InvocationContext mi = null;
    1.21 @@ -355,6 +359,13 @@
    1.22              return new Object[] { process, null };
    1.23          }
    1.24      }
    1.25 +    private static String toUTF8(String value) throws UnsupportedEncodingException {
    1.26 +        byte[] arr = new byte[value.length()];
    1.27 +        for (int i = 0; i < arr.length; i++) {
    1.28 +            arr[i] = (byte)value.charAt(i);
    1.29 +        }
    1.30 +        return new String(arr, "UTF-8");
    1.31 +    }
    1.32      
    1.33      private static String decodeURL(String s) {
    1.34          for (;;) {
     2.1 --- a/rt/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/impl/Console.java	Thu Feb 28 22:14:05 2013 +0100
     2.2 +++ b/rt/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/impl/Console.java	Fri Mar 01 14:10:57 2013 +0100
     2.3 @@ -65,6 +65,7 @@
     2.4      @JavaScriptBody(args = { "url", "callback", "arr" }, body = ""
     2.5          + "var request = new XMLHttpRequest();\n"
     2.6          + "request.open('GET', url, true);\n"
     2.7 +        + "request.setRequestHeader('Content-Type', 'text/plain; charset=utf-8');\n"
     2.8          + "request.onreadystatechange = function() {\n"
     2.9          + "  if (this.readyState!==4) return;\n"
    2.10          + "  arr[0] = this.responseText;\n"
     3.1 --- a/rt/vmtest/src/main/java/org/apidesign/bck2brwsr/vmtest/impl/LaunchSetup.java	Thu Feb 28 22:14:05 2013 +0100
     3.2 +++ b/rt/vmtest/src/main/java/org/apidesign/bck2brwsr/vmtest/impl/LaunchSetup.java	Fri Mar 01 14:10:57 2013 +0100
     3.3 @@ -42,7 +42,14 @@
     3.4      } 
     3.5      private synchronized  Launcher js(boolean create) {
     3.6          if (js == null && create) {
     3.7 -            js = Launcher.createJavaScript();
     3.8 +            final String p = System.getProperty("vmtest.default", "javax.script"); // NOI18N
     3.9 +            switch (p) {
    3.10 +                case "brwsr": js = Launcher.createBrowser(null); break; // NOI18N
    3.11 +                case "javax.script": js = Launcher.createJavaScript(); break; // NOI18N
    3.12 +                default: throw new IllegalArgumentException(
    3.13 +                    "Unknown value of vmtest.default property: " + p
    3.14 +                );
    3.15 +            }
    3.16          }
    3.17          return js;
    3.18      }