1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/content/base/test/test_bug338679.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,78 @@ 1.4 +<!DOCTYPE html> 1.5 +<html> 1.6 +<!-- 1.7 +https://bugzilla.mozilla.org/show_bug.cgi?id=338679 1.8 +--> 1.9 +<head> 1.10 +<title>Bug 338679: correct reporting of newValue/prevValue in 1.11 + DOMAttrModified events</title> 1.12 +<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> 1.13 +<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 1.14 +</head> 1.15 +<body> 1.16 +<a target="_blank" 1.17 + href="https://bugzilla.mozilla.org/show_bug.cgi?id=338679">Bug 1.18 + 338679: correct reporting of newValue/prevValue in 1.19 + DOMAttrModified events</a> 1.20 + 1.21 +<div id="test" style="width:20em"></div> 1.22 + 1.23 +<script> 1.24 +var testDiv = document.getElementById("test"); 1.25 +var e_new, e_prev = testDiv.getAttribute("style"); 1.26 +var phase, recursive = false; 1.27 + 1.28 +/* driver */ 1.29 +var tests = [ test_1, test_2, test_3 ]; 1.30 +var i = 0; 1.31 +function nextTest() { 1.32 + if (i < tests.length) { 1.33 + phase = tests[i]; 1.34 + i++; 1.35 + phase(); 1.36 + } else { 1.37 + SimpleTest.finish(); 1.38 + } 1.39 +} 1.40 + 1.41 +SimpleTest.waitForExplicitFinish(); 1.42 +testDiv.addEventListener("DOMAttrModified", attr_modified, false); 1.43 +nextTest(); 1.44 + 1.45 +/* event handler */ 1.46 +function attr_modified(ev) { 1.47 + is(ev.newValue, e_new, 1.48 + phase.name + (recursive ? " recursive" : "") + ": newValue"); 1.49 + is(ev.prevValue, e_prev, 1.50 + phase.name + (recursive ? " recursive" : "") + ": prevValue"); 1.51 + 1.52 + e_prev = e_new; 1.53 + if (!recursive) { 1.54 + recursive = true; 1.55 + e_new = "width: 0px;"; 1.56 + testDiv.style.width = "0"; 1.57 + } else { 1.58 + recursive = false; 1.59 + setTimeout(nextTest, 0); 1.60 + } 1.61 +} 1.62 + 1.63 +/* tests */ 1.64 +function test_1() { 1.65 + e_new = "width: auto;"; 1.66 + testDiv.style.width = "auto"; 1.67 +} 1.68 + 1.69 +function test_2() { 1.70 + e_new = "width: 15%;"; 1.71 + testDiv.style.width = "15%"; 1.72 +} 1.73 + 1.74 +function test_3() { 1.75 + window.getComputedStyle(testDiv, null).width; // force style resolution 1.76 + e_new = "width: inherit;"; 1.77 + testDiv.style.width = "inherit"; 1.78 +} 1.79 +</script> 1.80 +</body> 1.81 +</html>