summaryrefslogtreecommitdiffstats
path: root/docshell/test/browser/browser_timelineMarkers-frame-03.js
diff options
context:
space:
mode:
Diffstat (limited to 'docshell/test/browser/browser_timelineMarkers-frame-03.js')
-rw-r--r--docshell/test/browser/browser_timelineMarkers-frame-03.js91
1 files changed, 91 insertions, 0 deletions
diff --git a/docshell/test/browser/browser_timelineMarkers-frame-03.js b/docshell/test/browser/browser_timelineMarkers-frame-03.js
new file mode 100644
index 000000000..cf5f150ad
--- /dev/null
+++ b/docshell/test/browser/browser_timelineMarkers-frame-03.js
@@ -0,0 +1,91 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+// Test that the docShell profile timeline API returns the right
+// markers for DOM events.
+
+var TESTS = [{
+ desc: "Event dispatch with single handler",
+ searchFor: 'DOMEvent',
+ setup: function(docShell) {
+ content.document.body.addEventListener("dog",
+ function(e) { console.log("hi"); },
+ true);
+ content.document.body.dispatchEvent(new content.Event("dog"));
+ },
+ check: function(markers) {
+ markers = markers.filter(m => m.name == 'DOMEvent');
+ is(markers.length, 1, "Got 1 marker");
+ is(markers[0].type, "dog", "Got dog event name");
+ is(markers[0].eventPhase, 2, "Got phase 2");
+ }
+}, {
+ desc: "Event dispatch with a second handler",
+ searchFor: function(markers) {
+ return markers.filter(m => m.name == 'DOMEvent').length >= 2;
+ },
+ setup: function(docShell) {
+ content.document.body.addEventListener("dog",
+ function(e) { console.log("hi"); },
+ false);
+ content.document.body.dispatchEvent(new content.Event("dog"));
+ },
+ check: function(markers) {
+ markers = markers.filter(m => m.name == 'DOMEvent');
+ is(markers.length, 2, "Got 2 markers");
+ }
+}, {
+ desc: "Event targeted at child",
+ searchFor: function(markers) {
+ return markers.filter(m => m.name == 'DOMEvent').length >= 2;
+ },
+ setup: function(docShell) {
+ let child = content.document.body.firstElementChild;
+ child.addEventListener("dog", function(e) { });
+ child.dispatchEvent(new content.Event("dog"));
+ },
+ check: function(markers) {
+ markers = markers.filter(m => m.name == 'DOMEvent');
+ is(markers.length, 2, "Got 2 markers");
+ is(markers[0].eventPhase, 1, "Got phase 1 marker");
+ is(markers[1].eventPhase, 2, "Got phase 2 marker");
+ }
+}, {
+ desc: "Event dispatch on a new document",
+ searchFor: function(markers) {
+ return markers.filter(m => m.name == 'DOMEvent').length >= 2;
+ },
+ setup: function(docShell) {
+ let doc = content.document.implementation.createHTMLDocument("doc");
+ let p = doc.createElement("p");
+ p.innerHTML = "inside";
+ doc.body.appendChild(p);
+
+ p.addEventListener("zebra", function(e) {console.log("hi");});
+ p.dispatchEvent(new content.Event("zebra"));
+ },
+ check: function(markers) {
+ markers = markers.filter(m => m.name == 'DOMEvent');
+ is(markers.length, 1, "Got 1 marker");
+ }
+}, {
+ desc: "Event dispatch on window",
+ searchFor: function(markers) {
+ return markers.filter(m => m.name == 'DOMEvent').length >= 2;
+ },
+ setup: function(docShell) {
+ let doc = content.window.addEventListener("aardvark", function(e) {
+ console.log("I like ants!");
+ });
+
+ content.window.dispatchEvent(new content.Event("aardvark"));
+ },
+ check: function(markers) {
+ markers = markers.filter(m => m.name == 'DOMEvent');
+ is(markers.length, 1, "Got 1 marker");
+ }
+}];
+
+timelineContentTest(TESTS);