/* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/ */

"use strict";

// Set ourselves up for TLS error
Services.prefs.setIntPref("security.tls.version.max", 3);
Services.prefs.setIntPref("security.tls.version.min", 3);

const LOW_TLS_VERSION = "https://tls1.example.com/";
const {TabStateFlusher} = Cu.import("resource:///modules/sessionstore/TabStateFlusher.jsm", {});
const ss = Cc["@mozilla.org/browser/sessionstore;1"].getService(Ci.nsISessionStore);

add_task(function* checkReturnToPreviousPage() {
  info("Loading a TLS page that isn't supported, ensure we have a fix button and clicking it then loads the page");
  let browser;
  let pageLoaded;
  let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, () => {
    gBrowser.selectedTab = gBrowser.addTab(LOW_TLS_VERSION);
    browser = gBrowser.selectedBrowser;
    pageLoaded = BrowserTestUtils.waitForErrorPage(browser);
  }, false);

  info("Loading and waiting for the net error");
  yield pageLoaded;

  Assert.ok(content.document.getElementById("prefResetButton").getBoundingClientRect().left >= 0,
    "Should have a visible button");

  Assert.ok(content.document.documentURI.startsWith("about:neterror"), "Should be showing error page");

  let pageshowPromise = promiseWaitForEvent(browser, "pageshow");
  yield ContentTask.spawn(browser, null, function* () {
    content.document.getElementById("prefResetButton").click();
  });
  yield pageshowPromise;

  Assert.equal(content.document.documentURI, LOW_TLS_VERSION, "Should not be showing page");

  yield BrowserTestUtils.removeTab(gBrowser.selectedTab);
});

