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/11/15 21:42:08 UTC

svn commit: r1035438 - in /shindig/trunk/features/src/main/javascript/features/container: container.js gadget_holder.js gadget_site.js

Author: mhermanto
Date: Mon Nov 15 20:42:07 2010
New Revision: 1035438

URL: http://svn.apache.org/viewvc?rev=1035438&view=rev
Log:
Common container fixes
- Consolidate getting gadget site/holder by IDs.
- Better handling of Oaa and normal iframe HTMLs.

http://codereview.appspot.com/2897041/
http://codereview.appspot.com/3120041/

Modified:
    shindig/trunk/features/src/main/javascript/features/container/container.js
    shindig/trunk/features/src/main/javascript/features/container/gadget_holder.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=1035438&r1=1035437&r2=1035438&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/container/container.js (original)
+++ shindig/trunk/features/src/main/javascript/features/container/container.js Mon Nov 15 20:42:07 2010
@@ -131,36 +131,6 @@ shindig.container.Container.prototype.ne
 
 
 /**
- * @param {string} id Iframe ID of gadget site to get.
- * @return {shindig.container.GadgetSite} The gadget site with the given id.
- */
-shindig.container.Container.prototype.getGadgetSite = function(id) {
-  // TODO: Support getting only the loading/active gadget in 2x buffers.
-  for (var siteId in this.sites_) {
-    var site = this.sites_[siteId];
-    if (site.getGadgetHolder(id)) {
-      return site;
-    }
-  }
-  return null;
-};
-
-
-/**
- * @param {string} id Iframe ID of gadget holder to get.
- * @return {shindig.container.GadgetHolder} The gadget holder with iframe id.
- */
-shindig.container.Container.prototype.getGadgetHolder = function(id) {
-  var site = this.getGadgetSite(id);
-  if (site) {
-    return site.getGadgetHolder(id);
-  } else {
-    return null;
-  }
-};
-
-
-/**
  * Called when gadget is navigated.
  *
  * @param {shindig.container.GadgetSite} site destination gadget to navigate to.
@@ -272,7 +242,8 @@ shindig.container.Container.prototype.rp
   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']);
+    this[shindig.container.GadgetSite.RPC_ARG_KEY] =
+        self.getGadgetSiteByIframeId_(this['f']);
     var argsCopy = [this];
     for (var i = 0; i < arguments.length; ++i) {
       argsCopy.push(arguments[i]);
@@ -393,6 +364,24 @@ shindig.container.ContainerRender.WIDTH 
 
 
 /**
+ * @param {string} id Iframe ID of gadget holder contained in the gadget site to get.
+ * @return {shindig.container.GadgetSite} The gadget site.
+ * @private
+ */
+shindig.container.Container.prototype.getGadgetSiteByIframeId_ = function(iframeId) {
+  // TODO: Support getting only the loading/active gadget in 2x buffers.
+  for (var siteId in this.sites_) {
+    var site = this.sites_[siteId];
+    var holder = site.getActiveGadgetHolder();
+    if (holder && holder.getIframeId() === iframeId) {
+      return site;
+    }
+  }
+  return null;
+};
+
+
+/**
  * Start to schedule refreshing of tokens.
  * @private
  */
@@ -483,8 +472,8 @@ shindig.container.Container.prototype.ge
   }
 
   // Collect active gadget urls.
