Author: rbaxter85
Date: Mon Feb 11 22:23:13 2013
New Revision: 1444982

URL: http://svn.apache.org/r1444982
Log:
SHINDIG-1902
Switching the buffering site should happen later in the container once we know 
the gadget DOM finished loading

Modified:
    
shindig/trunk/features/src/main/javascript/features/container.site.gadget/gadget_site.js
    
shindig/trunk/features/src/main/javascript/features/embeddedexperiences/embedded_experiences_container.js
    
shindig/trunk/features/src/test/javascript/features/container/gadget_holder_test.js
    
shindig/trunk/features/src/test/javascript/features/container/gadget_site_test.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=1444982&r1=1444981&r2=1444982&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
 Mon Feb 11 22:23:13 2013
@@ -79,6 +79,13 @@ osapi.container.GadgetSite = function(co
    */
   this.loadingGadgetHolder_ = undef;
 
+  var self = this;
+  var listeners = {};
+  listeners[osapi.container.CallbackType.ON_RENDER] = function(gadgetUrl) {
+    self.onRender();
+  };
+  container.addGadgetLifecycleCallback('gadget_site_on_render_' + 
this.getId(), listeners);
+
   this.onConstructed();
 };
 
@@ -329,8 +336,6 @@ osapi.container.GadgetSite.prototype.ren
   this.updateSecurityToken_(gadgetInfo, localRenderParams);
 
   this.loadingGadgetHolder_.render(gadgetInfo, viewParams, localRenderParams);
-
-  this.onRender(gadgetInfo, viewParams, renderParams);
 };
 
 
@@ -395,6 +400,7 @@ osapi.container.GadgetSite.prototype.clo
   if (this.currentGadgetHolder_) {
     this.currentGadgetHolder_.dispose();
   }
+  this.container_.removeGadgetLifecycleCallback('gadget_site_on_render_' + 
this.getId());
 };
 
 /**

Modified: 
shindig/trunk/features/src/main/javascript/features/embeddedexperiences/embedded_experiences_container.js
URL: 
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/embeddedexperiences/embedded_experiences_container.js?rev=1444982&r1=1444981&r2=1444982&view=diff
==============================================================================
--- 
shindig/trunk/features/src/main/javascript/features/embeddedexperiences/embedded_experiences_container.js
 (original)
+++ 
shindig/trunk/features/src/main/javascript/features/embeddedexperiences/embedded_experiences_container.js
 Mon Feb 11 22:23:13 2013
@@ -165,7 +165,7 @@
      */
     function gadgetRendered_(rpcArgs) {
       var gadgetSite = rpcArgs.gs;
-      var renderParams = gadgetSite.currentGadgetHolder_.renderParams_;
+      var renderParams = gadgetSite.getActiveSiteHolder().renderParams_;
       var eeDataModel = renderParams.eeDataModel;
       return eeDataModel ? eeDataModel[ee_data_model.CONTEXT] : null;
     }

Modified: 
shindig/trunk/features/src/test/javascript/features/container/gadget_holder_test.js
URL: 
http://svn.apache.org/viewvc/shindig/trunk/features/src/test/javascript/features/container/gadget_holder_test.js?rev=1444982&r1=1444981&r2=1444982&view=diff
==============================================================================
--- 
shindig/trunk/features/src/test/javascript/features/container/gadget_holder_test.js
 (original)
+++ 
shindig/trunk/features/src/test/javascript/features/container/gadget_holder_test.js
 Mon Feb 11 22:23:13 2013
@@ -49,8 +49,10 @@ GadgetHolderTest.prototype.testNew = fun
     },
     id: '123'
   };
-  var site = new osapi.container.GadgetSite(null, null, {gadgetEl: element});
+  var container = this.createContainer();
+  var site = new osapi.container.GadgetSite(container, null, {gadgetEl: 
element});
   var holder = new osapi.container.GadgetHolder(site, element);
+  this.assertEquals('gadget_site_on_render_123', container.getCallbackId());
   this.assertEquals(element, holder.getElement());
   this.assertUndefined(holder.getIframeId());
   this.assertUndefined(holder.getGadgetInfo());
@@ -70,9 +72,11 @@ GadgetHolderTest.prototype.testRenderWit
   var service = {};
   service.getCountry = function(){return "ZH";};
   service.getLanguage = function(){return "cn"};
