Tests that forced element state is reflected in the DOM tree and Styles pane.

Test text

DIV with :hover and :active
[expanded] 
element.style  { ()

======== Matched CSS Rules ========
[expanded] 
div:active, a:active  { (force-pseudo-state.html:12)
font-weight: bold;

[expanded] 
div:hover, a:hover  { (force-pseudo-state.html:4)
color: red;

[expanded] 
div  { (user agent stylesheet)
display: block;

======== Inherited from body#mainBody.main1.main2.mainpage ========
[expanded] 
Style Attribute  { ()
/-- overloaded --/ font-weight: normal;


- <html> [descendantUserAttributeCounters:[pseudoState=1]]
    + <head>…</head>
    - <body id="mainBody" class="main1 main2 mainpage" onload="runTest()" style="font-weight: normal; width: 85%; background-image: url(bar.png)"> [descendantUserAttributeCounters:[pseudoState=1]]
          <p>\nTests that forced element state is reflected in the DOM tree and Styles pane.\n</p>
          <div id="div">Test text</div> [userProperties:[pseudoState=hover,active]]
      </body>
  </html>

DIV with :active and :focus
[expanded] 
element.style  { ()

======== Matched CSS Rules ========
[expanded] 
div:active, a:active  { (force-pseudo-state.html:12)
font-weight: bold;

[expanded] 
div:focus, a:focus  { (force-pseudo-state.html:8)
border: 1px solid green;
    border-top-color: green;
    border-top-style: solid;
    border-top-width: 1px;
    border-right-color: green;
    border-right-style: solid;
    border-right-width: 1px;
    border-bottom-color: green;
    border-bottom-style: solid;
    border-bottom-width: 1px;
    border-left-color: green;
    border-left-style: solid;
    border-left-width: 1px;

[expanded] 
:focus  { (user agent stylesheet)
outline: -webkit-focus-ring-color auto 5px;
    outline-color: -webkit-focus-ring-color;
    outline-style: auto;
    outline-width: 5px;

[expanded] 
div  { (user agent stylesheet)
display: block;

======== Inherited from body#mainBody.main1.main2.mainpage ========
[expanded] 
Style Attribute  { ()
/-- overloaded --/ font-weight: normal;


- <html> [descendantUserAttributeCounters:[pseudoState=1]]
    + <head>…</head>
    - <body id="mainBody" class="main1 main2 mainpage" onload="runTest()" style="font-weight: normal; width: 85%; background-image: url(bar.png)"> [descendantUserAttributeCounters:[pseudoState=1]]
          <p>\nTests that forced element state is reflected in the DOM tree and Styles pane.\n</p>
          <div id="div">Test text</div> [userProperties:[pseudoState=active,focus]]
        + <div>…</div>
      </body>
  </html>

DIV with no forced state
[expanded] 
element.style  { ()

======== Matched CSS Rules ========
[expanded] 
div  { (user agent stylesheet)
display: block;

======== Inherited from body#mainBody.main1.main2.mainpage ========
[expanded] 
Style Attribute  { ()
font-weight: normal;


- <html>
    + <head>…</head>
    - <body id="mainBody" class="main1 main2 mainpage" onload="runTest()" style="font-weight: normal; width: 85%; background-image: url(bar.png)">
          <p>\nTests that forced element state is reflected in the DOM tree and Styles pane.\n</p>
          <div id="div">Test text</div>
        + <div>…</div>
      </body>
  </html>