-  for (var siteIndex in this.sites_) {
-    var holder = this.sites_[siteIndex].getActiveGadgetHolder();
+  for (var siteId in this.sites_) {
+    var holder = this.sites_[siteId].getActiveGadgetHolder();
     var url = holder.getUrl();
     var metadata = this.service_.getCachedGadgetMetadata(url);
     if (metadata[shindig.container.MetadataResponse.NEEDS_TOKEN_REFRESH]) {
@@ -510,8 +499,8 @@ shindig.container.Container.prototype.re
     // Update active token-requiring gadgets with new tokens. Do not need to
     // update pre-loaded gadgets, since new tokens will take effect when they
     // are navigated to, from cache.
-    for (var key in self.sites_) {
-      var holder = self.sites_[key].getActiveGadgetHolder();
+    for (var siteId in self.sites_) {
+      var holder = self.sites_[siteId].getActiveGadgetHolder();
       var gadgetInfo = self.service_.getCachedGadgetMetadata(holder.getUrl());
       if (gadgetInfo[shindig.container.MetadataResponse.NEEDS_TOKEN_REFRESH]) {
         var tokenInfo = response[holder.getUrl()];

Modified: shindig/trunk/features/src/main/javascript/features/container/gadget_holder.js
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/container/gadget_holder.js?rev=1035438&r1=1035437&r2=1035438&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/container/gadget_holder.js (original)
+++ shindig/trunk/features/src/main/javascript/features/container/gadget_holder.js Mon Nov 15 20:42:07 2010
@@ -44,28 +44,28 @@ shindig.container.GadgetHolder = functio
 
   /**
    * JSON metadata for gadget
-   * @type {Object?}
+   * @type {Object}
    * @private
    */
   this.gadgetInfo_ = null;
 
   /**
    * View parameters to pass to gadget.
-   * @type {Object?}
+   * @type {Object}
    * @private
    */
   this.viewParams_ = null;
 
   /**
    * Gadget rendering parameters
-   * @type {Object?}
+   * @type {Object}
    * @private
    */
   this.renderParams_ = null;
 
   /**
    * Unique string gadget ID. Used for DOM IDs/names.
-   * @type {string?}
+   * @type {string}
    * @private
    */
   this.iframeId_ = null;
@@ -74,7 +74,7 @@ shindig.container.GadgetHolder = functio
    * A dynamically set social/security token.
    * Social tokens are sent with original view URLs but may need
    * to be refreshed for long lived gadgets.
-   * @type {string?}
+   * @type {string}
    * @private
    */
   this.securityToken_ = null;
@@ -99,7 +99,7 @@ shindig.container.GadgetHolder.prototype
 
 
 /**
- * @return {?string} The unique string ID for gadget iframe.
+ * @return {string} The unique string ID for gadget iframe.
  */
 shindig.container.GadgetHolder.prototype.getIframeId = function() {
   return this.iframeId_;
@@ -107,7 +107,7 @@ shindig.container.GadgetHolder.prototype
 
 
 /**
- * @return {?Object} The metadata of gadget.
+ * @return {Object} The metadata of gadget.
  */
 shindig.container.GadgetHolder.prototype.getGadgetInfo = function() {
   return this.gadgetInfo_;
@@ -123,7 +123,7 @@ shindig.container.GadgetHolder.prototype
 
 
 /**
- * @return {?string} The URL of current gadget.
+ * @return {string} The URL of current gadget.
  */
 shindig.container.GadgetHolder.prototype.getUrl = function() {
   return (this.gadgetInfo_) ? this.gadgetInfo_['url'] : null;
@@ -131,7 +131,7 @@ shindig.container.GadgetHolder.prototype
 
 
 /**
- * @return {?string} The view of current gadget.
+ * @return {string} The view of current gadget.
  */
 shindig.container.GadgetHolder.prototype.getView = function() {
   return this.renderParams_[shindig.container.RenderParam.VIEW];
@@ -169,24 +169,12 @@ shindig.container.GadgetHolder.prototype
   this.gadgetInfo_ = gadgetInfo;
   this.viewParams_ = viewParams;
   this.renderParams_ = renderParams;
-  this.el_.innerHTML = this.getIframeHtml_();
   
   if (this.hasFeature_(gadgetInfo, 'pubsub-2')) {
-    this.doOAAIframeHtml_();
+    this.doOaaIframeHtml_();
   } else {
-    this.el_.innerHTML = this.getIframeHtml_();
+    this.doNormalIframeHtml_();
   }
-
-  // Set up RPC channel. RPC relay url is on gmodules, relative to base of the
-  // container. Assumes container has set up forwarding to gmodules at /gadgets.
-  var iframeUri = shindig.uri(
-      this.gadgetInfo_[shindig.container.MetadataResponse.IFRAME_URL]);
-  var relayUri = shindig.uri()
-      .setSchema(iframeUri.getSchema())
-      .setAuthority(iframeUri.getAuthority())
-      .setPath('/gadgets/files/container/rpc_relay.html');
-  gadgets.rpc.setupReceiver(this.iframeId_, relayUri.toString(),
-      iframeUri.getFP('rpctoken'));
 };
 
 
@@ -206,7 +194,26 @@ shindig.container.GadgetHolder.IFRAME_ID
 /**
  * @private
  */
-shindig.container.GadgetHolder.prototype.doOAAIframeHtml_ = function() {
+shindig.container.GadgetHolder.prototype.doNormalIframeHtml_ = function() {
+  this.el_.innerHTML = this.getIframeHtml_();
+  
+  // Set up RPC channel. RPC relay url is on gmodules, relative to base of the
+  // container. Assumes container has set up forwarding to gmodules at /gadgets.
+  var iframeUri = shindig.uri(
+      this.gadgetInfo_[shindig.container.MetadataResponse.IFRAME_URL]);
+  var relayUri = shindig.uri()
+      .setSchema(iframeUri.getSchema())
+      .setAuthority(iframeUri.getAuthority())
+      .setPath('/gadgets/files/container/rpc_relay.html');
+  gadgets.rpc.setupReceiver(this.iframeId_, relayUri.toString(),
+      iframeUri.getFP('rpctoken'));
+};
+
+
+/**
+ * @private
+ */
+shindig.container.GadgetHolder.prototype.doOaaIframeHtml_ = function() {
   var iframeAttrs = {
       frameborder: 'no',
       scrolling: 'no'
@@ -221,7 +228,7 @@ shindig.container.GadgetHolder.prototype
             source.getIframe().src = 'about:blank';
           },
           onConnect: function(container) {
-            gadgets.log("++ connected: " + container.getClientID());
+            gadgets.log(['connected: ', container.getClientID()].join(''));
           }
         },
         IframeContainer: {

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=1035438&r1=1035437&r2=1035438&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 Mon Nov 15 20:42:07 2010
@@ -173,22 +173,6 @@ shindig.container.GadgetSite.prototype.g
 
 
 /**
- * Returns the loading or visible gadget with the given ID.
- * @param {string} id The iframe ID of gadget to return.
- * @return {shindig.container.GadgetHolder?} The gadget. Null, if not exist.
- */
-shindig.container.GadgetSite.prototype.getGadgetHolder = function(id) {
-  if (this.currentGadgetHolder_ && this.currentGadgetHolder_.getIframeId() == id) {
-    return this.currentGadgetHolder_;
-  }
-  if (this.loadingGadgetHolder_ && this.loadingGadgetHolder_.getIframeId() == id) {
-    return this.loadingGadgetHolder_;
-  }
-  return null;
-};
-
-
-/**
  * @return {string?} ID parent element containing this site.
  */
 shindig.container.GadgetSite.prototype.getParentId = function() {