-  var site = new osapi.container.GadgetSite(null, service, {gadgetEl: 
element});
+  var container = this.createContainer();
+  var site = new osapi.container.GadgetSite(container, service, {gadgetEl: 
element});
   var holder = new osapi.container.GadgetHolder(site, element, 
'__gadgetOnLoad');
   holder.render(gadgetInfo, {}, {'view' : 'default'});
+  this.assertEquals('gadget_site_on_render_123', container.getCallbackId());
   this.assertEquals('<iframe' +
       ' marginwidth="0"' +
       ' hspace="0"' +
@@ -111,9 +115,11 @@ GadgetHolderTest.prototype.testRenderWit
   var service = {};
   service.getCountry = function(){return "US";};
   service.getLanguage = function(){return "en"};
-  var site = new osapi.container.GadgetSite(null, service, {gadgetEl: element, 
moduleId: 123});
+  var container = this.createContainer();
+  var site = new osapi.container.GadgetSite(container, service, {gadgetEl: 
element, moduleId: 123});
   var holder = new osapi.container.GadgetHolder(site, element, 
'__gadgetOnLoad');
   holder.render(gadgetInfo, {}, renderParams);
+  this.assertEquals('gadget_site_on_render_123', container.getCallbackId());
   this.assertEquals('<iframe' +
       ' marginwidth="0"' +
       ' hspace="0"' +
@@ -176,3 +182,15 @@ GadgetHolderTest.prototype.setupMockPubs
     };
     return gadgets.pubsub2router.hub;
 };
+
+GadgetHolderTest.prototype.createContainer = function() {
+  var container = {};
+  var callbackId;
+  container.addGadgetLifecycleCallback = function(id, listeners) {
+    callbackId = id;
+  }
+  container.getCallbackId = function() {
+    return callbackId;
+  }
+  return container;
+};

Modified: 
shindig/trunk/features/src/test/javascript/features/container/gadget_site_test.js
URL: 
http://svn.apache.org/viewvc/shindig/trunk/features/src/test/javascript/features/container/gadget_site_test.js?rev=1444982&r1=1444981&r2=1444982&view=diff
==============================================================================
--- 
shindig/trunk/features/src/test/javascript/features/container/gadget_site_test.js
 (original)
+++ 
shindig/trunk/features/src/test/javascript/features/container/gadget_site_test.js
 Mon Feb 11 22:23:13 2013
@@ -60,9 +60,14 @@ GadgetSiteTest.prototype.tearDown = func
 
 GadgetSiteTest.prototype.testGetId = function() {
   var site;
-  site = new osapi.container.GadgetSite(null, null, {});
+  var container = this.createContainer();
+  site = new osapi.container.GadgetSite(container, null, {});
+  this.assertEquals('gadget_site_on_render_' + 
(osapi.container.Site.prototype.nextUniqueSiteId_ - 1),
+          container.getCallbackId());
   this.assertEquals(osapi.container.Site.prototype.nextUniqueSiteId_ - 1, 
site.getId());
-  site = new osapi.container.GadgetSite(null, null, {});
+  site = new osapi.container.GadgetSite(container, null, {});
+  this.assertEquals('gadget_site_on_render_' + 
(osapi.container.Site.prototype.nextUniqueSiteId_ - 1),
+          container.getCallbackId());
   this.assertEquals(osapi.container.Site.prototype.nextUniqueSiteId_ - 1, 
site.getId());
 };
 
@@ -130,7 +135,19 @@ GadgetSiteTest.prototype.newMetadataErro
 };
 
 GadgetSiteTest.prototype.newGadgetSite = function(service, navigateCallback) {
-  return new osapi.container.GadgetSite(null, service, {
+  return new osapi.container.GadgetSite(this.createContainer(), service, {
     'navigateCallback' : navigateCallback
   });
 };
+
+GadgetSiteTest.prototype.createContainer = function() {
+  var container = {};
+  var callbackId;
+  container.addGadgetLifecycleCallback = function(id, listeners) {
+    callbackId = id;
+  }
+  container.getCallbackId = function() {
+    return callbackId;
+  }
+  return container;
+};


Reply via email to