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

  1. function PROT_ListWarden(listManager) {
  2. this.debugZone = "listwarden";
  3. this.listManager_ = listManager;
  4. this.prefs_ = new G_Preferences();
  5. this.blackTables_ = [];
  6. this.whiteTables_ = [];
  7. this.sandboxUpdates_ = [];
  8. }
  9. PROT_ListWarden.IN_BLACKLIST = 0
  10. PROT_ListWarden.IN_WHITELIST = 1
  11. PROT_ListWarden.NOT_FOUND = 2
  12. PROT_ListWarden.prototype.enableBlacklistTableUpdates = function() {
  13. this.listManager_.enableUpdateTables(this.blackTables_);
  14. }
  15. PROT_ListWarden.prototype.disableBlacklistTableUpdates = function() {
  16. this.listManager_.disableUpdateTables(this.blackTables_);
  17. }
  18. PROT_ListWarden.prototype.enableWhitelistTableUpdates = function() {
  19. this.listManager_.enableUpdateTables(this.whiteTables_);
  20. }
  21. PROT_ListWarden.prototype.disableWhitelistTableUpdates = function() {
  22. this.listManager_.disableUpdateTables(this.whiteTables_);
  23. }
  24. PROT_ListWarden.prototype.enableSandboxUpdates = function() {
  25. this.listManager_.enableUpdateTables(this.sandboxUpdates_);
  26. }
  27. PROT_ListWarden.prototype.disableSandboxUpdates = function() {
  28. this.listManager_.disableUpdateTables(this.sandboxUpdates_);
  29. }
  30. PROT_ListWarden.prototype.registerBlackTable = function(tableName) {
  31. var result = this.listManager_.registerTable(tableName);
  32. if (result) {
  33. this.blackTables_.push(tableName);
  34. }
  35. return result;
  36. }
  37. PROT_ListWarden.prototype.registerWhiteTable = function(tableName) {
  38. var result = this.listManager_.registerTable(tableName);
  39. if (result) {
  40. this.whiteTables_.push(tableName);
  41. }
  42. return result;
  43. }
  44. PROT_ListWarden.prototype.registerSandboxUpdate = function(tableName, callback) {
  45. var result = this.listManager_.registerTable(tableName,
  46. true, /* requireMac */
  47. callback);
  48. if (result) {
  49. this.sandboxUpdates_.push(tableName);
  50. }
  51. return result;
  52. }
  53. PROT_ListWarden.prototype.isWhiteURL = function(url, callback) {
  54. (new PROT_MultiTableQuerier(url,
  55. this.whiteTables_,
  56. [],
  57. this.listManager_,
  58. callback)).run();
  59. }
  60. PROT_ListWarden.prototype.isEvilURL = function(url, callback) {
  61. (new PROT_MultiTableQuerier(url,
  62. this.whiteTables_,
  63. this.blackTables_,
  64. this.listManager_,
  65. callback)).run();
  66. }
  67. function TEST_PROT_ListWarden() {
  68. if (G_GDEBUG) {
  69. var z = "listwarden UNITTEST";
  70. G_debugService.enableZone(z);
  71. G_Debug(z, "Starting");
  72. var listManager = new PROT_ListManager(true /* testing */);
  73. var warden = new PROT_ListWarden(listManager);
  74. G_Assert(z, warden.registerWhiteTable("test-white-domain"),
  75. "Failed to register test-white-domain table");
  76. G_Assert(z, warden.registerBlackTable("test-black-url"),
  77. "Failed to register test-black-url table");
  78. var dbservice = Cc["@google.com/dbupdateservice;1"]
  79. .getService(Ci.GTBIDbUpdateService);
  80. var data =
  81. "[test-white-domain 1.1]\n" +
  82. "+foo.com\t1\n" +
  83. "\n[test-black-url 1.1]\n" +
  84. "+http://foo.com/good/1\t1\n" +
  85. "+http://foo.com/bad/1\t1\n" +
  86. "+http://betz.com/bad/1\t1\n";
  87. function checkTables(tableName) {
  88. if  ("[test-white-domain 1.1]" == tableName) {
  89. G_Debug(z, "first table callback");
  90. } else if ("[test-black-url 1.1]" == tableName) {
  91. G_Debug(z, "second table callback; checking");
  92. function isEvilCallback(status) {
  93. G_Assert(z, PROT_ListWarden.IN_BLACKLIST == status,
  94. "should be blacklisted")
  95. }
  96. function isNotEvilCallback(status) {
  97. G_Assert(z, PROT_ListWarden.IN_BLACKLIST != status,
  98. "should not be blacklisted");
  99. }
  100. warden.isEvilURL("http://foo.com/good/1", isNotEvilCallback);
  101. warden.isEvilURL("http://foo.com/bad/1", isNotEvilCallback);
  102. warden.isEvilURL("http://betz.com/bad/1", isEvilCallback);
  103. function isWhiteCallback(status) {
  104. G_Assert(z, PROT_ListWarden.IN_WHITELIST == status,
  105. "should be whitelisted");
  106. }
  107. function isNotWhiteCallback(status) {
  108. G_Assert(z, PROT_ListWarden.IN_WHITELIST != status,
  109. "should not be whitelisted");
  110. }
  111. warden.isWhiteURL("http://foo.com/", isWhiteCallback);
  112. warden.isWhiteURL("http://bar.com/", isNotWhiteCallback);
  113. G_Debug(z, "PASSED");
  114. } else {
  115. G_Error(z, "unknown table version string");
  116. }
  117. }
  118. dbservice.updateTables(data, checkTables);
  119. }
  120. }
  121.