forked from mirrors/gecko-dev
		
	 0a8ff0ad85
			
		
	
	
		0a8ff0ad85
		
	
	
	
	
		
			
			# ignore-this-changeset Differential Revision: https://phabricator.services.mozilla.com/D35951 --HG-- extra : source : 62f3501af4bc1c0bd1ee1977a28aee04706a6663
		
			
				
	
	
		
			100 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * Test for Bug 493881: Changes to legacy HTML color properties before the BODY is loaded
 | |
|  * should be ignored. Additionally, after BODY loads, setting any of these properties to undefined
 | |
|  * should cause them to be returned as the string "undefined".
 | |
|  */
 | |
| 
 | |
| SimpleTest.waitForExplicitFinish();
 | |
| 
 | |
| var legacyProps = [
 | |
|   "fgColor",
 | |
|   "bgColor",
 | |
|   "linkColor",
 | |
|   "vlinkColor",
 | |
|   "alinkColor",
 | |
| ];
 | |
| var testColors = ["blue", "silver", "green", "orange", "red"];
 | |
| var rgbTestColors = [
 | |
|   "rgb(255, 0, 0)",
 | |
|   "rgb(192, 192, 192)",
 | |
|   "rgb(0, 128, 0)",
 | |
|   "rgb(255, 165, 0)",
 | |
|   "rgb(255, 0, 0)",
 | |
| ];
 | |
| var idPropList = [
 | |
|   { id: "plaintext", prop: "color" },
 | |
|   { id: "body", prop: "background-color" },
 | |
|   { id: "nonvisitedlink", prop: "color" },
 | |
|   { id: "visitedlink", prop: "color" },
 | |
| ];
 | |
| var initialValues = [];
 | |
| 
 | |
| function setAndTestProperty(prop, color) {
 | |
|   var initial = document[prop];
 | |
|   document[prop] = color;
 | |
|   is(document[prop], initial, "document[" + prop + "] not ignored before body");
 | |
|   return initial;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Attempt to set legacy color properties before BODY exists, and verify that such
 | |
|  * attempts are ignored.
 | |
|  */
 | |
| for (let i = 0; i < legacyProps.length; i++) {
 | |
|   initialValues[i] = setAndTestProperty(legacyProps[i], testColors[i]);
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * After BODY loads, run some more tests.
 | |
|  */
 | |
| addLoadEvent(function() {
 | |
|   // Verify that the legacy color properties still have their original values.
 | |
|   for (let i = 0; i < legacyProps.length; i++) {
 | |
|     is(
 | |
|       document[legacyProps[i]],
 | |
|       initialValues[i],
 | |
|       "document[" + legacyProps[i] + "] altered after body load"
 | |
|     );
 | |
|   }
 | |
| 
 | |
|   // Verify that legacy color properties applied before BODY are really ignored when rendering.
 | |
|   // Save current computed style colors for later use.
 | |
|   for (let i = 0; i < idPropList.length; i++) {
 | |
|     var style = window.getComputedStyle(
 | |
|       document.getElementById(idPropList[i].id)
 | |
|     );
 | |
|     var color = style.getPropertyValue(idPropList[i].prop);
 | |
|     idPropList[i].initialComputedColor = color;
 | |
|     isnot(color, rgbTestColors[i], "element rendered using before-body style");
 | |
|   }
 | |
|   // XXX: Can't get links to visually activate via script events, so can't verify
 | |
|   // that the alinkColor property was not applied.
 | |
| 
 | |
|   // Verify that setting legacy color props to undefined after BODY loads will cause them
 | |
|   // to be read as the string "undefined".
 | |
|   for (let i = 0; i < legacyProps.length; i++) {
 | |
|     document[legacyProps[i]] = undefined;
 | |
|     is(
 | |
|       document[legacyProps[i]],
 | |
|       "undefined",
 | |
|       "Unexpected value of " + legacyProps[i] + " after setting to undefined"
 | |
|     );
 | |
|   }
 | |
| 
 | |
|   // Verify that setting legacy color props to undefined led to result
 | |
|   // of parsing undefined as a color.
 | |
|   for (let i = 0; i < idPropList.length; i++) {
 | |
|     var style = window.getComputedStyle(
 | |
|       document.getElementById(idPropList[i].id)
 | |
|     );
 | |
|     var color = style.getPropertyValue(idPropList[i].prop);
 | |
|     is(
 | |
|       color,
 | |
|       "rgb(0, 239, 14)",
 | |
|       "element's style should get result of parsing undefined as a color"
 | |
|     );
 | |
|   }
 | |
| 
 | |
|   // Mark the test as finished.
 | |
|   setTimeout(SimpleTest.finish, 0);
 | |
| });
 |