/* * Test server for iframe refresh from meta http-equiv */ const SHARED_KEY = "iframe_meta_refresh"; const DEFAULT_STATE = { count: 0, referrers: [] }; const REFRESH_PAGE = "http://example.com/tests/dom/base/test/iframe_meta_refresh.sjs?action=test"; function createContent(refresh) { let metaRefresh = ""; let scriptMessage = ""; if (refresh) { metaRefresh = ``; } else { scriptMessage = ` `; } return ` ${metaRefresh} Test referrer of meta http-equiv refresh ${scriptMessage} `; } function handleRequest(request, response) { Components.utils.importGlobalProperties(["URLSearchParams"]); let query = new URLSearchParams(request.queryString); let action = query.get("action"); var referrerLevel = "none"; if (request.hasHeader("Referer")) { let referrer = request.getHeader("Referer"); if (referrer.indexOf("test_meta_refresh_referrer") > 0) { referrerLevel = "full"; } else if (referrer == "http://mochi.test:8888/") { referrerLevel = "origin"; } } var state = getSharedState(SHARED_KEY); if (state === "") { state = DEFAULT_STATE; } else { state = JSON.parse(state); } response.setStatusLine(request.httpVersion, 200, "OK"); //avoid confusing cache behaviors response.setHeader("Cache-Control", "no-cache", false); if (action === "results") { response.setHeader("Content-Type", "text/plain", false); response.write(JSON.stringify(state)); return; } if (action === "reset") { //reset server state setSharedState(SHARED_KEY, JSON.stringify(DEFAULT_STATE)); response.write(""); return; } if (action === "test") { let load = query.get("load"); state.count++; if (state.referrers.indexOf(referrerLevel) < 0) { state.referrers.push(referrerLevel); } // Write frame content response.write(createContent(load)); } setSharedState(SHARED_KEY, JSON.stringify(state)); return; }