/* -*- indent-tabs-mode: nil; js-indent-level: 4 -*- */
/* vim: set ts=8 et sw=4 tw=80: */
var { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");

var gExpectedCharset;
var gLocalDir;

function CharsetDetectionTests(aTestFile, aExpectedCharset) {
  gExpectedCharset = aExpectedCharset;

  InitDetectorTests();

  var fileURI = gLocalDir + aTestFile;
  $("testframe").src = fileURI;

  SimpleTest.waitForExplicitFinish();
}

function InitDetectorTests() {
  var loader = Services.scriptloader;
  var ioService = Services.io;
  loader.loadSubScript("chrome://mochikit/content/chrome-harness.js");

  $("testframe").onload = DoDetectionTest;

  if (gExpectedCharset == "default") {
    // No point trying to be generic here, because we have plenty of other
    // unit tests that fail if run using a non-windows-1252 locale.
    gExpectedCharset = "windows-1252";
  }

  // Get the local directory. This needs to be a file: URI because chrome:
  // URIs are always UTF-8 (bug 617339) and we are testing decoding from other
  // charsets.
  var jar = getJar(getRootDirectory(window.location.href));
  var dir = jar
    ? extractJarToTmp(jar)
    : getChromeDir(getResolvedURI(window.location.href));
  gLocalDir = ioService.newFileURI(dir).spec;
}

function DoDetectionTest() {
  var iframeDoc = $("testframe").contentDocument;
  var charset = iframeDoc.characterSet;

  is(charset, gExpectedCharset, "decoded as " + gExpectedCharset);

  SimpleTest.finish();
}
