browser_rules_mark_overridden_07.js (2423B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 // Tests that the rule view marks overridden rules correctly based on the 7 // specificity of the rule. 8 9 const TEST_URI = ` 10 <style type='text/css'> 11 #testid { 12 margin-left: 23px; 13 } 14 15 div { 16 margin-right: 23px; 17 margin-left: 1px !important; 18 } 19 20 body { 21 color: blue; 22 } 23 24 body { 25 margin-right: 1px !important; 26 font-size: 79px; 27 line-height: 100px !important; 28 color: green !important; 29 } 30 31 body { 32 color: red; 33 } 34 35 span { 36 font-size: 12px; 37 line-height: 10px; 38 } 39 </style> 40 <body> 41 <span> 42 <div id='testid' class='testclass'>Styled Node</div> 43 </span> 44 </body> 45 `; 46 47 add_task(async function () { 48 await addTab("data:text/html;charset=utf-8," + encodeURIComponent(TEST_URI)); 49 const { inspector, view } = await openRuleView(); 50 await selectNode("#testid", inspector); 51 testMarkOverridden(inspector, view); 52 }); 53 54 function testMarkOverridden(inspector, view) { 55 const elementStyle = view._elementStyle; 56 57 const RESULTS = [ 58 // We skip the first element 59 [], 60 [{ name: "margin-left", value: "23px", overridden: true }], 61 [ 62 { name: "margin-right", value: "23px", overridden: false }, 63 { name: "margin-left", value: "1px", overridden: false }, 64 ], 65 [ 66 { name: "font-size", value: "12px", overridden: false }, 67 { name: "line-height", value: "10px", overridden: false }, 68 ], 69 [{ name: "color", value: "red", overridden: true }], 70 [ 71 { name: "margin-right", value: "1px", overridden: true }, 72 { name: "font-size", value: "79px", overridden: true }, 73 { name: "line-height", value: "100px", overridden: true }, 74 { name: "color", value: "green", overridden: false }, 75 ], 76 [{ name: "color", value: "blue", overridden: true }], 77 ]; 78 79 for (let i = 1; i < RESULTS.length; ++i) { 80 const idRule = elementStyle.rules[i]; 81 82 for (const propIndex in RESULTS[i]) { 83 const expected = RESULTS[i][propIndex]; 84 const prop = idRule.textProps[propIndex]; 85 86 info("Checking rule " + i + ", property " + propIndex); 87 88 is(prop.name, expected.name, "check property name"); 89 is(prop.value, expected.value, "check property value"); 90 is(prop.overridden, expected.overridden, "check property overridden"); 91 } 92 } 93 }