changeset 102:00b02ba5236c

made all delegates have a dotted name (namespaced), modified black-box.js a bit
author Atul Varma <avarma@mozilla.com>
date Wed, 28 Apr 2010 20:06:26 -0700
parents 106a0018e601
children a994fc89f341
files js/black-box.js js/modules/mocks.js js/tests/test-bugzilla.js
diffstat 3 files changed, 17 insertions(+), 89 deletions(-) [+]
line wrap: on
line diff
--- a/js/black-box.js	Wed Apr 28 18:37:08 2010 -0700
+++ b/js/black-box.js	Wed Apr 28 20:06:26 2010 -0700
@@ -1,27 +1,3 @@
-function getXPathForElement(el, xml) {
-  var xpath = "";
-  var pos, tempitem2;
-  
-  while (el !== xml.documentElement) {    
-    pos = 0;
-    tempitem2 = el;
-    while (tempitem2) {
-      if (tempitem2.nodeType === 1 && tempitem2.nodeName === el.nodeName) {
-        // If it is ELEMENT_NODE of the same name
-        pos += 1;
-      }
-      tempitem2 = tempitem2.previousSibling;
-    }
-    
-    xpath = el.nodeName + "[" + pos + "]" + "/" + xpath;
-
-    el = el.parentNode;
-  }
-  xpath = "/" + xml.documentElement.nodeName + "/" + xpath;
-  xpath = xpath.replace(/\/$/, '');
-  return xpath;
-}
-
 function onDashboardLoaded(dashboard, options) {
   var require = Require.build(Require.modules, {window: window});
 
@@ -31,57 +7,12 @@
       console.warn("An error occurred in the dashboard iframe.");
     });
 
-  function DOMElementToCSSSelector(element) {
-    if (element.id)
-      return "#" + element.id;
-
-    var document = element.ownerDocument;
-
-    function isUnique(selector) {
-      return (document.querySelectorAll(selector).length == 1);
-    }
-
-    var parent = element.parentNode;
-    while (parent) {
-      if (parent.id)
-        break;
-      parent = parent.parentNode;
-    }
-
-    if (parent && parent.id) {
-      var selector = "#" + parent.id;
-
-      var list = element.classList;
-      for (var i = 0; i < list.length; i++) {
-        selector += " ." + list[i];
-        if (isUnique(selector))
-          return selector;
-      }
-    }
-    return null;
-  }
-
-  dashboard.addEventListener(
-    "mousedown",
-    function(event) {
-      var document = event.target.ownerDocument;
-      var xpath = getXPathForElement(event.target, document);
-      var result = document.evaluate(xpath, document, null,
-                                     XPathResult.ANY_TYPE, null);
-      console.log("mousedown", event.target,
-                  DOMElementToCSSSelector(event.target),
-                  xpath,
-                  result.iterateNext());
-    },
-    true
-  );
-
   var moduleExports = {};
   var dbrequire = dashboard.Require.build(dashboard.Require.modules,
                                           moduleExports);
 
   function delegate(method, args) {
-    //console.log(method, args);
+    console.log(method, args);
   }
 
   // Get rid of any form values cached by the browser.
--- a/js/modules/mocks.js	Wed Apr 28 18:37:08 2010 -0700
+++ b/js/modules/mocks.js	Wed Apr 28 20:06:26 2010 -0700
@@ -14,17 +14,17 @@
 
   MockCache.prototype = {
     get: function get(key) {
-      this.delegate("get", [key]);
+      this.delegate("cache.get", [key]);
       if (key in this.cache)
         return copy(this.cache[key]);
       return null;
     },
     set: function set(key, value) {
-      this.delegate("set", [key, value]);
+      this.delegate("cache.set", [key, value]);
       this.cache[key] = copy(value);
     },
     clear: function clear() {
-      this.delegate("clear", []);
+      this.delegate("cache.clear", []);
       this.cache = {};
     }
   };
@@ -104,11 +104,7 @@
     if (time === undefined)
       time = DEFAULT_RESPONSE_TIME;
 
-    function xhrDelegate(method, args) {
-      delegate("xhr." + method, args);
-    }
-
-    var req = require("mocks/xhr").create(xhrDelegate);
+    var req = require("mocks/xhr").create(delegate);
 
     require("window").setTimeout(
       function() {
@@ -125,6 +121,7 @@
   exports.create = function create(Bugzilla, ajaxImpl, delegate) {
     function MockBugzilla() {
       this.ajax = function ajax(options) {
+        delegate("bugzilla.ajax", options);
         var obj = ajaxImpl(options, exports);
         var req = response(delegate, obj);
         req.addEventListener(
@@ -165,7 +162,7 @@
     self.addEventListener = function(eventType, handler, useCapture) {
       verifyEventType(eventType);
       listeners[eventType].push(handler);
-      delegate("addEventListener", [eventType, handler, useCapture]);
+      delegate("xhr.addEventListener", [eventType, handler, useCapture]);
     };
 
     self.removeEventListener = function(eventType, handler, useCapture) {
@@ -174,19 +171,19 @@
       if (index == -1)
         throw new Error("handler not registered for event: " + eventType);
       listeners[eventType].splice(index, 1);
-      delegate("removeEventListener", [eventType, handler, useCapture]);
+      delegate("xhr.removeEventListener", [eventType, handler, useCapture]);
     };
 
     self.setRequestHeader = function(header, value) {
-      delegate("setRequestHeader", [header, value]);
+      delegate("xhr.setRequestHeader", [header, value]);
     };
 
     self.send = function(data) {
-      delegate("send", [data]);
+      delegate("xhr.send", [data]);
     };
 
     self.open = function open(method, url) {
-      delegate("open", [method, url]);
+      delegate("xhr.open", [method, url]);
     };
 
     self.mockTriggerEvent = function(event) {
--- a/js/tests/test-bugzilla.js	Wed Apr 28 18:37:08 2010 -0700
+++ b/js/tests/test-bugzilla.js	Wed Apr 28 20:06:26 2010 -0700
@@ -2,12 +2,12 @@
   var require = Require.build();
   var actual = [];
   var expected = [
-    ["open",["GET",
-             "https://api-dev.bugzilla.mozilla.org/latest/configuration"]],
-    ["setRequestHeader",["Accept","application/json"]],
-    ["setRequestHeader",["Content-Type","application/json"]],
-    ["addEventListener",["load",false]],
-    ["send",[null]]
+    ["xhr.open",["GET",
+                 "https://api-dev.bugzilla.mozilla.org/latest/configuration"]],
+    ["xhr.setRequestHeader",["Accept","application/json"]],
+    ["xhr.setRequestHeader",["Content-Type","application/json"]],
+    ["xhr.addEventListener",["load",false]],
+    ["xhr.send",[null]]
   ];
 
   expect(expected.length);