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,