Author: ddumont
Date: Wed Nov  7 13:56:21 2012
New Revision: 1406637

URL: http://svn.apache.org/viewvc?rev=1406637&view=rev
Log:
Create isDebug api in gadget.utils to help gadget developers

Modified:
    shindig/trunk/features/src/main/javascript/features/core.util/feature.xml
    shindig/trunk/features/src/main/javascript/features/core.util/util.js
    shindig/trunk/features/src/test/javascript/features/core.io/iotest.js
    shindig/trunk/features/src/test/javascript/features/core/authtest.js
    shindig/trunk/features/src/test/javascript/features/core/utiltest.js
    shindig/trunk/features/src/test/javascript/features/views/views-init-test.js

Modified: 
shindig/trunk/features/src/main/javascript/features/core.util/feature.xml
URL: 
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/core.util/feature.xml?rev=1406637&r1=1406636&r2=1406637&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/core.util/feature.xml 
(original)
+++ shindig/trunk/features/src/main/javascript/features/core.util/feature.xml 
Wed Nov  7 13:56:21 2012
@@ -34,6 +34,7 @@
       <exports type="js">gadgets.util.getFeatureParameters</exports>
       <exports type="js">gadgets.util.hasFeature</exports>
       <exports type="js">gadgets.util.getServices</exports>
+      <exports type="js">gadgets.util.isDebug</exports>
     </api>
   </all>
 </feature>

Modified: shindig/trunk/features/src/main/javascript/features/core.util/util.js
URL: 
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/core.util/util.js?rev=1406637&r1=1406636&r2=1406637&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/core.util/util.js 
(original)
+++ shindig/trunk/features/src/main/javascript/features/core.util/util.js Wed 
Nov  7 13:56:21 2012
@@ -29,8 +29,27 @@ gadgets.util = gadgets.util || {};
 
 (function() {
 
-  var features = {};
-  var services = {};
+  var features = {},
+      services = {},
+      undef,
+      isDebug;
+
+  /**
+   * Checks injected feature script to see if it's debug mode.
+   */
+  function checkIsDebug(config) {
+    var coreio = config['core.io'],
+        jsPath = coreio && coreio.jsPath,
+        scripts = document.getElementsByTagName('script');
+
+    for (var i = 0; jsPath && i < scripts.length; i++) {
+      var src = scripts[i].src;
+      if (src && src.indexOf(jsPath) > -1) {
+        return isDebug = gadgets.util.getUrlParameters(src).debug == '1';
+      }
+    }
+    isDebug = false;
+  }
 
   /**
    * Initializes feature parameters.
@@ -38,8 +57,10 @@ gadgets.util = gadgets.util || {};
   function init(config) {
     features = config['core.util'] || {};
   }
+
   if (gadgets.config) {
     gadgets.config.register('core.util', null, init);
+    gadgets.config.register('core.io', undef, checkIsDebug, checkIsDebug);
   }
 
   /**
@@ -72,4 +93,10 @@ gadgets.util = gadgets.util || {};
     return services;
   };
 
+  /**
+   * @return {boolean} If gadget is being rendered in debug mode.
+   */
+  gadgets.util.isDebug = function() {
+    return isDebug;
+  };
 })();

Modified: shindig/trunk/features/src/test/javascript/features/core.io/iotest.js
URL: 
http://svn.apache.org/viewvc/shindig/trunk/features/src/test/javascript/features/core.io/iotest.js?rev=1406637&r1=1406636&r2=1406637&view=diff
==============================================================================
--- shindig/trunk/features/src/test/javascript/features/core.io/iotest.js 
(original)
+++ shindig/trunk/features/src/test/javascript/features/core.io/iotest.js Wed 
Nov  7 13:56:21 2012
@@ -24,6 +24,7 @@ function IoTest(name) {
 IoTest.inherits(TestCase);
 
 IoTest.prototype.setUp = function() {
+  this.getUrlParameters = gadgets.util.getUrlParameters;
   gadgets.util.getUrlParameters = function() {
     return { "st" : "authtoken", "url" : "http://www.gadget.com/gadget.xml";, 
"container" : "foo" };
   };
@@ -44,6 +45,9 @@ IoTest.prototype.setUp = function() {
       "unparseableCruft" : "throw 1; < don't be evil' >"}});
   gadgets.io.preloaded_ = [];
 };
