You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by mh...@apache.org on 2010/10/27 00:19:10 UTC
svn commit: r1027761 - in
/shindig/trunk/features/src/main/javascript/features/container:
container.js gadget_site.js
Author: mhermanto
Date: Tue Oct 26 22:19:10 2010
New Revision: 1027761
URL: http://svn.apache.org/viewvc?rev=1027761&view=rev
Log:
Common container: 2 small rpc updates.
- allow container client to register rpc and work with calling GadgetSite.
- removed unused (by Shindig) onload rpc service.
http://codereview.appspot.com/2623041/
Modified:
shindig/trunk/features/src/main/javascript/features/container/container.js
shindig/trunk/features/src/main/javascript/features/container/gadget_site.js
Modified: shindig/trunk/features/src/main/javascript/features/container/container.js
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/container/container.js?rev=1027761&r1=1027760&r2=1027761&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/container/container.js (original)
+++ shindig/trunk/features/src/main/javascript/features/container/container.js Tue Oct 26 22:19:10 2010
@@ -246,6 +246,26 @@ shindig.container.Container.prototype.ge
/**
+ * @param {string} service name of RPC service to register.
+ * @param {Function} callback post-RPC function to call, with RPC-related
+ * arguments (with the calling GadgetSite augmented) and the
+ * callback response itself.
+ */
+shindig.container.Container.prototype.rpcRegister = function(service, callback) {
+ var self = this;
+ gadgets.rpc.register(service, function() {
+ // this['f'] is set by calling iframe via gadgets.rpc.
+ this[shindig.container.GadgetSite.RPC_ARG_KEY] = self.getGadgetSite(this['f']);
+ var argsCopy = [ this ];
+ for (var i = 0; i < arguments.length; ++i) {
+ argsCopy.push(arguments[i]);
+ }
+ callback.apply(self, argsCopy);
+ });
+};
+
+
+/**
* Callback that occurs after instantiation/construction of this. Override to
* provide your specific functionalities.
* @param {Object=} opt_config Configuration JSON.
@@ -399,11 +419,11 @@ shindig.container.Container.prototype.is
* @private
*/
shindig.container.Container.prototype.registerRpcServices_ = function() {
- var self = this;
- gadgets.rpc.register('resize_iframe', function(height) {
- // this['f'] is set by calling iframe via gadgets.rpc.
- var site = self.getGadgetSite(this['f']);
- site.setHeight(height);
+ this.rpcRegister('resize_iframe', function(rpcArgs, data) {
+ var site = rpcArgs[shindig.container.GadgetSite.RPC_ARG_KEY];
+ if (site) { // Check if site is not already closed.
+ site.setHeight(data);
+ }
});
};
@@ -452,7 +472,6 @@ shindig.container.Container.prototype.ge
};
-
/**
* Refresh security tokens immediately. This will fetch gadget metadata, along
* with its token and have the token cache updated.
Modified: shindig/trunk/features/src/main/javascript/features/container/gadget_site.js
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/container/gadget_site.js?rev=1027761&r1=1027760&r2=1027761&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/container/gadget_site.js (original)
+++ shindig/trunk/features/src/main/javascript/features/container/gadget_site.js Tue Oct 26 22:19:10 2010
@@ -195,7 +195,7 @@ shindig.container.GadgetSite.prototype.g
* Render a gadget in the site, by URI of the gadget XML.
* @param {string} gadgetUrl The absolute URL to gadget.
* @param {Object} viewParams Look at shindig.container.ViewParam.
- * @param {Object} renderParams. Look at shindig.container.RenderParam.
+ * @param {Object} renderParams Look at shindig.container.RenderParam.
* @param {function(Object)=} opt_callback Function called with gadget info
* after navigation has occurred.
*/
@@ -222,7 +222,7 @@ shindig.container.GadgetSite.prototype.n
* Render a gadget in this site, using a JSON gadget description.
* @param {Object} gadgetInfo the JSON gadget description.
* @param {Object} viewParams Look at shindig.container.ViewParam.
- * @param {Object} renderParams. Look at shindig.container.RenderParam.
+ * @param {Object} renderParams Look at shindig.container.RenderParam.
*/
shindig.container.GadgetSite.prototype.render = function(
gadgetInfo, viewParams, renderParams) {
@@ -251,18 +251,11 @@ shindig.container.GadgetSite.prototype.r
throw [ 'Unsupported view ', view, ' for gadget ', gadgetInfo_['url'], '.' ].join('');
}
- var delayLoad = this.getFeature('loadstate', gadgetInfo) ||
- this.getFeature('shell', gadgetInfo);
-
var localRenderParams = {};
for (var key in renderParams) {
localRenderParams[key] = renderParams[key];
}
- // Delay load for now means we autosize.
- if (delayLoad) {
- localRenderParams[shindig.container.RenderParam.HEIGHT] = '0';
- }
localRenderParams[shindig.container.RenderParam.VIEW] = view;
localRenderParams[shindig.container.RenderParam.HEIGHT]
= renderParams[shindig.container.RenderParam.HEIGHT]
@@ -279,14 +272,26 @@ shindig.container.GadgetSite.prototype.r
this.loadingGadgetHolder_.render(gadgetInfo, viewParams, localRenderParams);
- this.loaded_ = false;
+ this.onRender(gadgetInfo, viewParams, renderParams);
+};
+
- // Resize on load only if load is delayed. If immediate, height is 0
- this.resizeOnLoad_ = delayLoad;
+/**
+ * Called when a gadget loads in the site. Uses double buffer, if present.
+ * @param {Object} gadgetInfo the JSON gadget description.
+ * @param {Object} viewParams Look at shindig.container.ViewParam.
+ * @param {Object} renderParams Look at shindig.container.RenderParam.
+ */
+shindig.container.GadgetSite.prototype.onRender = function(
+ gadgetInfo, viewParams, renderParams) {
+ this.swapBuffers_();
- if (!delayLoad) {
- this.setLoadState_('loaded');
+ if (this.currentGadgetHolder_) {
+ this.currentGadgetHolder_.dispose();
}
+
+ this.currentGadgetHolder_ = this.loadingGadgetHolder_;
+ this.loadingGadgetHolder_ = null;
};
@@ -309,7 +314,7 @@ shindig.container.GadgetSite.prototype.r
* If token has been fetched at least once, set the token to the most recent
* one. Otherwise, leave it.
* @param {Object} gadgetInfo The gadgetInfo used to update security token.
- * @param {Object} renderParams. Look at shindig.container.RenderParam.
+ * @param {Object} renderParams Look at shindig.container.RenderParam.
*/
shindig.container.GadgetSite.prototype.updateSecurityToken_
= function(gadgetInfo, renderParams) {
@@ -351,46 +356,6 @@ shindig.container.GadgetSite.nextUniqueI
/**
- * Sets the load state of the currently loading / visible gadget.
- * @param {string} state The current state.
- * @private
- */
-shindig.container.GadgetSite.prototype.setLoadState_ = function(state) {
- if (!this.loaded_ && state == 'loaded') {
- this.onload_();
- }
-};
-
-
-/**
- * Called when a gadget loads in the site. Uses double buffer, if present.
- * @private
- */
-shindig.container.GadgetSite.prototype.onload_ = function() {
- this.loaded_ = true;
- try {
- gadgets.rpc.call(this.loadingGadgetHolder_.getIframeId(), 'onLoad', null);
- if (this.resizeOnLoad_) {
- // TODO need a value for setHeight
- this.setHeight();
- }
- } catch (e) {
- // This can throw for same domain, although it shouldn't
- gadgets.log(e);
- }
-
- this.swapBuffers_();
-
- if (this.currentGadgetHolder_) {
- this.currentGadgetHolder_.dispose();
- }
-
- this.currentGadgetHolder_ = this.loadingGadgetHolder_;
- this.loadingGadgetHolder_ = null;
-};
-
-
-/**
* Swap the double buffer elements, if there is a double buffer.
* @private
*/
@@ -411,6 +376,13 @@ shindig.container.GadgetSite.prototype.s
/**
+ * Key to identify the calling gadget site.
+ * @type {string}
+ */
+shindig.container.GadgetSite.RPC_ARG_KEY = 'gs';
+
+
+/**
* Default height of gadget. Refer to --
* http://code.google.com/apis/gadgets/docs/legacy/reference.html.
* @type {number}