You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by rb...@apache.org on 2012/08/09 19:11:36 UTC

svn commit: r1371317 - /shindig/trunk/features/src/main/javascript/features/container.site.gadget/gadget_holder.js

Author: rbaxter85
Date: Thu Aug  9 17:11:36 2012
New Revision: 1371317

URL: http://svn.apache.org/viewvc?rev=1371317&view=rev
Log:
SHINDIG-1833
Committed For Marshall Shi
gadget_holder.js file format cause the apply patch process broken

Modified:
    shindig/trunk/features/src/main/javascript/features/container.site.gadget/gadget_holder.js

Modified: shindig/trunk/features/src/main/javascript/features/container.site.gadget/gadget_holder.js
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/container.site.gadget/gadget_holder.js?rev=1371317&r1=1371316&r2=1371317&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/container.site.gadget/gadget_holder.js (original)
+++ shindig/trunk/features/src/main/javascript/features/container.site.gadget/gadget_holder.js Thu Aug  9 17:11:36 2012
@@ -1,330 +1,330 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-
-/**
- * @fileoverview This represents an HTML element and the associated gadget.
- */
-
-
-/**
- * @param {osapi.container.GadgetSite} site The site containing this holder.
- * @param {Element} el The element to render gadgets in.
- * @param {string} onLoad The name of an onLoad function to call in window scope
- *          to assign as the onload handler of this holder's iframe.
- * @constructor
- * @extends {osapi.container.SiteHolder}
- */
-osapi.container.GadgetHolder = function(site, el, onLoad) {
-  osapi.container.SiteHolder.call(this, site, el, onLoad); // call super
-  var undef;
-
-  /**
-   * JSON metadata for gadget
-   * @type {Object}
-   * @private
-   */
-  this.gadgetInfo_ = undef;
-
-  /**
-   * View parameters to pass to gadget.
-   * @type {Object}
-   * @private
-   */
-  this.viewParams_ = undef;
-
-  /**
-   * 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}
-   * @private
-   */
-  this.securityToken_ = undef;
-
-  this.onConstructed();
-};
-osapi.container.GadgetHolder.prototype = new osapi.container.SiteHolder;
-
-/**
- * Url points to the rpc_relay.html which allows cross-domain communication between
- *     a gadget and container
- * @type {string}
- * @private
- */
-osapi.container.GadgetHolder.prototype.relayPath_ = null;
-
-/**
- * @return {Object} The metadata of gadget.
- */
-osapi.container.GadgetHolder.prototype.getGadgetInfo = function() {
-  return this.gadgetInfo_;
-};
-
-
-/**
- * @inheritDoc
- */
-osapi.container.GadgetHolder.prototype.dispose = function() {
-  osapi.container.SiteHolder.prototype.dispose.call(this); // super.dispose();
-  this.gadgetInfo_ = null;
-};
-
-
-/**
- * @inheritDoc
- */
-osapi.container.GadgetHolder.prototype.getUrl = function() {
-  return this.gadgetInfo_ && this.gadgetInfo_['url'];
-};
-
-/**
- * @return {string} The view of current gadget. This is the view that was actually rendered once
- *         view aliases were applied.
- * @see osapi.container.GadgetSite.prototype.render
- */
-osapi.container.GadgetHolder.prototype.getView = function() {
-  return this.renderParams_[osapi.container.RenderParam.VIEW];
-};
-
-
-/**
- * @inheritDoc
- * @see osapi.container.GadgetHolder.prototype.doOaaIframeHtml_ and org.openajax.hub-2.0.5/iframe.js:createIframe()
- */
-osapi.container.GadgetHolder.prototype.getIframeElement = function() {
-  return this.el_.getElementsByTagName('iframe')[0];
-};
-
-
-/**
- * @param {string} value The value to set this social/security token to.
- * @return {osapi.container.GadgetHolder} the current GadgetHolder.
- */
-osapi.container.GadgetHolder.prototype.setSecurityToken = function(value) {
-  this.securityToken_ = value;
-  return this;
-};
-
-
-/**
- * Render a gadget into the element.
- *
- * @override
- * @param {Object} gadgetInfo the JSON gadget description.
- * @param {Object} viewParams Look at osapi.container.ViewParam.
- * @param {Object} renderParams Look at osapi.container.RenderParam.
- */
-osapi.container.GadgetHolder.prototype.render = function(gadgetInfo, viewParams, renderParams) {
-  this.iframeId_ = osapi.container.GadgetHolder.IFRAME_ID_PREFIX_ +
-      this.site_.getId();
-  this.gadgetInfo_ = gadgetInfo;
-  this.viewParams_ = viewParams;
-  this.renderParams_ = renderParams;
-
-  if (this.hasFeature_(gadgetInfo, 'pubsub-2')) {
-    this.doOaaIframeHtml_();
-  } else {
-    this.doNormalIframeHtml_();
-  }
-};
-
-
-// -----------------------------------------------------------------------------
-// Private variables and methods.
-// -----------------------------------------------------------------------------
-
-
-/**
- * Prefix for gadget HTML IDs/names.
- * @type {string}
- * @private
- */
-osapi.container.GadgetHolder.IFRAME_ID_PREFIX_ = '__gadget_';
-
-/**
- * @private
- */
-osapi.container.GadgetHolder.prototype.doNormalIframeHtml_ = function() {
-  var uri = this.getIframeUrl_();
-  this.el_.innerHTML = this.createIframeHtml(uri);
-
-  // Set up RPC channel.
-  var iframeUri = shindig.uri(uri);
-  var relayUri = shindig.uri()
-      .setSchema(iframeUri.getSchema())
-      .setAuthority(iframeUri.getAuthority())
-      .setPath(this.relayPath_);
-  gadgets.rpc.setupReceiver(this.iframeId_, relayUri.toString(),
-      iframeUri.getFP('rpctoken'));
-};
-
-
-/**
- * @private
- */
-osapi.container.GadgetHolder.prototype.doOaaIframeHtml_ = function() {
-  //Remove any prior container for the iframe id from the OpenAjax hub prior to registering the new one
-  this.removeOaaContainer_(this.iframeId_);
-  new OpenAjax.hub.IframeContainer(
-      gadgets.pubsub2router.hub,
-      this.iframeId_,
-      {
-        Container: {
-          onSecurityAlert: function(source, alertType) {
-            gadgets.error(['Security error for container ',
-                source.getClientID(), ' : ', alertType].join(''));
-            source.getIframe().src = 'about:blank';
-          },
-          onConnect: function(container) {
-            gadgets.log(['connected: ', container.getClientID()].join(''));
-          }
-        },
-        IframeContainer: {
-          parent: this.el_,
-          uri: this.getIframeUrl_(),
-          //tunnelURI: shindig.uri('/test1/gadgets/' + '../container/rpc_relay.html')
-          //   .resolve(shindig.uri(window.location.href)),
-          tunnelURI: shindig.uri(this.relayPath_).resolve(shindig.uri(window.location.href)),
-          iframeAttrs: this.createIframeAttributeMap(this.getIframeUrl_()),
-          onGadgetLoad: this.onLoad_
-        }
-      }
-  );
-};
-
-/**
- * Removes the specified container from the registered pubsub2router hub
- *
- * @param {String} containerId the id of the container to remove from the hub
- * @private
- */
-osapi.container.GadgetHolder.prototype.removeOaaContainer_ = function(containerId) {
-    var container = gadgets.pubsub2router.hub.getContainer(containerId);
-    //Null is returned from the getContainer function per the OpenAjax spec if the container is not found
-    if(container) {
-        gadgets.pubsub2router.hub.removeContainer(container);
-    }
-};
-
-
-/**
- * @param {Object} gadgetInfo the JSON gadget description.
- * @param {string} feature the feature to look for.
- * @private
- * @return {boolean} true if feature is set.
- */
-osapi.container.GadgetHolder.prototype.hasFeature_ = function(gadgetInfo, feature) {
-  var modulePrefs = gadgetInfo[osapi.container.MetadataResponse.MODULE_PREFS];
-  if (modulePrefs) {
-    var features = modulePrefs[osapi.container.MetadataResponse.FEATURES];
-    if (features && features[feature]) {
-      return true;
-    }
-  }
-  return false;
-};
-
-/**
- * Get the rendering iframe URL.
- * @private
- * @return {string} the rendering iframe URL.
- */
-osapi.container.GadgetHolder.prototype.getIframeUrl_ = function() {
-  var uri = shindig.uri(this.gadgetInfo_[osapi.container.MetadataResponse.IFRAME_URLS][this.getView()]);
-  uri.setQP('debug', this.renderParams_[osapi.container.RenderParam.DEBUG] ? '1' : '0');
-  uri.setQP('nocache', this.renderParams_[osapi.container.RenderParam.NO_CACHE] ? '1' : '0');
-  uri.setQP('testmode', this.renderParams_[osapi.container.RenderParam.TEST_MODE] ? '1' : '0');
-  uri.setQP('view', this.getView());
-  if (this.renderParams_[osapi.container.RenderParam.CAJOLE]) {
-    var libs = uri.getQP('libs');
-    if (libs == null || libs == '') uri.setQP('libs', 'caja');
-    else uri.setQP('libs', [libs, ':caja'].join(''));
-    uri.setQP('caja', '1');
-  }
-  this.updateUserPrefParams_(uri);
-
-  // TODO: Share this base container logic
-  // TODO: Two SD base URIs - one for container, one for gadgets
-  // Need to add parent at end of query due to gadgets parsing bug
-  uri.setQP('parent', window.__CONTAINER_URI.getOrigin());
-
-  // Remove existing social token if we have a new one
-  if (this.securityToken_) {
-    uri.setExistingP('st', this.securityToken_);
-  }
-
-  // Uniquely identify possibly-same gadgets on a page.
-  uri.setQP('mid', String(this.site_.getModuleId()));
-
-  if (!osapi.container.util.isEmptyJson(this.viewParams_)) {
-    var gadgetParamText = gadgets.json.stringify(this.viewParams_);
-    uri.setFP('view-params', gadgetParamText);
-  }
-
-  // add rpctoken fragment to support flash transport if not in the uri
-  if(typeof(uri.getFP('rpctoken')) === 'undefined' ) {
-    var rpcToken = (0x7FFFFFFF * Math.random()) | 0;
-    uri.setFP('rpctoken', rpcToken);
-  }
-  var lang = this.site_.service_.getLanguage();
-  var country = this.site_.service_.getCountry();
-  var templateLang = uri.getQP('lang'), templateCountry = uri.getQP('country');
-  if(templateLang.indexOf('%') != -1){
-    uri.setQP('lang', lang);
-  }
-  if(templateCountry.indexOf('%') != -1){
-    uri.setQP('country', country);
-  }
-  return uri.toString();
-};
-
-
-/**
- * Replace user prefs specified in url with only those specified. This will
- * maintain each user prefs existence (or lack of), order (from left to right)
- * and its appearance (in query params or fragment).
- * @param {shindig.uri} uri The URL possibly containing user preferences
- *     parameters prefixed by up_.
- * @private
- */
-osapi.container.GadgetHolder.prototype.updateUserPrefParams_ = function(uri) {
-  var userPrefs = this.renderParams_[osapi.container.RenderParam.USER_PREFS];
-  if (userPrefs) {
-    for (var up in userPrefs) {
-      var upKey = 'up_' + up;
-      var upValue = userPrefs[up];
-      if (upValue instanceof Array) {
-        upValue = upValue.join('|');
-      }
-      uri.setExistingP(upKey, upValue);
-    }
-  }
-};
-
-function init(config) {
-  if (config['container']) {
-    var rpath = config['container']['relayPath'];
-    osapi.container.GadgetHolder.prototype.relayPath_ = rpath;
-  }
-}
-
-// We do run this in the container mode in the new common container
-if (gadgets.config) {
-  gadgets.config.register('container', null, init);
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+
+
+/**
+ * @fileoverview This represents an HTML element and the associated gadget.
+ */
+
+
+/**
+ * @param {osapi.container.GadgetSite} site The site containing this holder.
+ * @param {Element} el The element to render gadgets in.
+ * @param {string} onLoad The name of an onLoad function to call in window scope
+ *          to assign as the onload handler of this holder's iframe.
+ * @constructor
+ * @extends {osapi.container.SiteHolder}
+ */
+osapi.container.GadgetHolder = function(site, el, onLoad) {
+  osapi.container.SiteHolder.call(this, site, el, onLoad); // call super
+  var undef;
+
+  /**
+   * JSON metadata for gadget
+   * @type {Object}
+   * @private
+   */
+  this.gadgetInfo_ = undef;
+
+  /**
+   * View parameters to pass to gadget.
+   * @type {Object}
+   * @private
+   */
+  this.viewParams_ = undef;
+
+  /**
+   * 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}
+   * @private
+   */
+  this.securityToken_ = undef;
+
+  this.onConstructed();
+};
+osapi.container.GadgetHolder.prototype = new osapi.container.SiteHolder;
+
+/**
+ * Url points to the rpc_relay.html which allows cross-domain communication between
+ *     a gadget and container
+ * @type {string}
+ * @private
+ */
+osapi.container.GadgetHolder.prototype.relayPath_ = null;
+
+/**
+ * @return {Object} The metadata of gadget.
+ */
+osapi.container.GadgetHolder.prototype.getGadgetInfo = function() {
+  return this.gadgetInfo_;
+};
+
+
+/**
+ * @inheritDoc
+ */
+osapi.container.GadgetHolder.prototype.dispose = function() {
+  osapi.container.SiteHolder.prototype.dispose.call(this); // super.dispose();
+  this.gadgetInfo_ = null;
+};
+
+
+/**
+ * @inheritDoc
+ */
+osapi.container.GadgetHolder.prototype.getUrl = function() {
+  return this.gadgetInfo_ && this.gadgetInfo_['url'];
+};
+
+/**
+ * @return {string} The view of current gadget. This is the view that was actually rendered once
+ *         view aliases were applied.
+ * @see osapi.container.GadgetSite.prototype.render
+ */
+osapi.container.GadgetHolder.prototype.getView = function() {
+  return this.renderParams_[osapi.container.RenderParam.VIEW];
+};
+
+
+/**
+ * @inheritDoc
+ * @see osapi.container.GadgetHolder.prototype.doOaaIframeHtml_ and org.openajax.hub-2.0.5/iframe.js:createIframe()
+ */
+osapi.container.GadgetHolder.prototype.getIframeElement = function() {
+  return this.el_.getElementsByTagName('iframe')[0];
+};
+
+
+/**
+ * @param {string} value The value to set this social/security token to.
+ * @return {osapi.container.GadgetHolder} the current GadgetHolder.
+ */
+osapi.container.GadgetHolder.prototype.setSecurityToken = function(value) {
+  this.securityToken_ = value;
+  return this;
+};
+
+
+/**
+ * Render a gadget into the element.
+ *
+ * @override
+ * @param {Object} gadgetInfo the JSON gadget description.
+ * @param {Object} viewParams Look at osapi.container.ViewParam.
+ * @param {Object} renderParams Look at osapi.container.RenderParam.
+ */
+osapi.container.GadgetHolder.prototype.render = function(gadgetInfo, viewParams, renderParams) {
+  this.iframeId_ = osapi.container.GadgetHolder.IFRAME_ID_PREFIX_ +
+      this.site_.getId();
+  this.gadgetInfo_ = gadgetInfo;
+  this.viewParams_ = viewParams;
+  this.renderParams_ = renderParams;
+
+  if (this.hasFeature_(gadgetInfo, 'pubsub-2')) {
+    this.doOaaIframeHtml_();
+  } else {
+    this.doNormalIframeHtml_();
+  }
+};
+
+
+// -----------------------------------------------------------------------------
+// Private variables and methods.
+// -----------------------------------------------------------------------------
+
+
+/**
+ * Prefix for gadget HTML IDs/names.
+ * @type {string}
+ * @private
+ */
+osapi.container.GadgetHolder.IFRAME_ID_PREFIX_ = '__gadget_';
+
+/**
+ * @private
+ */
+osapi.container.GadgetHolder.prototype.doNormalIframeHtml_ = function() {
+  var uri = this.getIframeUrl_();
+  this.el_.innerHTML = this.createIframeHtml(uri);
+
+  // Set up RPC channel.
+  var iframeUri = shindig.uri(uri);
+  var relayUri = shindig.uri()
+      .setSchema(iframeUri.getSchema())
+      .setAuthority(iframeUri.getAuthority())
+      .setPath(this.relayPath_);
+  gadgets.rpc.setupReceiver(this.iframeId_, relayUri.toString(),
+      iframeUri.getFP('rpctoken'));
+};
+
+
+/**
+ * @private
+ */
+osapi.container.GadgetHolder.prototype.doOaaIframeHtml_ = function() {
+  //Remove any prior container for the iframe id from the OpenAjax hub prior to registering the new one
+  this.removeOaaContainer_(this.iframeId_);
+  new OpenAjax.hub.IframeContainer(
+      gadgets.pubsub2router.hub,
+      this.iframeId_,
+      {
+        Container: {
+          onSecurityAlert: function(source, alertType) {
+            gadgets.error(['Security error for container ',
+                source.getClientID(), ' : ', alertType].join(''));
+            source.getIframe().src = 'about:blank';
+          },
+          onConnect: function(container) {
+            gadgets.log(['connected: ', container.getClientID()].join(''));
+          }
+        },
+        IframeContainer: {
+          parent: this.el_,
+          uri: this.getIframeUrl_(),
+          //tunnelURI: shindig.uri('/test1/gadgets/' + '../container/rpc_relay.html')
+          //   .resolve(shindig.uri(window.location.href)),
+          tunnelURI: shindig.uri(this.relayPath_).resolve(shindig.uri(window.location.href)),
+          iframeAttrs: this.createIframeAttributeMap(this.getIframeUrl_()),
+          onGadgetLoad: this.onLoad_
+        }
+      }
+  );
+};
+
+/**
+ * Removes the specified container from the registered pubsub2router hub
+ *
+ * @param {String} containerId the id of the container to remove from the hub
+ * @private
+ */
+osapi.container.GadgetHolder.prototype.removeOaaContainer_ = function(containerId) {
+    var container = gadgets.pubsub2router.hub.getContainer(containerId);
+    //Null is returned from the getContainer function per the OpenAjax spec if the container is not found
+    if(container) {
+        gadgets.pubsub2router.hub.removeContainer(container);
+    }
+};
+
+
+/**
+ * @param {Object} gadgetInfo the JSON gadget description.
+ * @param {string} feature the feature to look for.
+ * @private
+ * @return {boolean} true if feature is set.
+ */
+osapi.container.GadgetHolder.prototype.hasFeature_ = function(gadgetInfo, feature) {
+  var modulePrefs = gadgetInfo[osapi.container.MetadataResponse.MODULE_PREFS];
+  if (modulePrefs) {
+    var features = modulePrefs[osapi.container.MetadataResponse.FEATURES];
+    if (features && features[feature]) {
+      return true;
+    }
+  }
+  return false;
+};
+
+/**
+ * Get the rendering iframe URL.
+ * @private
+ * @return {string} the rendering iframe URL.
+ */
+osapi.container.GadgetHolder.prototype.getIframeUrl_ = function() {
+  var uri = shindig.uri(this.gadgetInfo_[osapi.container.MetadataResponse.IFRAME_URLS][this.getView()]);
+  uri.setQP('debug', this.renderParams_[osapi.container.RenderParam.DEBUG] ? '1' : '0');
+  uri.setQP('nocache', this.renderParams_[osapi.container.RenderParam.NO_CACHE] ? '1' : '0');
+  uri.setQP('testmode', this.renderParams_[osapi.container.RenderParam.TEST_MODE] ? '1' : '0');
+  uri.setQP('view', this.getView());
+  if (this.renderParams_[osapi.container.RenderParam.CAJOLE]) {
+    var libs = uri.getQP('libs');
+    if (libs == null || libs == '') uri.setQP('libs', 'caja');
+    else uri.setQP('libs', [libs, ':caja'].join(''));
+    uri.setQP('caja', '1');
+  }
+  this.updateUserPrefParams_(uri);
+
+  // TODO: Share this base container logic
+  // TODO: Two SD base URIs - one for container, one for gadgets
+  // Need to add parent at end of query due to gadgets parsing bug
+  uri.setQP('parent', window.__CONTAINER_URI.getOrigin());
+
+  // Remove existing social token if we have a new one
+  if (this.securityToken_) {
+    uri.setExistingP('st', this.securityToken_);
+  }
+
+  // Uniquely identify possibly-same gadgets on a page.
+  uri.setQP('mid', String(this.site_.getModuleId()));
+
+  if (!osapi.container.util.isEmptyJson(this.viewParams_)) {
+    var gadgetParamText = gadgets.json.stringify(this.viewParams_);
+    uri.setFP('view-params', gadgetParamText);
+  }
+
+  // add rpctoken fragment to support flash transport if not in the uri
+  if(typeof(uri.getFP('rpctoken')) === 'undefined' ) {
+    var rpcToken = (0x7FFFFFFF * Math.random()) | 0;
+    uri.setFP('rpctoken', rpcToken);
+  }
+  var lang = this.site_.service_.getLanguage();
+  var country = this.site_.service_.getCountry();
+  var templateLang = uri.getQP('lang'), templateCountry = uri.getQP('country');
+  if(templateLang.indexOf('%') != -1){
+    uri.setQP('lang', lang);
+  }
+  if(templateCountry.indexOf('%') != -1){
+    uri.setQP('country', country);
+  }
+  return uri.toString();
+};
+
+
+/**
+ * Replace user prefs specified in url with only those specified. This will
+ * maintain each user prefs existence (or lack of), order (from left to right)
+ * and its appearance (in query params or fragment).
+ * @param {shindig.uri} uri The URL possibly containing user preferences
+ *     parameters prefixed by up_.
+ * @private
+ */
+osapi.container.GadgetHolder.prototype.updateUserPrefParams_ = function(uri) {
+  var userPrefs = this.renderParams_[osapi.container.RenderParam.USER_PREFS];
+  if (userPrefs) {
+    for (var up in userPrefs) {
+      var upKey = 'up_' + up;
+      var upValue = userPrefs[up];
+      if (upValue instanceof Array) {
+        upValue = upValue.join('|');
+      }
+      uri.setExistingP(upKey, upValue);
+    }
+  }
+};
+
+function init(config) {
+  if (config['container']) {
+    var rpath = config['container']['relayPath'];
+    osapi.container.GadgetHolder.prototype.relayPath_ = rpath;
+  }
+}
+
+// We do run this in the container mode in the new common container
+if (gadgets.config) {
+  gadgets.config.register('container', null, init);
+}