Reviewers: metaweta,
Description:
currently, plugin_dispatchEvent___ and plugin_dispatchHandler___ are
added to the global namespace.
this change moves those functions to the ___ object.
Please review this at http://codereview.appspot.com/5486053/
Affected files:
M build.xml
M src/com/google/caja/demos/playground/es53.html
M src/com/google/caja/plugin/domado.js
M src/com/google/caja/plugin/es53-frame-group.js
M src/com/google/caja/plugin/ses-frame-group.js
M src/com/google/caja/plugin/templates/HtmlAttributeRewriter.java
M tests/com/google/caja/plugin/PipelineCacheTest.java
M tests/com/google/caja/plugin/domita_test_untrusted.html
M tests/com/google/caja/plugin/es53-test-domado-forms-guest.html
M tests/com/google/caja/plugin/templates/TemplateCompilerTest.java
M
tests/com/google/caja/plugin/templates/template-compiler-golden1-dynamic.js
M
tests/com/google/caja/plugin/templates/template-compiler-golden1-nulluripol.js
M
tests/com/google/caja/plugin/templates/template-compiler-golden1-static.js
Index: src/com/google/caja/plugin/es53-frame-group.js
===================================================================
--- src/com/google/caja/plugin/es53-frame-group.js (revision 4679)
+++ src/com/google/caja/plugin/es53-frame-group.js (working copy)
@@ -125,14 +125,15 @@
}
feralWin.___.tamingWindows[imports.id___] = tamingWin;
- // domado innerHTML sanitizer uses feralWin.plugin_dispatchEvent___
- // html-emitter uses guestWin.plugin_dispatchEvent___
- feralWin.plugin_dispatchEvent___ = domado.plugin_dispatchEvent;
- guestWin.plugin_dispatchEvent___ = domado.plugin_dispatchEvent;
- feralWin.plugin_dispatchToHandler___ =
+ // domado innerHTML sanitizer uses feralWin.___.plugin_dispatchEvent___
+ // html-emitter uses guestWin.___.plugin_dispatchEvent___
+ feralWin.___.plugin_dispatchEvent___ = domado.plugin_dispatchEvent;
+ guestWin.___.plugin_dispatchEvent___ = domado.plugin_dispatchEvent;
+ feralWin.___.plugin_dispatchToHandler___ =
function (pluginId, handler, args) {
var tamingWin = feralWin.___.tamingWindows[pluginId];
- return tamingWin.plugin_dispatchToHandler___(pluginId, handler,
args);
+ return tamingWin.___.plugin_dispatchToHandler___(
+ pluginId, handler, args);
};
return domicile;
Index: src/com/google/caja/plugin/domado.js
===================================================================
--- src/com/google/caja/plugin/domado.js (revision 4679)
+++ src/com/google/caja/plugin/domado.js (working copy)
@@ -1640,7 +1640,8 @@
if (!match) { return null; }
var doesReturn = match[1];
var fnName = match[2];
- value = (doesReturn ? 'return ' : '')
+ 'plugin_dispatchEvent___('
+ value = (doesReturn ? 'return ' : '')
+ + '___.plugin_dispatchEvent___('
+ 'this, event, ' + pluginId + ', "'
+ fnName + '");';
if (attribName === 'onsubmit') {
Index: src/com/google/caja/plugin/ses-frame-group.js
===================================================================
--- src/com/google/caja/plugin/ses-frame-group.js (revision 4679)
+++ src/com/google/caja/plugin/ses-frame-group.js (working copy)
@@ -25,13 +25,17 @@
if (tamingWin !== window) {
throw new Error('wrong frame');
}
+ if (!tamingWin.___) {
+ tamingWin.___ = {};
+ }
var stubMembrane = true;
var bridal = bridalMaker(identity, feralWin.document);
var domado = Domado(null);
- tamingWin.plugin_dispatchToHandler___ =
domado.plugin_dispatchToHandler___;
+ tamingWin.___.plugin_dispatchToHandler___ =
+ domado.plugin_dispatchToHandler;
var frameGroup = {
iframe: window.frameElement,
@@ -120,11 +124,12 @@
}
feralWin.___.tamingWindows[imports.id___] = tamingWin;
- feralWin.plugin_dispatchEvent___ = domado.plugin_dispatchEvent;
- feralWin.plugin_dispatchToHandler___ =
+ feralWin.___.plugin_dispatchEvent___ = domado.plugin_dispatchEvent;
+ feralWin.___.plugin_dispatchToHandler___ =
function (pluginId, handler, args) {
var tamingWin = feralWin.___.tamingWindows[pluginId];
- return tamingWin.plugin_dispatchToHandler___(pluginId, handler,
args);
+ return tamingWin.___.plugin_dispatchToHandler___(
+ pluginId, handler, args);
};
return domicile;
Index: src/com/google/caja/plugin/templates/HtmlAttributeRewriter.java
===================================================================
--- src/com/google/caja/plugin/templates/HtmlAttributeRewriter.java
(revision 4679)
+++ src/com/google/caja/plugin/templates/HtmlAttributeRewriter.java
(working copy)
@@ -213,7 +213,7 @@
= (FunctionConstructor) QuasiBuilder.substV(
""
+ "(/*@synthetic*/ function (event) {"
- + " return /*@synthetic*/ (plugin_dispatchEvent___("
+ + " return /*@synthetic*/ (___.plugin_dispatchEvent___("
+ " /*@synthetic*/this, event, "
+ " ___./*@synthetic*/getId(IMPORTS___), @tail));"
+ "})",
@@ -270,7 +270,7 @@
Operation urlAdapter = (Operation) QuasiBuilder.substV(
""
+ "'javascript:' + /*@synthetic*/encodeURIComponent("
- + " 'try{void plugin_dispatchToHandler___('"
+ + " 'try{void ___.plugin_dispatchToHandler___('"
+ " + ___./*@synthetic*/getId(IMPORTS___)"
+ " + ',' + @handlerIndex + ',[{}])}catch(_){}')",
"handlerIndex", new Reference(handlerIndex));
@@ -426,7 +426,7 @@
* }</pre>
* <p>
* And the resulting function is called via a handler attribute like
- * {@code onchange="plugin_dispatchEvent___(this, node,
1234, 'handlerName')"}
+ * {@code onchange="___.plugin_dispatchEvent___(this, node,
1234, 'handlerName')"}
*/
private static void rewriteEventHandlerReferences(Block block) {
block.acceptPreOrder(
Index: src/com/google/caja/demos/playground/es53.html
===================================================================
--- src/com/google/caja/demos/playground/es53.html (revision 4679)
+++ src/com/google/caja/demos/playground/es53.html (working copy)
@@ -182,7 +182,7 @@
tamesTo: insiderTamesTo,
hasTameTwin: hasTameTwin
}));
- tamingWindow.plugin_dispatchToHandler___ = domado.dispatchToHandler;
+ tamingWindow.___.plugin_dispatchToHandler___ =
domado.dispatchToHandler;
//------ paste from caja.js --------------
var domicile = domado.attachDocument("-" + div.id, uriPolicyForTaming,
div);
Index: build.xml
===================================================================
--- build.xml (revision 4679)
+++ build.xml (working copy)
@@ -213,6 +213,7 @@
<!-- ModuleSystemTest first, because it fails more quickly -->
<antcall target="runtests">
<param name="test.filter">ModuleSystemTest</param>
+ <param name="runtests.shouldCache">false</param>
</antcall>
<antcall target="runtests">
<param name="test.filter">ES53BrowserTest</param>
Index: tests/com/google/caja/plugin/domita_test_untrusted.html
===================================================================
--- tests/com/google/caja/plugin/domita_test_untrusted.html (revision 4679)
+++ tests/com/google/caja/plugin/domita_test_untrusted.html (working copy)
@@ -1491,7 +1491,7 @@
+ '<input type="submit" value="Submit"></form>';
assertEquals('<form onsubmit="'
- + 'try { plugin_dispatchEvent___'
+ + 'try { ___.plugin_dispatchEvent___'
+ '(this, event, 0, "foo");'
+ ' } finally { return false; }">'
+ '<input type="submit" value="Submit"></form>',
Index: tests/com/google/caja/plugin/PipelineCacheTest.java
===================================================================
--- tests/com/google/caja/plugin/PipelineCacheTest.java (revision 4679)
+++ tests/com/google/caja/plugin/PipelineCacheTest.java (working copy)
@@ -259,7 +259,7 @@
" .i___('Hello');",
" });",
" el___.onclick = function (event) {",
- (" return plugin_dispatchEvent___"
+ (" return ___.plugin_dispatchEvent___"
+ "(this, event, ___.getId(IMPORTS___),"),
" c_2___);",
" };",
@@ -534,7 +534,7 @@
" .i___(1337);",
" });",
" el___.onclick = function (event) {",
- " return plugin_dispatchEvent___(this, event,
___.getId(IMPORTS___),",
+ " return ___.plugin_dispatchEvent___(this, event,
___.getId(IMPORTS___),",
" c_1___);",
" };",
" el___.removeAttribute('id');")
Index: tests/com/google/caja/plugin/templates/TemplateCompilerTest.java
===================================================================
--- tests/com/google/caja/plugin/templates/TemplateCompilerTest.java
(revision 4679)
+++ tests/com/google/caja/plugin/templates/TemplateCompilerTest.java
(working copy)
@@ -235,7 +235,7 @@
+ " return true;"
+ " });"
+ " el___.onsubmit = function (event) {"
- + " return plugin_dispatchEvent___("
+ + " return ___.plugin_dispatchEvent___("
+ " this, event, ___.getId(IMPORTS___), c_1___);"
+ " };"
+ " el___.removeAttribute('id');"
@@ -265,7 +265,7 @@
// The extracted handler.
+ " emitter___.setAttr(el___, 'href', 'javascript:'"
+ " + encodeURIComponent("
- + " 'try{void plugin_dispatchToHandler___('"
+ + " 'try{void ___.plugin_dispatchToHandler___('"
+ " + ___.getId(IMPORTS___) + ',' + c_1___"
+ " + ',[{}])}catch(_){}'));"
+ " el___.removeAttribute('id');"
@@ -296,7 +296,7 @@
+ " })) - 1;"
+ " emitter___.setAttr(el___, 'href', 'javascript:'"
+ " + encodeURIComponent("
- + " 'try{void plugin_dispatchToHandler___('"
+ + " 'try{void ___.plugin_dispatchToHandler___('"
+ " + ___.getId(IMPORTS___) + ',' + c_1___"
+ " + ',[{}])}catch(_){}'));"
+ " el___.removeAttribute('id');"
Index:
tests/com/google/caja/plugin/templates/template-compiler-golden1-nulluripol.js
===================================================================
---
tests/com/google/caja/plugin/templates/template-compiler-golden1-nulluripol.js
(revision 4679)
+++
tests/com/google/caja/plugin/templates/template-compiler-golden1-nulluripol.js
(working copy)
@@ -17,7 +17,7 @@
wasClicked(thisNode___);
});
el___.onclick = function (event) {
- return plugin_dispatchEvent___(this, event, ___.getId(IMPORTS___),
c_1___);
+ return ___.plugin_dispatchEvent___(this, event,
___.getId(IMPORTS___), c_1___);
};
// Remove the manufactured ID
el___.removeAttribute('id');
@@ -62,7 +62,7 @@
wasClicked(thisNode___);
});
el___.onclick = function (event) {
- return plugin_dispatchEvent___(this, event, ___.getId(IMPORTS___),
c_1___);
+ return ___.plugin_dispatchEvent___(this, event,
___.getId(IMPORTS___), c_1___);
};
el___.removeAttribute('id');
el___ = emitter___.byId('id_6___');
Index:
tests/com/google/caja/plugin/templates/template-compiler-golden1-dynamic.js
===================================================================
---
tests/com/google/caja/plugin/templates/template-compiler-golden1-dynamic.js
(revision 4679)
+++
tests/com/google/caja/plugin/templates/template-compiler-golden1-dynamic.js
(working copy)
@@ -17,7 +17,7 @@
wasClicked(thisNode___);
});
el___.onclick = function (event) {
- return plugin_dispatchEvent___(this, event, ___.getId(IMPORTS___),
c_1___);
+ return ___.plugin_dispatchEvent___(this, event,
___.getId(IMPORTS___), c_1___);
};
// Remove the manufactured ID
el___.removeAttribute('id');
@@ -60,7 +60,7 @@
wasClicked(thisNode___);
});
el___.onclick = function (event) {
- return plugin_dispatchEvent___(this, event, ___.getId(IMPORTS___),
c_1___);
+ return ___.plugin_dispatchEvent___(this, event,
___.getId(IMPORTS___), c_1___);
};
el___.removeAttribute('id');
el___ = emitter___.byId('id_6___');
Index:
tests/com/google/caja/plugin/templates/template-compiler-golden1-static.js
===================================================================
---
tests/com/google/caja/plugin/templates/template-compiler-golden1-static.js
(revision 4679)
+++
tests/com/google/caja/plugin/templates/template-compiler-golden1-static.js
(working copy)
@@ -12,7 +12,7 @@
wasClicked(thisNode___);
});
el___.onclick = function (event) {
- return plugin_dispatchEvent___(this, event, ___.getId(IMPORTS___),
c_1___);
+ return ___.plugin_dispatchEvent___(this, event,
___.getId(IMPORTS___), c_1___);
};
// Remove the manufactured ID
el___.removeAttribute('id');
@@ -57,7 +57,7 @@
wasClicked(thisNode___);
});
el___.onclick = function (event) {
- return plugin_dispatchEvent___(this, event, ___.getId(IMPORTS___),
c_1___);
+ return ___.plugin_dispatchEvent___(this, event,
___.getId(IMPORTS___), c_1___);
};
el___.removeAttribute('id');
el___ = emitter___.finish();
Index: tests/com/google/caja/plugin/es53-test-domado-forms-guest.html
===================================================================
--- tests/com/google/caja/plugin/es53-test-domado-forms-guest.html
(revision 4679)
+++ tests/com/google/caja/plugin/es53-test-domado-forms-guest.html (working
copy)
@@ -177,7 +177,7 @@
+ '<input type="submit" value="Submit"></form>';
assertEquals('<form onsubmit="'
- + 'try { plugin_dispatchEvent___'
+ + 'try { ___.plugin_dispatchEvent___'
+ '(this, event, 0, "foo");'
+ ' } finally { return false; }">'
+ '<input type="submit" value="Submit"></form>',