Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 /* vim: set ft=javascript ts=2 et sw=2 tw=80: */
2 /* Any copyright is dedicated to the Public Domain.
3 http://creativecommons.org/publicdomain/zero/1.0/ */
5 "use strict";
7 // Test that the css transform preview tooltip is shown on transform properties
9 const PAGE_CONTENT = [
10 '<style type="text/css">',
11 ' #testElement {',
12 ' width: 500px;',
13 ' height: 300px;',
14 ' background: red;',
15 ' transform: skew(16deg);',
16 ' }',
17 ' .test-element {',
18 ' transform-origin: top left;',
19 ' transform: rotate(45deg);',
20 ' }',
21 ' div {',
22 ' transform: scaleX(1.5);',
23 ' transform-origin: bottom right;',
24 ' }',
25 ' [attr] {',
26 ' }',
27 '</style>',
28 '<div id="testElement" class="test-element" attr="value">transformed element</div>'
29 ].join("\n");
31 let test = asyncTest(function*() {
32 yield addTab("data:text/html,rule view css transform tooltip test");
33 content.document.body.innerHTML = PAGE_CONTENT;
34 let {toolbox, inspector, view} = yield openRuleView();
36 info("Selecting the test node");
37 yield selectNode("#testElement", inspector);
39 info("Checking that transforms tooltips are shown in various rule-view properties");
40 for (let selector of [".test-element", "div", "#testElement"]) {
41 yield testTransformTooltipOnSelector(view, selector);
42 }
44 info("Checking that the transform tooltip doesn't appear for invalid transforms");
45 yield testTransformTooltipNotShownOnInvalidTransform(view);
47 info("Checking transforms in the computed-view");
48 let {view} = yield openComputedView();
49 yield testTransformTooltipOnComputedView(view);
50 });
52 function* testTransformTooltipOnSelector(view, selector) {
53 info("Testing that a transform tooltip appears on transform in " + selector);
55 let {valueSpan} = getRuleViewProperty(view, selector, "transform");
56 ok(valueSpan, "The transform property was found");
57 yield assertHoverTooltipOn(view.previewTooltip, valueSpan);
59 // The transform preview is canvas, so there's not much we can test, so for
60 // now, let's just be happy with the fact that the tooltips is shown!
61 ok(true, "Tooltip shown on the transform property in " + selector);
62 }
64 function* testTransformTooltipNotShownOnInvalidTransform(view) {
65 let ruleEditor;
66 for (let rule of view._elementStyle.rules) {
67 if (rule.matchedSelectors[0] === "[attr]") {
68 ruleEditor = rule.editor;
69 }
70 }
71 ruleEditor.addProperty("transform", "muchTransform(suchAngle)", "");
73 let {valueSpan} = getRuleViewProperty(view, "[attr]", "transform");
74 let isValid = yield isHoverTooltipTarget(view.previewTooltip, valueSpan);
75 ok(!isValid, "The tooltip did not appear on hover of an invalid transform value");
76 }
78 function* testTransformTooltipOnComputedView(view) {
79 info("Testing that a transform tooltip appears in the computed view too");
81 let {valueSpan} = getComputedViewProperty(view, "transform");
82 yield assertHoverTooltipOn(view.tooltip, valueSpan);
84 // The transform preview is canvas, so there's not much we can test, so for
85 // now, let's just be happy with the fact that the tooltips is shown!
86 ok(true, "Tooltip shown on the computed transform property");
87 }