+IoTest.prototype.tearDown = function() {
+  gadgets.util.getUrlParameters = this.getUrlParameters;
+};
 
 IoTest.prototype.setSchemaless = function() {
   gadgets.config.init({ "core.io" : {

Modified: shindig/trunk/features/src/test/javascript/features/core/authtest.js
URL: 
http://svn.apache.org/viewvc/shindig/trunk/features/src/test/javascript/features/core/authtest.js?rev=1406637&r1=1406636&r2=1406637&view=diff
==============================================================================
--- shindig/trunk/features/src/test/javascript/features/core/authtest.js 
(original)
+++ shindig/trunk/features/src/test/javascript/features/core/authtest.js Wed 
Nov  7 13:56:21 2012
@@ -28,11 +28,13 @@ AuthTest.prototype.setUp = function() {
   gadgets.util = gadgets.util || {};
   gadgets.config = gadgets.config || {};
   this.oldConfigRegister = gadgets.config.register;
+  this.getUrlParameters = gadgets.util.getUrlParameters;
 };
 
 AuthTest.prototype.tearDown = function() {
   // Remove mocks
   gadgets.config.register = this.oldConfigRegister;
+  gadgets.util.getUrlParameters = this.getUrlParameters;
 };
 
 AuthTest.prototype.testTokenOnFragment = function() {

Modified: shindig/trunk/features/src/test/javascript/features/core/utiltest.js
URL: 
http://svn.apache.org/viewvc/shindig/trunk/features/src/test/javascript/features/core/utiltest.js?rev=1406637&r1=1406636&r2=1406637&view=diff
==============================================================================
--- shindig/trunk/features/src/test/javascript/features/core/utiltest.js 
(original)
+++ shindig/trunk/features/src/test/javascript/features/core/utiltest.js Wed 
Nov  7 13:56:21 2012
@@ -31,9 +31,11 @@ function UtilTest(name) {
 UtilTest.inherits(TestCase);
 
 UtilTest.prototype.setUp = function() {
+  this.oldDocument = document;
 };
 
 UtilTest.prototype.tearDown = function() {
+  document = this.oldDocument;
 };
 
 UtilTest.prototype.testMakeEnum = function() {
@@ -43,3 +45,31 @@ UtilTest.prototype.testMakeEnum = functi
   this.assertEquals('BAR', obj['BAR']);
   this.assertEquals('baz', obj['baz']);
 };
+
+UtilTest.prototype.testIsDebug = function() {
+  document = {
+    getElementsByTagName: function () {
+      return [
+        {src: 'http://www.example.com/foobar.js?debug=1'},
+        {src: 'http://www.example.com/js/features/foobar.js'},
+      ];
+    }
+  };
+
+  gadgets.config.init({'core.io':{jsPath: '/js/features', jsonProxyUrl: 
'/blah'}});
+  this.assertFalse('isDebug not set on the injected feature js.', 
gadgets.util.isDebug());
+};
+
+UtilTest.prototype.testIsDebug2 = function() {
+  document = {
+    getElementsByTagName: function () {
+      return [
+        {src: 'http://www.example.com/foobar.js?debug=0'},
+        {src: 'http://www.example.com/js/features/foobar.js?debug=1'},
+      ];
+    }
+  };
+
+  gadgets.config.init({'core.io':{jsPath: '/js/features', jsonProxyUrl: 
'/blah'}});
+  this.assertTrue('isDebug set on the injected feature js.', 
gadgets.util.isDebug());
+};
\ No newline at end of file

Modified: 
shindig/trunk/features/src/test/javascript/features/views/views-init-test.js
URL: 
http://svn.apache.org/viewvc/shindig/trunk/features/src/test/javascript/features/views/views-init-test.js?rev=1406637&r1=1406636&r2=1406637&view=diff
==============================================================================
--- 
shindig/trunk/features/src/test/javascript/features/views/views-init-test.js 
(original)
+++ 
shindig/trunk/features/src/test/javascript/features/views/views-init-test.js 
Wed Nov  7 13:56:21 2012
@@ -25,11 +25,15 @@ ViewsInitTest.inherits(TestCase);
 
 (function() {
 
-var oldDocument = document;
 var callback;
 
+ViewsInitTest.prototype.setUp = function() {
+  this.document = document;
+  this.getUrlParameters = gadgets.util.getUrlParameters;
+};
 ViewsInitTest.prototype.tearDown = function() {
-  document = oldDocument;
+  document = this.document;
+  gadgets.util.getUrlParameters = this.getUrlParameters;
 };
 
 ViewsInitTest.prototype.testObjectParams = function() {
@@ -65,7 +69,8 @@ ViewsInitTest.prototype.testRewriteLinks
       name = arguments[0];
       func = arguments[1];
       bubble = arguments[2];
-    }
+    },
+    getElementsByTagName: function (name) { return []; }
   };
 
   document.scripts = [];
@@ -83,9 +88,10 @@ ViewsInitTest.prototype.testRewriteLinks
     attachEvent: function() {
       name = arguments[0];
       func = arguments[1];
-    
+
     },
-    addEventListener: undefined
+    addEventListener: undefined,
+    getElementsByTagName: function (name) { return []; }
   };
 
   document.scripts = [];


Reply via email to