summaryrefslogtreecommitdiffstats
path: root/devtools/client/inspector/rules/test/browser_rules_mark_overridden_07.js
blob: 9480ddd4738e9668288b6b37e4623f80f1774a97 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/* vim: set ft=javascript ts=2 et sw=2 tw=80: */
/* Any copyright is dedicated to the Public Domain.
 http://creativecommons.org/publicdomain/zero/1.0/ */

"use strict";

// Tests that the rule view marks overridden rules correctly based on the
// specificity of the rule.

const TEST_URI = `
  <style type='text/css'>
    #testid {
      margin-left: 23px;
    }

    div {
      margin-right: 23px;
      margin-left: 1px !important;
    }

    body {
      margin-right: 1px !important;
      font-size: 79px;
    }

    span {
      font-size: 12px;
    }
  </style>
  <body>
    <span>
      <div id='testid' class='testclass'>Styled Node</div>
    </span>
  </body>
`;

add_task(function* () {
  yield addTab("data:text/html;charset=utf-8," + encodeURIComponent(TEST_URI));
  let {inspector, view} = yield openRuleView();
  yield selectNode("#testid", inspector);
  yield testMarkOverridden(inspector, view);
});

function* testMarkOverridden(inspector, view) {
  let elementStyle = view._elementStyle;

  let RESULTS = [
    // We skip the first element
    [],
    [{name: "margin-left", value: "23px", overridden: true}],
    [{name: "margin-right", value: "23px", overridden: false},
     {name: "margin-left", value: "1px", overridden: false}],
    [{name: "font-size", value: "12px", overridden: false}],
    [{name: "margin-right", value: "1px", overridden: true},
     {name: "font-size", value: "79px", overridden: true}]
  ];

  for (let i = 1; i < RESULTS.length; ++i) {
    let idRule = elementStyle.rules[i];

    for (let propIndex in RESULTS[i]) {
      let expected = RESULTS[i][propIndex];
      let prop = idRule.textProps[propIndex];

      info("Checking rule " + i + ", property " + propIndex);

      is(prop.name, expected.name, "check property name");
      is(prop.value, expected.value, "check property value");
      is(prop.overridden, expected.overridden, "check property overridden");
    }
  }
}