You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by ss...@apache.org on 2014/02/19 14:07:38 UTC
svn commit: r1569732 - in
/shindig/trunk/features/src/main/javascript/features:
container.site.gadget/gadget_site.js container/container.js
Author: ssievers
Date: Wed Feb 19 13:07:37 2014
New Revision: 1569732
URL: http://svn.apache.org/r1569732
Log:
SHINDIG-1965 | iframe onload events firing more than once cause gadget iframe to empty
Modified:
shindig/trunk/features/src/main/javascript/features/container.site.gadget/gadget_site.js
shindig/trunk/features/src/main/javascript/features/container/container.js
Modified: shindig/trunk/features/src/main/javascript/features/container.site.gadget/gadget_site.js
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/container.site.gadget/gadget_site.js?rev=1569732&r1=1569731&r2=1569732&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/container.site.gadget/gadget_site.js (original)
+++ shindig/trunk/features/src/main/javascript/features/container.site.gadget/gadget_site.js Wed Feb 19 13:07:37 2014
@@ -338,12 +338,17 @@ osapi.container.GadgetSite.prototype.ren
osapi.container.GadgetSite.prototype.onRender = function() {
this.swapBuffers_();
- if (this.currentGadgetHolder_) {
- this.currentGadgetHolder_.dispose();
- }
+ // Only dispose the current holder set it to the loading holder if a loading holder exists.
+ // This protects this method from re-entrant code that can cause the current holder to be
+ // removed without a loading holder to take its place
+ if (this.loadingGadgetHolder_) {
+ if (this.currentGadgetHolder_) {
+ this.currentGadgetHolder_.dispose();
+ }
- this.currentGadgetHolder_ = this.loadingGadgetHolder_;
- this.loadingGadgetHolder_ = null;
+ this.currentGadgetHolder_ = this.loadingGadgetHolder_;
+ this.loadingGadgetHolder_ = null;
+ }
};
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=1569732&r1=1569731&r2=1569732&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/container/container.js (original)
+++ shindig/trunk/features/src/main/javascript/features/container/container.js Wed Feb 19 13:07:37 2014
@@ -139,9 +139,13 @@ osapi.container.Container = function(opt
this.tokenRefreshTimer_ = null;
var self = this;
+ var rendered = {};
window[osapi.container.CallbackType.GADGET_ON_LOAD] = function(gadgetUrl, siteId) {
- self.getSiteById(siteId).onRender();
- self.applyLifecycleCallbacks_(osapi.container.CallbackType.ON_RENDER, gadgetUrl, siteId);
+ if (!rendered.hasOwnProperty(siteId)) {
+ self.getSiteById(siteId).onRender();
+ self.applyLifecycleCallbacks_(osapi.container.CallbackType.ON_RENDER, gadgetUrl, siteId);
+ rendered[siteId] = true;
+ }
};
this.initializeMixins_();