accessible/tests/mochitest/elm/test_HTMLSpec.html

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4   <title>HTML a11y spec tests</title>
     5   <link id="link" rel="stylesheet" type="text/css"
     6         href="chrome://mochikit/content/tests/SimpleTest/test.css" />
     8   <script type="application/javascript"
     9           src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
    11   <script type="application/javascript"
    12           src="../common.js"></script>
    13   <script type="application/javascript"
    14           src="../actions.js"></script>
    15   <script type="application/javascript"
    16           src="../role.js"></script>
    17   <script type="application/javascript"
    18           src="../states.js"></script>
    19   <script type="application/javascript"
    20           src="../attributes.js"></script>
    21   <script type="application/javascript"
    22           src="../relations.js"></script>
    23   <script type="application/javascript"
    24           src="../name.js"></script>
    26   <script type="application/javascript">
    27     function doTest()
    28     {
    29       //////////////////////////////////////////////////////////////////////////
    30       // HTML:a@href
    32       var obj = {
    33         role: ROLE_LINK,
    34         states: STATE_LINKED,
    35         actions: "jump",
    36         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText, nsIAccessibleHyperLink ],
    37         children: [ // all kids inherits linked state and jump action
    38           {
    39             role: ROLE_TEXT_LEAF,
    40             states: STATE_LINKED,
    41             actions: "jump"
    42           }
    43         ]
    44       };
    45       testElm("a_href", obj);
    47       //////////////////////////////////////////////////////////////////////////
    48       // HTML:a no @href
    50       obj = {
    51         todo_role: ROLE_TEXT_CONTAINER,
    52         absentStates: STATE_LINKED,
    53         actions: null,
    54         children: [
    55           {
    56             role: ROLE_TEXT_LEAF,
    57             absentStates: STATE_LINKED,
    58             actions: null
    59           }
    60         ]
    61       };
    62       testElm("a_nohref", obj);
    64       //////////////////////////////////////////////////////////////////////////
    65       // HTML:abbr contained by HTML:td
    67       obj = {
    68         role: ROLE_CELL,
    69         attributes: { abbr: "WWW" },
    70         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
    71         children: [
    72           {
    73             role: ROLE_TEXT_CONTAINER,
    74             children: [ { role: ROLE_TEXT_LEAF } ]
    75           }
    76         ]
    77       };
    78       testElm("td_abbr", obj);
    80       //////////////////////////////////////////////////////////////////////////
    81       // HTML:address
    83       obj = {
    84         todo_role: ROLE_PARAGRAPH,
    85         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
    86       };
    87       testElm("address", obj);
    89       //////////////////////////////////////////////////////////////////////////
    90       // HTML:area@href
    92       obj = {
    93         role: ROLE_LINK,
    94         states: STATE_LINKED,
    95         actions: "jump",
    96         interfaces: [ nsIAccessibleHyperLink ],
    97         children: []
    98       };
    99       testElm(getAccessible("imgmap").firstChild, obj);
   101       //////////////////////////////////////////////////////////////////////////
   102       // HTML:area no @href
   104       obj = {
   105         todo_role: "ROLE_SHAPE",
   106         absentStates: STATE_LINKED,
   107         children: []
   108       };
   109       testElm(getAccessible("imgmap").lastChild, obj);
   111       //////////////////////////////////////////////////////////////////////////
   112       // HTML:article
   113       obj = {
   114         role: ROLE_DOCUMENT,
   115         states: STATE_READONLY,
   116         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
   117       };
   118       testElm("article", obj);
   120       //////////////////////////////////////////////////////////////////////////
   121       // HTML:aside
   122       obj = {
   123         role: ROLE_NOTE,
   124         attributes: { "xml-roles": "complementary" },
   125         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
   126       };
   127       testElm("aside", obj);
   129       //////////////////////////////////////////////////////////////////////////
   130       obj = { // HTML:audio
   131         role: ROLE_GROUPING
   132       };
   133       testElm("audio", obj);
   135       //////////////////////////////////////////////////////////////////////////
   136       obj = { // HTML:b contained by paragraph
   137         role: ROLE_PARAGRAPH,
   138         textAttrs: {
   139           0: { },
   140           6: { "font-weight": kBoldFontWeight }
   141         },
   142         children: [
   143           { role: ROLE_TEXT_LEAF }, // plain text
   144           { role: ROLE_TEXT_LEAF } // HTML:b text
   145         ]
   146       }
   147       testElm("b_container", obj);
   149       //////////////////////////////////////////////////////////////////////////
   150       obj = { // HTML:bdi contained by paragraph
   151         role: ROLE_PARAGRAPH,
   152         todo_textAttrs: {
   153           0: { },
   154           5: { "writing-mode": "rl" },
   155           8: { }
   156         },
   157         children: [
   158           { role: ROLE_TEXT_LEAF }, // plain text
   159           { role: ROLE_TEXT_LEAF }, // HTML:bdi text
   160           { role: ROLE_TEXT_LEAF } // plain text
   161         ]
   162       }
   163       testElm("bdi_container", obj);
   165       //////////////////////////////////////////////////////////////////////////
   166       // HTML:bdo contained by paragraph
   168       obj = {
   169         role: ROLE_PARAGRAPH,
   170         todo_textAttrs: {
   171           0: { },
   172           6: { "writing-mode": "rl" }
   173         },
   174         children: [
   175           { role: ROLE_TEXT_LEAF }, // plain text
   176         ]
   177       }
   178       testElm("bdo_container", obj);
   180       //////////////////////////////////////////////////////////////////////////
   181       // HTML:blockquote
   183       obj = {
   184         role: ROLE_SECTION,
   185         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
   186         children: [ { role: ROLE_PARAGRAPH } ]
   187       };
   188       testElm("blockquote", obj);
   190       //////////////////////////////////////////////////////////////////////////
   191       // HTML:br
   193       obj = {
   194         role: ROLE_PARAGRAPH,
   195         children: [ { role: ROLE_WHITESPACE } ]
   196       };
   197       testElm("br_container", obj);
   199       //////////////////////////////////////////////////////////////////////////
   200       obj = { // HTML:button
   201         role: ROLE_PUSHBUTTON,
   202         absentStates: STATE_DEFAULT,
   203         actions: "press",
   204         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
   205       };
   206       testElm("button", obj);
   208       //////////////////////////////////////////////////////////////////////////
   209       // HTML:button@type="submit" (default button)
   211       obj = {
   212         role: ROLE_PUSHBUTTON,
   213         states: STATE_DEFAULT,
   214         actions: "press"
   215       };
   216       testElm("button_default", obj);
   218       //////////////////////////////////////////////////////////////////////////
   219       // HTML:canvas
   221       obj = {
   222         role: ROLE_CANVAS
   223       };
   224       testElm("canvas", obj);
   226       //////////////////////////////////////////////////////////////////////////
   227       // HTML:caption under table
   229       obj = {
   230         role: ROLE_TABLE,
   231         relations: {
   232           RELATION_LABELLED_BY: "caption"
   233         },
   234         interfaces: nsIAccessibleTable,
   235         children: [
   236           {
   237             role: ROLE_CAPTION,
   238             relations: {
   239               RELATION_LABEL_FOR: "table"
   240             },
   241             interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
   242           },
   243           { // td inside thead
   244             role: ROLE_ROW,
   245             children: [
   246               {
   247                 role: ROLE_COLUMNHEADER,
   248                 interfaces: [ nsIAccessibleTableCell, nsIAccessibleText, nsIAccessibleHyperText ]
   249               },
   250               { role: ROLE_COLUMNHEADER }
   251             ]
   252           },
   253           { // td inside tbody
   254             role: ROLE_ROW,
   255             children: [
   256               {
   257                 role: ROLE_ROWHEADER,
   258                 interfaces: [ nsIAccessibleTableCell, nsIAccessibleText, nsIAccessibleHyperText ]
   259               },
   260               {
   261                 role: ROLE_CELL,
   262                 interfaces: [ nsIAccessibleTableCell, nsIAccessibleText, nsIAccessibleHyperText ]
   263               }
   264             ]
   265           },
   266           { // td inside tfoot
   267             role: ROLE_ROW
   268           }
   269         ]
   270       };
   271       testElm("table", obj);
   273       //////////////////////////////////////////////////////////////////////////
   274       // HTML:cite contained by paragraph
   276       obj = {
   277         role: ROLE_PARAGRAPH,
   278         textAttrs: {
   279           0: { },
   280           6: { "font-style": "italic" }
   281         },
   282         children: [
   283           { role: ROLE_TEXT_LEAF }, // plain text
   284           { role: ROLE_TEXT_LEAF } // HTML:cite text
   285         ]
   286       };
   287       testElm("cite_container", obj);
   289       //////////////////////////////////////////////////////////////////////////
   290       // HTML:code contained by paragraph
   292       obj = {
   293         role: ROLE_PARAGRAPH,
   294         textAttrs: {
   295           0: { },
   296           6: { "font-family": kMonospaceFontFamily }
   297         },
   298         children: [
   299           { role: ROLE_TEXT_LEAF }, // plain text
   300           { role: ROLE_TEXT_LEAF } // HTML:code text
   301         ]
   302       };
   303       testElm("code_container", obj);
   305       //////////////////////////////////////////////////////////////////////////
   306       // HTML:col and HTML:colgroup under table
   308       obj =
   309         { TABLE : [
   310           { ROW :[
   311             { role: ROLE_CELL },
   312             { role: ROLE_CELL },
   313             { role: ROLE_CELL }
   314           ] }
   315         ] };
   316       testElm("colNcolgroup_table", obj);
   318       //////////////////////////////////////////////////////////////////////////
   319       // HTML:data contained by paragraph
   321       obj =
   322         { PARAGRAPH: [
   323           { TEXT_LEAF: [] } // HTML:data text
   324         ] };
   325       testElm("data_container", obj);
   327       //////////////////////////////////////////////////////////////////////////
   328       // HTML:datalist associated with input
   330       todo(false, "datalist and summary tree hierarchy test missed");
   332       //////////////////////////////////////////////////////////////////////////
   333       // HTML:dd, HTML:dl, HTML:dd
   335       obj = {
   336         role: ROLE_DEFINITION_LIST,
   337         states: STATE_READONLY,
   338         children: [ // dl
   339           {
   340             role: ROLE_TERM,
   341             states: STATE_READONLY,
   342             interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
   343             children: [ // dt
   344               { role: ROLE_TEXT_LEAF }
   345             ]
   346           },
   347           {
   348             role: ROLE_DEFINITION,
   349             interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
   350             children: [ // dd
   351               { role: ROLE_TEXT_LEAF }
   352             ]
   353           }
   354         ]
   355       };
   356       testElm("dl", obj);
   358       //////////////////////////////////////////////////////////////////////////
   359       // HTML:del contained by paragraph
   361       obj = {
   362         role: ROLE_PARAGRAPH,
   363         textAttrs: {
   364           0: { },
   365           6: { "text-line-through-style": "solid" }
   366         },
   367         children: [
   368           { role: ROLE_TEXT_LEAF }, // plain text
   369           { role: ROLE_TEXT_LEAF } // HTML:del text
   370         ]
   371       };
   372       testElm("del_container", obj);
   374       //////////////////////////////////////////////////////////////////////////
   375       // HTML:details
   377       todo(isAccessible("details"), "details element is not accessible");
   379       //////////////////////////////////////////////////////////////////////////
   380       // HTML:dfn contained by paragraph
   382       obj = {
   383         role: ROLE_PARAGRAPH,
   384         textAttrs: {
   385           0: { "font-style": "italic" },
   386           12: { }
   387         },
   388         children: [
   389           { role: ROLE_TEXT_LEAF }, // HTML:dfn text
   390           { role: ROLE_TEXT_LEAF } // plain text
   391         ]
   392       };
   393       testElm("dfn_container", obj);
   395       //////////////////////////////////////////////////////////////////////////
   396       // HTML:dialog
   398       todo(isAccessible("dialog"), "dialog element is not accessible");
   400       //////////////////////////////////////////////////////////////////////////
   401       // HTML:div
   403       obj = {
   404         role: ROLE_SECTION,
   405         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
   406         children: [
   407           { role: ROLE_TEXT_LEAF } // plain text
   408         ]
   409       };
   410       testElm("div", obj);
   412       //////////////////////////////////////////////////////////////////////////
   413       // HTML:em in a paragraph
   415       obj = {
   416         role: ROLE_PARAGRAPH,
   417         textAttrs: {
   418           0: { },
   419           6: { "font-style": "italic" }
   420         },
   421         children: [
   422           { role: ROLE_TEXT_LEAF }, // plain text
   423           { role: ROLE_TEXT_LEAF } // HTML:em text
   424         ]
   425       };
   426       testElm("em_container", obj);
   428       //////////////////////////////////////////////////////////////////////////
   429       // HTML:embed (windowless and windowed plugins)
   431       if (WIN) {
   432         obj = {
   433           role: ROLE_EMBEDDED_OBJECT,
   434           states: STATE_UNAVAILABLE
   435         };
   437         testElm("embed_plugin_windowless", obj);
   439         obj = {
   440           role: ROLE_EMBEDDED_OBJECT,
   441           absentStates: STATE_UNAVAILABLE
   442         };
   443         testElm("embed_plugin_windowed", obj);
   444       }
   446       //////////////////////////////////////////////////////////////////////////
   447       // HTML:fieldset and HTML:legend
   449       obj = {
   450         role: ROLE_GROUPING,
   451         relations: {
   452           RELATION_LABELLED_BY: "legend"
   453         },
   454         children: [
   455           {
   456             role: ROLE_LABEL,
   457             relations: {
   458               RELATION_LABEL_FOR: "fieldset"
   459             },
   460             interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
   461           },
   462           {
   463             role: ROLE_ENTRY
   464           }
   465         ]
   466       };
   467       testElm("fieldset", obj);
   469       //////////////////////////////////////////////////////////////////////////
   470       // HTML:figure and HTML:figcaption
   472       obj = {
   473         role: ROLE_FIGURE,
   474         attributes: { "xml-roles": "figure" },
   475         relations: {
   476           RELATION_LABELLED_BY: "figcaption"
   477         },
   478         children: [
   479           { role: ROLE_GRAPHIC },
   480           {
   481             role: ROLE_CAPTION,
   482             relations: {
   483               RELATION_LABEL_FOR: "figure"
   484             },
   485             interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
   486           }
   487         ]
   488       };
   489       testElm("figure", obj);
   491       //////////////////////////////////////////////////////////////////////////
   492       // HTML:footer
   494       obj = {
   495         role: ROLE_FOOTER,
   496         attributes: { "xml-roles": "contentinfo" },
   497         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
   498       };
   499       testElm("footer", obj);
   501       obj = {
   502         role: ROLE_FOOTER,
   503         absentAttributes: { "xml-roles": "contentinfo" },
   504         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
   505       };
   506       testElm("footer_in_article", obj);
   507       testElm("footer_in_section", obj);
   509       //////////////////////////////////////////////////////////////////////////
   510       // HTML:form
   512       obj = {
   513         role: ROLE_FORM
   514       };
   515       testElm("form", obj);
   517       //////////////////////////////////////////////////////////////////////////
   518       // // HTML:frameset, HTML:frame and HTML:iframe
   520       obj = {
   521         INTERNAL_FRAME: [ { // HTML:iframe
   522           DOCUMENT: [ {
   523             INTERNAL_FRAME: [ { // HTML:frame
   524               DOCUMENT: [ { role: ROLE_TEXT_LEAF} ]
   525             } ]
   526           } ]
   527         } ]
   528       };
   529       testElm("frameset_container", obj);
   531       //////////////////////////////////////////////////////////////////////////
   532       // HTML:h1, HTML:h2, HTML:h3, HTML:h4, HTML:h5, HTML:h6
   534       obj = {
   535         role: ROLE_HEADING,
   536         attributes: { "level": "1" },
   537         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
   538       };
   539       testElm("h1", obj);
   541       obj = {
   542         role: ROLE_HEADING,
   543         attributes: { "level": "2" },
   544         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
   545       };
   546       testElm("h2", obj);
   548       obj = {
   549         role: ROLE_HEADING,
   550         attributes: { "level": "3" },
   551         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
   552       };
   553       testElm("h3", obj);
   555       obj = {
   556         role: ROLE_HEADING,
   557         attributes: { "level": "4" },
   558         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
   559       };
   560       testElm("h4", obj);
   562       obj = {
   563         role: ROLE_HEADING,
   564         attributes: { "level": "5" },
   565         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
   566       };
   567       testElm("h5", obj);
   569       obj = {
   570         role: ROLE_HEADING,
   571         attributes: { "level": "6" },
   572         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
   573       };
   574       testElm("h6", obj);
   576       //////////////////////////////////////////////////////////////////////////
   577       // HTML:header
   579       obj = {
   580         role: ROLE_HEADER,
   581         attributes: { "xml-roles": "banner" },
   582         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
   583       };
   584       testElm("header", obj);
   586       obj = {
   587         role: ROLE_HEADER,
   588         absentAttributes: { "xml-roles": "banner" },
   589         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
   590       };
   591       testElm("header_in_article", obj);
   592       testElm("header_in_section", obj);
   594       //////////////////////////////////////////////////////////////////////////
   595       // HTML:hr
   597       obj = {
   598         role: ROLE_SEPARATOR,
   599       };
   600       testElm("hr", obj);
   602       //////////////////////////////////////////////////////////////////////////
   603       obj = { // HTML:i contained by paragraph
   604         role: ROLE_PARAGRAPH,
   605         textAttrs: {
   606           0: { },
   607           6: { "font-style": "italic" }
   608         },
   609         children: [
   610           { role: ROLE_TEXT_LEAF }, // plain text
   611           { role: ROLE_TEXT_LEAF } // HTML:i text
   612         ]
   613       }
   614       testElm("i_container", obj);
   616       //////////////////////////////////////////////////////////////////////////
   617       // HTML:img
   619       obj = {
   620         role: ROLE_GRAPHIC,
   621         interfaces: [ nsIAccessibleImage ]
   622       };
   623       testElm("img", obj);
   625       //////////////////////////////////////////////////////////////////////////
   626       // HTML:input@type="button"
   628       obj = {
   629         role: ROLE_PUSHBUTTON,
   630         absentStates: STATE_DEFAULT
   631       };
   632       testElm("input_button", obj);
   634       //////////////////////////////////////////////////////////////////////////
   635       // HTML:input@type="checkbox"
   637       obj = {
   638         role: ROLE_CHECKBUTTON,
   639         states: STATE_CHECKABLE,
   640         absentStates: STATE_CHECKED,
   641         actions: "check"
   642       };
   643       testElm("input_checkbox", obj);
   645       obj = {
   646         role: ROLE_CHECKBUTTON,
   647         states: STATE_CHECKABLE | STATE_CHECKED,
   648         actions: "uncheck"
   649       };
   650       testElm("input_checkbox_true", obj);
   652       //////////////////////////////////////////////////////////////////////////
   653       // HTML:input@type="file"
   655       obj = {
   656         TEXT_CONTAINER: [
   657           { role: ROLE_PUSHBUTTON },
   658           { role: ROLE_LABEL }
   659         ]
   660       };
   661       testElm("input_file", obj);
   663       //////////////////////////////////////////////////////////////////////////
   664       // HTML:input@type="image"
   666       obj = {
   667         role: ROLE_PUSHBUTTON,
   668         absentStates: STATE_DEFAULT,
   669         actions: "press"
   670       };
   671       testElm("input_image", obj);
   672       testElm("input_submit", obj);
   674       obj = {
   675         role: ROLE_PUSHBUTTON,
   676         actions: "press",
   677         states: STATE_DEFAULT
   678       };
   679       testElm("input_image_default", obj);
   680       testElm("input_submit_default", obj);
   682       //////////////////////////////////////////////////////////////////////////
   683       // HTML:input@type="number" and etc
   685       obj = {
   686         role: ROLE_SPINBUTTON,
   687         interfaces: [ nsIAccessibleValue ],
   688         children: [
   689           {
   690             role: ROLE_ENTRY,
   691             extraStates: EXT_STATE_EDITABLE | EXT_STATE_SINGLE_LINE,
   692             actions: "activate",
   693             interfaces: [ nsIAccessibleText, nsIAccessibleEditableText ],
   694             children: [
   695               { role: ROLE_TEXT_LEAF }
   696             ]
   697           },
   698           {
   699             role: ROLE_PUSHBUTTON,
   700             actions: "press"
   701           },
   702           {
   703             role: ROLE_PUSHBUTTON,
   704             actions: "press"
   705           }
   706         ]
   707       };
   708       testElm("input_number", obj);
   710       //////////////////////////////////////////////////////////////////////////
   711       // HTML:input@type="text" and etc
   713       obj = {
   714         role: ROLE_ENTRY,
   715         extraStates: EXT_STATE_EDITABLE | EXT_STATE_SINGLE_LINE,
   716         actions: "activate",
   717         interfaces: [ nsIAccessibleText, nsIAccessibleEditableText ],
   718         children: [
   719           { role: ROLE_TEXT_LEAF }
   720         ]
   721       };
   722       testElm("input_email", obj);
   723       testElm("input_search", obj);
   724       testElm("input_tel", obj);
   725       testElm("input_text", obj);
   726       testElm("input_url", obj);
   728       //////////////////////////////////////////////////////////////////////////
   729       // HTML:input@type="password"
   731       obj = {
   732         role: ROLE_PASSWORD_TEXT,
   733         states: STATE_PROTECTED,
   734         extraStates: EXT_STATE_EDITABLE,
   735         actions: "activate",
   736         children: [
   737         {
   738             role: ROLE_TEXT_LEAF
   739           }
   740         ]
   741       };
   742       testElm("input_password", obj);
   743       ok(getAccessible("input_password").firstChild.name != "44",
   744          "text leaf for password shouldn't have its real value as its name!");
   746       obj = {
   747         role: ROLE_PASSWORD_TEXT,
   748         states: STATE_PROTECTED | STATE_READONLY,
   749         actions: "activate",
   750         children: [
   751         {
   752             role: ROLE_TEXT_LEAF
   753           }
   754         ]
   755       };
   756       testElm("input_password_readonly", obj);
   757       ok(getAccessible("input_password_readonly").firstChild.name != "44",
   758          "text leaf for password shouldn't have its real value as its name!");
   760       //////////////////////////////////////////////////////////////////////////
   761       // HTML:input@type="radio"
   763       obj = {
   764         role: ROLE_RADIOBUTTON,
   765         states: STATE_CHECKABLE,
   766         absentStates: STATE_CHECKED,
   767         actions: "select"
   768       };
   769       testElm("input_radio", obj);
   771       obj = {
   772         role: ROLE_RADIOBUTTON,
   773         states: STATE_CHECKABLE | STATE_CHECKED,
   774         actions: "select"
   775       };
   776       testElm("input_radio_true", obj);
   778       //////////////////////////////////////////////////////////////////////////
   779       // HTML:input@type="range"
   781       obj = {
   782         role: ROLE_SLIDER
   783       };
   784       testElm("input_range", obj);
   786       //////////////////////////////////////////////////////////////////////////
   787       // HTML:input@type="reset"
   789       obj = {
   790         role: ROLE_PUSHBUTTON,
   791         actions: "press",
   792         absentStates: STATE_DEFAULT
   793       };
   794       testElm("input_reset", obj);
   796       //////////////////////////////////////////////////////////////////////////
   797       // HTML:ins contained by paragraph
   799       obj = {
   800         role: ROLE_PARAGRAPH,
   801         textAttrs: {
   802           0: { },
   803           6: { "text-underline-style": "solid" }
   804         },
   805         children: [
   806           { role: ROLE_TEXT_LEAF }, // plain text
   807           { role: ROLE_TEXT_LEAF } // HTML:ins text
   808         ]
   809       };
   810       testElm("ins_container", obj);
   812       //////////////////////////////////////////////////////////////////////////
   813       // HTML:kbd contained by paragraph
   815       obj = {
   816         role: ROLE_PARAGRAPH,
   817         textAttrs: {
   818           0: { },
   819           6: { "font-family": kMonospaceFontFamily }
   820         },
   821         children: [
   822           { role: ROLE_TEXT_LEAF }, // plain text
   823           { role: ROLE_TEXT_LEAF } // HTML:kbd text
   824         ]
   825       };
   826       testElm("kbd_container", obj);
   828       //////////////////////////////////////////////////////////////////////////
   829       // HTML:keygen
   831       obj = {
   832         role: ROLE_COMBOBOX,
   833         states: STATE_COLLAPSED | STATE_HASPOPUP,
   834         extraStates: EXT_STATE_EXPANDABLE,
   835         actions: "open",
   836         children: [ 
   837           { COMBOBOX_LIST: [
   838             { role: ROLE_COMBOBOX_OPTION }, // high grade
   839             { role: ROLE_COMBOBOX_OPTION } // medium grade
   840           ] }
   841         ]
   842       };
   843       testElm("keygen", obj);
   845       //////////////////////////////////////////////////////////////////////////
   846       // HTML:label
   848       obj = {
   849         role: ROLE_LABEL,
   850         todo_relations: {
   851           RELATION_LABEL_FOR: "label_input"
   852         },
   853         children: [
   854           { role: ROLE_TEXT_LEAF }, // plain text
   855           {
   856             role: ROLE_ENTRY,
   857             relations: {
   858               RELATION_LABELLED_BY: "label"
   859             }
   860           }
   861         ]
   862       };
   863       testElm("label", obj);
   865       obj = {
   866         role: ROLE_LABEL,
   867         relations: {
   868           RELATION_LABEL_FOR: "label_for_input"
   869         }
   870       };
   871       testElm("label_for", obj);
   873       obj = {
   874         role: ROLE_ENTRY,
   875         relations: {
   876           RELATION_LABELLED_BY: "label_for"
   877         }
   878       };
   879       testElm("label_for_input", obj);
   881       //////////////////////////////////////////////////////////////////////////
   882       // HTML:ul, HTML:ol, HTML:li
   884       obj = { // ul or ol
   885         role: ROLE_LIST,
   886         states: STATE_READONLY,
   887         children: [
   888           { // li
   889             role: ROLE_LISTITEM,
   890             states: STATE_READONLY,
   891             interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
   892           }
   893         ]
   894       };
   895       testElm("ul", obj);
   896       testElm("ol", obj);
   898       //////////////////////////////////////////////////////////////////////////
   899       // HTML:link
   901       ok(!isAccessible("link"), "link element is not accessible");
   903       //////////////////////////////////////////////////////////////////////////
   904       // HTML:main
   906       obj = {
   907         todo_role: ROLE_GROUPING,
   908         attributes: { "xml-roles": "main" },
   909         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
   910       };
   911       testElm("main", obj);
   913       //////////////////////////////////////////////////////////////////////////
   914       // HTML:map
   916       ok(!isAccessible("map_imagemap"),
   917          "map element is not accessible if used as an image map");
   919       obj = {
   920         role: ROLE_TEXT_CONTAINER
   921       };
   922       testElm("map", obj);
   924       //////////////////////////////////////////////////////////////////////////
   925       // HTML:mark contained by paragraph
   927       obj = {
   928         role: ROLE_PARAGRAPH,
   929         textAttrs: {
   930           0: { },
   931           6: { "background-color": "rgb(255, 255, 0)" }
   932         },
   933         children: [
   934           { role: ROLE_TEXT_LEAF }, // plain text
   935           { role: ROLE_TEXT_LEAF } // HTML:mark text
   936         ]
   937       };
   938       testElm("mark_container", obj);
   940       //////////////////////////////////////////////////////////////////////////
   941       // HTML:math
   943       obj = {
   944         role: ROLE_EQUATION
   945       };
   946       testElm("math", obj);
   948       //////////////////////////////////////////////////////////////////////////
   949       // HTML:menu
   951       obj = {
   952         todo_role: ROLE_MENUPOPUP
   953       };
   954       testElm("menu", obj);
   956       //////////////////////////////////////////////////////////////////////////
   957       // HTML:meter
   959       todo(isAccessible("meter"), "meter element is not accessible");
   961       //////////////////////////////////////////////////////////////////////////
   962       // HTML:nav
   964       obj = {
   965         role: ROLE_SECTION,
   966         attributes: { "xml-roles": "navigation" },
   967         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
   968       };
   969       testElm("nav", obj);
   971       //////////////////////////////////////////////////////////////////////////
   972       // HTML:object (windowless and windowed plugins) and HTML:param
   974       if (WIN) {
   975         obj = {
   976           role: ROLE_EMBEDDED_OBJECT,
   977           states: STATE_UNAVAILABLE,
   978           children: [ ] // no child for HTML:param
   979         };
   980         testElm("object_plugin_windowless", obj);
   982         obj = {
   983           role: ROLE_EMBEDDED_OBJECT,
   984           absentStates: STATE_UNAVAILABLE
   985         };
   986         testElm("object_plugin_windowed", obj);
   987       }
   989       //////////////////////////////////////////////////////////////////////////
   990       // HTML:select, HTML:optgroup and HTML:option
   992       obj = { // HMTL:select@size > 1
   993         role: ROLE_LISTBOX,
   994         states: STATE_FOCUSABLE,
   995         absentStates: STATE_MULTISELECTABLE,
   996         interfaces: [ nsIAccessibleSelectable ],
   997         children: [
   998           { GROUPING: [ // HTML:optgroup
   999             { role: ROLE_STATICTEXT },
  1000             { role: ROLE_OPTION }, // HTML:option
  1001             { role: ROLE_OPTION }
  1002           ] },
  1004             role: ROLE_OPTION,
  1005             states: STATE_FOCUSABLE,
  1006             actions: "select",
  1007             interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
  1010       };
  1011       testElm("select_listbox", obj);
  1013       obj = { // HTML:select@multiple
  1014         role: ROLE_LISTBOX,
  1015         states: STATE_FOCUSABLE | STATE_MULTISELECTABLE,
  1016         children: [
  1017           { role: ROLE_OPTION },
  1018           { role: ROLE_OPTION },
  1019           { role: ROLE_OPTION }
  1021       };
  1022       testElm("select_listbox_multiselectable", obj);
  1024       obj = { // HTML:select
  1025         role: ROLE_COMBOBOX,
  1026         states: STATE_FOCUSABLE,
  1027         children: [
  1029             role: ROLE_COMBOBOX_LIST,
  1030             children: [
  1031               { role: ROLE_COMBOBOX_OPTION },
  1032               { role: ROLE_COMBOBOX_OPTION },
  1033               { role: ROLE_COMBOBOX_OPTION }
  1037       };
  1038       testElm("select_combobox", obj);
  1040       //////////////////////////////////////////////////////////////////////////
  1041       // HTML:output
  1043       obj = {
  1044         role: ROLE_SECTION,
  1045         attributes: { "live": "polite" },
  1046         todo_relations: {
  1047           RELATION_CONTROLLED_BY: "output_input"
  1048         },
  1049         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
  1050       };
  1051       testElm("output", obj);
  1053       obj = {
  1054         role: ROLE_ENTRY,
  1055         relations: {
  1056           RELATION_CONTROLLER_FOR: "output"
  1058       };
  1059       testElm("output_input", obj);
  1061       //////////////////////////////////////////////////////////////////////////
  1062       // HTML:pre
  1064       obj = {
  1065         role: ROLE_PARAGRAPH,
  1066         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
  1067       };
  1068       testElm("pre", obj);
  1070       ///////////////////////////////////////////////////////////////////////////
  1071       // HTML:progress
  1073       obj = {
  1074         role: ROLE_PROGRESSBAR,
  1075         absentStates: STATE_MIXED,
  1076         interfaces: [ nsIAccessibleValue ]
  1077       };
  1078       testElm("progress", obj);
  1080       obj = {
  1081         role: ROLE_PROGRESSBAR,
  1082         states: STATE_MIXED
  1083       };
  1084       testElm("progress_indeterminate", obj);
  1086       //////////////////////////////////////////////////////////////////////////
  1087       // HTML:q
  1089       obj = {
  1090         role: ROLE_TEXT_CONTAINER,
  1091         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
  1092         children: [
  1093           { role: ROLE_STATICTEXT }, // left quote
  1094           { role: ROLE_TEXT_LEAF }, // quoted text
  1095           { role: ROLE_STATICTEXT } // right quote
  1097       };
  1098       testElm("q", obj);
  1100       //////////////////////////////////////////////////////////////////////////
  1101       // HTML:ruby
  1103       todo(isAccessible("ruby"), "ruby element is not accessible");
  1105       //////////////////////////////////////////////////////////////////////////
  1106       // HTML:s contained by paragraph
  1108       obj = {
  1109         role: ROLE_PARAGRAPH,
  1110         textAttrs: {
  1111           0: { },
  1112           6: { "text-line-through-style": "solid" }
  1113         },
  1114         children: [
  1115           { role: ROLE_TEXT_LEAF }, // plain text
  1116           { role: ROLE_TEXT_LEAF } // HTML:i text
  1118       };
  1119       testElm("s_container", obj);
  1121       //////////////////////////////////////////////////////////////////////////
  1122       // HTML:samp contained by paragraph
  1124       obj = {
  1125         role: ROLE_PARAGRAPH,
  1126         children: [
  1127           { role: ROLE_TEXT_LEAF }, // plain text
  1128           { role: ROLE_TEXT_LEAF } // HTML:samp text
  1130       };
  1131       testElm("samp_container", obj);
  1133       //////////////////////////////////////////////////////////////////////////
  1134       // HTML:section
  1136       obj = {
  1137         role: ROLE_SECTION,
  1138         attributes: { "xml-roles": "region" },
  1139         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
  1140       };
  1141       testElm("section", obj);
  1143       //////////////////////////////////////////////////////////////////////////
  1144       // HTML:small contained by paragraph
  1146       obj = {
  1147         role: ROLE_PARAGRAPH,
  1148         textAttrs: {
  1149           0: { },
  1150           6: { "font-size": "10pt" }
  1151         },
  1152         children: [
  1153           { role: ROLE_TEXT_LEAF }, // plain text
  1154           { role: ROLE_TEXT_LEAF } // HTML:small text
  1156       };
  1157       testElm("small_container", obj);
  1159       //////////////////////////////////////////////////////////////////////////
  1160       // HTML:source
  1162       ok(!isAccessible("source"), "source element is not accessible");
  1164       //////////////////////////////////////////////////////////////////////////
  1165       // HTML:span
  1167       ok(!isAccessible("span"), "span element is not accessible");
  1169       //////////////////////////////////////////////////////////////////////////
  1170       // HTML:strong contained by paragraph
  1172       obj = {
  1173         role: ROLE_PARAGRAPH,
  1174         children: [
  1175           { role: ROLE_TEXT_LEAF }, // plain text
  1176           { role: ROLE_TEXT_LEAF } // HTML:strong text
  1178       };
  1179       testElm("strong_container", obj);
  1181       //////////////////////////////////////////////////////////////////////////
  1182       // HTML:sub contained by paragraph
  1184       obj = {
  1185         role: ROLE_PARAGRAPH,
  1186         textAttrs: {
  1187           0: { },
  1188           6: { "text-position": "sub" }
  1189         },
  1190         children: [
  1191           { role: ROLE_TEXT_LEAF }, // plain text
  1192           { role: ROLE_TEXT_LEAF } // HTML:sub text
  1194       };
  1195       testElm("sub_container", obj);
  1197       //////////////////////////////////////////////////////////////////////////
  1198       // HTML:sup contained by paragraph
  1200       obj = {
  1201         role: ROLE_PARAGRAPH,
  1202         textAttrs: {
  1203           0: { },
  1204           6: { "text-position": "super" }
  1205         },
  1206         children: [
  1207           { role: ROLE_TEXT_LEAF }, // plain text
  1208           { role: ROLE_TEXT_LEAF } // HTML:sup text
  1210       };
  1211       testElm("sup_container", obj);
  1213       //////////////////////////////////////////////////////////////////////////
  1214       // HTML:svg
  1216       obj = {
  1217         todo_role: ROLE_GRAPHIC
  1218       };
  1219       testElm("svg", obj);
  1221       //////////////////////////////////////////////////////////////////////////
  1222       // HTML:textarea
  1224       obj = {
  1225         role: ROLE_ENTRY,
  1226         extraStates: EXT_STATE_MULTI_LINE | EXT_STATE_EDITABLE,
  1227         actions: "activate",
  1228         interfaces: [ nsIAccessibleText, nsIAccessibleEditableText ]
  1229       };
  1230       testElm("textarea", obj);
  1232       //////////////////////////////////////////////////////////////////////////
  1233       // HTML:time
  1235       ok(!isAccessible("time"), "time element is not accessible");
  1237       //////////////////////////////////////////////////////////////////////////
  1238       // HTML:u contained by paragraph
  1240       obj = {
  1241         role: ROLE_PARAGRAPH,
  1242         textAttrs: {
  1243           0: { },
  1244           6: { "text-underline-style" : "solid" }
  1245         },
  1246         children: [
  1247           { role: ROLE_TEXT_LEAF }, // plain text
  1248           { role: ROLE_TEXT_LEAF } // HTML:u text
  1250       };
  1251       testElm("u_container", obj);
  1253       //////////////////////////////////////////////////////////////////////////
  1254       // HTML:var contained by paragraph
  1256       obj = {
  1257         role: ROLE_PARAGRAPH,
  1258         children: [
  1259           { role: ROLE_TEXT_LEAF }, // plain text
  1260           { role: ROLE_TEXT_LEAF }, // HTML:var text
  1261           { role: ROLE_TEXT_LEAF }, // plain text
  1262           { role: ROLE_TEXT_LEAF } // HTML:var text
  1264       };
  1265       testElm("var_container", obj);
  1267       //////////////////////////////////////////////////////////////////////////
  1268       obj = { // HTML:video
  1269         role: ROLE_GROUPING
  1270       };
  1271       testElm("video", obj);
  1273       SimpleTest.finish();
  1276     SimpleTest.waitForExplicitFinish();
  1277     addA11yLoadEvent(doTest);
  1278     setTestPluginEnabledState(SpecialPowers.Ci.nsIPluginTag.STATE_ENABLED);
  1280     </script>
  1281 </head>
  1282 <body>
  1284   <a target="_blank"
  1285     title="Implement figure and figcaption accessibility"
  1286     href="https://bugzilla.mozilla.org/show_bug.cgi?id=658272">
  1287      Mozilla Bug 658272
  1288   </a><br/>
  1289   <p id="display"></p>
  1290   <div id="content" style="display: none"></div>
  1291   <pre id="test">
  1292   </pre>
  1294   <a id="a_href" href="www.mozilla.com">mozilla site</a>
  1295   <a id="a_nohref">anchor</a>
  1296   <table>
  1297     <tr>
  1298       <td id="td_abbr"><abbr title="World Wide Web">WWW</abbr></td>
  1299     </tr>
  1300   </table>
  1301   <address id="address">
  1302     Mozilla Foundation<br>
  1303     1981 Landings Drive<br>
  1304     Building K<br>
  1305     Mountain View, CA 94043-0801<br>
  1306     USA
  1307   </address>
  1309   <map name="atoz_map">
  1310     <area id="area_href"
  1311           href="http://www.bbc.co.uk/radio4/atoz/index.shtml#b"
  1312           coords="17,0,30,14" alt="b" shape="rect">
  1313     <area id="area_nohref"
  1314           coords="0,0,13,14" alt="a" shape="rect">
  1315   </map>
  1316   <img id="imgmap" width="447" height="15"
  1317        usemap="#atoz_map"
  1318        src="../letters.gif">
  1320   <article id="article">A document</article>
  1321   <audio id="audio" controls="true">
  1322     <source id="source" src="../bug461281.ogg" type="video/ogg">
  1323   </audio>
  1325   <aside id="aside">
  1326     <p>Some content related to an &lt;article&gt;</p>
  1327   </aside>
  1329   <p id="b_container">normal<b>bold</b></p>
  1330   <p id="bdi_container">User <bdi>إيان</bdi>: 90 points</p>
  1331   <p id="bdo_container"><bdo dir="rtl">This text will go right to left.</bdo></p>
  1333   <blockquote id="blockquote" cite="http://developer.mozilla.org">
  1334     <p>This is a quotation taken from the Mozilla Developer Center.</p>
  1335   </blockquote>
  1337   <!--  two BRs, one will be eaten -->
  1338   <p id="br_container"><br><br></p>
  1340   <button id="button">button</button>
  1341   <form>
  1342     <button id="button_default" type="submit">button</button>
  1343   </form>
  1345   <canvas id="canvas"></canvas>
  1347   <table id="table">
  1348     <caption id="caption">caption</caption>
  1349     <thead>
  1350       <tr>
  1351         <th>col1</th><th>col2</th>
  1352       </tr>
  1353     </thead>
  1354     <tbody>
  1355       <tr>
  1356         <th>col1</th><td>cell2</td>
  1357       </tr>
  1358     </tbody>
  1359     <tfoot>
  1360       <tr>
  1361         <td>cell5</td><td>cell6</td>
  1362       </tr>
  1363     </tfoot>
  1364   </table>
  1366   <p id="cite_container">normal<cite>cite</cite></p>
  1367   <p id="code_container">normal<code>code</code></p>
  1369   <table id="colNcolgroup_table">
  1370     <colgroup>
  1371       <col>
  1372       <col span="2">
  1373     </colgroup>
  1374     <tr>
  1375       <td>Lime</td>
  1376       <td>Lemon</td>
  1377       <td>Orange</td>
  1378     </tr>
  1379   </table>
  1381   <p id="data_container"><data value="8">Eight</data></p>
  1383   <datalist id="datalist">
  1384     <summary id="summary">details</summary>
  1385     <option>Paris</option>
  1386     <option>San Francisco</option>
  1387   </datalist>
  1388   <input id="autocomplete_datalist" list="datalist">
  1390   <dl id="dl">
  1391     <dt>item1</dt><dd>description</dd>
  1392   </dl>
  1394   <p id="del_container">normal<del>Removed</del></p>
  1396   <details id="details" open="open">
  1397     <summary>Information</summary>
  1398     <p>If your browser supports this element, it should allow you to expand and collapse these details.</p>
  1399   </details>
  1401   <p id="dfn_container"><dfn id="def-internet">The Internet</dfn> is a global
  1402     system of interconnected networks that use the Internet Protocol Suite (TCP/IP)
  1403     to serve billions of users worldwide.</p>
  1405   <dialog id="dialog" open="true">This is a dialog</dialog>
  1407   <div id="div">div</div>
  1409   <p id="em_container">normal<em>emphasis</em></p>
  1411   <embed id="embed_plugin_windowless" type="application/x-test"
  1412          width="300" height="300"></embed>
  1413   <embed id="embed_plugin_windowed" type="application/x-test" wmode="window"
  1414          width="300" height="300"></embed>
  1416   <fieldset id="fieldset">
  1417     <legend id="legend">legend</legend>
  1418     <input />
  1419   </fieldset>
  1421   <figure id="figure">
  1422     <img src="../moz.png" alt="An awesome picture">
  1423     <figcaption id="figcaption">Caption for the awesome picture</figcaption>
  1424   </figure>
  1426   <footer id="footer">Some copyright info</footer>
  1427   <article>
  1428     <footer id="footer_in_article">Some copyright info</footer>
  1429   </article>
  1430   <section>
  1431     <footer id="footer_in_section">Some copyright info</footer>
  1432   </section>
  1434   <form id="form"></form>
  1436   <iframe id="frameset_container"
  1437           src="data:text/html,<html><frameset><frame src='data:text/html,hi'></frame></frameset></html>">
  1438   </iframe>
  1440   <h1 id="h1">heading1</h1>
  1441   <h2 id="h2">heading2</h2>
  1442   <h3 id="h3">heading3</h3>
  1443   <h4 id="h4">heading4</h4>
  1444   <h5 id="h5">heading5</h5>
  1445   <h6 id="h6">heading6</h6>
  1447   <header id="header">A logo</header>
  1448   <article>
  1449     <header id="header_in_article">Not logo</header>
  1450   </article>
  1451   <section>
  1452     <header id="header_in_section">Not logo</header>
  1453   </section>
  1455   <hr id="hr">
  1456   <p id="i_container">normal<i>italic</i></p>
  1457   <img id="img" src="../moz.png">
  1459   <input id="input_button" type="button" value="Button">
  1460   <input id="input_checkbox" type="checkbox">
  1461   <input id="input_checkbox_true" type="checkbox" checked>
  1462   <input id="input_file" type="file">
  1463   <input id="input_image" type="image">
  1464   <form>
  1465     <input id="input_image_default" type="image">
  1466   </form>
  1467   <input id="input_submit" type="submit">
  1468   <form>
  1469     <input id="input_submit_default" type="submit">
  1470   </form>
  1471   <input id="input_number" type="number" value="44">
  1472   <input id="input_text" type="text" value="hi">
  1473   <input id="input_search" type="search" value="cats">
  1474   <input id="input_email" type="email" value="me@mozilla.com">
  1475   <input id="input_tel" type="tel" value="111.111.1111">
  1476   <input id="input_url" type="url" value="www.mozilla.com">
  1477   <input id="input_password" type="password" value="44">
  1478   <input id="input_password_readonly" type="password" value="44" readonly>
  1479   <input id="input_radio" type="radio">
  1480   <input id="input_radio_true" type="radio" checked>
  1481   <input id="input_range" type="range">
  1482   <form>
  1483     <input id="input_reset" type="reset">
  1484   </form>
  1486   <p id="ins_container">normal<ins>Inserted</ins></p>
  1487   <p id="kbd_container">normal<kbd>cmd</kbd></p>
  1488   <keygen id="keygen" name="RSA public key" challenge="123456789" keytype="RSA">
  1490   <label id="label">label<input id="label_input"></label>
  1491   <label id="label_for" for="label_for_input">label</label>
  1492   <input id="label_for_input">
  1494   <ul id="ul">
  1495     <li>item1</li>
  1496   </ul>
  1497   <ol id="ol">
  1498     <li>item1</li>
  1499   </ol>
  1501   <main id="main">main</main>
  1503   <map id="map_imagemap" name="atoz_map">
  1504     <area href="http://www.bbc.co.uk/radio4/atoz/index.shtml#b"
  1505           coords="17,0,30,14" alt="b" shape="rect">
  1506     <area href="http://www.bbc.co.uk/radio4/atoz/index.shtml#a"
  1507           coords="0,0,13,14" alt="a" shape="rect">
  1508   </map>
  1509   <img id="imgmap" width="447" height="15"
  1510        usemap="#atoz_map"
  1511        src="../letters.gif">
  1513   <map id="map" title="Navigation Bar" name="mapgroup">
  1514     <p>
  1515       [<a href="#how">Bypass navigation bar</a>]
  1516       [<a href="home.html">Home</a>]
  1517     </p>
  1518   </map>
  1520   <p id="mark_container">normal<mark>highlighted</mark></p>
  1522   <math id="math">
  1523     <mrow>
  1524       <mrow>
  1525         <msup>
  1526           <mi>a</mi>
  1527           <mn>2</mn>
  1528         </msup>
  1529         <mo>+</mo>
  1530         <msup>
  1531           <mi>b</mi>
  1532           <mn>2</mn>
  1533         </msup>
  1534       </mrow>
  1535       <mo>=</mo>
  1536       <msup>
  1537         <mi>c</mi>
  1538         <mn>2</mn>
  1539       </msup>
  1540     </mrow>
  1541   </math>
  1543   <menu id="menu" type="toolbar">
  1544     <li>
  1545       <menu label="File">
  1546         <button type="button" onclick="new()">New...</button>
  1547         <button type="button" onclick="save()">Save...</button>
  1548       </menu>
  1549     </li>
  1550     <li>
  1551       <menu label="Edit">
  1552         <button type="button" onclick="cut()">Cut...</button>
  1553         <button type="button" onclick="copy()">Copy...</button>
  1554         <button type="button" onclick="paste()">Paste...</button>
  1555       </menu>
  1556     </li>
  1557   </menu>
  1559   <meter id="meter" min="0" max="1000" low="300" high="700" value="200">200 Euro</meter>
  1561   <nav id="nav">
  1562     <ul>
  1563       <li><a href="#">Home</a></li>
  1564       <li><a href="#">About</a></li>
  1565       <li><a href="#">Contact</a></li>
  1566     </ul>
  1567   </nav>
  1569   <object id="object_plugin_windowless" type="application/x-test"
  1570          width="300" height="300">
  1571     <param name="foo" value="bar">
  1572   </object>
  1573   <object id="object_plugin_windowed" type="application/x-test" wmode="window"
  1574          width="300" height="300"></object>
  1576   <select id="select_listbox" size="4">
  1577     <optgroup label="Colors">
  1578       <option>Red</option>
  1579       <option>Blue</option>
  1580     </optgroup>
  1581     <option>Animal</option>
  1582   </select>
  1584   <select id="select_listbox_multiselectable" multiple>
  1585     <option>Red</option>
  1586     <option>Blue</option>
  1587     <option>Green</option>
  1588   </select>
  1590   <select id="select_combobox">
  1591     <option>Red</option>
  1592     <option>Blue</option>
  1593     <option>Green</option>
  1594   </select>
  1596   <input id="output_input">
  1597   <output id="output" for="output_input"></output>
  1599   <pre id="pre">pre</pre>
  1601   <progress id="progress" min="0" value="21" max="42"></progress>
  1602   <progress id="progress_indeterminate"></progress>
  1604   <q id="q" cite="http://en.wikipedia.org/wiki/Kenny_McCormick#Cultural_impact">
  1605     Oh my God, they killed Kenny!
  1606   </q>
  1608   <ruby id="ruby">
  1609     漢 <rp>(</rp><rt>Kan</rt><rp>)</rp>
  1610     字 <rp>(</rp><rt>ji</rt><rp>)</rp>
  1611   </ruby>
  1613   <p id="s_container">normal<s>striked</s></p>
  1614   <p id="samp_container">normal<samp>sample</samp></p>
  1615   <section id="section">section</section>
  1616   <p id="small_container">normal<small>small</small></p>
  1617   <span id="span"></span>
  1618   <p id="strong_container">normal<strong>strong</strong></p>
  1619   <p id="sub_container">normal<sub>sub</sub></p>
  1620   <p id="sup_container">normal<sup>sup</sup></p>
  1622   <svg id="svg"></svg>
  1623   <textarea id="textarea"></textarea>
  1625   <p>The concert took place on <time id="time" datetime="2001-05-15 19:00">May 15</time></p>
  1626   <p id="u_container">normal<u>underline</u></p>
  1627   <p id="var_container">An equation: <var>x</var> = <var>y</var></p>
  1629   <video id="video" controls="true">
  1630     <source id="source" src="../bug461281.ogg" type="video/ogg">
  1631   </video>
  1633 </video>
  1634 </body>
  1635 </html>

mercurial