Reviewers: Jasvir,
Description:
Reenables cajaVM.log in the playground.
Please review this at http://codereview.appspot.com/5691043/
Affected files:
M src/com/google/caja/demos/playground/client/ui/PlaygroundView.java
Index: src/com/google/caja/demos/playground/client/ui/PlaygroundView.java
===================================================================
--- src/com/google/caja/demos/playground/client/ui/PlaygroundView.java
(revision 4783)
+++ src/com/google/caja/demos/playground/client/ui/PlaygroundView.java
(working copy)
@@ -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,7 +528,7 @@
playgroundUI.compileMessages.add(i);
}
- public void addRuntimeMessage(String message, String source, String
lineNum) {
+ public void addRuntimeError(String message, String source, String
lineNum) {
// Unsafe as HTML
Label i = new Label(
"Uncaught script error: '" + message +
@@ -531,6 +537,11 @@
playgroundUI.runtimeMessages.add(i);
}
+ public void addRuntimeMessage(String message) {
+ 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,
int start, int sOffset, int end, int eOffset) {