Series of tests to validate behavior of getting/setting link.disabled and link.sheet.disabled.
Test for bug 61400: REGRESSION(84329): Stylesheets on some pages do not load

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


notsheet
PASS link.sheet is null
FAIL link.disabled should be false. Was true.
sheet
PASS link.sheet is non-null.
FAIL link.disabled should be true. Was false.
PASS link.sheet.disabled is true
PASS getComputedStyle(testElement).textDecoration is "none"
PASS link.disabled is false
FAIL link.sheet.disabled should be false. Was true.
FAIL getComputedStyle(testElement).textDecoration should be line-through. Was none.
altsheet
FAIL link.disabled should be true. Was false.
PASS link.sheet is non-null.
FAIL getComputedStyle(testElement).backgroundColor should be rgb(0, 128, 0). Was rgba(0, 0, 0, 0).
FAIL link.disabled should be true. Was false.
PASS getComputedStyle(testElement).backgroundColor is originalBG
PASS link.disabled is false
FAIL getComputedStyle(testElement).backgroundColor should be rgb(0, 128, 0). Was rgba(0, 0, 0, 0).
PASS getComputedStyle(testElement).backgroundColor is originalBG
PASS successfullyParsed is true

TEST COMPLETE

