test_bug374754.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. var Cc = Components.classes;
  2. var Ci = Components.interfaces;
  3. var addedTopic = "xpcom-category-entry-added";
  4. var removedTopic = "xpcom-category-entry-removed";
  5. var testCategory = "bug-test-category";
  6. var testEntry = "@mozilla.org/bug-test-entry;1";
  7. var testValue= "check validity";
  8. var result = "";
  9. var expected = "add remove add remove ";
  10. var timer;
  11. var observer = {
  12. QueryInterface: function(iid) {
  13. if (iid.equals(Ci.nsISupports) || iid.equals(Ci.nsIObserver))
  14. return this;
  15. throw Components.results.NS_ERROR_NO_INTERFACE;
  16. },
  17. observe: function(subject, topic, data) {
  18. if (topic == "timer-callback") {
  19. do_check_eq(result, expected);
  20. var observerService = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
  21. observerService.removeObserver(this, addedTopic);
  22. observerService.removeObserver(this, removedTopic);
  23. do_test_finished();
  24. timer = null;
  25. }
  26. if (subject.QueryInterface(Ci.nsISupportsCString).data != testEntry || data != testCategory)
  27. return;
  28. if (topic == addedTopic)
  29. result += "add ";
  30. else if (topic == removedTopic)
  31. result += "remove ";
  32. }
  33. };
  34. function run_test() {
  35. do_test_pending();
  36. var observerService = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
  37. observerService.addObserver(observer, addedTopic, false);
  38. observerService.addObserver(observer, removedTopic, false);
  39. var categoryManager = Cc["@mozilla.org/categorymanager;1"].getService(Ci.nsICategoryManager);
  40. categoryManager.addCategoryEntry(testCategory, testEntry, testValue, false, true);
  41. categoryManager.addCategoryEntry(testCategory, testEntry, testValue, false, true);
  42. categoryManager.deleteCategoryEntry(testCategory, testEntry, false);
  43. timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
  44. timer.init(observer, 0, timer.TYPE_ONE_SHOT);
  45. }