test_bug414122.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. const PR_RDONLY = 0x1;
  2. var etld = Cc["@mozilla.org/network/effective-tld-service;1"]
  3. .getService(Ci.nsIEffectiveTLDService);
  4. var idn = Cc["@mozilla.org/network/idn-service;1"]
  5. .getService(Ci.nsIIDNService);
  6. function run_test()
  7. {
  8. var fis = Cc["@mozilla.org/network/file-input-stream;1"]
  9. .createInstance(Ci.nsIFileInputStream);
  10. fis.init(do_get_file("effective_tld_names.dat"),
  11. PR_RDONLY, 0444, Ci.nsIFileInputStream.CLOSE_ON_EOF);
  12. var lis = Cc["@mozilla.org/intl/converter-input-stream;1"]
  13. .createInstance(Ci.nsIConverterInputStream);
  14. lis.init(fis, "UTF-8", 1024, 0);
  15. lis.QueryInterface(Ci.nsIUnicharLineInputStream);
  16. var out = { value: "" };
  17. do
  18. {
  19. var more = lis.readLine(out);
  20. var line = out.value;
  21. line = line.replace(/^\s+/, "");
  22. var firstTwo = line.substring(0, 2); // a misnomer, but whatever
  23. if (firstTwo == "" || firstTwo == "//")
  24. continue;
  25. var space = line.search(/[ \t]/);
  26. line = line.substring(0, space == -1 ? line.length : space);
  27. if ("*." == firstTwo)
  28. {
  29. let rest = line.substring(2);
  30. checkPublicSuffix("foo.SUPER-SPECIAL-AWESOME-PREFIX." + rest,
  31. "SUPER-SPECIAL-AWESOME-PREFIX." + rest);
  32. }
  33. else if ("!" == line.charAt(0))
  34. {
  35. checkPublicSuffix(line.substring(1),
  36. line.substring(line.indexOf(".") + 1));
  37. }
  38. else
  39. {
  40. checkPublicSuffix("SUPER-SPECIAL-AWESOME-PREFIX." + line, line);
  41. }
  42. }
  43. while (more);
  44. }
  45. function checkPublicSuffix(host, expectedSuffix)
  46. {
  47. expectedSuffix = idn.convertUTF8toACE(expectedSuffix).toLowerCase();
  48. var actualSuffix = etld.getPublicSuffixFromHost(host);
  49. do_check_eq(actualSuffix, expectedSuffix);
  50. }