summaryrefslogtreecommitdiffstats
path: root/devtools/client/inspector/test/browser_inspector_remove-iframe-during-load.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/inspector/test/browser_inspector_remove-iframe-during-load.js')
-rw-r--r--devtools/client/inspector/test/browser_inspector_remove-iframe-during-load.js48
1 files changed, 48 insertions, 0 deletions
diff --git a/devtools/client/inspector/test/browser_inspector_remove-iframe-during-load.js b/devtools/client/inspector/test/browser_inspector_remove-iframe-during-load.js
new file mode 100644
index 000000000..2058b85fa
--- /dev/null
+++ b/devtools/client/inspector/test/browser_inspector_remove-iframe-during-load.js
@@ -0,0 +1,48 @@
+/* vim: set ts=2 et sw=2 tw=80: */
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+"use strict";
+
+// Testing that the inspector doesn't go blank when navigating to a page that
+// deletes an iframe while loading.
+
+const TEST_URL = URL_ROOT + "doc_inspector_remove-iframe-during-load.html";
+
+add_task(function* () {
+ let {inspector, testActor} = yield openInspectorForURL("about:blank");
+ yield selectNode("body", inspector);
+
+ // We do not want to wait for the inspector to be fully ready before testing
+ // so we load TEST_URL and just wait for the content window to be done loading
+ yield testActor.loadAndWaitForCustomEvent(TEST_URL);
+
+ // The content doc contains a script that creates iframes and deletes them
+ // immediately after. It does this before the load event, after
+ // DOMContentLoaded and after load. This is what used to make the inspector go
+ // blank when navigating to that page.
+ // At this stage, there should be no iframes in the page anymore.
+ ok(!(yield testActor.hasNode("iframe")),
+ "Iframes added by the content page should have been removed");
+
+ // Create/remove an extra one now, after the load event.
+ info("Creating and removing an iframe.");
+ let onMarkupLoaded = inspector.once("markuploaded");
+ testActor.eval("new " + function () {
+ let iframe = document.createElement("iframe");
+ document.body.appendChild(iframe);
+ iframe.remove();
+ });
+
+ ok(!(yield testActor.hasNode("iframe")),
+ "The after-load iframe should have been removed.");
+
+ info("Waiting for markup-view to load.");
+ yield onMarkupLoaded;
+
+ // Assert that the markup-view is displayed and works
+ ok(!(yield testActor.hasNode("iframe")), "Iframe has been removed.");
+ is((yield testActor.getProperty("#yay", "textContent")), "load",
+ "Load event fired.");
+
+ yield selectNode("#yay", inspector);
+});