home *** CD-ROM | disk | FTP | other *** search
/ Minami 83 / MINAMI83.iso / Extra / DivXInstaller.exe / $PLUGINSDIR / GoogleToolbarFirefox.msi / xpi / amulet-jslib / firefox / navwatcher.js < prev    next >
Text File  |  2006-08-07  |  2KB  |  78 lines

  1. function G_NavWatcher(opt_filterSpurious) {
  2. this.debugZone = "navwatcher";
  3. this.filterSpurious_ = !!opt_filterSpurious;
  4. this.events = G_NavWatcher.events;            // Convenience pointer
  5. this.registrar_ = new EventRegistrar(this.events);
  6. var wp = Ci.nsIWebProgress;
  7. var wpService = Cc["@mozilla.org/docloaderservice;1"].getService(wp);
  8. wpService.addProgressListener(this, wp.NOTIFY_STATE_DOCUMENT);
  9. }
  10. G_NavWatcher.events = {
  11. DOCNAVSTART: "docnavstart",
  12. };
  13. G_NavWatcher.prototype.QueryInterface = function(iid) {
  14. if (iid.equals(Ci.nsISupports) ||
  15. iid.equals(Ci.nsIWebProgressListener) ||
  16. iid.equals(Ci.nsISupportsWeakReference))
  17. return this;
  18. throw Components.results.NS_ERROR_NO_INTERFACE;
  19. }
  20. G_NavWatcher.prototype.registerListener = function(eventType,
  21. listener) {
  22. this.registrar_.registerListener(eventType, listener);
  23. }
  24. G_NavWatcher.prototype.removeListener = function(eventType,
  25. listener) {
  26. this.registrar_.removeListener(eventType, listener);
  27. }
  28. G_NavWatcher.prototype.fire = function(eventType, e) {
  29. this.registrar_.fire(eventType, e);
  30. }
  31. G_NavWatcher.prototype.isSpurious_ = function(url) {
  32. return (url == "about:blank" ||
  33. url == "about:config" ||
  34. url.indexOf("chrome://") == 0 ||
  35. url.indexOf("file://") == 0 ||
  36. url.indexOf("jar:") == 0);
  37. }
  38. G_NavWatcher.prototype.onStateChange = function(webProgress,
  39. request,
  40. stateFlags,
  41. status) {
  42. var wp = Ci.nsIWebProgressListener;
  43. if (stateFlags & wp.STATE_START && stateFlags & wp.STATE_IS_REQUEST) {
  44. G_Assert(this,
  45. (request.loadFlags & Ci.nsIChannel.LOAD_DOCUMENT_URI) != 0,
  46. "Unexpected load flags, we only registered for documents");
  47. var url;
  48. try {
  49. url = request.name;
  50. } catch(e) { return; }
  51. if (!this.filterSpurious_ || !this.isSpurious_(url)) {
  52. G_Debug(this, "firing docnavstart for " + url);
  53. var eventObj = {
  54. "request": request,
  55. "url": url,
  56. };
  57. this.fire(this.events.DOCNAVSTART, eventObj);
  58. }
  59. }
  60. }
  61. G_NavWatcher.prototype.onLocationChange = function(webProgress,
  62. request,
  63. location) { }
  64. G_NavWatcher.prototype.onProgressChange = function(webProgress,
  65. request,
  66. curSelfProgress,
  67. maxSelfProgress,
  68. curTotalProgress,
  69. maxTotalProgress) { }
  70. G_NavWatcher.prototype.onSecurityChange = function(webProgress,
  71. request,
  72. state) { }
  73. G_NavWatcher.prototype.onStatusChange = function(webProgress,
  74. request,
  75. status,
  76. message) { }
  77. G_NavWatcher.prototype.onLinkIconAvailable = function(browser, aHref) { }
  78.