From 6b088b7e182b9c5403543bf2ecafa53403c62e28 Mon Sep 17 00:00:00 2001
From: Anne van Kesteren <annevk@annevk.nl>
Date: Thu, 3 May 2018 13:09:21 +0200
Subject: [PATCH 1/2] HTML: add test for document.open() and URL fragment

For https://github.com/whatwg/html/pull/3970.

Co-authored-by: Timothy Gu <timothygu99@gmail.com>
---
 .../resources/url-frame.html                  |  9 +++++++
 .../url-fragment.window.js                    | 25 +++++++++++++++++++
 2 files changed, 34 insertions(+)
 create mode 100644 html/webappapis/dynamic-markup-insertion/opening-the-input-stream/resources/url-frame.html
 create mode 100644 html/webappapis/dynamic-markup-insertion/opening-the-input-stream/url-fragment.window.js

diff --git a/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/resources/url-frame.html b/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/resources/url-frame.html
new file mode 100644
index 00000000000000..be483ff0aea456
--- /dev/null
+++ b/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/resources/url-frame.html
@@ -0,0 +1,9 @@
+<script>
+onload = () => {
+  const beforeURL = document.URL;
+  document.open();
+  const afterURL = document.URL;
+  document.close();
+  parent.testDone(beforeURL, afterURL);
+}
+</script>
diff --git a/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/url-fragment.window.js b/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/url-fragment.window.js
new file mode 100644
index 00000000000000..c88134813eaab4
--- /dev/null
+++ b/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/url-fragment.window.js
@@ -0,0 +1,25 @@
+async_test(t => {
+  const frame = document.body.appendChild(document.createElement("iframe")),
+        urlSansHash = document.URL;
+  t.add_cleanup(() => { frame.remove(); });
+  assert_equals(frame.contentDocument.URL, "about:blank");
+  assert_equals(frame.contentWindow.location.href, "about:blank");
+  self.onhashchange = t.step_func_done(() => {
+    frame.contentDocument.open();
+    assert_equals(frame.contentDocument.URL, urlSansHash);
+    assert_equals(frame.contentWindow.location.href, urlSansHash);
+  });
+  self.location.hash = "heya";
+}, "document.open() and document's URL containing a fragment");
+
+window.testDone = undefined;
+async_test(t => {
+  const frame = document.body.appendChild(document.createElement("iframe"))
+  t.add_cleanup(() => { frame.remove(); });
+  frame.src = "resources/url-frame.html#heya";
+  window.testDone = t.step_func_done((beforeURL, afterURL) => {
+    assert_equals(beforeURL, frame.src);
+    assert_equals(afterURL, frame.src);
+    assert_equals(frame.contentDocument.URL, frame.src);
+  });
+}, "document.open() and document's URL containing a fragment (entry is current)");

From bf1e919ff6fc66b5fe78be74d68e8eb5ed45cc26 Mon Sep 17 00:00:00 2001
From: Timothy Gu <timothygu99@gmail.com>
Date: Tue, 28 Aug 2018 17:23:08 -0400
Subject: [PATCH 2/2] fix comments

---
 .../opening-the-input-stream/url-fragment.window.js          | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/url-fragment.window.js b/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/url-fragment.window.js
index c88134813eaab4..0c528935b52db9 100644
--- a/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/url-fragment.window.js
+++ b/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/url-fragment.window.js
@@ -10,7 +10,7 @@ async_test(t => {
     assert_equals(frame.contentWindow.location.href, urlSansHash);
   });
   self.location.hash = "heya";
-}, "document.open() and document's URL containing a fragment");
+}, "document.open() and document's URL containing a fragment (entry is not relevant)");
 
 window.testDone = undefined;
 async_test(t => {
@@ -21,5 +21,6 @@ async_test(t => {
     assert_equals(beforeURL, frame.src);
     assert_equals(afterURL, frame.src);
     assert_equals(frame.contentDocument.URL, frame.src);
+    assert_equals(frame.contentWindow.location.href, frame.src);
   });
-}, "document.open() and document's URL containing a fragment (entry is current)");
+}, "document.open() and document's URL containing a fragment (entry is relevant)");