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_();