diff -r 000000000000 -r 6474c204b198 browser/devtools/markupview/test/browser_markupview_image_tooltip.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/browser/devtools/markupview/test/browser_markupview_image_tooltip.js Wed Dec 31 06:09:35 2014 +0100
@@ -0,0 +1,87 @@
+/* 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";
+
+// Test that image preview tooltips are shown on img and canvas tags in the
+// markup-view and that the tooltip actually contains an image and shows the
+// right dimension label
+
+const PAGE_CONTENT = [
+ '
',
+ '
',
+ '
',
+ ''
+].join("\n");
+
+const TEST_NODES = [
+ {selector: "img.local", size: "192 x 192"},
+ {selector: "img.data", size: "64 x 64"},
+ {selector: "img.remote", size: "22 x 23"},
+ {selector: ".canvas", size: "600 x 600"}
+];
+
+let test = asyncTest(function*() {
+ yield addTab("data:text/html,markup view tooltip test");
+ createPage();
+
+ let {inspector} = yield openInspector();
+
+ info("Selecting the first
tag");
+ yield selectNode("img", inspector);
+
+ for (let testNode of TEST_NODES) {
+ let target = getImageTooltipTarget(testNode, inspector);
+ yield assertTooltipShownOn(target, inspector);
+ checkImageTooltip(testNode, inspector);
+ }
+});
+
+function createPage() {
+ info("Fill the page with the test content");
+ content.document.body.innerHTML = PAGE_CONTENT;
+
+ info("Fill the canvas");
+ let doc = content.document;
+ let context = doc.querySelector(".canvas").getContext("2d");
+
+ context.beginPath();
+ context.moveTo(300, 0);
+ context.lineTo(600, 600);
+ context.lineTo(0, 600);
+ context.closePath();
+ context.fillStyle = "#ffc821";
+ context.fill();
+}
+
+function getImageTooltipTarget({selector}, inspector) {
+ let node = getNode(selector);
+ let isImg = node.tagName.toLowerCase() === "img";
+
+ let container = getContainerForRawNode(node, inspector);
+
+ let target = container.editor.tag;
+ if (isImg) {
+ target = container.editor.getAttributeElement("src");
+ }
+ return target;
+}
+
+function assertTooltipShownOn(element, {markup}) {
+ return Task.spawn(function*() {
+ info("Is the element a valid hover target");
+ let isValid = yield markup.tooltip.isValidHoverTarget(element);
+ ok(isValid, "The element is a valid hover target for the image tooltip");
+ });
+}
+
+function checkImageTooltip({selector, size}, {markup}) {
+ let images = markup.tooltip.panel.getElementsByTagName("image");
+ is(images.length, 1, "Tooltip for [" + selector + "] contains an image");
+
+ let label = markup.tooltip.panel.querySelector(".devtools-tooltip-caption");
+ is(label.textContent, size, "Tooltip label for [" + selector + "] displays the right image size");
+
+ markup.tooltip.hide();
+}