Revision: 4784
Author:   metaweta
Date:     Wed Feb 22 16:46:46 2012
Log:      Reenables cajaVM.log in playground.
http://codereview.appspot.com/5691043

Reenables cajaVM.log in the playground.

R=jasvir

http://code.google.com/p/google-caja/source/detail?r=4784

Modified:
 /trunk/src/com/google/caja/demos/playground/client/ui/PlaygroundView.java

=======================================
--- /trunk/src/com/google/caja/demos/playground/client/ui/PlaygroundView.java Wed Feb 15 20:34:23 2012 +++ /trunk/src/com/google/caja/demos/playground/client/ui/PlaygroundView.java Wed Feb 22 16:46:46 2012
@@ -428,7 +428,8 @@
             PlaygroundView.this.addCompileMessage(t.toString());
           }
           @Override public void onSuccess(Frame frame) {
- JavaScriptObject tmp = makeExtraImports(Caja.getNative(), policy);
+            JavaScriptObject tmp = makeExtraImports(Caja.getNative(),
+                frame.getNative(), policy);
             augmentWith(tmp, "widgets",
                 ((WidgetsTaming)GWT.create(WidgetsTaming.class))
                 .getJso(frame, new Widgets(playgroundUI.gwtShim)));
@@ -466,33 +467,38 @@

   private native JavaScriptObject makeExtraImports(
       JavaScriptObject caja,
+      JavaScriptObject guestFrame,
       String policy) /*-{
     var that = this;
     var extraImports = {};
     try {
       var tamings___ = eval(policy);
     } catch (e) {
- [email protected]::addRuntimeMessage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;) + [email protected]::addRuntimeError(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)
           (e, "evaluating policy");
     }
     for (var i=0; i < tamings___.length; i++) {
       try {
         tamings___[i].call(undefined, caja, extraImports);
       } catch (e) {
- [email protected]::addRuntimeMessage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;) + [email protected]::addRuntimeError(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)
             (e, "evaluating " + i + "th policy function");
       }
     }

     extraImports.onerror = caja.tame(caja.markFunction(
       function (message, source, lineNum) {
- [email protected]::addRuntimeMessage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;) + [email protected]::addRuntimeError(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)
             (message, source, lineNum);
       }));
     extraImports.alert = caja.tame(
       caja.markFunction(
         function(msg) { alert('Untrusted code says: ' + String(msg)); }));
-
+    guestFrame.iframe.contentWindow.___.setLogFunc(caja.tame(
+      caja.markFunction(function(msg) {
+ [email protected]::addRuntimeMessage(Ljava/lang/String;)
+            (msg);
+      })));
     return extraImports;
   }-*/;

@@ -522,14 +528,20 @@
     playgroundUI.compileMessages.add(i);
   }

- public void addRuntimeMessage(String message, String source, String lineNum) {
-    // Unsafe as HTML
+ public void addRuntimeError(String message, String source, String lineNum) {
+    // Labels are texty, so no escaping needed
     Label i = new Label(
         "Uncaught script error: '" + message +
         "' in source: '" + source +
         "' at line: " + lineNum + "\n");
     playgroundUI.runtimeMessages.add(i);
   }
+
+  public void addRuntimeMessage(String message) {
+    // Labels are texty, so no escaping needed
+    Label i = new Label(message);
+    playgroundUI.runtimeMessages.add(i);
+  }

/** @param uri unused but provided for consistency with native GWT caller. */
   public void highlightSource(String uri,

Reply via email to