"use strict";

SimpleTest.waitForExplicitFinish();

var iframe;
var loadedEvents = 0;

function loadServer() {
  var url = SimpleTest.getTestFileURL("file_loadserver.js");
  var script = SpecialPowers.loadChromeScript(url);
}

function runTest() {
  iframe = document.createElement('iframe');
  document.body.appendChild(iframe);
  iframe.addEventListener('load', mozbrowserLoaded);
  iframe.src = 'file_bug1110872.html';
}

function iframeBodyRecv(msg) {
  switch (loadedEvents) {
  case 1:
    // If we get a message back before we've seen 2 loads, that means
    // something went wrong with the test. Fail immediately.
    ok(true, 'got response from first test!');
    break;
  case 2:
    // If we get a message back after 2 loads (initial load, reload),
    // it means the callback for the last lock fired, which means the
    // SettingsRequestManager queue has to have been cleared
    // correctly.
    ok(true, 'further queries returned ok after SettingsManager death');
    SimpleTest.finish();
    break;
  }
}

function mozbrowserLoaded() {
  loadedEvents++;
  iframe.contentWindow.postMessage({name: "start", step: loadedEvents}, '*');
  window.addEventListener('message', iframeBodyRecv);
}

window.addEventListener("load", function() {
  loadServer();
  runTest();
});