Bug 619092 - Add testcase to ensure wyciwyg URL remains hidden draft
authorYaroslav Taben <yaroslav.taben@mail.utoronto.ca>
Fri, 16 Feb 2018 13:12:18 -0500
changeset 756260 203c9f7f0ef76f224b25c96ae64b6652def406fe
parent 751228 0d806b3230fe4767fa70cdee57db87d1e9a5ba49
child 756261 43ed457c875cbfa90e9879463bd3104e8e68498f
child 756304 9f7748da84af39b37901b18d0b986d7d75108722
push id99447
push userbmo:yaroslav.taben@mail.utoronto.ca
push dateFri, 16 Feb 2018 18:14:02 +0000
bugs619092
milestone60.0a1
Bug 619092 - Add testcase to ensure wyciwyg URL remains hidden MozReview-Commit-ID: HRyI53oYr8l
dom/html/test/browser.ini
dom/html/test/browser_refresh_wyciwyg_url.js
dom/html/test/file_refresh_wyciwyg_url.html
--- a/dom/html/test/browser.ini
+++ b/dom/html/test/browser.ini
@@ -25,8 +25,11 @@ support-files =
 [browser_content_contextmenu_userinput.js]
 [browser_DOMDocElementInserted.js]
 [browser_form_post_from_file_to_http.js]
 [browser_fullscreen-api-keys.js]
 tags = fullscreen
 [browser_fullscreen-contextmenu-esc.js]
 tags = fullscreen
 [browser_submission_flush.js]
+[browser_refresh_wyciwyg_url.js]
+support-files =
+  file_refresh_wyciwyg_url.html
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/dom/html/test/browser_refresh_wyciwyg_url.js
@@ -0,0 +1,32 @@
+/* Any copyright is dedicated to the Public Domain.
+   http://creativecommons.org/publicdomain/zero/1.0/ */
+
+/*
+Test that after using document.write(...), refreshing the document and calling write again,
+resulting document.URL does not contain 'wyciwyg' schema
+and instead is identical to the original URL.
+
+This testcase is aimed at preventing bug 619092
+*/
+var testURL = "http://mochi.test:8888/browser/dom/html/test/file_refresh_wyciwyg_url.html";
+let aTab, aBrowser, test_btn;
+
+function test(){
+    waitForExplicitFinish();
+
+    aTab = BrowserTestUtils.addTab(gBrowser, testURL);
+    aBrowser = gBrowser.getBrowserForTab(aTab);
+    BrowserTestUtils.browserLoaded(aBrowser).then(() => {
+        is(aBrowser.contentDocument.URL, testURL, "Make sure we start at the correct URL");
+
+        // test_btn calls document.write() then reloads the document
+        test_btn = aBrowser.contentDocument.getElementById("test_btn");
+        test_btn.click();
+        return BrowserTestUtils.browserLoaded(aBrowser);
+    }).then(() => {
+        test_btn.click();
+        todo_is(aBrowser.contentDocument.URL, testURL, "Document URL should be identical after reload");
+        gBrowser.removeTab(aTab);
+        finish();
+    });
+}
new file mode 100644
--- /dev/null
+++ b/dom/html/test/file_refresh_wyciwyg_url.html
@@ -0,0 +1,15 @@
+<html>
+<head>
+<title></title>
+</head>
+<script>
+function write_and_refresh(){
+  document.write("This could be anything");
+  location.reload();
+}
+</script>
+<body>
+<button id='test_btn' onclick='write_and_refresh()'>
+</body>
+
+</html>