Author: jasvir
Date: Thu May 12 23:53:55 2011
New Revision: 1102514
URL: http://svn.apache.org/viewvc?rev=1102514&view=rev
Log:
Patch from Felix Lee - thanks!
Taming for static calls in OSAPI
Modified:
shindig/trunk/features/src/main/javascript/features/caja/feature.xml
shindig/trunk/features/src/main/javascript/features/caja/taming.js
shindig/trunk/features/src/main/javascript/features/core.json/taming.js
shindig/trunk/features/src/main/javascript/features/core.log/taming.js
shindig/trunk/features/src/main/javascript/features/gadgets.json.ext/taming.js
shindig/trunk/features/src/main/javascript/features/opensocial-base/taming.js
shindig/trunk/features/src/main/javascript/features/opensocial-reference/taming.js
shindig/trunk/features/src/main/javascript/features/osapi.base/taming.js
shindig/trunk/features/src/main/javascript/features/osapi/taming.js
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java
Modified: shindig/trunk/features/src/main/javascript/features/caja/feature.xml
URL:
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/caja/feature.xml?rev=1102514&r1=1102513&r2=1102514&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/caja/feature.xml
(original)
+++ shindig/trunk/features/src/main/javascript/features/caja/feature.xml Thu
May 12 23:53:55 2011
@@ -23,13 +23,18 @@ specific language governing permissions
<dependency>taming</dependency>
<gadget>
<script src="taming.js"/>
+ <exports type="js">caja___.getPendingScript</exports>
+ <exports type="js">caja___.getTameGlobal</exports>
<exports type="js">caja___.grantTameAsRead</exports>
- <exports type="js">caja___.guestFrameReady</exports>
+ <exports type="js">caja___.loadedGuestFrame</exports>
+ <exports type="js">caja___.loadedTamingFrame</exports>
+ <exports type="js">caja___.markTameAsFunction</exports>
<exports type="js">caja___.start</exports>
- <exports type="js">caja___.tamingFrameReady</exports>
+ <exports type="js">caja___.tame</exports>
<exports type="js">caja___.tamesTo</exports>
<exports type="js">caja___.whitelistCtors</exports>
<exports type="js">caja___.whitelistFuncs</exports>
<exports type="js">caja___.whitelistMeths</exports>
+ <exports type="js">caja___.whitelistProps</exports>
</gadget>
</feature>
Modified: shindig/trunk/features/src/main/javascript/features/caja/taming.js
URL:
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/caja/taming.js?rev=1102514&r1=1102513&r2=1102514&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/caja/taming.js
(original)
+++ shindig/trunk/features/src/main/javascript/features/caja/taming.js Thu May
12 23:53:55 2011
@@ -24,6 +24,7 @@
caja___ = (function() {
// currently limited to one cajoled gadget per ifr
var tamingFrame;
+ var tame___; // tame___ === tamingFrame.contentWindow.___
var guestFrame;
var pendingScript;
@@ -42,29 +43,43 @@ caja___ = (function() {
};
function fire(globalScope) {
- var USELESS = tamingFrame.contentWindow.___.USELESS;
for (var tamer in tamings___) {
if (tamings___.hasOwnProperty(tamer)) {
- tamings___[tamer].call(USELESS, globalScope);
+ tamings___[tamer].call(tame___.USELESS, globalScope);
}
}
}
- function grantTameAsRead(obj, prop) {
- tamingFrame.contentWindow.___.grantTameAsRead(obj, prop);
+ function getPendingScript() {
+ return pendingScript;
+ }
+
+ function getTameGlobal() {
+ return tamingFrame.contentWindow;
+ }
+
+ function grantTameAsRead(obj, propName) {
+ tame___.grantTameAsRead(obj, propName);
+ }
+
+ function tame(obj) {
+ return tame___.tame(obj);
}
function tamesTo(feral, tame) {
- tamingFrame.contentWindow.___.tamesTo(feral, tame);
+ tame___.tamesTo(feral, tame);
+ }
+
+ function markTameAsFunction(f, name) {
+ return tame___.markTameAsFunction(f, name);
}
function whitelistCtors(schemas) {
- var ___ = tamingFrame.contentWindow.___;
var length = schemas.length;
for (var i = 0; i < length; i++) {
var schema = schemas[i];
if (typeof schema[0][schema[1]] === 'function') {
- ___.markTameAsCtor(
+ tame___.markTameAsCtor(
schema[0][schema[1]] /* func */,
schema[2] /* parent */,
schema[1] /* name */);
@@ -76,12 +91,11 @@ caja___ = (function() {
}
function whitelistFuncs(schemas) {
- var ___ = tamingFrame.contentWindow.___;
var length = schemas.length;
for (var i = 0; i < length; i++) {
var schema = schemas[i];
if (typeof schema[0][schema[1]] === 'function') {
- ___.markTameAsFunction(schema[0][schema[1]], schema[1]);
+ tame___.markTameAsFunction(schema[0][schema[1]], schema[1]);
} else {
gadgets.warn('Error taming function: ' + schema[0] + '.' + schema[1]);
}
@@ -89,18 +103,25 @@ caja___ = (function() {
}
function whitelistMeths(schemas) {
- var ___ = tamingFrame.contentWindow.___;
var length = schemas.length;
for (var i = 0; i < length; i++) {
var schema = schemas[i];
if (typeof schema[0].prototype[schema[1]] == 'function') {
- ___.grantTameAsMethod(schema[0], schema[1]);
+ tame___.grantTameAsMethod(schema[0], schema[1]);
} else {
gadgets.warn('Error taming method: ' + schema[0] + '.' + schema[1]);
}
}
}
+ function whitelistProps(schemas) {
+ var length = schemas.length;
+ for (var i = 0; i < length; i++) {
+ var schema = schemas[i];
+ tame___.grantTameAsRead(schemas[0], schemas[1]);
+ }
+ }
+
function makeFrame(id) {
var frame = document.createElement('iframe');
frame.style.display = 'none';
@@ -111,20 +132,24 @@ caja___ = (function() {
return frame;
}
- function start(script) {
+ function start(script, debug) {
+ var debugArg = debug ? '?debug=1' : '';
+
// guestFrame must be created before loadedTamingFrame fires
guestFrame = makeFrame('caja-guest-frame');
var gdoc = guestFrame.contentWindow.document;
gdoc.write('<html><head>\n');
- gdoc.write('<script>var cajaIframeDone___ = function(){};<'+'/script>\n');
- gdoc.write('<script src="js/caja-guest-frame"><'+'/script>\n');
+ gdoc.write('<script>var cajaIframeDone___ = function(){};<\/script>\n');
+ gdoc.write(
+ '<script src="js/caja-guest-frame' + debugArg + '"><\/script>\n');
tamingFrame = makeFrame('caja-taming-frame');
var tdoc = tamingFrame.contentWindow.document;
tdoc.write('<html><head>\n');
- tdoc.write('<script>var cajaIframeDone___ = function(){};<'+'/script>\n');
- tdoc.write('<script src="js/caja-taming-frame"><'+'/script>\n');
- tdoc.write('<script>parent.caja___.loadedTamingFrame();<'+'/script>\n');
+ tdoc.write('<script>var cajaIframeDone___ = function(){};<\/script>\n');
+ tdoc.write(
+ '<script src="js/caja-taming-frame' + debugArg + '"><\/script>\n');
+ tdoc.write('<script>parent.caja___.loadedTamingFrame();<\/script>\n');
tdoc.write('</head></html>');
tdoc.close();
@@ -136,7 +161,7 @@ caja___ = (function() {
function loadedTamingFrame() {
var gdoc = guestFrame.contentWindow.document;
- gdoc.write('<script>parent.caja___.loadedGuestFrame();<'+'/script>\n');
+ gdoc.write('<script>parent.caja___.loadedGuestFrame();<\/script>\n');
}
function loadedGuestFrame() {
@@ -145,56 +170,56 @@ caja___ = (function() {
var gadgetBody = document.getElementById('caja_innerContainer___');
- var tamingWin = tamingFrame.contentWindow;
- caja___.tameWin = tamingWin;
+ var tameWin = tamingFrame.contentWindow;
+ tame___ = tameWin.___;
+
// TODO(felix8a): pass pseudo-window location
- tamingWin.attachDocumentStub(
- '-g___', uriCallback, imports, gadgetBody);
+ tameWin.attachDocumentStub('-g___', uriCallback, imports, gadgetBody);
imports.htmlEmitter___ =
- new tamingWin.HtmlEmitter(gadgetBody, imports.document);
+ new tameWin.HtmlEmitter(gadgetBody, imports.document);
- imports.onerror = tamingWin.___.tame(
- tamingWin.___.markTameAsFunction(function (msg, source, line) {
+ imports.onerror = tame___.tame(
+ tame___.markTameAsFunction(function (msg, source, line) {
gadgets.log([msg, source, line]);
}));
fire(imports);
- // TODO(felix8a): move these to definition
- imports.gadgets = tamingWin.___.tame(window.gadgets);
- imports.opensocial = tamingWin.___.tame(window.opensocial);
- imports.osapi = tamingWin.___.tame(window.osapi);
-
- tamingWin.___.whitelistAll(imports);
-
- guestWin.plugin_dispatchEvent___ =
- tamingWin.plugin_dispatchEvent___;
- guestWin.plugin_dispatchToHandler___ =
- tamingWin.plugin_dispatchToHandler___;
+ // these are in globals.js
+ imports.gadgets = tame___.tame(window.gadgets);
+ imports.opensocial = tame___.tame(window.opensocial);
+ imports.osapi = tame___.tame(window.osapi);
+
+ tame___.whitelistAll(imports);
+
+ guestWin.plugin_dispatchEvent___ = tameWin.plugin_dispatchEvent___;
+ guestWin.plugin_dispatchToHandler___ = tameWin.plugin_dispatchToHandler___;
guestWin.___.getNewModuleHandler().setImports(imports);
guestWin.___.useDebugSymbols = function(){};
var gdoc = guestWin.document;
gdoc.write('<script>\n');
- gdoc.write(pendingScript);
- gdoc.write('<'+'/script>\n');
- gdoc.write('<script>\n');
+ gdoc.write('eval(parent.caja___.getPendingScript());');
gdoc.write('parent.gadgets.util.runOnLoadHandlers();\n');
- gdoc.write('<'+'/script>\n');
+ gdoc.write('<\/script>\n');
gdoc.write('</head></html>');
gdoc.close();
}
return {
+ getPendingScript: getPendingScript,
+ getTameGlobal: getTameGlobal,
grantTameAsRead: grantTameAsRead,
loadedGuestFrame: loadedGuestFrame,
loadedTamingFrame: loadedTamingFrame,
+ markTameAsFunction: markTameAsFunction,
start: start,
- tameWin: null,
+ tame: tame,
tamesTo: tamesTo,
whitelistCtors: whitelistCtors,
whitelistFuncs: whitelistFuncs,
- whitelistMeths: whitelistMeths
+ whitelistMeths: whitelistMeths,
+ whitelistProps: whitelistProps
};
})();
Modified:
shindig/trunk/features/src/main/javascript/features/core.json/taming.js
URL:
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/core.json/taming.js?rev=1102514&r1=1102513&r2=1102514&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/core.json/taming.js
(original)
+++ shindig/trunk/features/src/main/javascript/features/core.json/taming.js Thu
May 12 23:53:55 2011
@@ -22,6 +22,8 @@
* Tame and expose core gadgets.* API to cajoled gadgets
*/
tamings___.push(function(imports) {
- caja___.tamesTo(gadgets.json.stringify, caja___.tameWin.safeJSON.stringify);
- caja___.tamesTo(gadgets.json.parse, caja___.tameWin.safeJSON.parse);
+ caja___.tamesTo(gadgets.json.stringify,
+ caja___.getTameGlobal().safeJSON.stringify);
+ caja___.tamesTo(gadgets.json.parse,
+ caja___.getTameGlobal().safeJSON.parse);
});
Modified: shindig/trunk/features/src/main/javascript/features/core.log/taming.js
URL:
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/core.log/taming.js?rev=1102514&r1=1102513&r2=1102514&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/core.log/taming.js
(original)
+++ shindig/trunk/features/src/main/javascript/features/core.log/taming.js Thu
May 12 23:53:55 2011
@@ -28,8 +28,10 @@ tamings___.push(function(imports) {
[gadgets, 'error'],
[gadgets, 'setLogLevel']
]);
- caja___.grantTameAsRead(gadgets.log, 'INFO');
- caja___.grantTameAsRead(gadgets.log, 'WARNING');
- caja___.grantTameAsRead(gadgets.log, 'ERROR');
- caja___.grantTameAsRead(gadgets.log, 'NONE');
+ caja___.whitelistProps([
+ [gadgets.log, 'INFO'],
+ [gadgets.log, 'WARNING'],
+ [gadgets.log, 'ERROR'],
+ [gadgets.log, 'NONE']
+ ]);
});
Modified:
shindig/trunk/features/src/main/javascript/features/gadgets.json.ext/taming.js
URL:
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/gadgets.json.ext/taming.js?rev=1102514&r1=1102513&r2=1102514&view=diff
==============================================================================
---
shindig/trunk/features/src/main/javascript/features/gadgets.json.ext/taming.js
(original)
+++
shindig/trunk/features/src/main/javascript/features/gadgets.json.ext/taming.js
Thu May 12 23:53:55 2011
@@ -22,5 +22,6 @@
* Tame and expose core gadgets.* API to cajoled gadgets
*/
tamings___.push(function(imports) {
- ___.tamesTo(gadgets.json.xml.convertXmlToJson, safeJSON.convertXmlToJson);
+ caja___.tamesTo(gadgets.json.xml.convertXmlToJson,
+ caja___.getTameGlobal().safeJSON.convertXmlToJson);
});
Modified:
shindig/trunk/features/src/main/javascript/features/opensocial-base/taming.js
URL:
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/opensocial-base/taming.js?rev=1102514&r1=1102513&r2=1102514&view=diff
==============================================================================
---
shindig/trunk/features/src/main/javascript/features/opensocial-base/taming.js
(original)
+++
shindig/trunk/features/src/main/javascript/features/opensocial-base/taming.js
Thu May 12 23:53:55 2011
@@ -26,4 +26,8 @@ tamings___.push(function(imports) {
[window, 'JsonMessageCollection', opensocial.MessageCollection],
[window, 'JsonPerson', opensocial.Person]
]);
+ caja___.whitelistMeths([
+ [JsonPerson, 'getDisplayName'],
+ [JsonPerson, 'getAppData']
+ ]);
});
Modified:
shindig/trunk/features/src/main/javascript/features/opensocial-reference/taming.js
URL:
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/opensocial-reference/taming.js?rev=1102514&r1=1102513&r2=1102514&view=diff
==============================================================================
---
shindig/trunk/features/src/main/javascript/features/opensocial-reference/taming.js
(original)
+++
shindig/trunk/features/src/main/javascript/features/opensocial-reference/taming.js
Thu May 12 23:53:55 2011
@@ -22,10 +22,6 @@
* Tame and expose opensocial.* API to cajoled gadgets
*/
tamings___.push(function(imports) {
- // TODO(felix8a): tame these
- // ___.grantInnocentMethod(JsonPerson.prototype, 'getDisplayName');
- // ___.grantInnocentMethod(JsonPerson.prototype, 'getAppData');
-
caja___.whitelistCtors([
[window, 'JsonRpcRequestItem', Object],
[opensocial, 'Activity', Object],
@@ -51,7 +47,10 @@ tamings___.push(function(imports) {
[opensocial, 'ResponseItem', Object],
[opensocial, 'Url', Object]
]);
+
caja___.whitelistMeths([
+ [JsonPerson, 'getDisplayName'],
+ [JsonPerson, 'getAppData'],
[opensocial.Activity, 'getField'],
[opensocial.Activity, 'getId'],
[opensocial.Activity, 'setField'],
@@ -165,49 +164,50 @@ tamings___.push(function(imports) {
[opensocial, 'requestShareApp']
]);
- caja___.grantTameAsRead(opensocial, 'CreateActivityPriority');
- caja___.grantTameAsRead(opensocial, 'EscapeType');
- caja___.grantTameAsRead(opensocial.Activity, 'Field');
- caja___.grantTameAsRead(opensocial.Address, 'Field');
- caja___.grantTameAsRead(opensocial.Album, 'Field');
- caja___.grantTameAsRead(opensocial.BodyType, 'Field');
- caja___.grantTameAsRead(opensocial.DataRequest, 'ActivityRequestFields');
- caja___.grantTameAsRead(opensocial.DataRequest, 'DataRequestFields');
- caja___.grantTameAsRead(opensocial.DataRequest, 'FilterType');
- caja___.grantTameAsRead(opensocial.DataRequest, 'Group');
- caja___.grantTameAsRead(opensocial.DataRequest, 'PeopleRequestFields');
- caja___.grantTameAsRead(opensocial.DataRequest, 'SortOrder');
- caja___.grantTameAsRead(opensocial.Email, 'Field');
- caja___.grantTameAsRead(opensocial.Enum, 'Smoker');
- caja___.grantTameAsRead(opensocial.Enum, 'Drinker');
- caja___.grantTameAsRead(opensocial.Enum, 'Gender');
- caja___.grantTameAsRead(opensocial.Enum, 'LookingFor');
- caja___.grantTameAsRead(opensocial.Enum, 'Presence');
- caja___.grantTameAsRead(opensocial.Environment, 'ObjectType');
- caja___.grantTameAsRead(opensocial.IdSpec, 'Field');
- caja___.grantTameAsRead(opensocial.IdSpec, 'GroupId');
- caja___.grantTameAsRead(opensocial.IdSpec, 'PersonId');
- caja___.grantTameAsRead(opensocial.MediaItem, 'Field');
- caja___.grantTameAsRead(opensocial.MediaItem, 'Type');
- caja___.grantTameAsRead(opensocial.Message, 'Field');
- caja___.grantTameAsRead(opensocial.Message, 'Type');
- caja___.grantTameAsRead(opensocial.MessageCollection, 'Field');
- caja___.grantTameAsRead(opensocial.Name, 'Field');
- caja___.grantTameAsRead(opensocial.NavigationParameters, 'DestinationType');
- caja___.grantTameAsRead(opensocial.NavigationParameters, 'Field');
- caja___.grantTameAsRead(opensocial.Organization, 'Field');
- caja___.grantTameAsRead(opensocial.Person, 'Field');
- caja___.grantTameAsRead(opensocial.Phone, 'Field');
- caja___.grantTameAsRead(opensocial.ResponseItem, 'Error');
- caja___.grantTameAsRead(opensocial.Url, 'Field');
+ caja___.whitelistProps([
+ [opensocial, 'CreateActivityPriority'],
+ [opensocial, 'EscapeType'],
+ [opensocial.Activity, 'Field'],
+ [opensocial.Address, 'Field'],
+ [opensocial.Album, 'Field'],
+ [opensocial.BodyType, 'Field'],
+ [opensocial.DataRequest, 'ActivityRequestFields'],
+ [opensocial.DataRequest, 'DataRequestFields'],
+ [opensocial.DataRequest, 'FilterType'],
+ [opensocial.DataRequest, 'Group'],
+ [opensocial.DataRequest, 'PeopleRequestFields'],
+ [opensocial.DataRequest, 'SortOrder'],
+ [opensocial.Email, 'Field'],
+ [opensocial.Enum, 'Smoker'],
+ [opensocial.Enum, 'Drinker'],
+ [opensocial.Enum, 'Gender'],
+ [opensocial.Enum, 'LookingFor'],
+ [opensocial.Enum, 'Presence'],
+ [opensocial.Environment, 'ObjectType'],
+ [opensocial.IdSpec, 'Field'],
+ [opensocial.IdSpec, 'GroupId'],
+ [opensocial.IdSpec, 'PersonId'],
+ [opensocial.MediaItem, 'Field'],
+ [opensocial.MediaItem, 'Type'],
+ [opensocial.Message, 'Field'],
+ [opensocial.Message, 'Type'],
+ [opensocial.MessageCollection, 'Field'],
+ [opensocial.Name, 'Field'],
+ [opensocial.NavigationParameters, 'DestinationType'],
+ [opensocial.NavigationParameters, 'Field'],
+ [opensocial.Organization, 'Field'],
+ [opensocial.Person, 'Field'],
+ [opensocial.Phone, 'Field'],
+ [opensocial.ResponseItem, 'Error'],
+ [opensocial.Url, 'Field']
+ ]);
// TODO(jasvir): The following object *is* exposed to gadget
// code because its returned by opensocial.DataRequest.*
// but isn't documented in gadget API.
- // TODO(felix8a): tame these
- //caja___.grantTameAsRead(JsonRpcRequestItem, 'rpc');
- //caja___.grantTameAsRead(JsonRpcRequestItem, 'processData');
- //caja___.grantTameAsRead(JsonRpcRequestItem, 'processResponse');
- //caja___.grantTameAsRead(JsonRpcRequestItem, 'errors');
+ caja___.grantTameAsRead(JsonRpcRequestItem, 'rpc');
+ caja___.grantTameAsRead(JsonRpcRequestItem, 'processData');
+ caja___.grantTameAsRead(JsonRpcRequestItem, 'processResponse');
+ caja___.grantTameAsRead(JsonRpcRequestItem, 'errors');
});
Modified:
shindig/trunk/features/src/main/javascript/features/osapi.base/taming.js
URL:
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/osapi.base/taming.js?rev=1102514&r1=1102513&r2=1102514&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/osapi.base/taming.js
(original)
+++ shindig/trunk/features/src/main/javascript/features/osapi.base/taming.js
Thu May 12 23:53:55 2011
@@ -22,15 +22,13 @@
* Tame and expose core osapi.* API to cajoled gadgets
*/
tamings___.push(function(imports) {
- // TODO(felix8a): tame osapi
- // ___.tamesTo(osapi.newBatch, ___.markFuncFreeze(function() {
- // var result = osapi.newBatch();
- // ___.markFunc(result['add'], 'add');
- // ___.markFunc(result['execute'], 'execute');
- // return ___.tame(result);
- // }));
- //
- // // OSAPI functions are marked as simple funcs as they are registered
- // imports.outers.osapi = ___.tame(osapi);
- // ___.grantTameAsRead(imports.outers, 'osapi');
+ caja___.tamesTo(osapi.newBatch, caja___.markTameAsFunction(function() {
+ var batch = osapi.newBatch();
+ caja___.whitelistFuncs([
+ [batch, 'add'],
+ [batch, 'execute']
+ ]);
+ var t = caja___.tame(batch);
+ return t;
+ }, 'newBatch'));
});
Modified: shindig/trunk/features/src/main/javascript/features/osapi/taming.js
URL:
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/osapi/taming.js?rev=1102514&r1=1102513&r2=1102514&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/osapi/taming.js
(original)
+++ shindig/trunk/features/src/main/javascript/features/osapi/taming.js Thu May
12 23:53:55 2011
@@ -34,13 +34,6 @@ tamings___.push(function(imports) {
[osapi.people, 'getOwner'],
[osapi.people, 'getOwnerFriends']
]);
- // Careful not to clobber osapi.people which already has tamed functions
on it
- // TODO(felix8a): tame these
- //savedImports.outers.osapi.people.getViewer =
___.tame(osapi.people.getViewer);
- //savedImports.outers.osapi.people.getViewerFriends =
___.tame(osapi.people.getViewerFriends);
- //savedImports.outers.osapi.people.getOwner =
___.tame(osapi.people.getOwner);
- //savedImports.outers.osapi.people.getOwnerFriends =
___.tame(osapi.people.getOwnerFriends);
}
});
-
});
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java?rev=1102514&r1=1102513&r2=1102514&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java
(original)
+++
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java
Thu May 12 23:53:55 2011
@@ -259,10 +259,9 @@ public class CajaContentRewriter impleme
/* invisible */ false);
cajoledOutput.appendChild(messagesNode);
- // TODO(felix8a): style boxing
Element outerDiv = doc.createElement("div");
outerDiv.setAttribute("id", "caja_outerContainer___");
- outerDiv.setAttribute("style", "position: relative;");
+ outerDiv.setAttribute("style", "position: relative; overflow: hidden;");
cajoledOutput.appendChild(outerDiv);
Element innerDiv = doc.createElement("div");
@@ -273,7 +272,7 @@ public class CajaContentRewriter impleme
innerDiv.appendChild(doc.adoptNode(result.html));
String cajoledJs = renderJs(result.js, debug);
- cajoledOutput.appendChild(cajaStart(doc, cajoledJs));
+ cajoledOutput.appendChild(cajaStart(doc, cajoledJs, debug));
createContainerFor(doc, cajoledOutput);
mc.documentChanged();
@@ -395,13 +394,15 @@ public class CajaContentRewriter impleme
return rendered.toString();
}
- private Element cajaStart(Document doc, String cajoledJs) {
+ private Element cajaStart(Document doc, String cajoledJs, boolean debug) {
Element scriptElement = doc.createElement("script");
scriptElement.setAttribute("type", "text/javascript");
StringBuilder start = new StringBuilder();
start.append("caja___.start(\n'");
Escaping.escapeJsString(cajoledJs, true, true, start);
- start.append("');\n");
+ start.append("', ");
+ start.append(debug ? "true" : "false");
+ start.append(");\n");
scriptElement.appendChild(doc.createTextNode(start.toString()));
return scriptElement;
}