summaryrefslogtreecommitdiffstats
path: root/dom/tests/mochitest/dom-level2-core
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /dom/tests/mochitest/dom-level2-core
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/tests/mochitest/dom-level2-core')
-rw-r--r--dom/tests/mochitest/dom-level2-core/DOMTestCase.js710
-rw-r--r--dom/tests/mochitest/dom-level2-core/exclusions.js50
-rw-r--r--dom/tests/mochitest/dom-level2-core/files/hc_staff.html48
-rw-r--r--dom/tests/mochitest/dom-level2-core/files/hc_staff.svg72
-rw-r--r--dom/tests/mochitest/dom-level2-core/files/hc_staff.xhtml60
-rw-r--r--dom/tests/mochitest/dom-level2-core/files/hc_staff.xml60
-rw-r--r--dom/tests/mochitest/dom-level2-core/files/internalSubset01.js0
-rw-r--r--dom/tests/mochitest/dom-level2-core/files/nodtdstaff.svg11
-rw-r--r--dom/tests/mochitest/dom-level2-core/files/nodtdstaff.xml11
-rw-r--r--dom/tests/mochitest/dom-level2-core/files/staff.dtd17
-rw-r--r--dom/tests/mochitest/dom-level2-core/files/staff.svg72
-rw-r--r--dom/tests/mochitest/dom-level2-core/files/staff.xml57
-rw-r--r--dom/tests/mochitest/dom-level2-core/files/staff2.dtd24
-rw-r--r--dom/tests/mochitest/dom-level2-core/files/staff2.svg13
-rw-r--r--dom/tests/mochitest/dom-level2-core/files/staff2.xml13
-rw-r--r--dom/tests/mochitest/dom-level2-core/files/staffNS.dtd45
-rw-r--r--dom/tests/mochitest/dom-level2-core/files/staffNS.svg73
-rw-r--r--dom/tests/mochitest/dom-level2-core/files/staffNS.xml59
-rw-r--r--dom/tests/mochitest/dom-level2-core/files/svgtest.js0
-rw-r--r--dom/tests/mochitest/dom-level2-core/files/svgunit.js0
-rw-r--r--dom/tests/mochitest/dom-level2-core/files/xhtml-lat1.ent196
-rw-r--r--dom/tests/mochitest/dom-level2-core/files/xhtml-special.ent80
-rw-r--r--dom/tests/mochitest/dom-level2-core/files/xhtml-symbol.ent237
-rw-r--r--dom/tests/mochitest/dom-level2-core/files/xhtml1-frameset.dtd1235
-rw-r--r--dom/tests/mochitest/dom-level2-core/files/xhtml1-strict.dtd65
-rw-r--r--dom/tests/mochitest/dom-level2-core/files/xhtml1-transitional.dtd1201
-rw-r--r--dom/tests/mochitest/dom-level2-core/mochitest.toml511
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_attrgetownerelement01.html134
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_attrgetownerelement02.html127
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_attrgetownerelement03.html119
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_attrgetownerelement04.html140
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_attrgetownerelement05.html138
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_createAttributeNS01.html132
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_createAttributeNS02.html131
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_createAttributeNS03.html164
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_createAttributeNS04.html134
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_createAttributeNS05.html123
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_createAttributeNS06.html126
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_createDocument01.html138
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_createDocument02.html136
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_createDocument03.html141
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_createDocument04.html152
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_createDocument05.html169
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_createDocument06.html139
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_createDocument07.html133
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_createDocumentType01.html136
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_createDocumentType02.html168
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_createDocumentType03.html132
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_createElementNS01.html132
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_createElementNS02.html132
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_createElementNS03.html166
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_createElementNS04.html134
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_createElementNS05.html123
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_createElementNS06.html128
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS01.html127
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS02.html151
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS03.html144
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS04.html139
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS05.html135
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS06.html135
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS07.html129
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentcreateelementNS01.html137
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentcreateelementNS02.html128
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentcreateelementNS05.html129
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentcreateelementNS06.html136
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentgetelementbyid01.html118
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentgetelementsbytagnameNS01.html127
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentgetelementsbytagnameNS02.html129
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentgetelementsbytagnameNS03.html118
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentgetelementsbytagnameNS04.html122
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentgetelementsbytagnameNS05.html120
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentimportnode01.html139
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentimportnode02.html156
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentimportnode03.html140
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentimportnode04.html147
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentimportnode05.html152
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentimportnode06.html128
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentimportnode07.html135
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentimportnode08.html138
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentimportnode09.html131
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentimportnode10.html131
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentimportnode11.html133
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentimportnode12.html137
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentimportnode13.html131
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentimportnode14.html136
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentimportnode15.html139
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentimportnode17.html139
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentimportnode18.html143
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentimportnode19.html175
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentimportnode20.html168
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentimportnode21.html178
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documentimportnode22.html181
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documenttypepublicid01.html123
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_documenttypesystemid01.html124
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocument03.html140
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocument04.html134
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocument05.html133
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocument07.html130
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocumenttype01.html144
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocumenttype02.html148
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocumenttype04.html150
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_domimplementationfeaturecore.html134
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_domimplementationfeaturexmlversion2.html134
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_domimplementationhasfeature01.html148
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementgetattributenodens01.html146
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementgetattributenodens02.html123
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementgetattributenodens03.html126
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementgetattributens02.html123
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementgetelementsbytagnamens02.html120
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementgetelementsbytagnamens04.html136
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementgetelementsbytagnamens05.html121
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementhasattribute01.html118
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementhasattribute02.html121
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementhasattribute03.html125
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementhasattribute04.html122
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementhasattributens01.html122
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementhasattributens02.html126
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementhasattributens03.html130
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementremoveattributens01.html124
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementsetattributenodens01.html147
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementsetattributenodens02.html136
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementsetattributenodens03.html138
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementsetattributenodens04.html134
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementsetattributenodens05.html144
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementsetattributenodens06.html142
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementsetattributens01.html126
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementsetattributens02.html129
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementsetattributens03.html132
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementsetattributens04.html142
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementsetattributens05.html128
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementsetattributens08.html140
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_elementsetattributensurinull.html142
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getAttributeNS01.html127
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getAttributeNS02.html133
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getAttributeNS03.html126
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getAttributeNS04.html131
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getAttributeNS05.html124
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getAttributeNodeNS01.html126
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getAttributeNodeNS02.html127
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getElementById01.html122
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getElementById02.html118
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS01.html128
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS02.html131
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS03.html148
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS04.html139
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS05.html122
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS06.html121
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS07.html121
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS08.html133
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS09.html137
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS10.html153
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS11.html143
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS12.html123
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS13.html123
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS14.html123
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getNamedItemNS01.html130
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getNamedItemNS02.html130
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getNamedItemNS03.html123
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_getNamedItemNS04.html123
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_hasAttribute01.html120
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_hasAttribute02.html122
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_hasAttribute03.html120
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_hasAttribute04.html122
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_hasAttributeNS01.html125
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_hasAttributeNS02.html124
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_hasAttributeNS03.html125
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_hasAttributeNS04.html127
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_hasAttributeNS05.html125
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_hasAttributes01.html120
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_hasAttributes02.html120
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_hc_namednodemapinvalidtype1.html133
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_hc_nodedocumentfragmentnormalize1.html130
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_hc_nodedocumentfragmentnormalize2.html123
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_importNode01.html181
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_importNode02.html148
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_importNode03.html149
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_importNode04.html149
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_importNode05.html155
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_importNode06.html151
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_importNode07.html154
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_importNode08.html148
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_importNode09.html166
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_importNode10.html153
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_importNode11.html149
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_importNode12.html162
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_importNode13.html158
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_importNode14.html154
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_importNode15.html149
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_importNode16.html149
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_importNode17.html143
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_localName01.html128
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_localName02.html122
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_localName04.html124
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namednodemapgetnameditemns01.html136
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namednodemapgetnameditemns02.html128
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namednodemapgetnameditemns03.html132
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namednodemapgetnameditemns04.html133
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namednodemapgetnameditemns05.html125
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namednodemapgetnameditemns06.html138
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns01.html124
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns02.html136
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns03.html133
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns04.html128
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns05.html167
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns06.html134
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns07.html134
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns08.html137
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns09.html129
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns01.html133
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns02.html132
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns03.html163
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns04.html147
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns05.html155
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns06.html138
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns07.html144
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns08.html141
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns09.html148
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns10.html146
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns11.html147
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namespaceURI01.html128
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namespaceURI02.html126
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namespaceURI03.html123
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_namespaceURI04.html136
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_nodegetlocalname03.html138
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_nodegetnamespaceuri03.html142
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_nodegetownerdocument01.html126
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_nodegetownerdocument02.html133
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_nodegetprefix03.html138
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_nodehasattributes01.html123
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_nodehasattributes02.html118
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_nodehasattributes03.html119
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_nodehasattributes04.html138
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_nodenormalize01.html238
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_normalize01.html136
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_ownerDocument01.html117
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_ownerElement01.html129
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_ownerElement02.html120
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_prefix01.html122
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_prefix03.html123
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_prefix04.html121
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_publicId01.html121
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_removeAttributeNS01.html155
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_removeAttributeNS02.html146
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_removeNamedItemNS01.html131
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_removeNamedItemNS02.html141
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_removeNamedItemNS03.html163
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_setAttributeNS01.html134
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_setAttributeNS02.html133
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_setAttributeNS03.html158
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_setAttributeNS04.html144
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_setAttributeNS05.html132
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_setAttributeNS06.html135
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_setAttributeNS07.html136
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_setAttributeNS09.html144
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_setAttributeNS10.html129
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_setAttributeNodeNS01.html149
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_setAttributeNodeNS02.html160
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_setAttributeNodeNS03.html130
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_setAttributeNodeNS04.html132
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_setAttributeNodeNS05.html155
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_setNamedItemNS01.html146
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_setNamedItemNS02.html157
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_setNamedItemNS03.html138
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_setNamedItemNS04.html165
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_setNamedItemNS05.html136
-rw-r--r--dom/tests/mochitest/dom-level2-core/test_systemId01.html122
266 files changed, 37540 insertions, 0 deletions
diff --git a/dom/tests/mochitest/dom-level2-core/DOMTestCase.js b/dom/tests/mochitest/dom-level2-core/DOMTestCase.js
new file mode 100644
index 0000000000..2d2b2cf645
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/DOMTestCase.js
@@ -0,0 +1,710 @@
+/*
+Copyright (c) 2001-2005 World Wide Web Consortium,
+(Massachusetts Institute of Technology, Institut National de
+Recherche en Informatique et en Automatique, Keio University). All
+Rights Reserved. This program is distributed under the W3C's Software
+Intellectual Property License. This program is distributed in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+PURPOSE.
+See W3C License http://www.w3.org/Consortium/Legal/ for more details.
+*/
+
+function assertNull(descr, actual) {
+ return ok(actual === null, descr);
+}
+
+
+function assertNotNull(descr, actual) {
+ return ok(actual !== null, descr);
+}
+
+function assertTrue(descr, actual) {
+ return ok(actual === true, descr);
+}
+
+function assertFalse(descr, actual) {
+ return ok(actual === false, descr);
+}
+
+function assertEquals(descr, expected, actual) {
+ return is(expected, actual, descr);
+}
+
+ function assertSize(descr, expected, actual) {
+ ok(actual !== null, descr);
+/*
+ // Work around too strict checks.
+ if (!actual) {
+ ok(actual, "[assertSize()] 'actual' has a value");
+ return;
+ }
+*/
+
+ is(actual.length, expected, descr);
+ }
+
+ function assertEqualsAutoCase(context, descr, expected, actual) {
+ if (builder.contentType == "text/html") {
+ if(context == "attribute") {
+ is(actual.toLowerCase(), expected.toLowerCase(), descr);
+ } else {
+ is(actual, expected.toUpperCase(), descr);
+ }
+ } else {
+ is(expected, actual, descr);
+ }
+ }
+
+
+ function assertEqualsCollectionAutoCase(context, descr, expected, actual) {
+ //
+ // if they aren't the same size, they aren't equal
+ is(actual.length, expected.length, descr);
+
+ //
+ // if there length is the same, then every entry in the expected list
+ // must appear once and only once in the actual list
+ var expectedLen = expected.length;
+ var expectedValue;
+ var actualLen = actual.length;
+ var i;
+ var j;
+ var matches;
+ for(i = 0; i < expectedLen; i++) {
+ matches = 0;
+ expectedValue = expected[i];
+ for(j = 0; j < actualLen; j++) {
+ if (builder.contentType == "text/html") {
+ if (context == "attribute") {
+ if (expectedValue.toLowerCase() == actual[j].toLowerCase()) {
+ matches++;
+ }
+ } else {
+ if (expectedValue.toUpperCase() == actual[j]) {
+ matches++;
+ }
+ }
+ } else {
+ if(expectedValue == actual[j]) {
+ matches++;
+ }
+ }
+ }
+ if(matches == 0) {
+ ok(false, descr + ": No match found for " + expectedValue);
+ }
+ if(matches > 1) {
+ ok(false, descr + ": Multiple matches found for " + expectedValue);
+ }
+ }
+ }
+
+ function assertEqualsCollection(descr, expected, actual) {
+ //
+ // if they aren't the same size, they aren't equal
+ is(actual.length, expected.length, descr);
+ //
+ // if there length is the same, then every entry in the expected list
+ // must appear once and only once in the actual list
+ var expectedLen = expected.length;
+ var expectedValue;
+ var actualLen = actual.length;
+ var i;
+ var j;
+ var matches;
+ for(i = 0; i < expectedLen; i++) {
+ matches = 0;
+ expectedValue = expected[i];
+ for(j = 0; j < actualLen; j++) {
+ if(expectedValue == actual[j]) {
+ matches++;
+ }
+ }
+ if(matches == 0) {
+ ok(false, descr + ": No match found for " + expectedValue);
+ }
+ if(matches > 1) {
+ ok(false, descr + ": Multiple matches found for " + expectedValue);
+ }
+ }
+ }
+
+
+ function assertEqualsListAutoCase(context, descr, expected, actual) {
+ var minLength = expected.length;
+ if (actual.length < minLength) {
+ minLength = actual.length;
+ }
+ //
+ for(var i = 0; i < minLength; i++) {
+ assertEqualsAutoCase(context, descr, expected[i], actual[i]);
+ }
+ //
+ // if they aren't the same size, they aren't equal
+ is(actual.length, expected.length, descr);
+ }
+
+
+ function assertEqualsList(descr, expected, actual) {
+ var minLength = expected.length;
+ if (actual.length < minLength) {
+ minLength = actual.length;
+ }
+ //
+ for(var i = 0; i < minLength; i++) {
+ if(expected[i] != actual[i]) {
+ is(actual[i], expected[i], descr);
+ }
+ }
+ //
+ // if they aren't the same size, they aren't equal
+ is(actual.length, expected.length, descr);
+ }
+
+ function assertInstanceOf(descr, type, obj) {
+ if(type == "Attr") {
+ is(2, obj.nodeType, descr);
+ var specd = obj.specified;
+ }
+/*
+ else {
+ // Ensure at least one SimpleTest check is reported. (Bug 483992)
+ todo_is(type, "Attr", "[DOMTestCase.assertInstanceOf()] Fake default check.");
+ }
+*/
+ }
+
+ function assertSame(descr, expected, actual) {
+ if(expected != actual) {
+ is(expected.nodeType, actual.nodeType, descr);
+ is(expected.nodeValue, actual.nodeValue, descr);
+ }
+/*
+ else {
+ // Ensure at least one SimpleTest check is reported. (Bug 483992)
+ todo_isnot(expected, actual, "[DOMTestCase.assertSame()] Fake default check." +
+ " (Type=" + actual.nodeType + ", Value=" + actual.nodeValue + ")");
+ }
+*/
+ }
+
+ function assertURIEquals(assertID, scheme, path, host, file, name, query, fragment, isAbsolute, actual) {
+ //
+ // URI must be non-null
+ ok(assertID, "[assertURIEquals()] 'assertID' has a value");
+ ok(actual, "[assertURIEquals()] 'actual' has a value");
+/*
+ // Add missing early return.
+ if (!actual)
+ return;
+*/
+
+ var uri = actual;
+
+ var lastPound = actual.lastIndexOf("#");
+ var actualFragment = "";
+ if(lastPound != -1) {
+ //
+ // substring before pound
+ //
+ uri = actual.substring(0,lastPound);
+ actualFragment = actual.substring(lastPound+1);
+ }
+ if(fragment != null) is(actualFragment, fragment, assertID);
+
+ var lastQuestion = uri.lastIndexOf("?");
+ var actualQuery = "";
+ if(lastQuestion != -1) {
+ //
+ // substring before pound
+ //
+ uri = actual.substring(0,lastQuestion);
+ actualQuery = actual.substring(lastQuestion+1);
+ }
+ if(query != null) is(actualQuery, query, assertID);
+
+ var firstColon = uri.indexOf(":");
+ var firstSlash = uri.indexOf("/");
+ var actualPath = uri;
+ var actualScheme = "";
+ if(firstColon != -1 && firstColon < firstSlash) {
+ actualScheme = uri.substring(0,firstColon);
+ actualPath = uri.substring(firstColon + 1);
+ }
+
+ if(scheme != null) {
+ is(scheme, actualScheme, assertID);
+ }
+
+ if(path != null) {
+ is(path, actualPath, assertID);
+ }
+
+ if(host != null) {
+ var actualHost = "";
+ if(actualPath.substring(0,2) == "//") {
+ var termSlash = actualPath.substring(2).indexOf("/") + 2;
+ actualHost = actualPath.substring(0,termSlash);
+ }
+ is(actualHost, host, assertID);
+ }
+
+ if(file != null || name != null) {
+ var actualFile = actualPath;
+ var finalSlash = actualPath.lastIndexOf("/");
+ if(finalSlash != -1) {
+ actualFile = actualPath.substring(finalSlash+1);
+ }
+ if (file != null) {
+ is(actualFile, file, assertID);
+ }
+ if (name != null) {
+ var actualName = actualFile;
+ var finalDot = actualFile.lastIndexOf(".");
+ if (finalDot != -1) {
+ actualName = actualName.substring(0, finalDot);
+ }
+ is(actualName, name, assertID);
+ }
+ }
+
+ if(isAbsolute != null) {
+ is(actualPath.substring(0,1) == "/", isAbsolute, assertID);
+ }
+ }
+
+
+// size() used by assertSize element
+function size(collection)
+{
+ return collection.length;
+}
+
+function same(expected, actual)
+{
+ return expected === actual;
+}
+
+function getSuffix(contentType) {
+ switch(contentType) {
+ case "text/html":
+ return ".html";
+
+ case "text/xml":
+ return ".xml";
+
+ case "application/xhtml+xml":
+ return ".xhtml";
+
+ case "image/svg+xml":
+ return ".svg";
+
+ case "text/mathml":
+ return ".mml";
+ }
+ return ".html";
+}
+
+function equalsAutoCase(context, expected, actual) {
+ if (builder.contentType == "text/html") {
+ if (context == "attribute") {
+ return expected.toLowerCase() == actual;
+ }
+ return expected.toUpperCase() == actual;
+ }
+ return expected == actual;
+}
+
+function catchInitializationError(blder, ex) {
+ if (blder == null) {
+ alert(ex);
+ } else {
+ blder.initializationError = ex;
+ blder.initializationFatalError = ex;
+ }
+}
+
+function checkInitialization(blder, testname) {
+ if (blder.initializationError != null) {
+ // Fake a "warn()" function, as it was missing :-|
+ function warn(msg) {
+ info("[checkInitialization() warning] " + msg);
+ }
+
+ if (blder.skipIncompatibleTests) {
+ warn(testname + " not run:" + blder.initializationError);
+ return blder.initializationError;
+ } else {
+ //
+ // if an exception was thrown
+ // rethrow it and do not run the test
+ if (blder.initializationFatalError != null) {
+ throw blder.initializationFatalError;
+ } else {
+ //
+ // might be recoverable, warn but continue the test
+ warn(testname + ": " + blder.initializationError);
+ }
+ }
+ }
+ return null;
+}
+function createTempURI(scheme) {
+ if (scheme == "http") {
+ return "http://localhost:8080/webdav/tmp" + Math.floor(Math.random() * 100000) + ".xml";
+ }
+ return "file:///tmp/domts" + Math.floor(Math.random() * 100000) + ".xml";
+}
+
+
+function EventMonitor() {
+ this.atEvents = new Array();
+ this.bubbledEvents = new Array();
+ this.capturedEvents = new Array();
+ this.allEvents = new Array();
+}
+
+EventMonitor.prototype.handleEvent = function(evt) {
+ switch(evt.eventPhase) {
+ case 1:
+ monitor.capturedEvents[monitor.capturedEvents.length] = evt;
+ break;
+
+ case 2:
+ monitor.atEvents[monitor.atEvents.length] = evt;
+ break;
+
+ case 3:
+ monitor.bubbledEvents[monitor.bubbledEvents.length] = evt;
+ break;
+ }
+ monitor.allEvents[monitor.allEvents.length] = evt;
+}
+
+function DOMErrorImpl(err) {
+ this.severity = err.severity;
+ this.message = err.message;
+ this.type = err.type;
+ this.relatedException = err.relatedException;
+ this.relatedData = err.relatedData;
+ this.location = err.location;
+}
+
+
+
+function DOMErrorMonitor() {
+ this.allErrors = new Array();
+}
+
+DOMErrorMonitor.prototype.handleError = function(err) {
+ errorMonitor.allErrors[errorMonitor.allErrors.length] = new DOMErrorImpl(err);
+}
+
+DOMErrorMonitor.prototype.assertLowerSeverity = function(id, severity) {
+ var i;
+ for (i = 0; i < errorMonitor.allErrors.length; i++) {
+ if (errorMonitor.allErrors[i].severity >= severity) {
+ assertEquals(id, severity - 1, errorMonitor.allErrors[i].severity);
+ }
+ }
+}
+
+function UserDataNotification(operation, key, data, src, dst) {
+ this.operation = operation;
+ this.key = key;
+ this.data = data;
+ this.src = src;
+ this.dst = dst;
+}
+
+function UserDataMonitor() {
+ this.allNotifications = new Array();
+}
+
+UserDataMonitor.prototype.handle = function(operation, key, data, src, dst) {
+ userDataMonitor.allNotifications[this.allNotifications.length] =
+ new UserDataNotification(operation, key, data, src, dst);
+}
+
+
+
+function IFrameBuilder() {
+ this.contentType = "text/html";
+ this.supportedContentTypes = [ "text/html",
+ "text/xml",
+ "image/svg+xml",
+ "application/xhtml+xml" ];
+
+ this.supportsAsyncChange = false;
+ this.async = true;
+ this.fixedAttributeNames = [
+ "validating", "expandEntityReferences", "coalescing",
+ "signed", "hasNullString", "ignoringElementContentWhitespace", "namespaceAware", "ignoringComments", "schemaValidating"];
+
+ this.fixedAttributeValues = [false, true, false, true, true , false, false, true, false ];
+ this.configurableAttributeNames = [ ];
+ this.configurableAttributeValues = [ ];
+ this.initializationError = null;
+ this.initializationFatalError = null;
+ this.skipIncompatibleTests = false;
+}
+
+IFrameBuilder.prototype.hasFeature = function(feature, version) {
+ return document.implementation.hasFeature(feature, version);
+}
+
+IFrameBuilder.prototype.getImplementation = function() {
+ return document.implementation;
+}
+
+IFrameBuilder.prototype.setContentType = function(contentType) {
+ this.contentType = contentType;
+ if (contentType == "text/html") {
+ this.fixedAttributeValues[6] = false;
+ } else {
+ this.fixedAttributeValues[6] = true;
+ }
+}
+
+
+
+IFrameBuilder.prototype.preload = function(frame, varname, url) {
+ var suffix;
+ if (this.contentType == "text/html" ||
+ this.contentType == "application/xhtml+xml") {
+ if (url.substring(0,5) == "staff" || url == "nodtdstaff" ||
+ url == "datatype_normalization") {
+ suffix = ".xml";
+ }
+ }
+
+ if (!suffix) suffix = getSuffix(this.contentType);
+
+ var iframe = document.createElement("iframe");
+ var srcname = url + suffix;
+ iframe.setAttribute("name", srcname);
+ iframe.setAttribute("src", fileBase + srcname);
+ //
+ // HTML and XHTML have onload attributes that will invoke loadComplete
+ //
+ if (suffix.indexOf("html") < 0) {
+ iframe.addEventListener("load", loadComplete, false);
+ }
+ document.getElementsByTagName("body").item(0).appendChild(iframe);
+ return 0;
+}
+
+IFrameBuilder.prototype.load = function(frame, varname, url) {
+ var suffix;
+ if (url.substring(0,5) == "staff" || url == "nodtdstaff" || url == "datatype_normalization") {
+ suffix = ".xml";
+ }
+ if (!suffix) suffix = getSuffix(this.contentType);
+ var name = url + suffix;
+ var iframes = document.getElementsByTagName("iframe");
+ for(var i = 0; i < iframes.length; i++) {
+ if (iframes.item(i).getAttribute("name") == name) {
+ var item = iframes.item(i);
+ if (typeof(item.contentDocument) != 'undefined') {
+ return item.contentDocument;
+ }
+ if (typeof(item.document) != 'undefined') {
+ return item.document;
+ }
+ return null;
+ }
+ }
+ return null;
+}
+
+IFrameBuilder.prototype.getImplementationAttribute = function(attr) {
+ for (var i = 0; i < this.fixedAttributeNames.length; i++) {
+ if (this.fixedAttributeNames[i] == attr) {
+ return this.fixedAttributeValues[i];
+ }
+ }
+ throw "Unrecognized implementation attribute: " + attr;
+}
+
+
+
+IFrameBuilder.prototype.setImplementationAttribute = function(attribute, value) {
+ var supported = this.getImplementationAttribute(attribute);
+ if (supported != value) {
+ this.initializationError = "IFrame loader does not support " + attribute + "=" + value;
+ }
+}
+
+
+IFrameBuilder.prototype.canSetImplementationAttribute = function(attribute, value) {
+ var supported = this.getImplementationAttribute(attribute);
+ return (supported == value);
+}
+
+
+function createBuilder(implementation) {
+ if (implementation == null) {
+ return new IFrameBuilder();
+ }
+ switch(implementation) {
+/* case "msxml3":
+ return new MSXMLBuilder("Msxml2.DOMDocument.3.0");
+
+ case "msxml4":
+ return new MSXMLBuilder("Msxml2.DOMDocument.4.0");*/
+
+ case "mozillaXML":
+ return new MozillaXMLBuilder();
+/*
+ case "svgplugin":
+ return new SVGPluginBuilder();
+
+ case "dom3ls":
+ return new DOM3LSBuilder(); */
+
+ case "iframe":
+ return new IFrameBuilder();
+
+ case "xmlhttprequest":
+ return new XMLHttpRequestBuilder();
+
+ default:
+ alert ("unrecognized implementation " + implementation);
+ }
+ return new IFrameBuilder();
+}
+
+function checkFeature(feature, version)
+{
+ if (!builder.hasFeature(feature, version))
+ {
+ //
+ // don't throw exception so that users can select to ignore the precondition
+ //
+ builder.initializationError = "builder does not support feature " + feature + " version " + version;
+ }
+}
+
+function createConfiguredBuilder() {
+ var builder = null;
+ var contentType = null;
+ var i;
+ var contentTypeSet = false;
+ var parm = null;
+ builder = new IFrameBuilder();
+ return builder;
+}
+
+
+function preload(frame, varname, url) {
+ return builder.preload(frame, varname, url);
+}
+
+function load(frame, varname, url) {
+ return builder.load(frame, varname, url);
+}
+
+function getImplementationAttribute(attr) {
+ return builder.getImplementationAttribute(attr);
+}
+
+
+function setImplementationAttribute(attribute, value) {
+ builder.setImplementationAttribute(attribute, value);
+}
+
+function setAsynchronous(value) {
+ if (builder.supportsAsyncChange) {
+ builder.async = value;
+ } else {
+ update();
+ }
+}
+
+
+function createXPathEvaluator(doc) {
+ try {
+ return doc.getFeature("XPath", null);
+ }
+ catch(ex) {
+ }
+ return doc;
+}
+
+function toLowerArray(src) {
+ var newArray = new Array();
+ var i;
+ for (i = 0; i < src.length; i++) {
+ newArray[i] = src[i].toLowerCase();
+ }
+ return newArray;
+}
+
+function MSXMLBuilder_onreadystatechange() {
+ if (builder.parser.readyState == 4) {
+ loadComplete();
+ }
+}
+
+
+
+var fileBase = location.href;
+if (fileBase.indexOf('?') != -1) {
+ fileBase = fileBase.substring(0, fileBase.indexOf('?'));
+}
+fileBase = fileBase.substring(0, fileBase.lastIndexOf('/') + 1) + "files/";
+
+function getResourceURI(name, scheme, contentType) {
+ return fileBase + name + getSuffix(contentType);
+}
+
+
+function getImplementation() {
+ return builder.getImplementation();
+}
+
+// Count of failures overridden as todos.
+var gFailuresAsTodos = 0;
+
+// Override SimpleTest result logger.
+var ST_logResult = SimpleTest._logResult;
+SimpleTest._logResult = function overrideSTlR(test, passString, failString) {
+ if (todoTests[docName] && !test.result && !test.todo) {
+ test.name = "[failure as todo] " + test.name;
+ test.todo = true;
+ failString = "TEST-KNOWN-FAIL";
+
+ ++gFailuresAsTodos;
+ }
+
+ ST_logResult(test, passString, failString);
+}
+
+window.doc = window;
+SimpleTest.waitForExplicitFinish();
+addLoadEvent(function(){ setUpPage(); });
+
+// Actual marking code is in overrideSTlR() now.
+function markTodos() {
+ if (todoTests[docName]) {
+ isnot(gFailuresAsTodos, 0, "test marked todo should have failed somewhere");
+ }
+}
+
+function runJSUnitTests() {
+ builder = createConfiguredBuilder();
+ try {
+ var tests = exposeTestFunctionNames();
+ for (var i = 0; i < tests.length; i++) {
+ window[tests[i]]();
+ }
+ } catch (ex) {
+ if (todoTests[docName]) {
+ todo(false, "[failure as todo] Test threw exception: " + ex);
+ ++gFailuresAsTodos;
+ } else {
+ ok(false, "Test threw exception: " + ex);
+ }
+ }
+}
diff --git a/dom/tests/mochitest/dom-level2-core/exclusions.js b/dom/tests/mochitest/dom-level2-core/exclusions.js
new file mode 100644
index 0000000000..cc5a0da12f
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/exclusions.js
@@ -0,0 +1,50 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* vim:set ts=2 sw=2 sts=2 et: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+dtdTests = ["attrgetownerelement01", "documentimportnode03",
+ "documentimportnode04", "documentimportnode19",
+ "documentimportnode20", "documentimportnode21",
+ "documentimportnode22",
+ "elementgetattributenodens03", "elementgetattributens02",
+ "elementhasattribute02", "getAttributeNS01", "getElementById01",
+ "getNamedItemNS03", "getNamedItemNS04", "hasAttribute02",
+ "hasAttributeNS04", "importNode07", "importNode09",
+ "importNode10", "importNode11", "importNode12", "importNode13",
+ "localName02", "namednodemapgetnameditemns01",
+ "namednodemapremovenameditemns02",
+ "namednodemapremovenameditemns05", "namednodemapsetnameditemns05",
+ "namednodemapsetnameditemns09", "namednodemapsetnameditemns10",
+ "namednodemapsetnameditemns11", "namespaceURI01",
+ "nodeissupported04", "nodenormalize01", "nodesetprefix04",
+ "prefix08", "removeAttributeNS01", "removeAttributeNS02",
+ "removeNamedItemNS03", "setAttributeNodeNS02", "setAttributeNS03",
+ "setNamedItemNS04"];
+
+bug371552 = ["elementhasattributens02"];
+wrongDocError = ["elementsetattributenodens05", "namednodemapsetnameditemns03",
+ "setAttributeNodeNS05", "setNamedItemNS02"];
+attrExodus = ["elementsetattributenodens06", "importNode01",
+ "hc_namednodemapinvalidtype1", "nodehasattributes02"];
+bogusPrefix = ["nodesetprefix05", "nodesetprefix09", "prefix06", "prefix07"];
+prefixReplacement = ["setAttributeNodeNS04"];
+
+function concat(lst/*...*/) {
+ var f = [];
+ if (arguments !== null) {
+ f = arguments[0];
+ }
+ for (var i = 1; i < arguments.length; i++) {
+ f = f.concat(arguments[i]);
+ }
+ return f;
+}
+
+var todoTests = {};
+var exclusions = concat(dtdTests, bug371552, wrongDocError, attrExodus,
+ bogusPrefix, prefixReplacement);
+for (var excludedTestName in exclusions) {
+ todoTests[exclusions[excludedTestName]] = true;
+}
diff --git a/dom/tests/mochitest/dom-level2-core/files/hc_staff.html b/dom/tests/mochitest/dom-level2-core/files/hc_staff.html
new file mode 100644
index 0000000000..9acf750493
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/files/hc_staff.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd" >
+<!-- This is comment number 1.-->
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>hc_staff</title><script type="text/javascript" src="svgunit.js"></script><script charset="UTF-8" type="text/javascript" src="svgtest.js"></script><script type='text/javascript'>function loadComplete() { startTest(); }</script></head><body onload="parent.loadComplete()">
+ <p>
+ <em>EMP0001</em>
+ <strong>Margaret Martin</strong>
+ <code>Accountant</code>
+ <sup>56,000</sup>
+ <var>Female</var>
+ <acronym title="Yes">1230 North Ave. Dallas, Texas 98551</acronym>
+ </p>
+ <p>
+ <em>EMP0002</em>
+ <strong>Martha RaynoldsThis is a CDATASection with EntityReference number 2 &amp;ent2;
+This is an adjacent CDATASection with a reference to a tab &amp;tab;</strong>
+ <code>Secretary</code>
+ <sup>35,000</sup>
+ <var>Female</var>
+ <acronym title="Yes" class="Yes">&beta; Dallas, &gamma;
+ 98554</acronym>
+ </p>
+ <p>
+ <em>EMP0003</em>
+ <strong>Roger
+ Jones</strong>
+ <code>Department Manager</code>
+ <sup>100,000</sup>
+ <var>&delta;</var>
+ <acronym title="Yes" class="No">PO Box 27 Irving, texas 98553</acronym>
+ </p>
+ <p>
+ <em>EMP0004</em>
+ <strong>Jeny Oconnor</strong>
+ <code>Personnel Director</code>
+ <sup>95,000</sup>
+ <var>Female</var>
+ <acronym title="Yes" class="Y&alpha;">27 South Road. Dallas, Texas 98556</acronym>
+ </p>
+ <p>
+ <em>EMP0005</em>
+ <strong>Robert Myers</strong>
+ <code>Computer Specialist</code>
+ <sup>90,000</sup>
+ <var>male</var>
+ <acronym title="Yes">1821 Nordic. Road, Irving Texas 98558</acronym>
+ </p>
+</body></html>
diff --git a/dom/tests/mochitest/dom-level2-core/files/hc_staff.svg b/dom/tests/mochitest/dom-level2-core/files/hc_staff.svg
new file mode 100644
index 0000000000..cd0cc47f9a
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/files/hc_staff.svg
@@ -0,0 +1,72 @@
+<?xml version="1.0"?><?TEST-STYLE PIDATA?>
+<!DOCTYPE svg
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "xhtml1-strict.dtd" [
+ <!ENTITY alpha "&#945;">
+ <!ENTITY beta "&#946;">
+ <!ENTITY gamma "&#947;">
+ <!ENTITY delta "&#948;">
+ <!ENTITY epsilon "&#949;">
+ <!ENTITY alpha "&#950;">
+ <!NOTATION notation1 PUBLIC "notation1File">
+ <!NOTATION notation2 SYSTEM "notation2File">
+ <!ATTLIST acronym dir CDATA "ltr">
+ <!ATTLIST head xmlns CDATA #IMPLIED>
+ <!ATTLIST body xmlns CDATA #IMPLIED>
+ <!ELEMENT svg (rect, script, head, body)>
+ <!ATTLIST svg xmlns CDATA #IMPLIED>
+ <!ELEMENT rect EMPTY>
+ <!ATTLIST rect
+ x CDATA #IMPLIED
+ y CDATA #IMPLIED
+ width CDATA #IMPLIED
+ height CDATA #IMPLIED>
+ <!ENTITY svgunit SYSTEM "svgunit.js">
+ <!ENTITY svgtest SYSTEM "svgtest.js">
+]>
+<!-- This is comment number 1.-->
+<svg xmlns='http://www.w3.org/2000/svg'><rect x="0" y="0" width="100" height="100"/><script type="text/ecmascript">&svgtest;&svgunit;</script><head xmlns='http://www.w3.org/1999/xhtml'><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><title>hc_staff</title></head><body xmlns='http://www.w3.org/1999/xhtml'>
+ <p>
+ <em>EMP0001</em>
+ <strong>Margaret Martin</strong>
+ <code>Accountant</code>
+ <sup>56,000</sup>
+ <var>Female</var>
+ <acronym title="Yes">1230 North Ave. Dallas, Texas 98551</acronym>
+ </p>
+ <p>
+ <em>EMP0002</em>
+ <strong>Martha RaynoldsThis is a CDATASection with EntityReference number 2 &amp;ent2;
+This is an adjacent CDATASection with a reference to a tab &amp;tab;</strong>
+ <code>Secretary</code>
+ <sup>35,000</sup>
+ <var>Female</var>
+ <acronym title="Yes" class="Yes">&beta; Dallas, &gamma;
+ 98554</acronym>
+ </p>
+ <p>
+ <em>EMP0003</em>
+ <strong>Roger
+ Jones</strong>
+ <code>Department Manager</code>
+ <sup>100,000</sup>
+ <var>&delta;</var>
+ <acronym title="Yes" class="No">PO Box 27 Irving, texas 98553</acronym>
+ </p>
+ <p>
+ <em>EMP0004</em>
+ <strong>Jeny Oconnor</strong>
+ <code>Personnel Director</code>
+ <sup>95,000</sup>
+ <var>Female</var>
+ <acronym title="Yes" class="Y&alpha;">27 South Road. Dallas, Texas 98556</acronym>
+ </p>
+ <p>
+ <em>EMP0005</em>
+ <strong>Robert Myers</strong>
+ <code>Computer Specialist</code>
+ <sup>90,000</sup>
+ <var>male</var>
+ <acronym title="Yes">1821 Nordic. Road, Irving Texas 98558</acronym>
+ </p>
+</body></svg>
diff --git a/dom/tests/mochitest/dom-level2-core/files/hc_staff.xhtml b/dom/tests/mochitest/dom-level2-core/files/hc_staff.xhtml
new file mode 100644
index 0000000000..2df9a74154
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/files/hc_staff.xhtml
@@ -0,0 +1,60 @@
+<?xml version="1.0"?><?TEST-STYLE PIDATA?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "xhtml1-strict.dtd" [
+ <!ENTITY alpha "&#945;">
+ <!ENTITY beta "&#946;">
+ <!ENTITY gamma "&#947;">
+ <!ENTITY delta "&#948;">
+ <!ENTITY epsilon "&#949;">
+ <!ENTITY alpha "&#950;">
+ <!NOTATION notation1 PUBLIC "notation1File">
+ <!NOTATION notation2 SYSTEM "notation2File">
+ <!ATTLIST acronym dir CDATA "ltr">
+]>
+<!-- This is comment number 1.-->
+<html xmlns='http://www.w3.org/1999/xhtml'><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><title>hc_staff</title><script type="text/javascript" src="svgunit.js"/><script charset="UTF-8" type="text/javascript" src="svgtest.js"/><script type='text/javascript'>function loadComplete() { startTest(); }</script></head><body onload="parent.loadComplete()">
+ <p>
+ <em>EMP0001</em>
+ <strong>Margaret Martin</strong>
+ <code>Accountant</code>
+ <sup>56,000</sup>
+ <var>Female</var>
+ <acronym title="Yes">1230 North Ave. Dallas, Texas 98551</acronym>
+ </p>
+ <p>
+ <em>EMP0002</em>
+ <strong>Martha RaynoldsThis is a CDATASection with EntityReference number 2 &amp;ent2;
+This is an adjacent CDATASection with a reference to a tab &amp;tab;</strong>
+ <code>Secretary</code>
+ <sup>35,000</sup>
+ <var>Female</var>
+ <acronym title="Yes" class="Yes">&beta; Dallas, &gamma;
+ 98554</acronym>
+ </p>
+ <p>
+ <em>EMP0003</em>
+ <strong>Roger
+ Jones</strong>
+ <code>Department Manager</code>
+ <sup>100,000</sup>
+ <var>&delta;</var>
+ <acronym title="Yes" class="No">PO Box 27 Irving, texas 98553</acronym>
+ </p>
+ <p>
+ <em>EMP0004</em>
+ <strong>Jeny Oconnor</strong>
+ <code>Personnel Director</code>
+ <sup>95,000</sup>
+ <var>Female</var>
+ <acronym title="Yes" class="Y&alpha;">27 South Road. Dallas, Texas 98556</acronym>
+ </p>
+ <p>
+ <em>EMP0005</em>
+ <strong>Robert Myers</strong>
+ <code>Computer Specialist</code>
+ <sup>90,000</sup>
+ <var>male</var>
+ <acronym title="Yes">1821 Nordic. Road, Irving Texas 98558</acronym>
+ </p>
+</body></html>
diff --git a/dom/tests/mochitest/dom-level2-core/files/hc_staff.xml b/dom/tests/mochitest/dom-level2-core/files/hc_staff.xml
new file mode 100644
index 0000000000..2df9a74154
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/files/hc_staff.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0"?><?TEST-STYLE PIDATA?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "xhtml1-strict.dtd" [
+ <!ENTITY alpha "&#945;">
+ <!ENTITY beta "&#946;">
+ <!ENTITY gamma "&#947;">
+ <!ENTITY delta "&#948;">
+ <!ENTITY epsilon "&#949;">
+ <!ENTITY alpha "&#950;">
+ <!NOTATION notation1 PUBLIC "notation1File">
+ <!NOTATION notation2 SYSTEM "notation2File">
+ <!ATTLIST acronym dir CDATA "ltr">
+]>
+<!-- This is comment number 1.-->
+<html xmlns='http://www.w3.org/1999/xhtml'><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><title>hc_staff</title><script type="text/javascript" src="svgunit.js"/><script charset="UTF-8" type="text/javascript" src="svgtest.js"/><script type='text/javascript'>function loadComplete() { startTest(); }</script></head><body onload="parent.loadComplete()">
+ <p>
+ <em>EMP0001</em>
+ <strong>Margaret Martin</strong>
+ <code>Accountant</code>
+ <sup>56,000</sup>
+ <var>Female</var>
+ <acronym title="Yes">1230 North Ave. Dallas, Texas 98551</acronym>
+ </p>
+ <p>
+ <em>EMP0002</em>
+ <strong>Martha RaynoldsThis is a CDATASection with EntityReference number 2 &amp;ent2;
+This is an adjacent CDATASection with a reference to a tab &amp;tab;</strong>
+ <code>Secretary</code>
+ <sup>35,000</sup>
+ <var>Female</var>
+ <acronym title="Yes" class="Yes">&beta; Dallas, &gamma;
+ 98554</acronym>
+ </p>
+ <p>
+ <em>EMP0003</em>
+ <strong>Roger
+ Jones</strong>
+ <code>Department Manager</code>
+ <sup>100,000</sup>
+ <var>&delta;</var>
+ <acronym title="Yes" class="No">PO Box 27 Irving, texas 98553</acronym>
+ </p>
+ <p>
+ <em>EMP0004</em>
+ <strong>Jeny Oconnor</strong>
+ <code>Personnel Director</code>
+ <sup>95,000</sup>
+ <var>Female</var>
+ <acronym title="Yes" class="Y&alpha;">27 South Road. Dallas, Texas 98556</acronym>
+ </p>
+ <p>
+ <em>EMP0005</em>
+ <strong>Robert Myers</strong>
+ <code>Computer Specialist</code>
+ <sup>90,000</sup>
+ <var>male</var>
+ <acronym title="Yes">1821 Nordic. Road, Irving Texas 98558</acronym>
+ </p>
+</body></html>
diff --git a/dom/tests/mochitest/dom-level2-core/files/internalSubset01.js b/dom/tests/mochitest/dom-level2-core/files/internalSubset01.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/files/internalSubset01.js
diff --git a/dom/tests/mochitest/dom-level2-core/files/nodtdstaff.svg b/dom/tests/mochitest/dom-level2-core/files/nodtdstaff.svg
new file mode 100644
index 0000000000..01aa823f35
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/files/nodtdstaff.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<svg xmlns="http://www.w3.org/2000/svg"><rect x="0" y="0" width="100" height="100"/>
+ <employee xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-1/Files">
+ <employeeId>EMP0001</employeeId>
+ <name>Margaret Martin</name>
+ <position>Accountant</position>
+ <salary>56,000</salary>
+ <gender>Female</gender>
+ <address domestic="Yes">1230 North Ave. Dallas, Texas 98551</address>
+ </employee>
+</svg>
diff --git a/dom/tests/mochitest/dom-level2-core/files/nodtdstaff.xml b/dom/tests/mochitest/dom-level2-core/files/nodtdstaff.xml
new file mode 100644
index 0000000000..054a5e1808
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/files/nodtdstaff.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<staff>
+ <employee>
+ <employeeId>EMP0001</employeeId>
+ <name>Margaret Martin</name>
+ <position>Accountant</position>
+ <salary>56,000</salary>
+ <gender>Female</gender>
+ <address domestic="Yes">1230 North Ave. Dallas, Texas 98551</address>
+ </employee>
+</staff>
diff --git a/dom/tests/mochitest/dom-level2-core/files/staff.dtd b/dom/tests/mochitest/dom-level2-core/files/staff.dtd
new file mode 100644
index 0000000000..02a994d57d
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/files/staff.dtd
@@ -0,0 +1,17 @@
+<!ELEMENT employeeId (#PCDATA)>
+<!ELEMENT name (#PCDATA)>
+<!ELEMENT position (#PCDATA)>
+<!ELEMENT salary (#PCDATA)>
+<!ELEMENT address (#PCDATA)>
+<!ELEMENT entElement ( #PCDATA ) >
+<!ELEMENT gender ( #PCDATA | entElement )* >
+<!ELEMENT employee (employeeId, name, position, salary, gender, address) >
+<!ELEMENT staff (employee)+>
+<!ATTLIST entElement
+ attr1 CDATA "Attr">
+<!ATTLIST address
+ domestic CDATA #IMPLIED
+ street CDATA "Yes">
+<!ATTLIST entElement
+ domestic CDATA "MALE" >
+
diff --git a/dom/tests/mochitest/dom-level2-core/files/staff.svg b/dom/tests/mochitest/dom-level2-core/files/staff.svg
new file mode 100644
index 0000000000..fd67323a46
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/files/staff.svg
@@ -0,0 +1,72 @@
+<?xml version="1.0"?><?TEST-STYLE PIDATA?>
+<!DOCTYPE svg SYSTEM "staff.dtd" [
+ <!ENTITY ent1 "es">
+ <!ENTITY ent2 "1900 Dallas Road">
+ <!ENTITY ent3 "Texas">
+ <!ENTITY ent4 "<entElement domestic='Yes'>Element data</entElement><?PItarget PIdata?>">
+ <!ENTITY ent5 PUBLIC "entityURI" "entityFile" NDATA notation1>
+ <!ENTITY ent1 "This entity should be discarded">
+ <!NOTATION notation1 PUBLIC "notation1File">
+ <!NOTATION notation2 SYSTEM "notation2File">
+ <!ATTLIST employee xmlns CDATA #IMPLIED>
+ <!ELEMENT svg (rect, script, employee+)>
+ <!ATTLIST svg
+ xmlns CDATA #FIXED "http://www.w3.org/2000/svg"
+ name CDATA #IMPLIED>
+ <!ELEMENT rect EMPTY>
+ <!ATTLIST rect
+ x CDATA #REQUIRED
+ y CDATA #REQUIRED
+ width CDATA #REQUIRED
+ height CDATA #REQUIRED>
+ <!ELEMENT script (#PCDATA)>
+ <!ATTLIST script type CDATA #IMPLIED>
+ <!ENTITY svgunit SYSTEM "svgunit.js">
+ <!ENTITY svgtest SYSTEM "svgtest.js">
+]>
+<!-- This is comment number 1.-->
+<svg xmlns="http://www.w3.org/2000/svg"><rect x="0" y="0" width="100" height="100"/><script type="text/ecmascript">&svgtest;&svgunit;</script>
+ <employee xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-1/Files">
+ <employeeId>EMP0001</employeeId>
+ <name>Margaret Martin</name>
+ <position>Accountant</position>
+ <salary>56,000</salary>
+ <gender>Female</gender>
+ <address domestic="Yes">1230 North Ave. Dallas, Texas 98551</address>
+ </employee>
+ <employee xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-1/Files">
+ <employeeId>EMP0002</employeeId>
+ <name>Martha Raynolds<![CDATA[This is a CDATASection with EntityReference number 2 &ent2;]]>
+<![CDATA[This is an adjacent CDATASection with a reference to a tab &tab;]]></name>
+ <position>Secretary</position>
+ <salary>35,000</salary>
+ <gender>Female</gender>
+ <address domestic="Yes" street="Yes">&ent2; Dallas, &ent3;
+ 98554</address>
+ </employee>
+ <employee xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-1/Files">
+ <employeeId>EMP0003</employeeId>
+ <name>Roger
+ Jones</name>
+ <position>Department Manager</position>
+ <salary>100,000</salary>
+ <gender>&ent4;</gender>
+ <address domestic="Yes" street="No">PO Box 27 Irving, texas 98553</address>
+ </employee>
+ <employee xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-1/Files">
+ <employeeId>EMP0004</employeeId>
+ <name>Jeny Oconnor</name>
+ <position>Personnel Director</position>
+ <salary>95,000</salary>
+ <gender>Female</gender>
+ <address domestic="Yes" street="Y&ent1;">27 South Road. Dallas, Texas 98556</address>
+ </employee>
+ <employee xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-1/Files">
+ <employeeId>EMP0005</employeeId>
+ <name>Robert Myers</name>
+ <position>Computer Specialist</position>
+ <salary>90,000</salary>
+ <gender>male</gender>
+ <address street="Yes">1821 Nordic. Road, Irving Texas 98558</address>
+ </employee>
+ </svg>
diff --git a/dom/tests/mochitest/dom-level2-core/files/staff.xml b/dom/tests/mochitest/dom-level2-core/files/staff.xml
new file mode 100644
index 0000000000..f89c5107db
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/files/staff.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0"?><?TEST-STYLE PIDATA?>
+<!DOCTYPE staff SYSTEM "staff.dtd" [
+ <!ENTITY ent1 "es">
+ <!ENTITY ent2 "1900 Dallas Road">
+ <!ENTITY ent3 "Texas">
+ <!ENTITY ent4 "<entElement domestic='Yes'>Element data</entElement><?PItarget PIdata?>">
+ <!ENTITY ent5 PUBLIC "entityURI" "entityFile" NDATA notation1>
+ <!ENTITY ent1 "This entity should be discarded">
+ <!NOTATION notation1 PUBLIC "notation1File">
+ <!NOTATION notation2 SYSTEM "notation2File">
+]>
+<!-- This is comment number 1.-->
+<staff>
+ <employee>
+ <employeeId>EMP0001</employeeId>
+ <name>Margaret Martin</name>
+ <position>Accountant</position>
+ <salary>56,000</salary>
+ <gender>Female</gender>
+ <address domestic="Yes">1230 North Ave. Dallas, Texas 98551</address>
+ </employee>
+ <employee>
+ <employeeId>EMP0002</employeeId>
+ <name>Martha Raynolds<![CDATA[This is a CDATASection with EntityReference number 2 &ent2;]]>
+<![CDATA[This is an adjacent CDATASection with a reference to a tab &tab;]]></name>
+ <position>Secretary</position>
+ <salary>35,000</salary>
+ <gender>Female</gender>
+ <address domestic="Yes" street="Yes">&ent2; Dallas, &ent3;
+ 98554</address>
+ </employee>
+ <employee>
+ <employeeId>EMP0003</employeeId>
+ <name>Roger
+ Jones</name>
+ <position>Department Manager</position>
+ <salary>100,000</salary>
+ <gender>&ent4;</gender>
+ <address domestic="Yes" street="No">PO Box 27 Irving, texas 98553</address>
+ </employee>
+ <employee>
+ <employeeId>EMP0004</employeeId>
+ <name>Jeny Oconnor</name>
+ <position>Personnel Director</position>
+ <salary>95,000</salary>
+ <gender>Female</gender>
+ <address domestic="Yes" street="Y&ent1;">27 South Road. Dallas, Texas 98556</address>
+ </employee>
+ <employee>
+ <employeeId>EMP0005</employeeId>
+ <name>Robert Myers</name>
+ <position>Computer Specialist</position>
+ <salary>90,000</salary>
+ <gender>male</gender>
+ <address street="Yes">1821 Nordic. Road, Irving Texas 98558</address>
+ </employee>
+ </staff>
diff --git a/dom/tests/mochitest/dom-level2-core/files/staff2.dtd b/dom/tests/mochitest/dom-level2-core/files/staff2.dtd
new file mode 100644
index 0000000000..0bac8f2539
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/files/staff2.dtd
@@ -0,0 +1,24 @@
+<!ELEMENT employeeId (#PCDATA)>
+<!ELEMENT name (#PCDATA)>
+<!ELEMENT position (#PCDATA)>
+<!ELEMENT salary (#PCDATA)>
+<!ELEMENT address (#PCDATA)>
+<!ELEMENT gender ( #PCDATA)>
+<!ELEMENT employee (employeeId, name, position, salary, gender, address) >
+<!ATTLIST employee xmlns CDATA #IMPLIED>
+<!ELEMENT staff (employee)+>
+<!ELEMENT svg (rect, script, employee+)>
+<!ATTLIST svg
+ xmlns CDATA #FIXED "http://www.w3.org/2000/svg"
+ name CDATA #IMPLIED>
+<!ELEMENT rect EMPTY>
+<!ATTLIST rect
+ x CDATA #REQUIRED
+ y CDATA #REQUIRED
+ width CDATA #REQUIRED
+ height CDATA #REQUIRED>
+<!ELEMENT script (#PCDATA)>
+<!ATTLIST script type CDATA #IMPLIED>
+<!ENTITY svgunit SYSTEM "svgunit.js">
+<!ENTITY svgtest SYSTEM "internalSubset01.js">
+
diff --git a/dom/tests/mochitest/dom-level2-core/files/staff2.svg b/dom/tests/mochitest/dom-level2-core/files/staff2.svg
new file mode 100644
index 0000000000..6f89dad04a
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/files/staff2.svg
@@ -0,0 +1,13 @@
+<?xml version="1.0"?><?TEST-STYLE PIDATA?>
+<!DOCTYPE svg SYSTEM "staff2.dtd" []>
+<!-- This is comment number 1.-->
+<svg xmlns="http://www.w3.org/2000/svg"><rect x="0" y="0" width="100" height="100"/><script type="text/ecmascript">&svgtest;&svgunit;</script>
+ <employee xmlns="http://www.example.com">
+ <employeeId>EMP0001</employeeId>
+ <name>Margaret Martin</name>
+ <position>Accountant</position>
+ <salary>56,000</salary>
+ <gender>Female</gender>
+ <address>1230 North Ave. Dallas, Texas 98551</address>
+ </employee>
+ </svg>
diff --git a/dom/tests/mochitest/dom-level2-core/files/staff2.xml b/dom/tests/mochitest/dom-level2-core/files/staff2.xml
new file mode 100644
index 0000000000..d3d9a13dd6
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/files/staff2.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?><?TEST-STYLE PIDATA?>
+<!DOCTYPE staff SYSTEM "staff2.dtd" []>
+<!-- This is comment number 1.-->
+<staff>
+ <employee>
+ <employeeId>EMP0001</employeeId>
+ <name>Margaret Martin</name>
+ <position>Accountant</position>
+ <salary>56,000</salary>
+ <gender>Female</gender>
+ <address>1230 North Ave. Dallas, Texas 98551</address>
+ </employee>
+ </staff>
diff --git a/dom/tests/mochitest/dom-level2-core/files/staffNS.dtd b/dom/tests/mochitest/dom-level2-core/files/staffNS.dtd
new file mode 100644
index 0000000000..7643773fc8
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/files/staffNS.dtd
@@ -0,0 +1,45 @@
+<!ELEMENT staff (employee+,emp:employee,employee) >
+<!ELEMENT employee (employeeId,name,position,salary,gender,address) >
+<!ATTLIST employee xmlns CDATA #IMPLIED>
+<!ATTLIST employee xmlns:dmstc CDATA #IMPLIED>
+<!ATTLIST employee xmlns:emp2 CDATA #IMPLIED>
+
+<!ELEMENT employeeId (#PCDATA) >
+
+<!ELEMENT name (#PCDATA) >
+
+<!ELEMENT position (#PCDATA) >
+
+<!ELEMENT salary (#PCDATA) >
+
+<!ELEMENT entElement1 (#PCDATA) >
+<!ELEMENT gender (#PCDATA | entElement1)* >
+<!ATTLIST entElement1 xmlns:local1 CDATA #IMPLIED >
+
+<!ELEMENT address (#PCDATA) >
+<!ATTLIST address dmstc:domestic CDATA #IMPLIED>
+<!ATTLIST address street CDATA #IMPLIED>
+<!ATTLIST address domestic CDATA #IMPLIED>
+<!ATTLIST address xmlns CDATA #IMPLIED>
+
+<!ELEMENT emp:employee (emp:employeeId,nm:name,emp:position,emp:salary,emp:gender,emp:address) >
+<!ATTLIST emp:employee xmlns:emp CDATA #IMPLIED>
+<!ATTLIST emp:employee xmlns:nm CDATA #IMPLIED>
+<!ATTLIST emp:employee defaultAttr CDATA 'defaultVal'>
+
+<!ELEMENT emp:employeeId (#PCDATA) >
+
+<!ELEMENT nm:name (#PCDATA) >
+
+<!ELEMENT emp:position (#PCDATA) >
+
+<!ELEMENT emp:salary (#PCDATA) >
+
+<!ELEMENT emp:gender (#PCDATA) >
+
+<!ELEMENT emp:address (#PCDATA) >
+<!ATTLIST emp:address emp:domestic CDATA #IMPLIED>
+<!ATTLIST emp:address street CDATA #IMPLIED>
+<!ATTLIST emp:address emp:zone ID #IMPLIED>
+<!ATTLIST emp:address emp:district CDATA 'DISTRICT'>
+<!ATTLIST emp:address emp:local1 CDATA 'FALSE'>
diff --git a/dom/tests/mochitest/dom-level2-core/files/staffNS.svg b/dom/tests/mochitest/dom-level2-core/files/staffNS.svg
new file mode 100644
index 0000000000..7a7c26ee89
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/files/staffNS.svg
@@ -0,0 +1,73 @@
+<?xml version="1.0"?><?TEST-STYLE PIDATA?>
+<!DOCTYPE svg PUBLIC "STAFF" "staffNS.dtd"
+[
+ <!ENTITY ent1 "es">
+ <!ENTITY ent2 "1900 Dallas Road">
+ <!ENTITY ent3 "Texas">
+ <!ENTITY ent4 "<entElement1 xmlns:local1='www.xyz.com'>Element data</entElement1><?PItarget PIdata?>">
+ <!ENTITY ent5 PUBLIC "entityURI" "entityFile" NDATA notation1>
+ <!ENTITY ent6 PUBLIC "uri" "file" NDATA notation2>
+ <!ENTITY ent1 "This entity should be discarded">
+ <!NOTATION notation1 PUBLIC "notation1File">
+ <!NOTATION notation2 SYSTEM "notation2File">
+ <!ELEMENT svg (rect, script, employee+, emp:employee, employee*)>
+ <!ATTLIST svg
+ xmlns CDATA #FIXED "http://www.w3.org/2000/svg"
+ name CDATA #IMPLIED>
+ <!ELEMENT rect EMPTY>
+ <!ATTLIST rect
+ x CDATA #REQUIRED
+ y CDATA #REQUIRED
+ width CDATA #REQUIRED
+ height CDATA #REQUIRED>
+ <!ELEMENT script (#PCDATA)>
+ <!ATTLIST script type CDATA #IMPLIED>
+ <!ENTITY svgunit SYSTEM "svgunit.js">
+ <!ENTITY svgtest SYSTEM "svgtest.js">
+]>
+<!-- This is comment number 1.-->
+<svg xmlns="http://www.w3.org/2000/svg"><rect x="0" y="0" width="100" height="100"/><script type="text/ecmascript">&svgtest;&svgunit;</script>
+ <employee xmlns="http://www.nist.gov" xmlns:dmstc="http://www.usa.com">
+ <employeeId>EMP0001</employeeId>
+ <name>Margaret Martin</name>
+ <position>Accountant</position>
+ <salary>56,000</salary>
+ <gender>Female</gender>
+ <address dmstc:domestic="Yes">1230 North Ave. Dallas, Texas 98551</address>
+ </employee>
+ <employee xmlns:dmstc="http://www.usa.com" xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-2/Files">
+ <employeeId>EMP0002</employeeId>
+ <name>Martha Raynolds
+<![CDATA[This is a CDATASection with EntityReference number 2 &ent2;]]>
+<![CDATA[This is an adjacent CDATASection with a reference to a tab &tab;]]></name>
+ <position>Secretary</position>
+ <salary>35,000</salary>
+ <gender>Female</gender>
+ <address dmstc:domestic="Yes" street="Yes">&ent2; Dallas, &ent3;
+ 98554</address>
+ </employee>
+ <employee xmlns:dmstc="http://www.netzero.com" xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-2/Files">
+ <employeeId>EMP0003</employeeId>
+ <name>Roger
+ Jones</name>
+ <position>Department Manager</position>
+ <salary>100,000</salary>
+ <gender>&ent4;</gender>
+ <address dmstc:domestic="Yes" street="No">PO Box 27 Irving, texas 98553</address>
+ </employee>
+ <emp:employee xmlns:emp="http://www.nist.gov" xmlns:nm="http://www.altavista.com" > <emp:employeeId>EMP0004</emp:employeeId>
+ <nm:name>Jeny Oconnor</nm:name>
+ <emp:position>Personnel Director</emp:position>
+ <emp:salary>95,000</emp:salary>
+ <emp:gender>Female</emp:gender>
+ <emp:address emp:domestic="Yes" street="Y&ent1;" emp:zone="CANADA" emp:local1="TRUE">27 South Road. Dallas, texas 98556</emp:address>
+ </emp:employee>
+ <employee xmlns:emp2="http://www.nist.gov" xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-2/Files">
+ <employeeId>EMP0005</employeeId>
+ <name>Robert Myers</name>
+ <position>Computer Specialist</position>
+ <salary>90,000</salary>
+ <gender>male</gender>
+ <address street="Yes" xmlns="http://www.nist.gov">1821 Nordic. Road, Irving Texas 98558</address>
+ </employee>
+ </svg>
diff --git a/dom/tests/mochitest/dom-level2-core/files/staffNS.xml b/dom/tests/mochitest/dom-level2-core/files/staffNS.xml
new file mode 100644
index 0000000000..1cb1459e23
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/files/staffNS.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0"?><?TEST-STYLE PIDATA?>
+<!DOCTYPE staff PUBLIC "STAFF" "staffNS.dtd"
+[
+ <!ENTITY ent1 "es">
+ <!ENTITY ent2 "1900 Dallas Road">
+ <!ENTITY ent3 "Texas">
+ <!ENTITY ent4 "<entElement1 xmlns:local1='www.xyz.com'>Element data</entElement1><?PItarget PIdata?>">
+ <!ENTITY ent5 PUBLIC "entityURI" "entityFile" NDATA notation1>
+ <!ENTITY ent6 PUBLIC "uri" "file" NDATA notation2>
+ <!ENTITY ent1 "This entity should be discarded">
+ <!NOTATION notation1 PUBLIC "notation1File">
+ <!NOTATION notation2 SYSTEM "notation2File">
+]>
+<!-- This is comment number 1.-->
+<staff>
+ <employee xmlns="http://www.nist.gov" xmlns:dmstc="http://www.usa.com">
+ <employeeId>EMP0001</employeeId>
+ <name>Margaret Martin</name>
+ <position>Accountant</position>
+ <salary>56,000</salary>
+ <gender>Female</gender>
+ <address dmstc:domestic="Yes">1230 North Ave. Dallas, Texas 98551</address>
+ </employee>
+ <employee xmlns:dmstc="http://www.usa.com">
+ <employeeId>EMP0002</employeeId>
+ <name>Martha Raynolds
+<![CDATA[This is a CDATASection with EntityReference number 2 &ent2;]]>
+<![CDATA[This is an adjacent CDATASection with a reference to a tab &tab;]]></name>
+ <position>Secretary</position>
+ <salary>35,000</salary>
+ <gender>Female</gender>
+ <address dmstc:domestic="Yes" street="Yes">&ent2; Dallas, &ent3;
+ 98554</address>
+ </employee>
+ <employee xmlns:dmstc="http://www.netzero.com">
+ <employeeId>EMP0003</employeeId>
+ <name>Roger
+ Jones</name>
+ <position>Department Manager</position>
+ <salary>100,000</salary>
+ <gender>&ent4;</gender>
+ <address dmstc:domestic="Yes" street="No">PO Box 27 Irving, texas 98553</address>
+ </employee>
+ <emp:employee xmlns:emp="http://www.nist.gov" xmlns:nm="http://www.altavista.com" > <emp:employeeId>EMP0004</emp:employeeId>
+ <nm:name>Jeny Oconnor</nm:name>
+ <emp:position>Personnel Director</emp:position>
+ <emp:salary>95,000</emp:salary>
+ <emp:gender>Female</emp:gender>
+ <emp:address emp:domestic="Yes" street="Y&ent1;" emp:zone="CANADA" emp:local1="TRUE">27 South Road. Dallas, texas 98556</emp:address>
+ </emp:employee>
+ <employee xmlns:emp2="http://www.nist.gov">
+ <employeeId>EMP0005</employeeId>
+ <name>Robert Myers</name>
+ <position>Computer Specialist</position>
+ <salary>90,000</salary>
+ <gender>male</gender>
+ <address street="Yes" xmlns="http://www.nist.gov">1821 Nordic. Road, Irving Texas 98558</address>
+ </employee>
+ </staff>
diff --git a/dom/tests/mochitest/dom-level2-core/files/svgtest.js b/dom/tests/mochitest/dom-level2-core/files/svgtest.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/files/svgtest.js
diff --git a/dom/tests/mochitest/dom-level2-core/files/svgunit.js b/dom/tests/mochitest/dom-level2-core/files/svgunit.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/files/svgunit.js
diff --git a/dom/tests/mochitest/dom-level2-core/files/xhtml-lat1.ent b/dom/tests/mochitest/dom-level2-core/files/xhtml-lat1.ent
new file mode 100644
index 0000000000..ffee223eb1
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/files/xhtml-lat1.ent
@@ -0,0 +1,196 @@
+<!-- Portions (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % HTMLlat1 PUBLIC
+ "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
+ %HTMLlat1;
+-->
+
+<!ENTITY nbsp "&#160;"> <!-- no-break space = non-breaking space,
+ U+00A0 ISOnum -->
+<!ENTITY iexcl "&#161;"> <!-- inverted exclamation mark, U+00A1 ISOnum -->
+<!ENTITY cent "&#162;"> <!-- cent sign, U+00A2 ISOnum -->
+<!ENTITY pound "&#163;"> <!-- pound sign, U+00A3 ISOnum -->
+<!ENTITY curren "&#164;"> <!-- currency sign, U+00A4 ISOnum -->
+<!ENTITY yen "&#165;"> <!-- yen sign = yuan sign, U+00A5 ISOnum -->
+<!ENTITY brvbar "&#166;"> <!-- broken bar = broken vertical bar,
+ U+00A6 ISOnum -->
+<!ENTITY sect "&#167;"> <!-- section sign, U+00A7 ISOnum -->
+<!ENTITY uml "&#168;"> <!-- diaeresis = spacing diaeresis,
+ U+00A8 ISOdia -->
+<!ENTITY copy "&#169;"> <!-- copyright sign, U+00A9 ISOnum -->
+<!ENTITY ordf "&#170;"> <!-- feminine ordinal indicator, U+00AA ISOnum -->
+<!ENTITY laquo "&#171;"> <!-- left-pointing double angle quotation mark
+ = left pointing guillemet, U+00AB ISOnum -->
+<!ENTITY not "&#172;"> <!-- not sign = angled dash,
+ U+00AC ISOnum -->
+<!ENTITY shy "&#173;"> <!-- soft hyphen = discretionary hyphen,
+ U+00AD ISOnum -->
+<!ENTITY reg "&#174;"> <!-- registered sign = registered trade mark sign,
+ U+00AE ISOnum -->
+<!ENTITY macr "&#175;"> <!-- macron = spacing macron = overline
+ = APL overbar, U+00AF ISOdia -->
+<!ENTITY deg "&#176;"> <!-- degree sign, U+00B0 ISOnum -->
+<!ENTITY plusmn "&#177;"> <!-- plus-minus sign = plus-or-minus sign,
+ U+00B1 ISOnum -->
+<!ENTITY sup2 "&#178;"> <!-- superscript two = superscript digit two
+ = squared, U+00B2 ISOnum -->
+<!ENTITY sup3 "&#179;"> <!-- superscript three = superscript digit three
+ = cubed, U+00B3 ISOnum -->
+<!ENTITY acute "&#180;"> <!-- acute accent = spacing acute,
+ U+00B4 ISOdia -->
+<!ENTITY micro "&#181;"> <!-- micro sign, U+00B5 ISOnum -->
+<!ENTITY para "&#182;"> <!-- pilcrow sign = paragraph sign,
+ U+00B6 ISOnum -->
+<!ENTITY middot "&#183;"> <!-- middle dot = Georgian comma
+ = Greek middle dot, U+00B7 ISOnum -->
+<!ENTITY cedil "&#184;"> <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
+<!ENTITY sup1 "&#185;"> <!-- superscript one = superscript digit one,
+ U+00B9 ISOnum -->
+<!ENTITY ordm "&#186;"> <!-- masculine ordinal indicator,
+ U+00BA ISOnum -->
+<!ENTITY raquo "&#187;"> <!-- right-pointing double angle quotation mark
+ = right pointing guillemet, U+00BB ISOnum -->
+<!ENTITY frac14 "&#188;"> <!-- vulgar fraction one quarter
+ = fraction one quarter, U+00BC ISOnum -->
+<!ENTITY frac12 "&#189;"> <!-- vulgar fraction one half
+ = fraction one half, U+00BD ISOnum -->
+<!ENTITY frac34 "&#190;"> <!-- vulgar fraction three quarters
+ = fraction three quarters, U+00BE ISOnum -->
+<!ENTITY iquest "&#191;"> <!-- inverted question mark
+ = turned question mark, U+00BF ISOnum -->
+<!ENTITY Agrave "&#192;"> <!-- latin capital letter A with grave
+ = latin capital letter A grave,
+ U+00C0 ISOlat1 -->
+<!ENTITY Aacute "&#193;"> <!-- latin capital letter A with acute,
+ U+00C1 ISOlat1 -->
+<!ENTITY Acirc "&#194;"> <!-- latin capital letter A with circumflex,
+ U+00C2 ISOlat1 -->
+<!ENTITY Atilde "&#195;"> <!-- latin capital letter A with tilde,
+ U+00C3 ISOlat1 -->
+<!ENTITY Auml "&#196;"> <!-- latin capital letter A with diaeresis,
+ U+00C4 ISOlat1 -->
+<!ENTITY Aring "&#197;"> <!-- latin capital letter A with ring above
+ = latin capital letter A ring,
+ U+00C5 ISOlat1 -->
+<!ENTITY AElig "&#198;"> <!-- latin capital letter AE
+ = latin capital ligature AE,
+ U+00C6 ISOlat1 -->
+<!ENTITY Ccedil "&#199;"> <!-- latin capital letter C with cedilla,
+ U+00C7 ISOlat1 -->
+<!ENTITY Egrave "&#200;"> <!-- latin capital letter E with grave,
+ U+00C8 ISOlat1 -->
+<!ENTITY Eacute "&#201;"> <!-- latin capital letter E with acute,
+ U+00C9 ISOlat1 -->
+<!ENTITY Ecirc "&#202;"> <!-- latin capital letter E with circumflex,
+ U+00CA ISOlat1 -->
+<!ENTITY Euml "&#203;"> <!-- latin capital letter E with diaeresis,
+ U+00CB ISOlat1 -->
+<!ENTITY Igrave "&#204;"> <!-- latin capital letter I with grave,
+ U+00CC ISOlat1 -->
+<!ENTITY Iacute "&#205;"> <!-- latin capital letter I with acute,
+ U+00CD ISOlat1 -->
+<!ENTITY Icirc "&#206;"> <!-- latin capital letter I with circumflex,
+ U+00CE ISOlat1 -->
+<!ENTITY Iuml "&#207;"> <!-- latin capital letter I with diaeresis,
+ U+00CF ISOlat1 -->
+<!ENTITY ETH "&#208;"> <!-- latin capital letter ETH, U+00D0 ISOlat1 -->
+<!ENTITY Ntilde "&#209;"> <!-- latin capital letter N with tilde,
+ U+00D1 ISOlat1 -->
+<!ENTITY Ograve "&#210;"> <!-- latin capital letter O with grave,
+ U+00D2 ISOlat1 -->
+<!ENTITY Oacute "&#211;"> <!-- latin capital letter O with acute,
+ U+00D3 ISOlat1 -->
+<!ENTITY Ocirc "&#212;"> <!-- latin capital letter O with circumflex,
+ U+00D4 ISOlat1 -->
+<!ENTITY Otilde "&#213;"> <!-- latin capital letter O with tilde,
+ U+00D5 ISOlat1 -->
+<!ENTITY Ouml "&#214;"> <!-- latin capital letter O with diaeresis,
+ U+00D6 ISOlat1 -->
+<!ENTITY times "&#215;"> <!-- multiplication sign, U+00D7 ISOnum -->
+<!ENTITY Oslash "&#216;"> <!-- latin capital letter O with stroke
+ = latin capital letter O slash,
+ U+00D8 ISOlat1 -->
+<!ENTITY Ugrave "&#217;"> <!-- latin capital letter U with grave,
+ U+00D9 ISOlat1 -->
+<!ENTITY Uacute "&#218;"> <!-- latin capital letter U with acute,
+ U+00DA ISOlat1 -->
+<!ENTITY Ucirc "&#219;"> <!-- latin capital letter U with circumflex,
+ U+00DB ISOlat1 -->
+<!ENTITY Uuml "&#220;"> <!-- latin capital letter U with diaeresis,
+ U+00DC ISOlat1 -->
+<!ENTITY Yacute "&#221;"> <!-- latin capital letter Y with acute,
+ U+00DD ISOlat1 -->
+<!ENTITY THORN "&#222;"> <!-- latin capital letter THORN,
+ U+00DE ISOlat1 -->
+<!ENTITY szlig "&#223;"> <!-- latin small letter sharp s = ess-zed,
+ U+00DF ISOlat1 -->
+<!ENTITY agrave "&#224;"> <!-- latin small letter a with grave
+ = latin small letter a grave,
+ U+00E0 ISOlat1 -->
+<!ENTITY aacute "&#225;"> <!-- latin small letter a with acute,
+ U+00E1 ISOlat1 -->
+<!ENTITY acirc "&#226;"> <!-- latin small letter a with circumflex,
+ U+00E2 ISOlat1 -->
+<!ENTITY atilde "&#227;"> <!-- latin small letter a with tilde,
+ U+00E3 ISOlat1 -->
+<!ENTITY auml "&#228;"> <!-- latin small letter a with diaeresis,
+ U+00E4 ISOlat1 -->
+<!ENTITY aring "&#229;"> <!-- latin small letter a with ring above
+ = latin small letter a ring,
+ U+00E5 ISOlat1 -->
+<!ENTITY aelig "&#230;"> <!-- latin small letter ae
+ = latin small ligature ae, U+00E6 ISOlat1 -->
+<!ENTITY ccedil "&#231;"> <!-- latin small letter c with cedilla,
+ U+00E7 ISOlat1 -->
+<!ENTITY egrave "&#232;"> <!-- latin small letter e with grave,
+ U+00E8 ISOlat1 -->
+<!ENTITY eacute "&#233;"> <!-- latin small letter e with acute,
+ U+00E9 ISOlat1 -->
+<!ENTITY ecirc "&#234;"> <!-- latin small letter e with circumflex,
+ U+00EA ISOlat1 -->
+<!ENTITY euml "&#235;"> <!-- latin small letter e with diaeresis,
+ U+00EB ISOlat1 -->
+<!ENTITY igrave "&#236;"> <!-- latin small letter i with grave,
+ U+00EC ISOlat1 -->
+<!ENTITY iacute "&#237;"> <!-- latin small letter i with acute,
+ U+00ED ISOlat1 -->
+<!ENTITY icirc "&#238;"> <!-- latin small letter i with circumflex,
+ U+00EE ISOlat1 -->
+<!ENTITY iuml "&#239;"> <!-- latin small letter i with diaeresis,
+ U+00EF ISOlat1 -->
+<!ENTITY eth "&#240;"> <!-- latin small letter eth, U+00F0 ISOlat1 -->
+<!ENTITY ntilde "&#241;"> <!-- latin small letter n with tilde,
+ U+00F1 ISOlat1 -->
+<!ENTITY ograve "&#242;"> <!-- latin small letter o with grave,
+ U+00F2 ISOlat1 -->
+<!ENTITY oacute "&#243;"> <!-- latin small letter o with acute,
+ U+00F3 ISOlat1 -->
+<!ENTITY ocirc "&#244;"> <!-- latin small letter o with circumflex,
+ U+00F4 ISOlat1 -->
+<!ENTITY otilde "&#245;"> <!-- latin small letter o with tilde,
+ U+00F5 ISOlat1 -->
+<!ENTITY ouml "&#246;"> <!-- latin small letter o with diaeresis,
+ U+00F6 ISOlat1 -->
+<!ENTITY divide "&#247;"> <!-- division sign, U+00F7 ISOnum -->
+<!ENTITY oslash "&#248;"> <!-- latin small letter o with stroke,
+ = latin small letter o slash,
+ U+00F8 ISOlat1 -->
+<!ENTITY ugrave "&#249;"> <!-- latin small letter u with grave,
+ U+00F9 ISOlat1 -->
+<!ENTITY uacute "&#250;"> <!-- latin small letter u with acute,
+ U+00FA ISOlat1 -->
+<!ENTITY ucirc "&#251;"> <!-- latin small letter u with circumflex,
+ U+00FB ISOlat1 -->
+<!ENTITY uuml "&#252;"> <!-- latin small letter u with diaeresis,
+ U+00FC ISOlat1 -->
+<!ENTITY yacute "&#253;"> <!-- latin small letter y with acute,
+ U+00FD ISOlat1 -->
+<!ENTITY thorn "&#254;"> <!-- latin small letter thorn,
+ U+00FE ISOlat1 -->
+<!ENTITY yuml "&#255;"> <!-- latin small letter y with diaeresis,
+ U+00FF ISOlat1 -->
diff --git a/dom/tests/mochitest/dom-level2-core/files/xhtml-special.ent b/dom/tests/mochitest/dom-level2-core/files/xhtml-special.ent
new file mode 100644
index 0000000000..ca358b2fec
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/files/xhtml-special.ent
@@ -0,0 +1,80 @@
+<!-- Special characters for XHTML -->
+
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % HTMLspecial PUBLIC
+ "-//W3C//ENTITIES Special for XHTML//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
+ %HTMLspecial;
+-->
+
+<!-- Portions (C) International Organization for Standardization 1986:
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+ New names (i.e., not in ISO 8879 list) do not clash with any
+ existing ISO 8879 entity names. ISO 10646 character numbers
+ are given for each character, in hex. values are decimal
+ conversions of the ISO 10646 values and refer to the document
+ character set. Names are Unicode names.
+-->
+
+<!-- C0 Controls and Basic Latin -->
+<!ENTITY quot "&#34;"> <!-- quotation mark, U+0022 ISOnum -->
+<!ENTITY amp "&#38;#38;"> <!-- ampersand, U+0026 ISOnum -->
+<!ENTITY lt "&#38;#60;"> <!-- less-than sign, U+003C ISOnum -->
+<!ENTITY gt "&#62;"> <!-- greater-than sign, U+003E ISOnum -->
+<!ENTITY apos "&#39;"> <!-- apostrophe = APL quote, U+0027 ISOnum -->
+
+<!-- Latin Extended-A -->
+<!ENTITY OElig "&#338;"> <!-- latin capital ligature OE,
+ U+0152 ISOlat2 -->
+<!ENTITY oelig "&#339;"> <!-- latin small ligature oe, U+0153 ISOlat2 -->
+<!-- ligature is a misnomer, this is a separate character in some languages -->
+<!ENTITY Scaron "&#352;"> <!-- latin capital letter S with caron,
+ U+0160 ISOlat2 -->
+<!ENTITY scaron "&#353;"> <!-- latin small letter s with caron,
+ U+0161 ISOlat2 -->
+<!ENTITY Yuml "&#376;"> <!-- latin capital letter Y with diaeresis,
+ U+0178 ISOlat2 -->
+
+<!-- Spacing Modifier Letters -->
+<!ENTITY circ "&#710;"> <!-- modifier letter circumflex accent,
+ U+02C6 ISOpub -->
+<!ENTITY tilde "&#732;"> <!-- small tilde, U+02DC ISOdia -->
+
+<!-- General Punctuation -->
+<!ENTITY ensp "&#8194;"> <!-- en space, U+2002 ISOpub -->
+<!ENTITY emsp "&#8195;"> <!-- em space, U+2003 ISOpub -->
+<!ENTITY thinsp "&#8201;"> <!-- thin space, U+2009 ISOpub -->
+<!ENTITY zwnj "&#8204;"> <!-- zero width non-joiner,
+ U+200C NEW RFC 2070 -->
+<!ENTITY zwj "&#8205;"> <!-- zero width joiner, U+200D NEW RFC 2070 -->
+<!ENTITY lrm "&#8206;"> <!-- left-to-right mark, U+200E NEW RFC 2070 -->
+<!ENTITY rlm "&#8207;"> <!-- right-to-left mark, U+200F NEW RFC 2070 -->
+<!ENTITY ndash "&#8211;"> <!-- en dash, U+2013 ISOpub -->
+<!ENTITY mdash "&#8212;"> <!-- em dash, U+2014 ISOpub -->
+<!ENTITY lsquo "&#8216;"> <!-- left single quotation mark,
+ U+2018 ISOnum -->
+<!ENTITY rsquo "&#8217;"> <!-- right single quotation mark,
+ U+2019 ISOnum -->
+<!ENTITY sbquo "&#8218;"> <!-- single low-9 quotation mark, U+201A NEW -->
+<!ENTITY ldquo "&#8220;"> <!-- left double quotation mark,
+ U+201C ISOnum -->
+<!ENTITY rdquo "&#8221;"> <!-- right double quotation mark,
+ U+201D ISOnum -->
+<!ENTITY bdquo "&#8222;"> <!-- double low-9 quotation mark, U+201E NEW -->
+<!ENTITY dagger "&#8224;"> <!-- dagger, U+2020 ISOpub -->
+<!ENTITY Dagger "&#8225;"> <!-- double dagger, U+2021 ISOpub -->
+<!ENTITY permil "&#8240;"> <!-- per mille sign, U+2030 ISOtech -->
+<!ENTITY lsaquo "&#8249;"> <!-- single left-pointing angle quotation mark,
+ U+2039 ISO proposed -->
+<!-- lsaquo is proposed but not yet ISO standardized -->
+<!ENTITY rsaquo "&#8250;"> <!-- single right-pointing angle quotation mark,
+ U+203A ISO proposed -->
+<!-- rsaquo is proposed but not yet ISO standardized -->
+
+<!-- Currency Symbols -->
+<!ENTITY euro "&#8364;"> <!-- euro sign, U+20AC NEW -->
diff --git a/dom/tests/mochitest/dom-level2-core/files/xhtml-symbol.ent b/dom/tests/mochitest/dom-level2-core/files/xhtml-symbol.ent
new file mode 100644
index 0000000000..63c2abfa6f
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/files/xhtml-symbol.ent
@@ -0,0 +1,237 @@
+<!-- Mathematical, Greek and Symbolic characters for XHTML -->
+
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % HTMLsymbol PUBLIC
+ "-//W3C//ENTITIES Symbols for XHTML//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
+ %HTMLsymbol;
+-->
+
+<!-- Portions (C) International Organization for Standardization 1986:
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+ New names (i.e., not in ISO 8879 list) do not clash with any
+ existing ISO 8879 entity names. ISO 10646 character numbers
+ are given for each character, in hex. values are decimal
+ conversions of the ISO 10646 values and refer to the document
+ character set. Names are Unicode names.
+-->
+
+<!-- Latin Extended-B -->
+<!ENTITY fnof "&#402;"> <!-- latin small letter f with hook = function
+ = florin, U+0192 ISOtech -->
+
+<!-- Greek -->
+<!ENTITY Alpha "&#913;"> <!-- greek capital letter alpha, U+0391 -->
+<!ENTITY Beta "&#914;"> <!-- greek capital letter beta, U+0392 -->
+<!ENTITY Gamma "&#915;"> <!-- greek capital letter gamma,
+ U+0393 ISOgrk3 -->
+<!ENTITY Delta "&#916;"> <!-- greek capital letter delta,
+ U+0394 ISOgrk3 -->
+<!ENTITY Epsilon "&#917;"> <!-- greek capital letter epsilon, U+0395 -->
+<!ENTITY Zeta "&#918;"> <!-- greek capital letter zeta, U+0396 -->
+<!ENTITY Eta "&#919;"> <!-- greek capital letter eta, U+0397 -->
+<!ENTITY Theta "&#920;"> <!-- greek capital letter theta,
+ U+0398 ISOgrk3 -->
+<!ENTITY Iota "&#921;"> <!-- greek capital letter iota, U+0399 -->
+<!ENTITY Kappa "&#922;"> <!-- greek capital letter kappa, U+039A -->
+<!ENTITY Lambda "&#923;"> <!-- greek capital letter lamda,
+ U+039B ISOgrk3 -->
+<!ENTITY Mu "&#924;"> <!-- greek capital letter mu, U+039C -->
+<!ENTITY Nu "&#925;"> <!-- greek capital letter nu, U+039D -->
+<!ENTITY Xi "&#926;"> <!-- greek capital letter xi, U+039E ISOgrk3 -->
+<!ENTITY Omicron "&#927;"> <!-- greek capital letter omicron, U+039F -->
+<!ENTITY Pi "&#928;"> <!-- greek capital letter pi, U+03A0 ISOgrk3 -->
+<!ENTITY Rho "&#929;"> <!-- greek capital letter rho, U+03A1 -->
+<!-- there is no Sigmaf, and no U+03A2 character either -->
+<!ENTITY Sigma "&#931;"> <!-- greek capital letter sigma,
+ U+03A3 ISOgrk3 -->
+<!ENTITY Tau "&#932;"> <!-- greek capital letter tau, U+03A4 -->
+<!ENTITY Upsilon "&#933;"> <!-- greek capital letter upsilon,
+ U+03A5 ISOgrk3 -->
+<!ENTITY Phi "&#934;"> <!-- greek capital letter phi,
+ U+03A6 ISOgrk3 -->
+<!ENTITY Chi "&#935;"> <!-- greek capital letter chi, U+03A7 -->
+<!ENTITY Psi "&#936;"> <!-- greek capital letter psi,
+ U+03A8 ISOgrk3 -->
+<!ENTITY Omega "&#937;"> <!-- greek capital letter omega,
+ U+03A9 ISOgrk3 -->
+
+<!ENTITY alpha "&#945;"> <!-- greek small letter alpha,
+ U+03B1 ISOgrk3 -->
+<!ENTITY beta "&#946;"> <!-- greek small letter beta, U+03B2 ISOgrk3 -->
+<!ENTITY gamma "&#947;"> <!-- greek small letter gamma,
+ U+03B3 ISOgrk3 -->
+<!ENTITY delta "&#948;"> <!-- greek small letter delta,
+ U+03B4 ISOgrk3 -->
+<!ENTITY epsilon "&#949;"> <!-- greek small letter epsilon,
+ U+03B5 ISOgrk3 -->
+<!ENTITY zeta "&#950;"> <!-- greek small letter zeta, U+03B6 ISOgrk3 -->
+<!ENTITY eta "&#951;"> <!-- greek small letter eta, U+03B7 ISOgrk3 -->
+<!ENTITY theta "&#952;"> <!-- greek small letter theta,
+ U+03B8 ISOgrk3 -->
+<!ENTITY iota "&#953;"> <!-- greek small letter iota, U+03B9 ISOgrk3 -->
+<!ENTITY kappa "&#954;"> <!-- greek small letter kappa,
+ U+03BA ISOgrk3 -->
+<!ENTITY lambda "&#955;"> <!-- greek small letter lamda,
+ U+03BB ISOgrk3 -->
+<!ENTITY mu "&#956;"> <!-- greek small letter mu, U+03BC ISOgrk3 -->
+<!ENTITY nu "&#957;"> <!-- greek small letter nu, U+03BD ISOgrk3 -->
+<!ENTITY xi "&#958;"> <!-- greek small letter xi, U+03BE ISOgrk3 -->
+<!ENTITY omicron "&#959;"> <!-- greek small letter omicron, U+03BF NEW -->
+<!ENTITY pi "&#960;"> <!-- greek small letter pi, U+03C0 ISOgrk3 -->
+<!ENTITY rho "&#961;"> <!-- greek small letter rho, U+03C1 ISOgrk3 -->
+<!ENTITY sigmaf "&#962;"> <!-- greek small letter final sigma,
+ U+03C2 ISOgrk3 -->
+<!ENTITY sigma "&#963;"> <!-- greek small letter sigma,
+ U+03C3 ISOgrk3 -->
+<!ENTITY tau "&#964;"> <!-- greek small letter tau, U+03C4 ISOgrk3 -->
+<!ENTITY upsilon "&#965;"> <!-- greek small letter upsilon,
+ U+03C5 ISOgrk3 -->
+<!ENTITY phi "&#966;"> <!-- greek small letter phi, U+03C6 ISOgrk3 -->
+<!ENTITY chi "&#967;"> <!-- greek small letter chi, U+03C7 ISOgrk3 -->
+<!ENTITY psi "&#968;"> <!-- greek small letter psi, U+03C8 ISOgrk3 -->
+<!ENTITY omega "&#969;"> <!-- greek small letter omega,
+ U+03C9 ISOgrk3 -->
+<!ENTITY thetasym "&#977;"> <!-- greek theta symbol,
+ U+03D1 NEW -->
+<!ENTITY upsih "&#978;"> <!-- greek upsilon with hook symbol,
+ U+03D2 NEW -->
+<!ENTITY piv "&#982;"> <!-- greek pi symbol, U+03D6 ISOgrk3 -->
+
+<!-- General Punctuation -->
+<!ENTITY bull "&#8226;"> <!-- bullet = black small circle,
+ U+2022 ISOpub -->
+<!-- bullet is NOT the same as bullet operator, U+2219 -->
+<!ENTITY hellip "&#8230;"> <!-- horizontal ellipsis = three dot leader,
+ U+2026 ISOpub -->
+<!ENTITY prime "&#8242;"> <!-- prime = minutes = feet, U+2032 ISOtech -->
+<!ENTITY Prime "&#8243;"> <!-- double prime = seconds = inches,
+ U+2033 ISOtech -->
+<!ENTITY oline "&#8254;"> <!-- overline = spacing overscore,
+ U+203E NEW -->
+<!ENTITY frasl "&#8260;"> <!-- fraction slash, U+2044 NEW -->
+
+<!-- Letterlike Symbols -->
+<!ENTITY weierp "&#8472;"> <!-- script capital P = power set
+ = Weierstrass p, U+2118 ISOamso -->
+<!ENTITY image "&#8465;"> <!-- black-letter capital I = imaginary part,
+ U+2111 ISOamso -->
+<!ENTITY real "&#8476;"> <!-- black-letter capital R = real part symbol,
+ U+211C ISOamso -->
+<!ENTITY trade "&#8482;"> <!-- trade mark sign, U+2122 ISOnum -->
+<!ENTITY alefsym "&#8501;"> <!-- alef symbol = first transfinite cardinal,
+ U+2135 NEW -->
+<!-- alef symbol is NOT the same as hebrew letter alef,
+ U+05D0 although the same glyph could be used to depict both characters -->
+
+<!-- Arrows -->
+<!ENTITY larr "&#8592;"> <!-- leftwards arrow, U+2190 ISOnum -->
+<!ENTITY uarr "&#8593;"> <!-- upwards arrow, U+2191 ISOnum-->
+<!ENTITY rarr "&#8594;"> <!-- rightwards arrow, U+2192 ISOnum -->
+<!ENTITY darr "&#8595;"> <!-- downwards arrow, U+2193 ISOnum -->
+<!ENTITY harr "&#8596;"> <!-- left right arrow, U+2194 ISOamsa -->
+<!ENTITY crarr "&#8629;"> <!-- downwards arrow with corner leftwards
+ = carriage return, U+21B5 NEW -->
+<!ENTITY lArr "&#8656;"> <!-- leftwards double arrow, U+21D0 ISOtech -->
+<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow
+ but also does not have any other character for that function. So lArr can
+ be used for 'is implied by' as ISOtech suggests -->
+<!ENTITY uArr "&#8657;"> <!-- upwards double arrow, U+21D1 ISOamsa -->
+<!ENTITY rArr "&#8658;"> <!-- rightwards double arrow,
+ U+21D2 ISOtech -->
+<!-- Unicode does not say this is the 'implies' character but does not have
+ another character with this function so rArr can be used for 'implies'
+ as ISOtech suggests -->
+<!ENTITY dArr "&#8659;"> <!-- downwards double arrow, U+21D3 ISOamsa -->
+<!ENTITY hArr "&#8660;"> <!-- left right double arrow,
+ U+21D4 ISOamsa -->
+
+<!-- Mathematical Operators -->
+<!ENTITY forall "&#8704;"> <!-- for all, U+2200 ISOtech -->
+<!ENTITY part "&#8706;"> <!-- partial differential, U+2202 ISOtech -->
+<!ENTITY exist "&#8707;"> <!-- there exists, U+2203 ISOtech -->
+<!ENTITY empty "&#8709;"> <!-- empty set = null set, U+2205 ISOamso -->
+<!ENTITY nabla "&#8711;"> <!-- nabla = backward difference,
+ U+2207 ISOtech -->
+<!ENTITY isin "&#8712;"> <!-- element of, U+2208 ISOtech -->
+<!ENTITY notin "&#8713;"> <!-- not an element of, U+2209 ISOtech -->
+<!ENTITY ni "&#8715;"> <!-- contains as member, U+220B ISOtech -->
+<!ENTITY prod "&#8719;"> <!-- n-ary product = product sign,
+ U+220F ISOamsb -->
+<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
+ the same glyph might be used for both -->
+<!ENTITY sum "&#8721;"> <!-- n-ary summation, U+2211 ISOamsb -->
+<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
+ though the same glyph might be used for both -->
+<!ENTITY minus "&#8722;"> <!-- minus sign, U+2212 ISOtech -->
+<!ENTITY lowast "&#8727;"> <!-- asterisk operator, U+2217 ISOtech -->
+<!ENTITY radic "&#8730;"> <!-- square root = radical sign,
+ U+221A ISOtech -->
+<!ENTITY prop "&#8733;"> <!-- proportional to, U+221D ISOtech -->
+<!ENTITY infin "&#8734;"> <!-- infinity, U+221E ISOtech -->
+<!ENTITY ang "&#8736;"> <!-- angle, U+2220 ISOamso -->
+<!ENTITY and "&#8743;"> <!-- logical and = wedge, U+2227 ISOtech -->
+<!ENTITY or "&#8744;"> <!-- logical or = vee, U+2228 ISOtech -->
+<!ENTITY cap "&#8745;"> <!-- intersection = cap, U+2229 ISOtech -->
+<!ENTITY cup "&#8746;"> <!-- union = cup, U+222A ISOtech -->
+<!ENTITY int "&#8747;"> <!-- integral, U+222B ISOtech -->
+<!ENTITY there4 "&#8756;"> <!-- therefore, U+2234 ISOtech -->
+<!ENTITY sim "&#8764;"> <!-- tilde operator = varies with = similar to,
+ U+223C ISOtech -->
+<!-- tilde operator is NOT the same character as the tilde, U+007E,
+ although the same glyph might be used to represent both -->
+<!ENTITY cong "&#8773;"> <!-- approximately equal to, U+2245 ISOtech -->
+<!ENTITY asymp "&#8776;"> <!-- almost equal to = asymptotic to,
+ U+2248 ISOamsr -->
+<!ENTITY ne "&#8800;"> <!-- not equal to, U+2260 ISOtech -->
+<!ENTITY equiv "&#8801;"> <!-- identical to, U+2261 ISOtech -->
+<!ENTITY le "&#8804;"> <!-- less-than or equal to, U+2264 ISOtech -->
+<!ENTITY ge "&#8805;"> <!-- greater-than or equal to,
+ U+2265 ISOtech -->
+<!ENTITY sub "&#8834;"> <!-- subset of, U+2282 ISOtech -->
+<!ENTITY sup "&#8835;"> <!-- superset of, U+2283 ISOtech -->
+<!ENTITY nsub "&#8836;"> <!-- not a subset of, U+2284 ISOamsn -->
+<!ENTITY sube "&#8838;"> <!-- subset of or equal to, U+2286 ISOtech -->
+<!ENTITY supe "&#8839;"> <!-- superset of or equal to,
+ U+2287 ISOtech -->
+<!ENTITY oplus "&#8853;"> <!-- circled plus = direct sum,
+ U+2295 ISOamsb -->
+<!ENTITY otimes "&#8855;"> <!-- circled times = vector product,
+ U+2297 ISOamsb -->
+<!ENTITY perp "&#8869;"> <!-- up tack = orthogonal to = perpendicular,
+ U+22A5 ISOtech -->
+<!ENTITY sdot "&#8901;"> <!-- dot operator, U+22C5 ISOamsb -->
+<!-- dot operator is NOT the same character as U+00B7 middle dot -->
+
+<!-- Miscellaneous Technical -->
+<!ENTITY lceil "&#8968;"> <!-- left ceiling = APL upstile,
+ U+2308 ISOamsc -->
+<!ENTITY rceil "&#8969;"> <!-- right ceiling, U+2309 ISOamsc -->
+<!ENTITY lfloor "&#8970;"> <!-- left floor = APL downstile,
+ U+230A ISOamsc -->
+<!ENTITY rfloor "&#8971;"> <!-- right floor, U+230B ISOamsc -->
+<!ENTITY lang "&#9001;"> <!-- left-pointing angle bracket = bra,
+ U+2329 ISOtech -->
+<!-- lang is NOT the same character as U+003C 'less than sign'
+ or U+2039 'single left-pointing angle quotation mark' -->
+<!ENTITY rang "&#9002;"> <!-- right-pointing angle bracket = ket,
+ U+232A ISOtech -->
+<!-- rang is NOT the same character as U+003E 'greater than sign'
+ or U+203A 'single right-pointing angle quotation mark' -->
+
+<!-- Geometric Shapes -->
+<!ENTITY loz "&#9674;"> <!-- lozenge, U+25CA ISOpub -->
+
+<!-- Miscellaneous Symbols -->
+<!ENTITY spades "&#9824;"> <!-- black spade suit, U+2660 ISOpub -->
+<!-- black here seems to mean filled as opposed to hollow -->
+<!ENTITY clubs "&#9827;"> <!-- black club suit = shamrock,
+ U+2663 ISOpub -->
+<!ENTITY hearts "&#9829;"> <!-- black heart suit = valentine,
+ U+2665 ISOpub -->
+<!ENTITY diams "&#9830;"> <!-- black diamond suit, U+2666 ISOpub -->
diff --git a/dom/tests/mochitest/dom-level2-core/files/xhtml1-frameset.dtd b/dom/tests/mochitest/dom-level2-core/files/xhtml1-frameset.dtd
new file mode 100644
index 0000000000..dc5d7936cc
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/files/xhtml1-frameset.dtd
@@ -0,0 +1,1235 @@
+<!--
+ Extensible HTML version 1.0 Frameset DTD
+
+ This is the same as HTML 4 Frameset except for
+ changes due to the differences between XML and SGML.
+
+ Namespace = http://www.w3.org/1999/xhtml
+
+ For further information, see: http://www.w3.org/TR/xhtml1
+
+ Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
+ All Rights Reserved.
+
+ This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+ PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+ SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"
+
+ $Revision: 1.1 $
+ $Date: 2007/02/28 22:59:26 $
+
+-->
+
+<!--================ Character mnemonic entities =========================-->
+
+<!ENTITY % HTMLlat1 PUBLIC
+ "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+ "xhtml-lat1.ent">
+%HTMLlat1;
+
+<!ENTITY % HTMLsymbol PUBLIC
+ "-//W3C//ENTITIES Symbols for XHTML//EN"
+ "xhtml-symbol.ent">
+%HTMLsymbol;
+
+<!ENTITY % HTMLspecial PUBLIC
+ "-//W3C//ENTITIES Special for XHTML//EN"
+ "xhtml-special.ent">
+%HTMLspecial;
+
+<!--================== Imported Names ====================================-->
+
+<!ENTITY % ContentType "CDATA">
+ <!-- media type, as per [RFC2045] -->
+
+<!ENTITY % ContentTypes "CDATA">
+ <!-- comma-separated list of media types, as per [RFC2045] -->
+
+<!ENTITY % Charset "CDATA">
+ <!-- a character encoding, as per [RFC2045] -->
+
+<!ENTITY % Charsets "CDATA">
+ <!-- a space separated list of character encodings, as per [RFC2045] -->
+
+<!ENTITY % LanguageCode "NMTOKEN">
+ <!-- a language code, as per [RFC3066] -->
+
+<!ENTITY % Character "CDATA">
+ <!-- a single character, as per section 2.2 of [XML] -->
+
+<!ENTITY % Number "CDATA">
+ <!-- one or more digits -->
+
+<!ENTITY % LinkTypes "CDATA">
+ <!-- space-separated list of link types -->
+
+<!ENTITY % MediaDesc "CDATA">
+ <!-- single or comma-separated list of media descriptors -->
+
+<!ENTITY % URI "CDATA">
+ <!-- a Uniform Resource Identifier, see [RFC2396] -->
+
+<!ENTITY % UriList "CDATA">
+ <!-- a space separated list of Uniform Resource Identifiers -->
+
+<!ENTITY % Datetime "CDATA">
+ <!-- date and time information. ISO date format -->
+
+<!ENTITY % Script "CDATA">
+ <!-- script expression -->
+
+<!ENTITY % StyleSheet "CDATA">
+ <!-- style sheet data -->
+
+<!ENTITY % Text "CDATA">
+ <!-- used for titles etc. -->
+
+<!ENTITY % FrameTarget "NMTOKEN">
+ <!-- render in this frame -->
+
+<!ENTITY % Length "CDATA">
+ <!-- nn for pixels or nn% for percentage length -->
+
+<!ENTITY % MultiLength "CDATA">
+ <!-- pixel, percentage, or relative -->
+
+<!ENTITY % MultiLengths "CDATA">
+ <!-- comma-separated list of MultiLength -->
+
+<!ENTITY % Pixels "CDATA">
+ <!-- integer representing length in pixels -->
+
+<!-- these are used for image maps -->
+
+<!ENTITY % Shape "(rect|circle|poly|default)">
+
+<!ENTITY % Coords "CDATA">
+ <!-- comma separated list of lengths -->
+
+<!-- used for object, applet, img, input and iframe -->
+<!ENTITY % ImgAlign "(top|middle|bottom|left|right)">
+
+<!-- a color using sRGB: #RRGGBB as Hex values -->
+<!ENTITY % Color "CDATA">
+
+<!-- There are also 16 widely known color names with their sRGB values:
+
+ Black = #000000 Green = #008000
+ Silver = #C0C0C0 Lime = #00FF00
+ Gray = #808080 Olive = #808000
+ White = #FFFFFF Yellow = #FFFF00
+ Maroon = #800000 Navy = #000080
+ Red = #FF0000 Blue = #0000FF
+ Purple = #800080 Teal = #008080
+ Fuchsia= #FF00FF Aqua = #00FFFF
+-->
+
+<!--=================== Generic Attributes ===============================-->
+
+<!-- core attributes common to most elements
+ id document-wide unique id
+ class space separated list of classes
+ style associated style info
+ title advisory title/amplification
+-->
+<!ENTITY % coreattrs
+ "id ID #IMPLIED
+ class CDATA #IMPLIED
+ style %StyleSheet; #IMPLIED
+ title %Text; #IMPLIED"
+ >
+
+<!-- internationalization attributes
+ lang language code (backwards compatible)
+ xml:lang language code (as per XML 1.0 spec)
+ dir direction for weak/neutral text
+-->
+<!ENTITY % i18n
+ "lang %LanguageCode; #IMPLIED
+ xml:lang %LanguageCode; #IMPLIED
+ dir (ltr|rtl) #IMPLIED"
+ >
+
+<!-- attributes for common UI events
+ onclick a pointer button was clicked
+ ondblclick a pointer button was double clicked
+ onmousedown a pointer button was pressed down
+ onmouseup a pointer button was released
+ onmousemove a pointer was moved onto the element
+ onmouseout a pointer was moved away from the element
+ onkeypress a key was pressed and released
+ onkeydown a key was pressed down
+ onkeyup a key was released
+-->
+<!ENTITY % events
+ "onclick %Script; #IMPLIED
+ ondblclick %Script; #IMPLIED
+ onmousedown %Script; #IMPLIED
+ onmouseup %Script; #IMPLIED
+ onmouseover %Script; #IMPLIED
+ onmousemove %Script; #IMPLIED
+ onmouseout %Script; #IMPLIED
+ onkeypress %Script; #IMPLIED
+ onkeydown %Script; #IMPLIED
+ onkeyup %Script; #IMPLIED"
+ >
+
+<!-- attributes for elements that can get the focus
+ accesskey accessibility key character
+ tabindex position in tabbing order
+ onfocus the element got the focus
+ onblur the element lost the focus
+-->
+<!ENTITY % focus
+ "accesskey %Character; #IMPLIED
+ tabindex %Number; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED"
+ >
+
+<!ENTITY % attrs "%coreattrs; %i18n; %events;">
+
+<!-- text alignment for p, div, h1-h6. The default is
+ align="left" for ltr headings, "right" for rtl -->
+
+<!ENTITY % TextAlign "align (left|center|right|justify) #IMPLIED">
+
+<!--=================== Text Elements ====================================-->
+
+<!ENTITY % special.extra
+ "object | applet | img | map | iframe">
+
+<!ENTITY % special.basic
+ "br | span | bdo">
+
+<!ENTITY % special
+ "%special.basic; | %special.extra;">
+
+<!ENTITY % fontstyle.extra "big | small | font | basefont">
+
+<!ENTITY % fontstyle.basic "tt | i | b | u
+ | s | strike ">
+
+<!ENTITY % fontstyle "%fontstyle.basic; | %fontstyle.extra;">
+
+<!ENTITY % phrase.extra "sub | sup">
+<!ENTITY % phrase.basic "em | strong | dfn | code | q |
+ samp | kbd | var | cite | abbr | acronym">
+
+<!ENTITY % phrase "%phrase.basic; | %phrase.extra;">
+
+<!ENTITY % inline.forms "input | select | textarea | label | button">
+
+<!-- these can occur at block or inline level -->
+<!ENTITY % misc.inline "ins | del | script">
+
+<!-- these can only occur at block level -->
+<!ENTITY % misc "noscript | %misc.inline;">
+
+
+<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
+
+<!-- %Inline; covers inline or "text-level" elements -->
+<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
+
+<!--================== Block level elements ==============================-->
+
+<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
+<!ENTITY % lists "ul | ol | dl | menu | dir">
+<!ENTITY % blocktext "pre | hr | blockquote | address | center">
+
+<!ENTITY % block
+ "p | %heading; | div | %lists; | %blocktext; | isindex | fieldset | table">
+
+<!-- %Flow; mixes block and inline and is used for list items etc. -->
+<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
+
+<!--================== Content models for exclusions =====================-->
+
+<!-- a elements use %Inline; excluding a -->
+
+<!ENTITY % a.content
+ "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
+
+<!-- pre uses %Inline excluding img, object, applet, big, small,
+ sub, sup, font, or basefont -->
+
+<!ENTITY % pre.content
+ "(#PCDATA | a | %special.basic; | %fontstyle.basic; | %phrase.basic; |
+ %inline.forms; | %misc.inline;)*">
+
+
+<!-- form uses %Flow; excluding form -->
+
+<!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">
+
+<!-- button uses %Flow; but excludes a, form, form controls, iframe -->
+
+<!ENTITY % button.content
+ "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
+ table | br | span | bdo | object | applet | img | map |
+ %fontstyle; | %phrase; | %misc;)*">
+
+<!--================ Document Structure ==================================-->
+
+<!-- the namespace URI designates the document profile -->
+
+<!ELEMENT html (head, frameset)>
+<!ATTLIST html
+ %i18n;
+ id ID #IMPLIED
+ xmlns %URI; #FIXED 'http://www.w3.org/1999/xhtml'
+ >
+
+<!--================ Document Head =======================================-->
+
+<!ENTITY % head.misc "(script|style|meta|link|object|isindex)*">
+
+<!-- content model is %head.misc; combined with a single
+ title and an optional base element in any order -->
+
+<!ELEMENT head (%head.misc;,
+ ((title, %head.misc;, (base, %head.misc;)?) |
+ (base, %head.misc;, (title, %head.misc;))))>
+
+<!ATTLIST head
+ %i18n;
+ id ID #IMPLIED
+ profile %URI; #IMPLIED
+ >
+
+<!-- The title element is not considered part of the flow of text.
+ It should be displayed, for example as the page header or
+ window title. Exactly one title is required per document.
+ -->
+<!ELEMENT title (#PCDATA)>
+<!ATTLIST title
+ %i18n;
+ id ID #IMPLIED
+ >
+
+<!-- document base URI -->
+
+<!ELEMENT base EMPTY>
+<!ATTLIST base
+ id ID #IMPLIED
+ href %URI; #IMPLIED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!-- generic metainformation -->
+<!ELEMENT meta EMPTY>
+<!ATTLIST meta
+ %i18n;
+ id ID #IMPLIED
+ http-equiv CDATA #IMPLIED
+ name CDATA #IMPLIED
+ content CDATA #REQUIRED
+ scheme CDATA #IMPLIED
+ >
+
+<!--
+ Relationship values can be used in principle:
+
+ a) for document specific toolbars/menus when used
+ with the link element in document head e.g.
+ start, contents, previous, next, index, end, help
+ b) to link to a separate style sheet (rel="stylesheet")
+ c) to make a link to a script (rel="script")
+ d) by stylesheets to control how collections of
+ html nodes are rendered into printed documents
+ e) to make a link to a printable version of this document
+ e.g. a PostScript or PDF version (rel="alternate" media="print")
+-->
+
+<!ELEMENT link EMPTY>
+<!ATTLIST link
+ %attrs;
+ charset %Charset; #IMPLIED
+ href %URI; #IMPLIED
+ hreflang %LanguageCode; #IMPLIED
+ type %ContentType; #IMPLIED
+ rel %LinkTypes; #IMPLIED
+ rev %LinkTypes; #IMPLIED
+ media %MediaDesc; #IMPLIED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!-- style info, which may include CDATA sections -->
+<!ELEMENT style (#PCDATA)>
+<!ATTLIST style
+ %i18n;
+ id ID #IMPLIED
+ type %ContentType; #REQUIRED
+ media %MediaDesc; #IMPLIED
+ title %Text; #IMPLIED
+ xml:space (preserve) #FIXED 'preserve'
+ >
+
+<!-- script statements, which may include CDATA sections -->
+<!ELEMENT script (#PCDATA)>
+<!ATTLIST script
+ id ID #IMPLIED
+ charset %Charset; #IMPLIED
+ type %ContentType; #REQUIRED
+ language CDATA #IMPLIED
+ src %URI; #IMPLIED
+ defer (defer) #IMPLIED
+ xml:space (preserve) #FIXED 'preserve'
+ >
+
+<!-- alternate content container for non script-based rendering -->
+
+<!ELEMENT noscript %Flow;>
+<!ATTLIST noscript
+ %attrs;
+ >
+
+<!--======================= Frames =======================================-->
+
+<!-- only one noframes element permitted per document -->
+
+<!ELEMENT frameset (frameset|frame|noframes)*>
+<!ATTLIST frameset
+ %coreattrs;
+ rows %MultiLengths; #IMPLIED
+ cols %MultiLengths; #IMPLIED
+ onload %Script; #IMPLIED
+ onunload %Script; #IMPLIED
+ >
+
+<!-- reserved frame names start with "_" otherwise starts with letter -->
+
+<!-- tiled window within frameset -->
+
+<!ELEMENT frame EMPTY>
+<!ATTLIST frame
+ %coreattrs;
+ longdesc %URI; #IMPLIED
+ name NMTOKEN #IMPLIED
+ src %URI; #IMPLIED
+ frameborder (1|0) "1"
+ marginwidth %Pixels; #IMPLIED
+ marginheight %Pixels; #IMPLIED
+ noresize (noresize) #IMPLIED
+ scrolling (yes|no|auto) "auto"
+ >
+
+<!-- inline subwindow -->
+
+<!ELEMENT iframe %Flow;>
+<!ATTLIST iframe
+ %coreattrs;
+ longdesc %URI; #IMPLIED
+ name NMTOKEN #IMPLIED
+ src %URI; #IMPLIED
+ frameborder (1|0) "1"
+ marginwidth %Pixels; #IMPLIED
+ marginheight %Pixels; #IMPLIED
+ scrolling (yes|no|auto) "auto"
+ align %ImgAlign; #IMPLIED
+ height %Length; #IMPLIED
+ width %Length; #IMPLIED
+ >
+
+<!-- alternate content container for non frame-based rendering -->
+
+<!ELEMENT noframes (body)>
+<!ATTLIST noframes
+ %attrs;
+ >
+
+<!--=================== Document Body ====================================-->
+
+<!ELEMENT body %Flow;>
+<!ATTLIST body
+ %attrs;
+ onload %Script; #IMPLIED
+ onunload %Script; #IMPLIED
+ background %URI; #IMPLIED
+ bgcolor %Color; #IMPLIED
+ text %Color; #IMPLIED
+ link %Color; #IMPLIED
+ vlink %Color; #IMPLIED
+ alink %Color; #IMPLIED
+ >
+
+<!ELEMENT div %Flow;> <!-- generic language/style container -->
+<!ATTLIST div
+ %attrs;
+ %TextAlign;
+ >
+
+<!--=================== Paragraphs =======================================-->
+
+<!ELEMENT p %Inline;>
+<!ATTLIST p
+ %attrs;
+ %TextAlign;
+ >
+
+<!--=================== Headings =========================================-->
+
+<!--
+ There are six levels of headings from h1 (the most important)
+ to h6 (the least important).
+-->
+
+<!ELEMENT h1 %Inline;>
+<!ATTLIST h1
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h2 %Inline;>
+<!ATTLIST h2
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h3 %Inline;>
+<!ATTLIST h3
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h4 %Inline;>
+<!ATTLIST h4
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h5 %Inline;>
+<!ATTLIST h5
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h6 %Inline;>
+<!ATTLIST h6
+ %attrs;
+ %TextAlign;
+ >
+
+<!--=================== Lists ============================================-->
+
+<!-- Unordered list bullet styles -->
+
+<!ENTITY % ULStyle "(disc|square|circle)">
+
+<!-- Unordered list -->
+
+<!ELEMENT ul (li)+>
+<!ATTLIST ul
+ %attrs;
+ type %ULStyle; #IMPLIED
+ compact (compact) #IMPLIED
+ >
+
+<!-- Ordered list numbering style
+
+ 1 arabic numbers 1, 2, 3, ...
+ a lower alpha a, b, c, ...
+ A upper alpha A, B, C, ...
+ i lower roman i, ii, iii, ...
+ I upper roman I, II, III, ...
+
+ The style is applied to the sequence number which by default
+ is reset to 1 for the first list item in an ordered list.
+-->
+<!ENTITY % OLStyle "CDATA">
+
+<!-- Ordered (numbered) list -->
+
+<!ELEMENT ol (li)+>
+<!ATTLIST ol
+ %attrs;
+ type %OLStyle; #IMPLIED
+ compact (compact) #IMPLIED
+ start %Number; #IMPLIED
+ >
+
+<!-- single column list (DEPRECATED) -->
+<!ELEMENT menu (li)+>
+<!ATTLIST menu
+ %attrs;
+ compact (compact) #IMPLIED
+ >
+
+<!-- multiple column list (DEPRECATED) -->
+<!ELEMENT dir (li)+>
+<!ATTLIST dir
+ %attrs;
+ compact (compact) #IMPLIED
+ >
+
+<!-- LIStyle is constrained to: "(%ULStyle;|%OLStyle;)" -->
+<!ENTITY % LIStyle "CDATA">
+
+<!-- list item -->
+
+<!ELEMENT li %Flow;>
+<!ATTLIST li
+ %attrs;
+ type %LIStyle; #IMPLIED
+ value %Number; #IMPLIED
+ >
+
+<!-- definition lists - dt for term, dd for its definition -->
+
+<!ELEMENT dl (dt|dd)+>
+<!ATTLIST dl
+ %attrs;
+ compact (compact) #IMPLIED
+ >
+
+<!ELEMENT dt %Inline;>
+<!ATTLIST dt
+ %attrs;
+ >
+
+<!ELEMENT dd %Flow;>
+<!ATTLIST dd
+ %attrs;
+ >
+
+<!--=================== Address ==========================================-->
+
+<!-- information on author -->
+
+<!ELEMENT address (#PCDATA | %inline; | %misc.inline; | p)*>
+<!ATTLIST address
+ %attrs;
+ >
+
+<!--=================== Horizontal Rule ==================================-->
+
+<!ELEMENT hr EMPTY>
+<!ATTLIST hr
+ %attrs;
+ align (left|center|right) #IMPLIED
+ noshade (noshade) #IMPLIED
+ size %Pixels; #IMPLIED
+ width %Length; #IMPLIED
+ >
+
+<!--=================== Preformatted Text ================================-->
+
+<!-- content is %Inline; excluding
+ "img|object|applet|big|small|sub|sup|font|basefont" -->
+
+<!ELEMENT pre %pre.content;>
+<!ATTLIST pre
+ %attrs;
+ width %Number; #IMPLIED
+ xml:space (preserve) #FIXED 'preserve'
+ >
+
+<!--=================== Block-like Quotes ================================-->
+
+<!ELEMENT blockquote %Flow;>
+<!ATTLIST blockquote
+ %attrs;
+ cite %URI; #IMPLIED
+ >
+
+<!--=================== Text alignment ===================================-->
+
+<!-- center content -->
+<!ELEMENT center %Flow;>
+<!ATTLIST center
+ %attrs;
+ >
+
+<!--=================== Inserted/Deleted Text ============================-->
+
+
+<!--
+ ins/del are allowed in block and inline content, but its
+ inappropriate to include block content within an ins element
+ occurring in inline content.
+-->
+<!ELEMENT ins %Flow;>
+<!ATTLIST ins
+ %attrs;
+ cite %URI; #IMPLIED
+ datetime %Datetime; #IMPLIED
+ >
+
+<!ELEMENT del %Flow;>
+<!ATTLIST del
+ %attrs;
+ cite %URI; #IMPLIED
+ datetime %Datetime; #IMPLIED
+ >
+
+<!--================== The Anchor Element ================================-->
+
+<!-- content is %Inline; except that anchors shouldn't be nested -->
+
+<!ELEMENT a %a.content;>
+<!ATTLIST a
+ %attrs;
+ %focus;
+ charset %Charset; #IMPLIED
+ type %ContentType; #IMPLIED
+ name NMTOKEN #IMPLIED
+ href %URI; #IMPLIED
+ hreflang %LanguageCode; #IMPLIED
+ rel %LinkTypes; #IMPLIED
+ rev %LinkTypes; #IMPLIED
+ shape %Shape; "rect"
+ coords %Coords; #IMPLIED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!--===================== Inline Elements ================================-->
+
+<!ELEMENT span %Inline;> <!-- generic language/style container -->
+<!ATTLIST span
+ %attrs;
+ >
+
+<!ELEMENT bdo %Inline;> <!-- I18N BiDi over-ride -->
+<!ATTLIST bdo
+ %coreattrs;
+ %events;
+ lang %LanguageCode; #IMPLIED
+ xml:lang %LanguageCode; #IMPLIED
+ dir (ltr|rtl) #REQUIRED
+ >
+
+<!ELEMENT br EMPTY> <!-- forced line break -->
+<!ATTLIST br
+ %coreattrs;
+ clear (left|all|right|none) "none"
+ >
+
+<!ELEMENT em %Inline;> <!-- emphasis -->
+<!ATTLIST em %attrs;>
+
+<!ELEMENT strong %Inline;> <!-- strong emphasis -->
+<!ATTLIST strong %attrs;>
+
+<!ELEMENT dfn %Inline;> <!-- definitional -->
+<!ATTLIST dfn %attrs;>
+
+<!ELEMENT code %Inline;> <!-- program code -->
+<!ATTLIST code %attrs;>
+
+<!ELEMENT samp %Inline;> <!-- sample -->
+<!ATTLIST samp %attrs;>
+
+<!ELEMENT kbd %Inline;> <!-- something user would type -->
+<!ATTLIST kbd %attrs;>
+
+<!ELEMENT var %Inline;> <!-- variable -->
+<!ATTLIST var %attrs;>
+
+<!ELEMENT cite %Inline;> <!-- citation -->
+<!ATTLIST cite %attrs;>
+
+<!ELEMENT abbr %Inline;> <!-- abbreviation -->
+<!ATTLIST abbr %attrs;>
+
+<!ELEMENT acronym %Inline;> <!-- acronym -->
+<!ATTLIST acronym %attrs;>
+
+<!ELEMENT q %Inline;> <!-- inlined quote -->
+<!ATTLIST q
+ %attrs;
+ cite %URI; #IMPLIED
+ >
+
+<!ELEMENT sub %Inline;> <!-- subscript -->
+<!ATTLIST sub %attrs;>
+
+<!ELEMENT sup %Inline;> <!-- superscript -->
+<!ATTLIST sup %attrs;>
+
+<!ELEMENT tt %Inline;> <!-- fixed pitch font -->
+<!ATTLIST tt %attrs;>
+
+<!ELEMENT i %Inline;> <!-- italic font -->
+<!ATTLIST i %attrs;>
+
+<!ELEMENT b %Inline;> <!-- bold font -->
+<!ATTLIST b %attrs;>
+
+<!ELEMENT big %Inline;> <!-- bigger font -->
+<!ATTLIST big %attrs;>
+
+<!ELEMENT small %Inline;> <!-- smaller font -->
+<!ATTLIST small %attrs;>
+
+<!ELEMENT u %Inline;> <!-- underline -->
+<!ATTLIST u %attrs;>
+
+<!ELEMENT s %Inline;> <!-- strike-through -->
+<!ATTLIST s %attrs;>
+
+<!ELEMENT strike %Inline;> <!-- strike-through -->
+<!ATTLIST strike %attrs;>
+
+<!ELEMENT basefont EMPTY> <!-- base font size -->
+<!ATTLIST basefont
+ id ID #IMPLIED
+ size CDATA #REQUIRED
+ color %Color; #IMPLIED
+ face CDATA #IMPLIED
+ >
+
+<!ELEMENT font %Inline;> <!-- local change to font -->
+<!ATTLIST font
+ %coreattrs;
+ %i18n;
+ size CDATA #IMPLIED
+ color %Color; #IMPLIED
+ face CDATA #IMPLIED
+ >
+
+<!--==================== Object ======================================-->
+<!--
+ object is used to embed objects as part of HTML pages.
+ param elements should precede other content. Parameters
+ can also be expressed as attribute/value pairs on the
+ object element itself when brevity is desired.
+-->
+
+<!ELEMENT object (#PCDATA | param | %block; | form |%inline; | %misc;)*>
+<!ATTLIST object
+ %attrs;
+ declare (declare) #IMPLIED
+ classid %URI; #IMPLIED
+ codebase %URI; #IMPLIED
+ data %URI; #IMPLIED
+ type %ContentType; #IMPLIED
+ codetype %ContentType; #IMPLIED
+ archive %UriList; #IMPLIED
+ standby %Text; #IMPLIED
+ height %Length; #IMPLIED
+ width %Length; #IMPLIED
+ usemap %URI; #IMPLIED
+ name NMTOKEN #IMPLIED
+ tabindex %Number; #IMPLIED
+ align %ImgAlign; #IMPLIED
+ border %Pixels; #IMPLIED
+ hspace %Pixels; #IMPLIED
+ vspace %Pixels; #IMPLIED
+ >
+
+<!--
+ param is used to supply a named property value.
+ In XML it would seem natural to follow RDF and support an
+ abbreviated syntax where the param elements are replaced
+ by attribute value pairs on the object start tag.
+-->
+<!ELEMENT param EMPTY>
+<!ATTLIST param
+ id ID #IMPLIED
+ name CDATA #REQUIRED
+ value CDATA #IMPLIED
+ valuetype (data|ref|object) "data"
+ type %ContentType; #IMPLIED
+ >
+
+<!--=================== Java applet ==================================-->
+<!--
+ One of code or object attributes must be present.
+ Place param elements before other content.
+-->
+<!ELEMENT applet (#PCDATA | param | %block; | form | %inline; | %misc;)*>
+<!ATTLIST applet
+ %coreattrs;
+ codebase %URI; #IMPLIED
+ archive CDATA #IMPLIED
+ code CDATA #IMPLIED
+ object CDATA #IMPLIED
+ alt %Text; #IMPLIED
+ name NMTOKEN #IMPLIED
+ width %Length; #REQUIRED
+ height %Length; #REQUIRED
+ align %ImgAlign; #IMPLIED
+ hspace %Pixels; #IMPLIED
+ vspace %Pixels; #IMPLIED
+ >
+
+<!--=================== Images ===========================================-->
+
+<!--
+ To avoid accessibility problems for people who aren't
+ able to see the image, you should provide a text
+ description using the alt and longdesc attributes.
+ In addition, avoid the use of server-side image maps.
+-->
+
+<!ELEMENT img EMPTY>
+<!ATTLIST img
+ %attrs;
+ src %URI; #REQUIRED
+ alt %Text; #REQUIRED
+ name NMTOKEN #IMPLIED
+ longdesc %URI; #IMPLIED
+ height %Length; #IMPLIED
+ width %Length; #IMPLIED
+ usemap %URI; #IMPLIED
+ ismap (ismap) #IMPLIED
+ align %ImgAlign; #IMPLIED
+ border %Pixels; #IMPLIED
+ hspace %Pixels; #IMPLIED
+ vspace %Pixels; #IMPLIED
+ >
+
+<!-- usemap points to a map element which may be in this document
+ or an external document, although the latter is not widely supported -->
+
+<!--================== Client-side image maps ============================-->
+
+<!-- These can be placed in the same document or grouped in a
+ separate document although this isn't yet widely supported -->
+
+<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
+<!ATTLIST map
+ %i18n;
+ %events;
+ id ID #REQUIRED
+ class CDATA #IMPLIED
+ style %StyleSheet; #IMPLIED
+ title %Text; #IMPLIED
+ name NMTOKEN #IMPLIED
+ >
+
+<!ELEMENT area EMPTY>
+<!ATTLIST area
+ %attrs;
+ %focus;
+ shape %Shape; "rect"
+ coords %Coords; #IMPLIED
+ href %URI; #IMPLIED
+ nohref (nohref) #IMPLIED
+ alt %Text; #REQUIRED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!--================ Forms ===============================================-->
+
+<!ELEMENT form %form.content;> <!-- forms shouldn't be nested -->
+
+<!ATTLIST form
+ %attrs;
+ action %URI; #REQUIRED
+ method (get|post) "get"
+ name NMTOKEN #IMPLIED
+ enctype %ContentType; "application/x-www-form-urlencoded"
+ onsubmit %Script; #IMPLIED
+ onreset %Script; #IMPLIED
+ accept %ContentTypes; #IMPLIED
+ accept-charset %Charsets; #IMPLIED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!--
+ Each label must not contain more than ONE field
+ Label elements shouldn't be nested.
+-->
+<!ELEMENT label %Inline;>
+<!ATTLIST label
+ %attrs;
+ for IDREF #IMPLIED
+ accesskey %Character; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ >
+
+<!ENTITY % InputType
+ "(text | password | checkbox |
+ radio | submit | reset |
+ file | hidden | image | button)"
+ >
+
+<!-- the name attribute is required for all but submit & reset -->
+
+<!ELEMENT input EMPTY> <!-- form control -->
+<!ATTLIST input
+ %attrs;
+ %focus;
+ type %InputType; "text"
+ name CDATA #IMPLIED
+ value CDATA #IMPLIED
+ checked (checked) #IMPLIED
+ disabled (disabled) #IMPLIED
+ readonly (readonly) #IMPLIED
+ size CDATA #IMPLIED
+ maxlength %Number; #IMPLIED
+ src %URI; #IMPLIED
+ alt CDATA #IMPLIED
+ usemap %URI; #IMPLIED
+ onselect %Script; #IMPLIED
+ onchange %Script; #IMPLIED
+ accept %ContentTypes; #IMPLIED
+ align %ImgAlign; #IMPLIED
+ >
+
+<!ELEMENT select (optgroup|option)+> <!-- option selector -->
+<!ATTLIST select
+ %attrs;
+ name CDATA #IMPLIED
+ size %Number; #IMPLIED
+ multiple (multiple) #IMPLIED
+ disabled (disabled) #IMPLIED
+ tabindex %Number; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ onchange %Script; #IMPLIED
+ >
+
+<!ELEMENT optgroup (option)+> <!-- option group -->
+<!ATTLIST optgroup
+ %attrs;
+ disabled (disabled) #IMPLIED
+ label %Text; #REQUIRED
+ >
+
+<!ELEMENT option (#PCDATA)> <!-- selectable choice -->
+<!ATTLIST option
+ %attrs;
+ selected (selected) #IMPLIED
+ disabled (disabled) #IMPLIED
+ label %Text; #IMPLIED
+ value CDATA #IMPLIED
+ >
+
+<!ELEMENT textarea (#PCDATA)> <!-- multi-line text field -->
+<!ATTLIST textarea
+ %attrs;
+ %focus;
+ name CDATA #IMPLIED
+ rows %Number; #REQUIRED
+ cols %Number; #REQUIRED
+ disabled (disabled) #IMPLIED
+ readonly (readonly) #IMPLIED
+ onselect %Script; #IMPLIED
+ onchange %Script; #IMPLIED
+ >
+
+<!--
+ The fieldset element is used to group form fields.
+ Only one legend element should occur in the content
+ and if present should only be preceded by whitespace.
+-->
+<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
+<!ATTLIST fieldset
+ %attrs;
+ >
+
+<!ENTITY % LAlign "(top|bottom|left|right)">
+
+<!ELEMENT legend %Inline;> <!-- fieldset label -->
+<!ATTLIST legend
+ %attrs;
+ accesskey %Character; #IMPLIED
+ align %LAlign; #IMPLIED
+ >
+
+<!--
+ Content is %Flow; excluding a, form, form controls, iframe
+-->
+<!ELEMENT button %button.content;> <!-- push button -->
+<!ATTLIST button
+ %attrs;
+ %focus;
+ name CDATA #IMPLIED
+ value CDATA #IMPLIED
+ type (button|submit|reset) "submit"
+ disabled (disabled) #IMPLIED
+ >
+
+<!-- single-line text input control (DEPRECATED) -->
+<!ELEMENT isindex EMPTY>
+<!ATTLIST isindex
+ %coreattrs;
+ %i18n;
+ prompt %Text; #IMPLIED
+ >
+
+<!--======================= Tables =======================================-->
+
+<!-- Derived from IETF HTML table standard, see [RFC1942] -->
+
+<!--
+ The border attribute sets the thickness of the frame around the
+ table. The default units are screen pixels.
+
+ The frame attribute specifies which parts of the frame around
+ the table should be rendered. The values are not the same as
+ CALS to avoid a name clash with the valign attribute.
+-->
+<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
+
+<!--
+ The rules attribute defines which rules to draw between cells:
+
+ If rules is absent then assume:
+ "none" if border is absent or border="0" otherwise "all"
+-->
+
+<!ENTITY % TRules "(none | groups | rows | cols | all)">
+
+<!-- horizontal placement of table relative to document -->
+<!ENTITY % TAlign "(left|center|right)">
+
+<!-- horizontal alignment attributes for cell contents
+
+ char alignment char, e.g. char=":"
+ charoff offset for alignment char
+-->
+<!ENTITY % cellhalign
+ "align (left|center|right|justify|char) #IMPLIED
+ char %Character; #IMPLIED
+ charoff %Length; #IMPLIED"
+ >
+
+<!-- vertical alignment attributes for cell contents -->
+<!ENTITY % cellvalign
+ "valign (top|middle|bottom|baseline) #IMPLIED"
+ >
+
+<!ELEMENT table
+ (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
+<!ELEMENT caption %Inline;>
+<!ELEMENT thead (tr)+>
+<!ELEMENT tfoot (tr)+>
+<!ELEMENT tbody (tr)+>
+<!ELEMENT colgroup (col)*>
+<!ELEMENT col EMPTY>
+<!ELEMENT tr (th|td)+>
+<!ELEMENT th %Flow;>
+<!ELEMENT td %Flow;>
+
+<!ATTLIST table
+ %attrs;
+ summary %Text; #IMPLIED
+ width %Length; #IMPLIED
+ border %Pixels; #IMPLIED
+ frame %TFrame; #IMPLIED
+ rules %TRules; #IMPLIED
+ cellspacing %Length; #IMPLIED
+ cellpadding %Length; #IMPLIED
+ align %TAlign; #IMPLIED
+ bgcolor %Color; #IMPLIED
+ >
+
+<!ENTITY % CAlign "(top|bottom|left|right)">
+
+<!ATTLIST caption
+ %attrs;
+ align %CAlign; #IMPLIED
+ >
+
+<!--
+colgroup groups a set of col elements. It allows you to group
+several semantically related columns together.
+-->
+<!ATTLIST colgroup
+ %attrs;
+ span %Number; "1"
+ width %MultiLength; #IMPLIED
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!--
+ col elements define the alignment properties for cells in
+ one or more columns.
+
+ The width attribute specifies the width of the columns, e.g.
+
+ width=64 width in screen pixels
+ width=0.5* relative width of 0.5
+
+ The span attribute causes the attributes of one
+ col element to apply to more than one column.
+-->
+<!ATTLIST col
+ %attrs;
+ span %Number; "1"
+ width %MultiLength; #IMPLIED
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!--
+ Use thead to duplicate headers when breaking table
+ across page boundaries, or for static headers when
+ tbody sections are rendered in scrolling panel.
+
+ Use tfoot to duplicate footers when breaking table
+ across page boundaries, or for static footers when
+ tbody sections are rendered in scrolling panel.
+
+ Use multiple tbody sections when rules are needed
+ between groups of table rows.
+-->
+<!ATTLIST thead
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!ATTLIST tfoot
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!ATTLIST tbody
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!ATTLIST tr
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ bgcolor %Color; #IMPLIED
+ >
+
+<!-- Scope is simpler than headers attribute for common tables -->
+<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
+
+<!-- th is for headers, td for data and for cells acting as both -->
+
+<!ATTLIST th
+ %attrs;
+ abbr %Text; #IMPLIED
+ axis CDATA #IMPLIED
+ headers IDREFS #IMPLIED
+ scope %Scope; #IMPLIED
+ rowspan %Number; "1"
+ colspan %Number; "1"
+ %cellhalign;
+ %cellvalign;
+ nowrap (nowrap) #IMPLIED
+ bgcolor %Color; #IMPLIED
+ width %Pixels; #IMPLIED
+ height %Pixels; #IMPLIED
+ >
+
+<!ATTLIST td
+ %attrs;
+ abbr %Text; #IMPLIED
+ axis CDATA #IMPLIED
+ headers IDREFS #IMPLIED
+ scope %Scope; #IMPLIED
+ rowspan %Number; "1"
+ colspan %Number; "1"
+ %cellhalign;
+ %cellvalign;
+ nowrap (nowrap) #IMPLIED
+ bgcolor %Color; #IMPLIED
+ width %Pixels; #IMPLIED
+ height %Pixels; #IMPLIED
+ >
+
diff --git a/dom/tests/mochitest/dom-level2-core/files/xhtml1-strict.dtd b/dom/tests/mochitest/dom-level2-core/files/xhtml1-strict.dtd
new file mode 100644
index 0000000000..fefb77f4f0
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/files/xhtml1-strict.dtd
@@ -0,0 +1,65 @@
+<!--
+
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, Institut National de
+Recherche en Informatique et en Automatique, Keio University). All
+Rights Reserved. This program is distributed under the W3C's Software
+Intellectual Property License. This program is distributed in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+PURPOSE.
+
+See W3C License http://www.w3.org/Consortium/Legal/ for more details.
+
+-->
+
+<!--
+
+This is a radically simplified DTD for use in the DOM Test Suites
+due to a XML non-conformance of one implementation in processing
+parameter entities. When that non-conformance is resolved,
+this DTD can be replaced by the normal DTD for XHTML.
+
+-->
+
+
+<!ELEMENT html (head, body)>
+<!ATTLIST html xmlns CDATA #IMPLIED>
+<!ELEMENT head (meta,title,script*)>
+<!ELEMENT meta EMPTY>
+<!ATTLIST meta
+ http-equiv CDATA #IMPLIED
+ content CDATA #IMPLIED>
+<!ELEMENT title (#PCDATA)>
+<!ELEMENT body (p*)>
+<!ATTLIST body onload CDATA #IMPLIED>
+<!ELEMENT p (#PCDATA|em|strong|code|sup|var|acronym|abbr)*>
+<!ATTLIST p
+ xmlns:dmstc CDATA #IMPLIED
+ xmlns:nm CDATA #IMPLIED
+ xmlns:emp2 CDATA #IMPLIED
+ id ID #IMPLIED
+>
+<!ELEMENT em (#PCDATA)>
+<!ELEMENT span (#PCDATA)>
+<!ELEMENT strong (#PCDATA)>
+<!ELEMENT code (#PCDATA)>
+<!ELEMENT sup (#PCDATA)>
+<!ELEMENT var (#PCDATA|span)*>
+<!ELEMENT acronym (#PCDATA)>
+<!ATTLIST acronym
+ title CDATA #IMPLIED
+ class CDATA #IMPLIED
+ id ID #IMPLIED
+>
+<!ELEMENT abbr (#PCDATA)>
+<!ATTLIST abbr
+ title CDATA #IMPLIED
+ class CDATA #IMPLIED
+ id ID #IMPLIED
+>
+<!ELEMENT script (#PCDATA)>
+<!ATTLIST script
+ type CDATA #IMPLIED
+ src CDATA #IMPLIED
+ charset CDATA #IMPLIED>
diff --git a/dom/tests/mochitest/dom-level2-core/files/xhtml1-transitional.dtd b/dom/tests/mochitest/dom-level2-core/files/xhtml1-transitional.dtd
new file mode 100644
index 0000000000..3cad0fbaea
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/files/xhtml1-transitional.dtd
@@ -0,0 +1,1201 @@
+<!--
+ Extensible HTML version 1.0 Transitional DTD
+
+ This is the same as HTML 4 Transitional except for
+ changes due to the differences between XML and SGML.
+
+ Namespace = http://www.w3.org/1999/xhtml
+
+ For further information, see: http://www.w3.org/TR/xhtml1
+
+ Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
+ All Rights Reserved.
+
+ This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
+
+ $Revision: 1.1 $
+ $Date: 2007/02/28 22:59:26 $
+
+-->
+
+<!--================ Character mnemonic entities =========================-->
+
+<!ENTITY % HTMLlat1 PUBLIC
+ "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+ "xhtml-lat1.ent">
+%HTMLlat1;
+
+<!ENTITY % HTMLsymbol PUBLIC
+ "-//W3C//ENTITIES Symbols for XHTML//EN"
+ "xhtml-symbol.ent">
+%HTMLsymbol;
+
+<!ENTITY % HTMLspecial PUBLIC
+ "-//W3C//ENTITIES Special for XHTML//EN"
+ "xhtml-special.ent">
+%HTMLspecial;
+
+<!--================== Imported Names ====================================-->
+
+<!ENTITY % ContentType "CDATA">
+ <!-- media type, as per [RFC2045] -->
+
+<!ENTITY % ContentTypes "CDATA">
+ <!-- comma-separated list of media types, as per [RFC2045] -->
+
+<!ENTITY % Charset "CDATA">
+ <!-- a character encoding, as per [RFC2045] -->
+
+<!ENTITY % Charsets "CDATA">
+ <!-- a space separated list of character encodings, as per [RFC2045] -->
+
+<!ENTITY % LanguageCode "NMTOKEN">
+ <!-- a language code, as per [RFC3066] -->
+
+<!ENTITY % Character "CDATA">
+ <!-- a single character, as per section 2.2 of [XML] -->
+
+<!ENTITY % Number "CDATA">
+ <!-- one or more digits -->
+
+<!ENTITY % LinkTypes "CDATA">
+ <!-- space-separated list of link types -->
+
+<!ENTITY % MediaDesc "CDATA">
+ <!-- single or comma-separated list of media descriptors -->
+
+<!ENTITY % URI "CDATA">
+ <!-- a Uniform Resource Identifier, see [RFC2396] -->
+
+<!ENTITY % UriList "CDATA">
+ <!-- a space separated list of Uniform Resource Identifiers -->
+
+<!ENTITY % Datetime "CDATA">
+ <!-- date and time information. ISO date format -->
+
+<!ENTITY % Script "CDATA">
+ <!-- script expression -->
+
+<!ENTITY % StyleSheet "CDATA">
+ <!-- style sheet data -->
+
+<!ENTITY % Text "CDATA">
+ <!-- used for titles etc. -->
+
+<!ENTITY % FrameTarget "NMTOKEN">
+ <!-- render in this frame -->
+
+<!ENTITY % Length "CDATA">
+ <!-- nn for pixels or nn% for percentage length -->
+
+<!ENTITY % MultiLength "CDATA">
+ <!-- pixel, percentage, or relative -->
+
+<!ENTITY % Pixels "CDATA">
+ <!-- integer representing length in pixels -->
+
+<!-- these are used for image maps -->
+
+<!ENTITY % Shape "(rect|circle|poly|default)">
+
+<!ENTITY % Coords "CDATA">
+ <!-- comma separated list of lengths -->
+
+<!-- used for object, applet, img, input and iframe -->
+<!ENTITY % ImgAlign "(top|middle|bottom|left|right)">
+
+<!-- a color using sRGB: #RRGGBB as Hex values -->
+<!ENTITY % Color "CDATA">
+
+<!-- There are also 16 widely known color names with their sRGB values:
+
+ Black = #000000 Green = #008000
+ Silver = #C0C0C0 Lime = #00FF00
+ Gray = #808080 Olive = #808000
+ White = #FFFFFF Yellow = #FFFF00
+ Maroon = #800000 Navy = #000080
+ Red = #FF0000 Blue = #0000FF
+ Purple = #800080 Teal = #008080
+ Fuchsia= #FF00FF Aqua = #00FFFF
+-->
+
+<!--=================== Generic Attributes ===============================-->
+
+<!-- core attributes common to most elements
+ id document-wide unique id
+ class space separated list of classes
+ style associated style info
+ title advisory title/amplification
+-->
+<!ENTITY % coreattrs
+ "id ID #IMPLIED
+ class CDATA #IMPLIED
+ style %StyleSheet; #IMPLIED
+ title %Text; #IMPLIED"
+ >
+
+<!-- internationalization attributes
+ lang language code (backwards compatible)
+ xml:lang language code (as per XML 1.0 spec)
+ dir direction for weak/neutral text
+-->
+<!ENTITY % i18n
+ "lang %LanguageCode; #IMPLIED
+ xml:lang %LanguageCode; #IMPLIED
+ dir (ltr|rtl) #IMPLIED"
+ >
+
+<!-- attributes for common UI events
+ onclick a pointer button was clicked
+ ondblclick a pointer button was double clicked
+ onmousedown a pointer button was pressed down
+ onmouseup a pointer button was released
+ onmousemove a pointer was moved onto the element
+ onmouseout a pointer was moved away from the element
+ onkeypress a key was pressed and released
+ onkeydown a key was pressed down
+ onkeyup a key was released
+-->
+<!ENTITY % events
+ "onclick %Script; #IMPLIED
+ ondblclick %Script; #IMPLIED
+ onmousedown %Script; #IMPLIED
+ onmouseup %Script; #IMPLIED
+ onmouseover %Script; #IMPLIED
+ onmousemove %Script; #IMPLIED
+ onmouseout %Script; #IMPLIED
+ onkeypress %Script; #IMPLIED
+ onkeydown %Script; #IMPLIED
+ onkeyup %Script; #IMPLIED"
+ >
+
+<!-- attributes for elements that can get the focus
+ accesskey accessibility key character
+ tabindex position in tabbing order
+ onfocus the element got the focus
+ onblur the element lost the focus
+-->
+<!ENTITY % focus
+ "accesskey %Character; #IMPLIED
+ tabindex %Number; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED"
+ >
+
+<!ENTITY % attrs "%coreattrs; %i18n; %events;">
+
+<!-- text alignment for p, div, h1-h6. The default is
+ align="left" for ltr headings, "right" for rtl -->
+
+<!ENTITY % TextAlign "align (left|center|right|justify) #IMPLIED">
+
+<!--=================== Text Elements ====================================-->
+
+<!ENTITY % special.extra
+ "object | applet | img | map | iframe">
+
+<!ENTITY % special.basic
+ "br | span | bdo">
+
+<!ENTITY % special
+ "%special.basic; | %special.extra;">
+
+<!ENTITY % fontstyle.extra "big | small | font | basefont">
+
+<!ENTITY % fontstyle.basic "tt | i | b | u
+ | s | strike ">
+
+<!ENTITY % fontstyle "%fontstyle.basic; | %fontstyle.extra;">
+
+<!ENTITY % phrase.extra "sub | sup">
+<!ENTITY % phrase.basic "em | strong | dfn | code | q |
+ samp | kbd | var | cite | abbr | acronym">
+
+<!ENTITY % phrase "%phrase.basic; | %phrase.extra;">
+
+<!ENTITY % inline.forms "input | select | textarea | label | button">
+
+<!-- these can occur at block or inline level -->
+<!ENTITY % misc.inline "ins | del | script">
+
+<!-- these can only occur at block level -->
+<!ENTITY % misc "noscript | %misc.inline;">
+
+<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
+
+<!-- %Inline; covers inline or "text-level" elements -->
+<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
+
+<!--================== Block level elements ==============================-->
+
+<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
+<!ENTITY % lists "ul | ol | dl | menu | dir">
+<!ENTITY % blocktext "pre | hr | blockquote | address | center | noframes">
+
+<!ENTITY % block
+ "p | %heading; | div | %lists; | %blocktext; | isindex |fieldset | table">
+
+<!-- %Flow; mixes block and inline and is used for list items etc. -->
+<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
+
+<!--================== Content models for exclusions =====================-->
+
+<!-- a elements use %Inline; excluding a -->
+
+<!ENTITY % a.content
+ "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
+
+<!-- pre uses %Inline excluding img, object, applet, big, small,
+ font, or basefont -->
+
+<!ENTITY % pre.content
+ "(#PCDATA | a | %special.basic; | %fontstyle.basic; | %phrase.basic; |
+ %inline.forms; | %misc.inline;)*">
+
+<!-- form uses %Flow; excluding form -->
+
+<!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">
+
+<!-- button uses %Flow; but excludes a, form, form controls, iframe -->
+
+<!ENTITY % button.content
+ "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
+ table | br | span | bdo | object | applet | img | map |
+ %fontstyle; | %phrase; | %misc;)*">
+
+<!--================ Document Structure ==================================-->
+
+<!-- the namespace URI designates the document profile -->
+
+<!ELEMENT html (head, body)>
+<!ATTLIST html
+ %i18n;
+ id ID #IMPLIED
+ xmlns %URI; #FIXED 'http://www.w3.org/1999/xhtml'
+ >
+
+<!--================ Document Head =======================================-->
+
+<!ENTITY % head.misc "(script|style|meta|link|object|isindex)*">
+
+<!-- content model is %head.misc; combined with a single
+ title and an optional base element in any order -->
+
+<!ELEMENT head (%head.misc;,
+ ((title, %head.misc;, (base, %head.misc;)?) |
+ (base, %head.misc;, (title, %head.misc;))))>
+
+<!ATTLIST head
+ %i18n;
+ id ID #IMPLIED
+ profile %URI; #IMPLIED
+ >
+
+<!-- The title element is not considered part of the flow of text.
+ It should be displayed, for example as the page header or
+ window title. Exactly one title is required per document.
+ -->
+<!ELEMENT title (#PCDATA)>
+<!ATTLIST title
+ %i18n;
+ id ID #IMPLIED
+ >
+
+<!-- document base URI -->
+
+<!ELEMENT base EMPTY>
+<!ATTLIST base
+ id ID #IMPLIED
+ href %URI; #IMPLIED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!-- generic metainformation -->
+<!ELEMENT meta EMPTY>
+<!ATTLIST meta
+ %i18n;
+ id ID #IMPLIED
+ http-equiv CDATA #IMPLIED
+ name CDATA #IMPLIED
+ content CDATA #REQUIRED
+ scheme CDATA #IMPLIED
+ >
+
+<!--
+ Relationship values can be used in principle:
+
+ a) for document specific toolbars/menus when used
+ with the link element in document head e.g.
+ start, contents, previous, next, index, end, help
+ b) to link to a separate style sheet (rel="stylesheet")
+ c) to make a link to a script (rel="script")
+ d) by stylesheets to control how collections of
+ html nodes are rendered into printed documents
+ e) to make a link to a printable version of this document
+ e.g. a PostScript or PDF version (rel="alternate" media="print")
+-->
+
+<!ELEMENT link EMPTY>
+<!ATTLIST link
+ %attrs;
+ charset %Charset; #IMPLIED
+ href %URI; #IMPLIED
+ hreflang %LanguageCode; #IMPLIED
+ type %ContentType; #IMPLIED
+ rel %LinkTypes; #IMPLIED
+ rev %LinkTypes; #IMPLIED
+ media %MediaDesc; #IMPLIED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!-- style info, which may include CDATA sections -->
+<!ELEMENT style (#PCDATA)>
+<!ATTLIST style
+ %i18n;
+ id ID #IMPLIED
+ type %ContentType; #REQUIRED
+ media %MediaDesc; #IMPLIED
+ title %Text; #IMPLIED
+ xml:space (preserve) #FIXED 'preserve'
+ >
+
+<!-- script statements, which may include CDATA sections -->
+<!ELEMENT script (#PCDATA)>
+<!ATTLIST script
+ id ID #IMPLIED
+ charset %Charset; #IMPLIED
+ type %ContentType; #REQUIRED
+ language CDATA #IMPLIED
+ src %URI; #IMPLIED
+ defer (defer) #IMPLIED
+ xml:space (preserve) #FIXED 'preserve'
+ >
+
+<!-- alternate content container for non script-based rendering -->
+
+<!ELEMENT noscript %Flow;>
+<!ATTLIST noscript
+ %attrs;
+ >
+
+<!--======================= Frames =======================================-->
+
+<!-- inline subwindow -->
+
+<!ELEMENT iframe %Flow;>
+<!ATTLIST iframe
+ %coreattrs;
+ longdesc %URI; #IMPLIED
+ name NMTOKEN #IMPLIED
+ src %URI; #IMPLIED
+ frameborder (1|0) "1"
+ marginwidth %Pixels; #IMPLIED
+ marginheight %Pixels; #IMPLIED
+ scrolling (yes|no|auto) "auto"
+ align %ImgAlign; #IMPLIED
+ height %Length; #IMPLIED
+ width %Length; #IMPLIED
+ >
+
+<!-- alternate content container for non frame-based rendering -->
+
+<!ELEMENT noframes %Flow;>
+<!ATTLIST noframes
+ %attrs;
+ >
+
+<!--=================== Document Body ====================================-->
+
+<!ELEMENT body %Flow;>
+<!ATTLIST body
+ %attrs;
+ onload %Script; #IMPLIED
+ onunload %Script; #IMPLIED
+ background %URI; #IMPLIED
+ bgcolor %Color; #IMPLIED
+ text %Color; #IMPLIED
+ link %Color; #IMPLIED
+ vlink %Color; #IMPLIED
+ alink %Color; #IMPLIED
+ >
+
+<!ELEMENT div %Flow;> <!-- generic language/style container -->
+<!ATTLIST div
+ %attrs;
+ %TextAlign;
+ >
+
+<!--=================== Paragraphs =======================================-->
+
+<!ELEMENT p %Inline;>
+<!ATTLIST p
+ %attrs;
+ %TextAlign;
+ >
+
+<!--=================== Headings =========================================-->
+
+<!--
+ There are six levels of headings from h1 (the most important)
+ to h6 (the least important).
+-->
+
+<!ELEMENT h1 %Inline;>
+<!ATTLIST h1
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h2 %Inline;>
+<!ATTLIST h2
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h3 %Inline;>
+<!ATTLIST h3
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h4 %Inline;>
+<!ATTLIST h4
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h5 %Inline;>
+<!ATTLIST h5
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h6 %Inline;>
+<!ATTLIST h6
+ %attrs;
+ %TextAlign;
+ >
+
+<!--=================== Lists ============================================-->
+
+<!-- Unordered list bullet styles -->
+
+<!ENTITY % ULStyle "(disc|square|circle)">
+
+<!-- Unordered list -->
+
+<!ELEMENT ul (li)+>
+<!ATTLIST ul
+ %attrs;
+ type %ULStyle; #IMPLIED
+ compact (compact) #IMPLIED
+ >
+
+<!-- Ordered list numbering style
+
+ 1 arabic numbers 1, 2, 3, ...
+ a lower alpha a, b, c, ...
+ A upper alpha A, B, C, ...
+ i lower roman i, ii, iii, ...
+ I upper roman I, II, III, ...
+
+ The style is applied to the sequence number which by default
+ is reset to 1 for the first list item in an ordered list.
+-->
+<!ENTITY % OLStyle "CDATA">
+
+<!-- Ordered (numbered) list -->
+
+<!ELEMENT ol (li)+>
+<!ATTLIST ol
+ %attrs;
+ type %OLStyle; #IMPLIED
+ compact (compact) #IMPLIED
+ start %Number; #IMPLIED
+ >
+
+<!-- single column list (DEPRECATED) -->
+<!ELEMENT menu (li)+>
+<!ATTLIST menu
+ %attrs;
+ compact (compact) #IMPLIED
+ >
+
+<!-- multiple column list (DEPRECATED) -->
+<!ELEMENT dir (li)+>
+<!ATTLIST dir
+ %attrs;
+ compact (compact) #IMPLIED
+ >
+
+<!-- LIStyle is constrained to: "(%ULStyle;|%OLStyle;)" -->
+<!ENTITY % LIStyle "CDATA">
+
+<!-- list item -->
+
+<!ELEMENT li %Flow;>
+<!ATTLIST li
+ %attrs;
+ type %LIStyle; #IMPLIED
+ value %Number; #IMPLIED
+ >
+
+<!-- definition lists - dt for term, dd for its definition -->
+
+<!ELEMENT dl (dt|dd)+>
+<!ATTLIST dl
+ %attrs;
+ compact (compact) #IMPLIED
+ >
+
+<!ELEMENT dt %Inline;>
+<!ATTLIST dt
+ %attrs;
+ >
+
+<!ELEMENT dd %Flow;>
+<!ATTLIST dd
+ %attrs;
+ >
+
+<!--=================== Address ==========================================-->
+
+<!-- information on author -->
+
+<!ELEMENT address (#PCDATA | %inline; | %misc.inline; | p)*>
+<!ATTLIST address
+ %attrs;
+ >
+
+<!--=================== Horizontal Rule ==================================-->
+
+<!ELEMENT hr EMPTY>
+<!ATTLIST hr
+ %attrs;
+ align (left|center|right) #IMPLIED
+ noshade (noshade) #IMPLIED
+ size %Pixels; #IMPLIED
+ width %Length; #IMPLIED
+ >
+
+<!--=================== Preformatted Text ================================-->
+
+<!-- content is %Inline; excluding
+ "img|object|applet|big|small|sub|sup|font|basefont" -->
+
+<!ELEMENT pre %pre.content;>
+<!ATTLIST pre
+ %attrs;
+ width %Number; #IMPLIED
+ xml:space (preserve) #FIXED 'preserve'
+ >
+
+<!--=================== Block-like Quotes ================================-->
+
+<!ELEMENT blockquote %Flow;>
+<!ATTLIST blockquote
+ %attrs;
+ cite %URI; #IMPLIED
+ >
+
+<!--=================== Text alignment ===================================-->
+
+<!-- center content -->
+<!ELEMENT center %Flow;>
+<!ATTLIST center
+ %attrs;
+ >
+
+<!--=================== Inserted/Deleted Text ============================-->
+
+<!--
+ ins/del are allowed in block and inline content, but its
+ inappropriate to include block content within an ins element
+ occurring in inline content.
+-->
+<!ELEMENT ins %Flow;>
+<!ATTLIST ins
+ %attrs;
+ cite %URI; #IMPLIED
+ datetime %Datetime; #IMPLIED
+ >
+
+<!ELEMENT del %Flow;>
+<!ATTLIST del
+ %attrs;
+ cite %URI; #IMPLIED
+ datetime %Datetime; #IMPLIED
+ >
+
+<!--================== The Anchor Element ================================-->
+
+<!-- content is %Inline; except that anchors shouldn't be nested -->
+
+<!ELEMENT a %a.content;>
+<!ATTLIST a
+ %attrs;
+ %focus;
+ charset %Charset; #IMPLIED
+ type %ContentType; #IMPLIED
+ name NMTOKEN #IMPLIED
+ href %URI; #IMPLIED
+ hreflang %LanguageCode; #IMPLIED
+ rel %LinkTypes; #IMPLIED
+ rev %LinkTypes; #IMPLIED
+ shape %Shape; "rect"
+ coords %Coords; #IMPLIED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!--===================== Inline Elements ================================-->
+
+<!ELEMENT span %Inline;> <!-- generic language/style container -->
+<!ATTLIST span
+ %attrs;
+ >
+
+<!ELEMENT bdo %Inline;> <!-- I18N BiDi over-ride -->
+<!ATTLIST bdo
+ %coreattrs;
+ %events;
+ lang %LanguageCode; #IMPLIED
+ xml:lang %LanguageCode; #IMPLIED
+ dir (ltr|rtl) #REQUIRED
+ >
+
+<!ELEMENT br EMPTY> <!-- forced line break -->
+<!ATTLIST br
+ %coreattrs;
+ clear (left|all|right|none) "none"
+ >
+
+<!ELEMENT em %Inline;> <!-- emphasis -->
+<!ATTLIST em %attrs;>
+
+<!ELEMENT strong %Inline;> <!-- strong emphasis -->
+<!ATTLIST strong %attrs;>
+
+<!ELEMENT dfn %Inline;> <!-- definitional -->
+<!ATTLIST dfn %attrs;>
+
+<!ELEMENT code %Inline;> <!-- program code -->
+<!ATTLIST code %attrs;>
+
+<!ELEMENT samp %Inline;> <!-- sample -->
+<!ATTLIST samp %attrs;>
+
+<!ELEMENT kbd %Inline;> <!-- something user would type -->
+<!ATTLIST kbd %attrs;>
+
+<!ELEMENT var %Inline;> <!-- variable -->
+<!ATTLIST var %attrs;>
+
+<!ELEMENT cite %Inline;> <!-- citation -->
+<!ATTLIST cite %attrs;>
+
+<!ELEMENT abbr %Inline;> <!-- abbreviation -->
+<!ATTLIST abbr %attrs;>
+
+<!ELEMENT acronym %Inline;> <!-- acronym -->
+<!ATTLIST acronym %attrs;>
+
+<!ELEMENT q %Inline;> <!-- inlined quote -->
+<!ATTLIST q
+ %attrs;
+ cite %URI; #IMPLIED
+ >
+
+<!ELEMENT sub %Inline;> <!-- subscript -->
+<!ATTLIST sub %attrs;>
+
+<!ELEMENT sup %Inline;> <!-- superscript -->
+<!ATTLIST sup %attrs;>
+
+<!ELEMENT tt %Inline;> <!-- fixed pitch font -->
+<!ATTLIST tt %attrs;>
+
+<!ELEMENT i %Inline;> <!-- italic font -->
+<!ATTLIST i %attrs;>
+
+<!ELEMENT b %Inline;> <!-- bold font -->
+<!ATTLIST b %attrs;>
+
+<!ELEMENT big %Inline;> <!-- bigger font -->
+<!ATTLIST big %attrs;>
+
+<!ELEMENT small %Inline;> <!-- smaller font -->
+<!ATTLIST small %attrs;>
+
+<!ELEMENT u %Inline;> <!-- underline -->
+<!ATTLIST u %attrs;>
+
+<!ELEMENT s %Inline;> <!-- strike-through -->
+<!ATTLIST s %attrs;>
+
+<!ELEMENT strike %Inline;> <!-- strike-through -->
+<!ATTLIST strike %attrs;>
+
+<!ELEMENT basefont EMPTY> <!-- base font size -->
+<!ATTLIST basefont
+ id ID #IMPLIED
+ size CDATA #REQUIRED
+ color %Color; #IMPLIED
+ face CDATA #IMPLIED
+ >
+
+<!ELEMENT font %Inline;> <!-- local change to font -->
+<!ATTLIST font
+ %coreattrs;
+ %i18n;
+ size CDATA #IMPLIED
+ color %Color; #IMPLIED
+ face CDATA #IMPLIED
+ >
+
+<!--==================== Object ======================================-->
+<!--
+ object is used to embed objects as part of HTML pages.
+ param elements should precede other content. Parameters
+ can also be expressed as attribute/value pairs on the
+ object element itself when brevity is desired.
+-->
+
+<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
+<!ATTLIST object
+ %attrs;
+ declare (declare) #IMPLIED
+ classid %URI; #IMPLIED
+ codebase %URI; #IMPLIED
+ data %URI; #IMPLIED
+ type %ContentType; #IMPLIED
+ codetype %ContentType; #IMPLIED
+ archive %UriList; #IMPLIED
+ standby %Text; #IMPLIED
+ height %Length; #IMPLIED
+ width %Length; #IMPLIED
+ usemap %URI; #IMPLIED
+ name NMTOKEN #IMPLIED
+ tabindex %Number; #IMPLIED
+ align %ImgAlign; #IMPLIED
+ border %Pixels; #IMPLIED
+ hspace %Pixels; #IMPLIED
+ vspace %Pixels; #IMPLIED
+ >
+
+<!--
+ param is used to supply a named property value.
+ In XML it would seem natural to follow RDF and support an
+ abbreviated syntax where the param elements are replaced
+ by attribute value pairs on the object start tag.
+-->
+<!ELEMENT param EMPTY>
+<!ATTLIST param
+ id ID #IMPLIED
+ name CDATA #REQUIRED
+ value CDATA #IMPLIED
+ valuetype (data|ref|object) "data"
+ type %ContentType; #IMPLIED
+ >
+
+<!--=================== Java applet ==================================-->
+<!--
+ One of code or object attributes must be present.
+ Place param elements before other content.
+-->
+<!ELEMENT applet (#PCDATA | param | %block; | form | %inline; | %misc;)*>
+<!ATTLIST applet
+ %coreattrs;
+ codebase %URI; #IMPLIED
+ archive CDATA #IMPLIED
+ code CDATA #IMPLIED
+ object CDATA #IMPLIED
+ alt %Text; #IMPLIED
+ name NMTOKEN #IMPLIED
+ width %Length; #REQUIRED
+ height %Length; #REQUIRED
+ align %ImgAlign; #IMPLIED
+ hspace %Pixels; #IMPLIED
+ vspace %Pixels; #IMPLIED
+ >
+
+<!--=================== Images ===========================================-->
+
+<!--
+ To avoid accessibility problems for people who aren't
+ able to see the image, you should provide a text
+ description using the alt and longdesc attributes.
+ In addition, avoid the use of server-side image maps.
+-->
+
+<!ELEMENT img EMPTY>
+<!ATTLIST img
+ %attrs;
+ src %URI; #REQUIRED
+ alt %Text; #REQUIRED
+ name NMTOKEN #IMPLIED
+ longdesc %URI; #IMPLIED
+ height %Length; #IMPLIED
+ width %Length; #IMPLIED
+ usemap %URI; #IMPLIED
+ ismap (ismap) #IMPLIED
+ align %ImgAlign; #IMPLIED
+ border %Length; #IMPLIED
+ hspace %Pixels; #IMPLIED
+ vspace %Pixels; #IMPLIED
+ >
+
+<!-- usemap points to a map element which may be in this document
+ or an external document, although the latter is not widely supported -->
+
+<!--================== Client-side image maps ============================-->
+
+<!-- These can be placed in the same document or grouped in a
+ separate document although this isn't yet widely supported -->
+
+<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
+<!ATTLIST map
+ %i18n;
+ %events;
+ id ID #REQUIRED
+ class CDATA #IMPLIED
+ style %StyleSheet; #IMPLIED
+ title %Text; #IMPLIED
+ name CDATA #IMPLIED
+ >
+
+<!ELEMENT area EMPTY>
+<!ATTLIST area
+ %attrs;
+ %focus;
+ shape %Shape; "rect"
+ coords %Coords; #IMPLIED
+ href %URI; #IMPLIED
+ nohref (nohref) #IMPLIED
+ alt %Text; #REQUIRED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!--================ Forms ===============================================-->
+
+<!ELEMENT form %form.content;> <!-- forms shouldn't be nested -->
+
+<!ATTLIST form
+ %attrs;
+ action %URI; #REQUIRED
+ method (get|post) "get"
+ name NMTOKEN #IMPLIED
+ enctype %ContentType; "application/x-www-form-urlencoded"
+ onsubmit %Script; #IMPLIED
+ onreset %Script; #IMPLIED
+ accept %ContentTypes; #IMPLIED
+ accept-charset %Charsets; #IMPLIED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!--
+ Each label must not contain more than ONE field
+ Label elements shouldn't be nested.
+-->
+<!ELEMENT label %Inline;>
+<!ATTLIST label
+ %attrs;
+ for IDREF #IMPLIED
+ accesskey %Character; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ >
+
+<!ENTITY % InputType
+ "(text | password | checkbox |
+ radio | submit | reset |
+ file | hidden | image | button)"
+ >
+
+<!-- the name attribute is required for all but submit & reset -->
+
+<!ELEMENT input EMPTY> <!-- form control -->
+<!ATTLIST input
+ %attrs;
+ %focus;
+ type %InputType; "text"
+ name CDATA #IMPLIED
+ value CDATA #IMPLIED
+ checked (checked) #IMPLIED
+ disabled (disabled) #IMPLIED
+ readonly (readonly) #IMPLIED
+ size CDATA #IMPLIED
+ maxlength %Number; #IMPLIED
+ src %URI; #IMPLIED
+ alt CDATA #IMPLIED
+ usemap %URI; #IMPLIED
+ onselect %Script; #IMPLIED
+ onchange %Script; #IMPLIED
+ accept %ContentTypes; #IMPLIED
+ align %ImgAlign; #IMPLIED
+ >
+
+<!ELEMENT select (optgroup|option)+> <!-- option selector -->
+<!ATTLIST select
+ %attrs;
+ name CDATA #IMPLIED
+ size %Number; #IMPLIED
+ multiple (multiple) #IMPLIED
+ disabled (disabled) #IMPLIED
+ tabindex %Number; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ onchange %Script; #IMPLIED
+ >
+
+<!ELEMENT optgroup (option)+> <!-- option group -->
+<!ATTLIST optgroup
+ %attrs;
+ disabled (disabled) #IMPLIED
+ label %Text; #REQUIRED
+ >
+
+<!ELEMENT option (#PCDATA)> <!-- selectable choice -->
+<!ATTLIST option
+ %attrs;
+ selected (selected) #IMPLIED
+ disabled (disabled) #IMPLIED
+ label %Text; #IMPLIED
+ value CDATA #IMPLIED
+ >
+
+<!ELEMENT textarea (#PCDATA)> <!-- multi-line text field -->
+<!ATTLIST textarea
+ %attrs;
+ %focus;
+ name CDATA #IMPLIED
+ rows %Number; #REQUIRED
+ cols %Number; #REQUIRED
+ disabled (disabled) #IMPLIED
+ readonly (readonly) #IMPLIED
+ onselect %Script; #IMPLIED
+ onchange %Script; #IMPLIED
+ >
+
+<!--
+ The fieldset element is used to group form fields.
+ Only one legend element should occur in the content
+ and if present should only be preceded by whitespace.
+-->
+<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
+<!ATTLIST fieldset
+ %attrs;
+ >
+
+<!ENTITY % LAlign "(top|bottom|left|right)">
+
+<!ELEMENT legend %Inline;> <!-- fieldset label -->
+<!ATTLIST legend
+ %attrs;
+ accesskey %Character; #IMPLIED
+ align %LAlign; #IMPLIED
+ >
+
+<!--
+ Content is %Flow; excluding a, form, form controls, iframe
+-->
+<!ELEMENT button %button.content;> <!-- push button -->
+<!ATTLIST button
+ %attrs;
+ %focus;
+ name CDATA #IMPLIED
+ value CDATA #IMPLIED
+ type (button|submit|reset) "submit"
+ disabled (disabled) #IMPLIED
+ >
+
+<!-- single-line text input control (DEPRECATED) -->
+<!ELEMENT isindex EMPTY>
+<!ATTLIST isindex
+ %coreattrs;
+ %i18n;
+ prompt %Text; #IMPLIED
+ >
+
+<!--======================= Tables =======================================-->
+
+<!-- Derived from IETF HTML table standard, see [RFC1942] -->
+
+<!--
+ The border attribute sets the thickness of the frame around the
+ table. The default units are screen pixels.
+
+ The frame attribute specifies which parts of the frame around
+ the table should be rendered. The values are not the same as
+ CALS to avoid a name clash with the valign attribute.
+-->
+<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
+
+<!--
+ The rules attribute defines which rules to draw between cells:
+
+ If rules is absent then assume:
+ "none" if border is absent or border="0" otherwise "all"
+-->
+
+<!ENTITY % TRules "(none | groups | rows | cols | all)">
+
+<!-- horizontal placement of table relative to document -->
+<!ENTITY % TAlign "(left|center|right)">
+
+<!-- horizontal alignment attributes for cell contents
+
+ char alignment char, e.g. char=':'
+ charoff offset for alignment char
+-->
+<!ENTITY % cellhalign
+ "align (left|center|right|justify|char) #IMPLIED
+ char %Character; #IMPLIED
+ charoff %Length; #IMPLIED"
+ >
+
+<!-- vertical alignment attributes for cell contents -->
+<!ENTITY % cellvalign
+ "valign (top|middle|bottom|baseline) #IMPLIED"
+ >
+
+<!ELEMENT table
+ (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
+<!ELEMENT caption %Inline;>
+<!ELEMENT thead (tr)+>
+<!ELEMENT tfoot (tr)+>
+<!ELEMENT tbody (tr)+>
+<!ELEMENT colgroup (col)*>
+<!ELEMENT col EMPTY>
+<!ELEMENT tr (th|td)+>
+<!ELEMENT th %Flow;>
+<!ELEMENT td %Flow;>
+
+<!ATTLIST table
+ %attrs;
+ summary %Text; #IMPLIED
+ width %Length; #IMPLIED
+ border %Pixels; #IMPLIED
+ frame %TFrame; #IMPLIED
+ rules %TRules; #IMPLIED
+ cellspacing %Length; #IMPLIED
+ cellpadding %Length; #IMPLIED
+ align %TAlign; #IMPLIED
+ bgcolor %Color; #IMPLIED
+ >
+
+<!ENTITY % CAlign "(top|bottom|left|right)">
+
+<!ATTLIST caption
+ %attrs;
+ align %CAlign; #IMPLIED
+ >
+
+<!--
+colgroup groups a set of col elements. It allows you to group
+several semantically related columns together.
+-->
+<!ATTLIST colgroup
+ %attrs;
+ span %Number; "1"
+ width %MultiLength; #IMPLIED
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!--
+ col elements define the alignment properties for cells in
+ one or more columns.
+
+ The width attribute specifies the width of the columns, e.g.
+
+ width=64 width in screen pixels
+ width=0.5* relative width of 0.5
+
+ The span attribute causes the attributes of one
+ col element to apply to more than one column.
+-->
+<!ATTLIST col
+ %attrs;
+ span %Number; "1"
+ width %MultiLength; #IMPLIED
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!--
+ Use thead to duplicate headers when breaking table
+ across page boundaries, or for static headers when
+ tbody sections are rendered in scrolling panel.
+
+ Use tfoot to duplicate footers when breaking table
+ across page boundaries, or for static footers when
+ tbody sections are rendered in scrolling panel.
+
+ Use multiple tbody sections when rules are needed
+ between groups of table rows.
+-->
+<!ATTLIST thead
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!ATTLIST tfoot
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!ATTLIST tbody
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!ATTLIST tr
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ bgcolor %Color; #IMPLIED
+ >
+
+<!-- Scope is simpler than headers attribute for common tables -->
+<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
+
+<!-- th is for headers, td for data and for cells acting as both -->
+
+<!ATTLIST th
+ %attrs;
+ abbr %Text; #IMPLIED
+ axis CDATA #IMPLIED
+ headers IDREFS #IMPLIED
+ scope %Scope; #IMPLIED
+ rowspan %Number; "1"
+ colspan %Number; "1"
+ %cellhalign;
+ %cellvalign;
+ nowrap (nowrap) #IMPLIED
+ bgcolor %Color; #IMPLIED
+ width %Length; #IMPLIED
+ height %Length; #IMPLIED
+ >
+
+<!ATTLIST td
+ %attrs;
+ abbr %Text; #IMPLIED
+ axis CDATA #IMPLIED
+ headers IDREFS #IMPLIED
+ scope %Scope; #IMPLIED
+ rowspan %Number; "1"
+ colspan %Number; "1"
+ %cellhalign;
+ %cellvalign;
+ nowrap (nowrap) #IMPLIED
+ bgcolor %Color; #IMPLIED
+ width %Length; #IMPLIED
+ height %Length; #IMPLIED
+ >
+
diff --git a/dom/tests/mochitest/dom-level2-core/mochitest.toml b/dom/tests/mochitest/dom-level2-core/mochitest.toml
new file mode 100644
index 0000000000..0c0e5366cf
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/mochitest.toml
@@ -0,0 +1,511 @@
+[DEFAULT]
+support-files = [
+ "DOMTestCase.js",
+ "exclusions.js",
+ "files/hc_staff.html",
+ "files/hc_staff.svg",
+ "files/hc_staff.xhtml",
+ "files/hc_staff.xml",
+ "files/internalSubset01.js",
+ "files/nodtdstaff.svg",
+ "files/nodtdstaff.xml",
+ "files/staff.dtd",
+ "files/staff.svg",
+ "files/staff.xml",
+ "files/staff2.dtd",
+ "files/staff2.svg",
+ "files/staff2.xml",
+ "files/staffNS.dtd",
+ "files/staffNS.svg",
+ "files/staffNS.xml",
+ "files/svgtest.js",
+ "files/svgunit.js",
+ "files/xhtml-lat1.ent",
+ "files/xhtml-special.ent",
+ "files/xhtml-symbol.ent",
+ "files/xhtml1-frameset.dtd",
+ "files/xhtml1-strict.dtd",
+ "files/xhtml1-transitional.dtd",
+]
+
+["test_attrgetownerelement01.html"]
+
+["test_attrgetownerelement02.html"]
+
+["test_attrgetownerelement03.html"]
+
+["test_attrgetownerelement04.html"]
+
+["test_attrgetownerelement05.html"]
+
+["test_createAttributeNS01.html"]
+
+["test_createAttributeNS02.html"]
+
+["test_createAttributeNS03.html"]
+
+["test_createAttributeNS04.html"]
+
+["test_createAttributeNS05.html"]
+
+["test_createAttributeNS06.html"]
+
+["test_createDocument01.html"]
+
+["test_createDocument02.html"]
+
+["test_createDocument03.html"]
+
+["test_createDocument04.html"]
+
+["test_createDocument05.html"]
+
+["test_createDocument06.html"]
+
+["test_createDocument07.html"]
+
+["test_createDocumentType01.html"]
+
+["test_createDocumentType02.html"]
+
+["test_createDocumentType03.html"]
+
+["test_createElementNS01.html"]
+
+["test_createElementNS02.html"]
+
+["test_createElementNS03.html"]
+
+["test_createElementNS04.html"]
+
+["test_createElementNS05.html"]
+
+["test_createElementNS06.html"]
+
+["test_documentcreateattributeNS01.html"]
+
+["test_documentcreateattributeNS02.html"]
+
+["test_documentcreateattributeNS03.html"]
+
+["test_documentcreateattributeNS04.html"]
+
+["test_documentcreateattributeNS05.html"]
+
+["test_documentcreateattributeNS06.html"]
+
+["test_documentcreateattributeNS07.html"]
+
+["test_documentcreateelementNS01.html"]
+
+["test_documentcreateelementNS02.html"]
+
+["test_documentcreateelementNS05.html"]
+
+["test_documentcreateelementNS06.html"]
+
+["test_documentgetelementbyid01.html"]
+
+["test_documentgetelementsbytagnameNS01.html"]
+
+["test_documentgetelementsbytagnameNS02.html"]
+
+["test_documentgetelementsbytagnameNS03.html"]
+
+["test_documentgetelementsbytagnameNS04.html"]
+
+["test_documentgetelementsbytagnameNS05.html"]
+
+["test_documentimportnode01.html"]
+
+["test_documentimportnode02.html"]
+
+["test_documentimportnode03.html"]
+skip-if = [
+ "http3",
+ "http2",
+]
+
+["test_documentimportnode04.html"]
+
+["test_documentimportnode05.html"]
+
+["test_documentimportnode06.html"]
+
+["test_documentimportnode07.html"]
+
+["test_documentimportnode08.html"]
+
+["test_documentimportnode09.html"]
+
+["test_documentimportnode10.html"]
+
+["test_documentimportnode11.html"]
+
+["test_documentimportnode12.html"]
+
+["test_documentimportnode13.html"]
+
+["test_documentimportnode14.html"]
+
+["test_documentimportnode15.html"]
+
+["test_documentimportnode17.html"]
+
+["test_documentimportnode18.html"]
+
+["test_documentimportnode19.html"]
+
+["test_documentimportnode20.html"]
+
+["test_documentimportnode21.html"]
+
+["test_documentimportnode22.html"]
+
+["test_documenttypepublicid01.html"]
+
+["test_documenttypesystemid01.html"]
+
+["test_domimplementationcreatedocument03.html"]
+
+["test_domimplementationcreatedocument04.html"]
+
+["test_domimplementationcreatedocument05.html"]
+
+["test_domimplementationcreatedocument07.html"]
+
+["test_domimplementationcreatedocumenttype01.html"]
+
+["test_domimplementationcreatedocumenttype02.html"]
+
+["test_domimplementationcreatedocumenttype04.html"]
+
+["test_domimplementationfeaturecore.html"]
+
+["test_domimplementationfeaturexmlversion2.html"]
+
+["test_domimplementationhasfeature01.html"]
+
+["test_elementgetattributenodens01.html"]
+
+["test_elementgetattributenodens02.html"]
+
+["test_elementgetattributenodens03.html"]
+
+["test_elementgetattributens02.html"]
+
+["test_elementgetelementsbytagnamens02.html"]
+
+["test_elementgetelementsbytagnamens04.html"]
+
+["test_elementgetelementsbytagnamens05.html"]
+
+["test_elementhasattribute01.html"]
+
+["test_elementhasattribute02.html"]
+
+["test_elementhasattribute03.html"]
+
+["test_elementhasattribute04.html"]
+
+["test_elementhasattributens01.html"]
+
+["test_elementhasattributens02.html"]
+
+["test_elementhasattributens03.html"]
+
+["test_elementremoveattributens01.html"]
+
+["test_elementsetattributenodens01.html"]
+
+["test_elementsetattributenodens02.html"]
+
+["test_elementsetattributenodens03.html"]
+
+["test_elementsetattributenodens04.html"]
+
+["test_elementsetattributenodens05.html"]
+
+["test_elementsetattributenodens06.html"]
+
+["test_elementsetattributens01.html"]
+
+["test_elementsetattributens02.html"]
+
+["test_elementsetattributens03.html"]
+
+["test_elementsetattributens04.html"]
+
+["test_elementsetattributens05.html"]
+
+["test_elementsetattributens08.html"]
+
+["test_elementsetattributensurinull.html"]
+
+["test_getAttributeNS01.html"]
+
+["test_getAttributeNS02.html"]
+
+["test_getAttributeNS03.html"]
+
+["test_getAttributeNS04.html"]
+
+["test_getAttributeNS05.html"]
+
+["test_getAttributeNodeNS01.html"]
+
+["test_getAttributeNodeNS02.html"]
+
+["test_getElementById01.html"]
+
+["test_getElementById02.html"]
+
+["test_getElementsByTagNameNS01.html"]
+
+["test_getElementsByTagNameNS02.html"]
+
+["test_getElementsByTagNameNS03.html"]
+
+["test_getElementsByTagNameNS04.html"]
+
+["test_getElementsByTagNameNS05.html"]
+
+["test_getElementsByTagNameNS06.html"]
+
+["test_getElementsByTagNameNS07.html"]
+
+["test_getElementsByTagNameNS08.html"]
+
+["test_getElementsByTagNameNS09.html"]
+
+["test_getElementsByTagNameNS10.html"]
+
+["test_getElementsByTagNameNS11.html"]
+
+["test_getElementsByTagNameNS12.html"]
+
+["test_getElementsByTagNameNS13.html"]
+
+["test_getElementsByTagNameNS14.html"]
+
+["test_getNamedItemNS01.html"]
+
+["test_getNamedItemNS02.html"]
+
+["test_getNamedItemNS03.html"]
+
+["test_getNamedItemNS04.html"]
+
+["test_hasAttribute01.html"]
+
+["test_hasAttribute02.html"]
+
+["test_hasAttribute03.html"]
+
+["test_hasAttribute04.html"]
+
+["test_hasAttributeNS01.html"]
+
+["test_hasAttributeNS02.html"]
+
+["test_hasAttributeNS03.html"]
+
+["test_hasAttributeNS04.html"]
+
+["test_hasAttributeNS05.html"]
+
+["test_hasAttributes01.html"]
+
+["test_hasAttributes02.html"]
+
+["test_hc_namednodemapinvalidtype1.html"]
+
+["test_hc_nodedocumentfragmentnormalize1.html"]
+
+["test_hc_nodedocumentfragmentnormalize2.html"]
+
+["test_importNode01.html"]
+
+["test_importNode02.html"]
+
+["test_importNode03.html"]
+
+["test_importNode04.html"]
+
+["test_importNode05.html"]
+
+["test_importNode06.html"]
+
+["test_importNode07.html"]
+
+["test_importNode08.html"]
+
+["test_importNode09.html"]
+
+["test_importNode10.html"]
+
+["test_importNode11.html"]
+
+["test_importNode12.html"]
+
+["test_importNode13.html"]
+
+["test_importNode14.html"]
+
+["test_importNode15.html"]
+
+["test_importNode16.html"]
+
+["test_importNode17.html"]
+
+["test_localName01.html"]
+
+["test_localName02.html"]
+
+["test_localName04.html"]
+
+["test_namednodemapgetnameditemns01.html"]
+
+["test_namednodemapgetnameditemns02.html"]
+
+["test_namednodemapgetnameditemns03.html"]
+
+["test_namednodemapgetnameditemns04.html"]
+
+["test_namednodemapgetnameditemns05.html"]
+
+["test_namednodemapgetnameditemns06.html"]
+
+["test_namednodemapremovenameditemns01.html"]
+
+["test_namednodemapremovenameditemns02.html"]
+
+["test_namednodemapremovenameditemns03.html"]
+
+["test_namednodemapremovenameditemns04.html"]
+
+["test_namednodemapremovenameditemns05.html"]
+
+["test_namednodemapremovenameditemns06.html"]
+
+["test_namednodemapremovenameditemns07.html"]
+
+["test_namednodemapremovenameditemns08.html"]
+
+["test_namednodemapremovenameditemns09.html"]
+
+["test_namednodemapsetnameditemns01.html"]
+
+["test_namednodemapsetnameditemns02.html"]
+
+["test_namednodemapsetnameditemns03.html"]
+
+["test_namednodemapsetnameditemns04.html"]
+
+["test_namednodemapsetnameditemns05.html"]
+
+["test_namednodemapsetnameditemns06.html"]
+
+["test_namednodemapsetnameditemns07.html"]
+
+["test_namednodemapsetnameditemns08.html"]
+
+["test_namednodemapsetnameditemns09.html"]
+
+["test_namednodemapsetnameditemns10.html"]
+
+["test_namednodemapsetnameditemns11.html"]
+
+["test_namespaceURI01.html"]
+
+["test_namespaceURI02.html"]
+
+["test_namespaceURI03.html"]
+
+["test_namespaceURI04.html"]
+
+["test_nodegetlocalname03.html"]
+
+["test_nodegetnamespaceuri03.html"]
+
+["test_nodegetownerdocument01.html"]
+
+["test_nodegetownerdocument02.html"]
+
+["test_nodegetprefix03.html"]
+
+["test_nodehasattributes01.html"]
+
+["test_nodehasattributes02.html"]
+
+["test_nodehasattributes03.html"]
+
+["test_nodehasattributes04.html"]
+
+["test_nodenormalize01.html"]
+
+["test_normalize01.html"]
+
+["test_ownerDocument01.html"]
+
+["test_ownerElement01.html"]
+
+["test_ownerElement02.html"]
+
+["test_prefix01.html"]
+
+["test_prefix03.html"]
+
+["test_prefix04.html"]
+
+["test_publicId01.html"]
+
+["test_removeAttributeNS01.html"]
+
+["test_removeAttributeNS02.html"]
+
+["test_removeNamedItemNS01.html"]
+
+["test_removeNamedItemNS02.html"]
+
+["test_removeNamedItemNS03.html"]
+
+["test_setAttributeNS01.html"]
+
+["test_setAttributeNS02.html"]
+
+["test_setAttributeNS03.html"]
+
+["test_setAttributeNS04.html"]
+
+["test_setAttributeNS05.html"]
+
+["test_setAttributeNS06.html"]
+
+["test_setAttributeNS07.html"]
+
+["test_setAttributeNS09.html"]
+
+["test_setAttributeNS10.html"]
+
+["test_setAttributeNodeNS01.html"]
+
+["test_setAttributeNodeNS02.html"]
+
+["test_setAttributeNodeNS03.html"]
+
+["test_setAttributeNodeNS04.html"]
+
+["test_setAttributeNodeNS05.html"]
+
+["test_setNamedItemNS01.html"]
+
+["test_setNamedItemNS02.html"]
+
+["test_setNamedItemNS03.html"]
+
+["test_setNamedItemNS04.html"]
+
+["test_setNamedItemNS05.html"]
+
+["test_systemId01.html"]
diff --git a/dom/tests/mochitest/dom-level2-core/test_attrgetownerelement01.html b/dom/tests/mochitest/dom-level2-core/test_attrgetownerelement01.html
new file mode 100644
index 0000000000..ca066a49b7
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_attrgetownerelement01.html
@@ -0,0 +1,134 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/attrgetownerelement01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['attrgetownerelement01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+ setImplementationAttribute("validating", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'attrgetownerelement01';
+
+
+/**
+*
+ The "getOwnerElement()" will return the Element node this attribute is attached to or
+ null if this attribute is not in use.
+
+ Retreive the default attribute defaultAttr and check its owner element. Verify if the name
+ the nodeName of the returned ownerElement is emp:employee.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Attr-ownerElement
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=259
+*/
+function attrgetownerelement01() {
+ var success;
+ if(checkInitialization(builder, "attrgetownerelement01") != null) return;
+ var doc;
+ var attr;
+ var element;
+ var ownerElement;
+ var ownerElementName;
+ var elementList;
+ var attributes;
+ var nullNS = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS("http://www.nist.gov","employee");
+ element = elementList.item(1);
+ attributes = element.attributes;
+
+ attr = attributes.getNamedItemNS(nullNS,"defaultAttr");
+ ownerElement = attr.ownerElement;
+
+ ownerElementName = ownerElement.nodeName;
+
+ assertEquals("attrgetownerelement01","emp:employee",ownerElementName);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/attrgetownerelement01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_attrgetownerelement02.html b/dom/tests/mochitest/dom-level2-core/test_attrgetownerelement02.html
new file mode 100644
index 0000000000..b84f71c79f
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_attrgetownerelement02.html
@@ -0,0 +1,127 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/attrgetownerelement02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['attrgetownerelement02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'attrgetownerelement02';
+
+
+/**
+*
+ The "getOwnerElement()" will return the Element node this attribute
+ is attached to or null if this attribute is not in use.
+
+ Create a new element and attribute node, attach the attribute to the element.
+ Check the value of owner element of the new attribute node
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Attr-ownerElement
+*/
+function attrgetownerelement02() {
+ var success;
+ if(checkInitialization(builder, "attrgetownerelement02") != null) return;
+ var doc;
+ var element;
+ var ownerElement;
+ var ownerElementName;
+ var attr;
+ var newAttr;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ element = doc.createElement("root");
+ attr = doc.createAttributeNS("http://www.w3.org/DOM/L1","L1:att");
+ newAttr = element.setAttributeNodeNS(attr);
+ ownerElement = attr.ownerElement;
+
+ ownerElementName = ownerElement.nodeName;
+
+ assertEquals("attrgetownerelement02","root".toLowerCase(),ownerElementName.toLowerCase());
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/attrgetownerelement02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_attrgetownerelement03.html b/dom/tests/mochitest/dom-level2-core/test_attrgetownerelement03.html
new file mode 100644
index 0000000000..115574f500
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_attrgetownerelement03.html
@@ -0,0 +1,119 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/attrgetownerelement03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['attrgetownerelement03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'attrgetownerelement03';
+
+
+/**
+*
+ The "getOwnerElement()" will return the Element node this attribute
+ is attached to or null if this attribute is not in use.
+
+ Create a new attribute node for this document node. Since the newly attribute is
+ not it use its owner element should be null.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Attr-ownerElement
+*/
+function attrgetownerelement03() {
+ var success;
+ if(checkInitialization(builder, "attrgetownerelement03") != null) return;
+ var doc;
+ var ownerElement;
+ var attr;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ attr = doc.createAttributeNS("http://www.w3.org/DOM","dom:attr");
+ ownerElement = attr.ownerElement;
+
+ assertNull("attrgetownerelement03",ownerElement);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/attrgetownerelement03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_attrgetownerelement04.html b/dom/tests/mochitest/dom-level2-core/test_attrgetownerelement04.html
new file mode 100644
index 0000000000..1a066e45b7
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_attrgetownerelement04.html
@@ -0,0 +1,140 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/attrgetownerelement04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['attrgetownerelement04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ var docImpRef = null;
+ if (typeof(this.docImp) != 'undefined') {
+ docImpRef = this.docImp;
+ }
+ docsLoaded += preload(docImpRef, "docImp", "staff");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'attrgetownerelement04';
+
+
+/**
+*
+ The "getOwnerElement()" will return the Element node this attribute is attached to or
+ null if this attribute is not in use.
+ Import an attribute node to another document. If an Attr node is imported, its
+ ownerElement attribute should be set to null. Verify if the ownerElement has been set
+ to null.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Attr-ownerElement
+*/
+function attrgetownerelement04() {
+ var success;
+ if(checkInitialization(builder, "attrgetownerelement04") != null) return;
+ var doc;
+ var docImp;
+ var ownerElement;
+ var element;
+ var attr;
+ var attrImp;
+ var addresses;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ var docImpRef = null;
+ if (typeof(this.docImp) != 'undefined') {
+ docImpRef = this.docImp;
+ }
+ docImp = load(docImpRef, "docImp", "staff");
+ addresses = doc.getElementsByTagNameNS("http://www.nist.gov","address");
+ element = addresses.item(1);
+ assertNotNull("empAddressNotNull",element);
+attr = element.getAttributeNodeNS("http://www.nist.gov","zone");
+ attrImp = docImp.importNode(attr,true);
+ ownerElement = attrImp.ownerElement;
+
+ assertNull("attrgetownerelement04",ownerElement);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/attrgetownerelement04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_attrgetownerelement05.html b/dom/tests/mochitest/dom-level2-core/test_attrgetownerelement05.html
new file mode 100644
index 0000000000..90de82b210
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_attrgetownerelement05.html
@@ -0,0 +1,138 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/attrgetownerelement05</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['attrgetownerelement05'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'attrgetownerelement05';
+
+
+/**
+*
+ The "getOwnerElement()" will return the Element node this attribute is attached to
+ or null if this attribute is not in use.
+
+ Retreive an element and its attributes. Then remove the element and check the name of
+ the ownerElement of attribute of the attribute "street".
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Attr-ownerElement
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=259
+*/
+function attrgetownerelement05() {
+ var success;
+ if(checkInitialization(builder, "attrgetownerelement05") != null) return;
+ var doc;
+ var element;
+ var ownerElement;
+ var parentElement;
+ var elementList;
+ var ownerElementName;
+ var attr;
+ var removedChild;
+ var nodeMap;
+ var nullNS = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS("*","address");
+ element = elementList.item(1);
+ parentElement = element.parentNode;
+
+ nodeMap = element.attributes;
+
+ removedChild = parentElement.removeChild(element);
+ attr = nodeMap.getNamedItemNS(nullNS,"street");
+ ownerElement = attr.ownerElement;
+
+ ownerElementName = ownerElement.nodeName;
+
+ assertEquals("attrgetownerelement05","address",ownerElementName);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/attrgetownerelement05</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_createAttributeNS01.html b/dom/tests/mochitest/dom-level2-core/test_createAttributeNS01.html
new file mode 100644
index 0000000000..c5dacc9a77
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_createAttributeNS01.html
@@ -0,0 +1,132 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/createAttributeNS01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['createAttributeNS01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'createAttributeNS01';
+
+
+/**
+*
+ The "createAttributeNS(namespaceURI,qualifiedName)" method for a
+ Document should raise NAMESPACE_ERR DOMException
+ if qualifiedName is malformed.
+
+ Invoke method createAttributeNS(namespaceURI,qualifiedName) on
+ the XMLNS Document with namespaceURI being "http://www.ecommerce.org/",
+ qualifiedName as "prefix::local". Method should raise
+ NAMESPACE_ERR DOMException.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='NAMESPACE_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-DocCrAttrNS
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-DocCrAttrNS')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='NAMESPACE_ERR'])
+*/
+function createAttributeNS01() {
+ var success;
+ if(checkInitialization(builder, "createAttributeNS01") != null) return;
+ var namespaceURI = "http://www.ecommerce.org/";
+ var malformedName = "prefix::local";
+ var doc;
+ var newAttr;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ {
+ success = false;
+ try {
+ newAttr = doc.createAttributeNS(namespaceURI,malformedName);
+ }
+ catch(ex) {
+ success = ex.code === DOMException.INVALID_CHARACTER_ERR;
+ }
+ assertTrue("throw INVALID_CHARACTER_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/createAttributeNS01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_createAttributeNS02.html b/dom/tests/mochitest/dom-level2-core/test_createAttributeNS02.html
new file mode 100644
index 0000000000..2b87f0fc80
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_createAttributeNS02.html
@@ -0,0 +1,131 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/createAttributeNS02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['createAttributeNS02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'createAttributeNS02';
+
+/**
+*
+ The "createAttributeNS(namespaceURI,qualifiedName)" method for a
+ Document should raise NAMESPACE_ERR DOMException
+ if qualifiedName has a prefix and namespaceURI is null.
+
+ Invoke method createAttributeNS(namespaceURI,qualifiedName) on this document
+ with namespaceURI being null and qualifiedName contains the prefix "person".
+ Method should raise NAMESPACE_ERR DOMException.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='NAMESPACE_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-DocCrAttrNS
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-DocCrAttrNS')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='NAMESPACE_ERR'])
+*/
+function createAttributeNS02() {
+ var success;
+ if(checkInitialization(builder, "createAttributeNS02") != null) return;
+ var namespaceURI = null;
+
+ var qualifiedName = "prefix:local";
+ var doc;
+ var newAttr;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ {
+ success = false;
+ try {
+ newAttr = doc.createAttributeNS(namespaceURI,qualifiedName);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 14);
+ }
+ assertTrue("throw_NAMESPACE_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/createAttributeNS02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_createAttributeNS03.html b/dom/tests/mochitest/dom-level2-core/test_createAttributeNS03.html
new file mode 100644
index 0000000000..fc98d24905
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_createAttributeNS03.html
@@ -0,0 +1,164 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/createAttributeNS03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['createAttributeNS03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'createAttributeNS03';
+
+
+/**
+*
+ The "createAttributeNS(namespaceURI,qualifiedName)" method for a
+ Document should raise INVALID_CHARACTER_ERR DOMException
+ if qualifiedName contains an illegal character.
+
+ Invoke method createAttributeNS(namespaceURI,qualifiedName) on this document
+ with qualifiedName containing an illegal character from illegalChars[].
+ Method should raise INVALID_CHARACTER_ERR DOMException for all
+ characters in illegalChars[].
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-DocCrAttrNS
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-DocCrAttrNS')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='INVALID_CHARACTER_ERR'])
+*/
+function createAttributeNS03() {
+ var success;
+ if(checkInitialization(builder, "createAttributeNS03") != null) return;
+ var namespaceURI = "http://www.wedding.com/";
+ var qualifiedName;
+ var doc;
+ var newAttr;
+ illegalQNames = new Array();
+ illegalQNames[0] = "person:{";
+ illegalQNames[1] = "person:}";
+ illegalQNames[2] = "person:~";
+ illegalQNames[3] = "person:'";
+ illegalQNames[4] = "person:!";
+ illegalQNames[5] = "person:@";
+ illegalQNames[6] = "person:#";
+ illegalQNames[7] = "person:$";
+ illegalQNames[8] = "person:%";
+ illegalQNames[9] = "person:^";
+ illegalQNames[10] = "person:&";
+ illegalQNames[11] = "person:*";
+ illegalQNames[12] = "person:(";
+ illegalQNames[13] = "person:)";
+ illegalQNames[14] = "person:+";
+ illegalQNames[15] = "person:=";
+ illegalQNames[16] = "person:[";
+ illegalQNames[17] = "person:]";
+ illegalQNames[18] = "person:\\";
+ illegalQNames[19] = "person:/";
+ illegalQNames[20] = "person:;";
+ illegalQNames[21] = "person:`";
+ illegalQNames[22] = "person:<";
+ illegalQNames[23] = "person:>";
+ illegalQNames[24] = "person:,";
+ illegalQNames[25] = "person:a ";
+ illegalQNames[26] = "person:\"";
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ for(var indexN65680 = 0;indexN65680 < illegalQNames.length; indexN65680++) {
+ qualifiedName = illegalQNames[indexN65680];
+
+ {
+ success = false;
+ try {
+ newAttr = doc.createAttributeNS(namespaceURI,qualifiedName);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 5);
+ }
+ assertTrue("throw_INVALID_CHARACTER_ERR",success);
+ }
+
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/createAttributeNS03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_createAttributeNS04.html b/dom/tests/mochitest/dom-level2-core/test_createAttributeNS04.html
new file mode 100644
index 0000000000..f9633ffe8d
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_createAttributeNS04.html
@@ -0,0 +1,134 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/createAttributeNS04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['createAttributeNS04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'createAttributeNS04';
+
+
+/**
+*
+ The "createAttributeNS(namespaceURI,qualifiedName)" method for a
+ Document should raise NAMESPACE_ERR DOMException
+ if qualifiedName has the "xml" prefix and namespaceURI is different
+ from "http://www.w3.org/XML/1998/namespace".
+
+ Invoke method createAttributeNS(namespaceURI,qualifiedName) on this document
+ with qualifiedName being "xml:attr1 and namespaceURI equals
+ the string "http://www.w3.org/XML/1998/namespaces" (which differs from the required
+ string "http://www.w3.org/XML/1998/namespace").
+ Method should raise NAMESPACE_ERR DOMException.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='NAMESPACE_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-DocCrAttrNS
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-DocCrAttrNS')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='NAMESPACE_ERR'])
+*/
+function createAttributeNS04() {
+ var success;
+ if(checkInitialization(builder, "createAttributeNS04") != null) return;
+ var namespaceURI = "http://www.w3.org/XML/1998/namespaces";
+ var qualifiedName = "xml:attr1";
+ var doc;
+ var newAttr;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ {
+ success = false;
+ try {
+ newAttr = doc.createAttributeNS(namespaceURI,qualifiedName);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 14);
+ }
+ assertTrue("throw_NAMESPACE_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/createAttributeNS04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_createAttributeNS05.html b/dom/tests/mochitest/dom-level2-core/test_createAttributeNS05.html
new file mode 100644
index 0000000000..bd997d2d61
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_createAttributeNS05.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/createAttributeNS05</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['createAttributeNS05'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'createAttributeNS05';
+
+
+/**
+*
+ The "createAttributeNS(namespaceURI,qualifiedName)" method for a
+ Document should return a new Attr object given that all parameters are
+ valid and correctly formed.
+
+ Invoke method createAttributeNS(namespaceURI,qualifiedName) on this document with
+ parameters equal "http://www.ecommerce.org/" and "ecom:local"
+ respectively. Method should return a new Attr object whose name is "ecom:local".
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-1112119403
+*/
+function createAttributeNS05() {
+ var success;
+ if(checkInitialization(builder, "createAttributeNS05") != null) return;
+ var namespaceURI = "http://www.ecommerce.org/";
+ var qualifiedName = "econm:local";
+ var doc;
+ var newAttr;
+ var attrName;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ newAttr = doc.createAttributeNS(namespaceURI,qualifiedName);
+ attrName = newAttr.name;
+
+ assertEquals("throw_Equals",qualifiedName,attrName);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/createAttributeNS05</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_createAttributeNS06.html b/dom/tests/mochitest/dom-level2-core/test_createAttributeNS06.html
new file mode 100644
index 0000000000..54bb2618a3
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_createAttributeNS06.html
@@ -0,0 +1,126 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/createAttributeNS06</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['createAttributeNS06'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "hc_staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'createAttributeNS06';
+
+
+/**
+*
+Document.createAttributeNS with an empty qualified name should cause an INVALID_CHARACTER_ERR.
+
+* @author Curt Arnold
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-DocCrAttrNS
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-DocCrAttrNS')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='INVALID_CHARACTER_ERR'])
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=525
+*/
+function createAttributeNS06() {
+ var success;
+ if(checkInitialization(builder, "createAttributeNS06") != null) return;
+ var namespaceURI = "http://www.example.com/";
+ var qualifiedName;
+ var doc;
+ var newAttr;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "hc_staff");
+
+ {
+ success = false;
+ try {
+ newAttr = doc.createAttributeNS(namespaceURI,"");
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 5);
+ }
+ assertTrue("throw_INVALID_CHARACTER_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/createAttributeNS06</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+<iframe name="doc" src="files/hc_staff.html"></iframe>
+<br>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_createDocument01.html b/dom/tests/mochitest/dom-level2-core/test_createDocument01.html
new file mode 100644
index 0000000000..50911bd6a2
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_createDocument01.html
@@ -0,0 +1,138 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/createDocument01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['createDocument01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'createDocument01';
+
+
+/**
+*
+ The "createDocument(namespaceURI,qualifiedName,doctype)" method for a
+ DOMImplementation should raise NAMESPACE_ERR DOMException
+ if parameter qualifiedName is malformed.
+
+ Retrieve the DOMImplementation on the XMLNS Document.
+ Invoke method createDocument(namespaceURI,qualifiedName,doctype)
+ on the retrieved DOMImplementation with namespaceURI being
+ the literal string "http://www.ecommerce.org/", qualifiedName as
+ "prefix::local", and doctype as null. Method should raise
+ NAMESPACE_ERR DOMException.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='NAMESPACE_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Level-2-Core-DOM-createDocument
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('Level-2-Core-DOM-createDocument')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='NAMESPACE_ERR'])
+*/
+function createDocument01() {
+ var success;
+ if(checkInitialization(builder, "createDocument01") != null) return;
+ var namespaceURI = "http://www.ecommerce.org/";
+ var malformedName = "prefix::local";
+ var doc;
+ var docType = null;
+
+ var domImpl;
+ var aNewDoc;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+
+ {
+ success = false;
+ try {
+ aNewDoc = domImpl.createDocument(namespaceURI,malformedName,docType);
+ }
+ catch(ex) {
+ success = ex.code === DOMException.INVALID_CHARACTER_ERR;
+ }
+ assertTrue("throw INVALID_CHARACTER_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/createDocument01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_createDocument02.html b/dom/tests/mochitest/dom-level2-core/test_createDocument02.html
new file mode 100644
index 0000000000..c19940868b
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_createDocument02.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/createDocument02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['createDocument02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'createDocument02';
+
+
+/**
+*
+ The "createDocument(namespaceURI,qualifiedName,doctype)" method for a
+ DOMImplementation should raise NAMESPACE_ERR DOMException
+ if qualifiedName has a prefix and namespaceURI is null.
+
+ Invoke method createDocument(namespaceURI,qualifiedName,doctype) on
+ this domimplementation with namespaceURI being null and qualifiedName
+ equals "k:local". Method should raise NAMESPACE_ERR DOMException.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='NAMESPACE_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Level-2-Core-DOM-createDocument
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('Level-2-Core-DOM-createDocument')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='NAMESPACE_ERR'])
+*/
+function createDocument02() {
+ var success;
+ if(checkInitialization(builder, "createDocument02") != null) return;
+ var namespaceURI = null;
+
+ var qualifiedName = "k:local";
+ var doc;
+ var docType = null;
+
+ var domImpl;
+ var aNewDoc;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+
+ {
+ success = false;
+ try {
+ aNewDoc = domImpl.createDocument(namespaceURI,qualifiedName,docType);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 14);
+ }
+ assertTrue("throw_NAMESPACE_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/createDocument02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_createDocument03.html b/dom/tests/mochitest/dom-level2-core/test_createDocument03.html
new file mode 100644
index 0000000000..a6ac5615b7
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_createDocument03.html
@@ -0,0 +1,141 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/createDocument03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['createDocument03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'createDocument03';
+
+
+/**
+*
+ The "createDocument(namespaceURI,qualifiedName,doctype)" method for a
+ DOMImplementation should raise WRONG_DOCUMENT_ERR DOMException
+ if parameter doctype has been used with a different document.
+
+ The specification has changed! No exception should be thrown.
+
+ Invoke method createDocument(namespaceURI,qualifiedName,doctype) on
+ this domimplementation where doctype is the type of this document.
+ Method should raise WRONG_DOCUMENT_ERR DOMException.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='WRONG_DOCUMENT_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Level-2-Core-DOM-createDocument
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('Level-2-Core-DOM-createDocument')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='WRONG_DOCUMENT_ERR'])
+*/
+function createDocument03() {
+ var success;
+ if(checkInitialization(builder, "createDocument03") != null) return;
+ var namespaceURI = "http://www.ecommerce.org/schema";
+ var qualifiedName = "namespaceURI:x";
+ var doc;
+ var docType;
+ var domImpl;
+ var aNewDoc;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ docType = doc.doctype;
+
+ domImpl = doc.implementation;
+
+ {
+ success = false;
+ try {
+ aNewDoc = domImpl.createDocument(namespaceURI,qualifiedName,docType);
+ success = true;
+ }
+ catch(ex) {
+ success = false;
+ }
+ //assertTrue("no_throw_WRONG_DOCUMENT_ERR",success);
+ // Ensure at least one SimpleTest check is reported. (Bug 483992)
+ ok(success, "createDocument() succeeded");
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/createDocument03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_createDocument04.html b/dom/tests/mochitest/dom-level2-core/test_createDocument04.html
new file mode 100644
index 0000000000..65872ae7f5
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_createDocument04.html
@@ -0,0 +1,152 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/createDocument04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['createDocument04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ docsLoaded += preload(aNewDocRef, "aNewDoc", "staffNS");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'createDocument04';
+
+
+/**
+*
+ The "createDocument(namespaceURI,qualifiedName,doctype)" method for a
+ DOMImplementation should raise WRONG_DOCUMENT_ERR DOMException
+ if parameter doctype was created from a different implementation.
+
+ The specification has changed! No exception should be thrown.
+
+ Invoke method createDocument(namespaceURI,qualifiedName,doctype) on
+ a domimplementation that is different from this domimplementation.
+ Doctype is the type of this document.
+ Method should raise WRONG_DOCUMENT_ERR DOMException.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='WRONG_DOCUMENT_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Level-2-Core-DOM-createDocument
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('Level-2-Core-DOM-createDocument')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='WRONG_DOCUMENT_ERR'])
+*/
+function createDocument04() {
+ var success;
+ if(checkInitialization(builder, "createDocument04") != null) return;
+ var namespaceURI = "http://www.ecommerce.org/schema";
+ var qualifiedName = "namespaceURI:x";
+ var doc;
+ var docType;
+ var domImpl;
+ var aNewDoc;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ aNewDoc = load(aNewDocRef, "aNewDoc", "staffNS");
+ docType = doc.doctype;
+
+ domImpl = aNewDoc.implementation;
+
+ {
+ success = false;
+ try {
+ aNewDoc = domImpl.createDocument(namespaceURI,qualifiedName,docType);
+ success = true;
+ }
+ catch(ex) {
+ success = false;
+ }
+ assertTrue("no_throw_WRONG_DOCUMENT_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/createDocument04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_createDocument05.html b/dom/tests/mochitest/dom-level2-core/test_createDocument05.html
new file mode 100644
index 0000000000..98ab5c9e94
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_createDocument05.html
@@ -0,0 +1,169 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/createDocument05</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['createDocument05'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'createDocument05';
+
+
+/**
+*
+ The "createDocument(namespaceURI,qualifiedName,doctype)" method for a
+ DOMImplementation should raise INVALID_CHARACTER_ERR DOMException
+ if parameter qualifiedName contains an illegal character.
+
+ Invoke method createDocument(namespaceURI,qualifiedName,doctype) on
+ this domimplementation with namespaceURI equals "http://www.ecommerce.org/schema",
+ doctype is null and qualifiedName contains an illegal character from
+ illegalChars[]. Method should raise INVALID_CHARACTER_ERR DOMException
+ for all characters in illegalChars[].
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#
+*/
+function createDocument05() {
+ var success;
+ if(checkInitialization(builder, "createDocument05") != null) return;
+ var namespaceURI = "http://www.ecommerce.org/schema";
+ var qualifiedName;
+ var doc;
+ var docType = null;
+
+ var domImpl;
+ var aNewDoc;
+ var charact;
+ illegalQNames = new Array();
+ illegalQNames[0] = "namespaceURI:{";
+ illegalQNames[1] = "namespaceURI:}";
+ illegalQNames[2] = "namespaceURI:~";
+ illegalQNames[3] = "namespaceURI:'";
+ illegalQNames[4] = "namespaceURI:!";
+ illegalQNames[5] = "namespaceURI:@";
+ illegalQNames[6] = "namespaceURI:#";
+ illegalQNames[7] = "namespaceURI:$";
+ illegalQNames[8] = "namespaceURI:%";
+ illegalQNames[9] = "namespaceURI:^";
+ illegalQNames[10] = "namespaceURI:&";
+ illegalQNames[11] = "namespaceURI:*";
+ illegalQNames[12] = "namespaceURI:(";
+ illegalQNames[13] = "namespaceURI:)";
+ illegalQNames[14] = "namespaceURI:+";
+ illegalQNames[15] = "namespaceURI:=";
+ illegalQNames[16] = "namespaceURI:[";
+ illegalQNames[17] = "namespaceURI:]";
+ illegalQNames[18] = "namespaceURI:\\";
+ illegalQNames[19] = "namespaceURI:/";
+ illegalQNames[20] = "namespaceURI:;";
+ illegalQNames[21] = "namespaceURI:`";
+ illegalQNames[22] = "namespaceURI:<";
+ illegalQNames[23] = "namespaceURI:>";
+ illegalQNames[24] = "namespaceURI:,";
+ illegalQNames[25] = "namespaceURI:a ";
+ illegalQNames[26] = "namespaceURI:\"";
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ for(var indexN65690 = 0;indexN65690 < illegalQNames.length; indexN65690++) {
+ qualifiedName = illegalQNames[indexN65690];
+ domImpl = doc.implementation;
+
+ {
+ success = false;
+ try {
+ aNewDoc = domImpl.createDocument(namespaceURI,qualifiedName,docType);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 5);
+ }
+ assertTrue("throw_INVALID_CHARACTER_ERR",success);
+ }
+
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/createDocument05</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_createDocument06.html b/dom/tests/mochitest/dom-level2-core/test_createDocument06.html
new file mode 100644
index 0000000000..a1894f44be
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_createDocument06.html
@@ -0,0 +1,139 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/createDocument06</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['createDocument06'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'createDocument06';
+
+
+/**
+*
+ The "createDocument(namespaceURI,qualifiedName,doctype)" method for a
+ DOMImplementation should raise NAMESPACE_ERR DOMException
+ if qualifiedName has the "xml" prefix and namespaceURI different from
+ "http://www.w3.org/XML/1998/namespace"
+
+ Invoke method createDocument(namespaceURI,qualifiedName,doctype) on
+ this domimplementation with qualifiedName "xml:local"
+ and namespaceURI as the string
+ "http://www.ecommerce.org/schema" (which is different from the required
+ "http://www.w3.org/XML/1998/namespace"). Method should raise
+ NAMESPACE_ERR DOMException.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='NAMESPACE_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Level-2-Core-DOM-createDocument
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('Level-2-Core-DOM-createDocument')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='NAMESPACE_ERR'])
+*/
+function createDocument06() {
+ var success;
+ if(checkInitialization(builder, "createDocument06") != null) return;
+ var namespaceURI = "http://ecommerce.org/schema";
+ var qualifiedName = "xml:local";
+ var doc;
+ var docType = null;
+
+ var domImpl;
+ var aNewDoc;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+
+ {
+ success = false;
+ try {
+ aNewDoc = domImpl.createDocument(namespaceURI,qualifiedName,docType);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 14);
+ }
+ assertTrue("throw_NAMESPACE_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/createDocument06</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_createDocument07.html b/dom/tests/mochitest/dom-level2-core/test_createDocument07.html
new file mode 100644
index 0000000000..24446b0bf5
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_createDocument07.html
@@ -0,0 +1,133 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/createDocument07</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['createDocument07'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'createDocument07';
+
+
+/**
+*
+ The "createDocument(namespaceURI,qualifiedName,doctype)" method for a
+ DOMImplementation should return a new xml Document object of the
+ specified type with its document element given that all parameters are
+ valid and correctly formed.
+
+ Invoke method createDocument(namespaceURI,qualifiedName,doctype) on
+ this domimplementation. namespaceURI is "http://www.ecommerce.org/schema"
+ qualifiedName is "y:x" and doctype is null.
+ Method should return a new xml Document as specified by the listed parameters.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Level-2-Core-DOM-createDocument
+*/
+function createDocument07() {
+ var success;
+ if(checkInitialization(builder, "createDocument07") != null) return;
+ var namespaceURI = "http://www.ecommerce.org/schema";
+ var qualifiedName = "y:x";
+ var doc;
+ var docType = null;
+
+ var domImpl;
+ var aNewDoc;
+ var nodeName;
+ var nodeValue;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+aNewDoc = domImpl.createDocument(namespaceURI,qualifiedName,docType);
+ nodeName = aNewDoc.nodeName;
+
+ nodeValue = aNewDoc.nodeValue;
+
+ assertEquals("nodeName","#document",nodeName);
+ assertNull("nodeValue",nodeValue);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/createDocument07</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_createDocumentType01.html b/dom/tests/mochitest/dom-level2-core/test_createDocumentType01.html
new file mode 100644
index 0000000000..2abaf16b70
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_createDocumentType01.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/createDocumentType01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['createDocumentType01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'createDocumentType01';
+
+
+/**
+*
+ The "createDocumentType(qualifiedName,publicId,systemId)" method for a
+ DOMImplementation should raise NAMESPACE_ERR DOMException if
+ qualifiedName is malformed.
+
+ Retrieve the DOMImplementation on the XMLNS Document.
+ Invoke method createDocumentType(qualifiedName,publicId,systemId)
+ on the retrieved DOMImplementation with qualifiedName being the literal
+ string "prefix::local", publicId as "STAFF", and systemId as "staff".
+ Method should raise NAMESPACE_ERR DOMException.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='NAMESPACE_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Level-2-Core-DOM-createDocType
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('Level-2-Core-DOM-createDocType')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='NAMESPACE_ERR'])
+*/
+function createDocumentType01() {
+ var success;
+ if(checkInitialization(builder, "createDocumentType01") != null) return;
+ var publicId = "STAFF";
+ var systemId = "staff.xml";
+ var malformedName = "prefix::local";
+ var doc;
+ var domImpl;
+ var newType;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+
+ {
+ success = false;
+ try {
+ newType = domImpl.createDocumentType(malformedName,publicId,systemId);
+ }
+ catch(ex) {
+ success = ex.code === DOMException.INVALID_CHARACTER_ERR;
+ }
+ assertTrue("throw INVALID_CHARACTER_ERR", success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/createDocumentType01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_createDocumentType02.html b/dom/tests/mochitest/dom-level2-core/test_createDocumentType02.html
new file mode 100644
index 0000000000..cd0756fc41
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_createDocumentType02.html
@@ -0,0 +1,168 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/createDocumentType02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['createDocumentType02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'createDocumentType02';
+
+
+/**
+*
+ The "createDocumentType(qualifiedName,publicId,systemId)" method for a
+ DOMImplementation should raise INVALID_CHARACTER_ERR DOMException if
+ qualifiedName contains an illegal character.
+
+ Invoke method createDocumentType(qualifiedName,publicId,systemId) on
+ this domimplementation with qualifiedName containing an illegal character
+ from illegalChars[]. Method should raise INVALID_CHARACTER_ERR
+ DOMException for all characters in illegalChars[].
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Level-2-Core-DOM-createDocType
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('Level-2-Core-DOM-createDocType')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='INVALID_CHARACTER_ERR'])
+*/
+function createDocumentType02() {
+ var success;
+ if(checkInitialization(builder, "createDocumentType02") != null) return;
+ var publicId = "http://www.localhost.com/";
+ var systemId = "myDoc.dtd";
+ var qualifiedName;
+ var doc;
+ var docType = null;
+
+ var domImpl;
+ illegalQNames = new Array();
+ illegalQNames[0] = "edi:{";
+ illegalQNames[1] = "edi:}";
+ illegalQNames[2] = "edi:~";
+ illegalQNames[3] = "edi:'";
+ illegalQNames[4] = "edi:!";
+ illegalQNames[5] = "edi:@";
+ illegalQNames[6] = "edi:#";
+ illegalQNames[7] = "edi:$";
+ illegalQNames[8] = "edi:%";
+ illegalQNames[9] = "edi:^";
+ illegalQNames[10] = "edi:&";
+ illegalQNames[11] = "edi:*";
+ illegalQNames[12] = "edi:(";
+ illegalQNames[13] = "edi:)";
+ illegalQNames[14] = "edi:+";
+ illegalQNames[15] = "edi:=";
+ illegalQNames[16] = "edi:[";
+ illegalQNames[17] = "edi:]";
+ illegalQNames[18] = "edi:\\";
+ illegalQNames[19] = "edi:/";
+ illegalQNames[20] = "edi:;";
+ illegalQNames[21] = "edi:`";
+ illegalQNames[22] = "edi:<";
+ illegalQNames[23] = "edi:>";
+ illegalQNames[24] = "edi:,";
+ illegalQNames[25] = "edi:a ";
+ illegalQNames[26] = "edi:\"";
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ for(var indexN65690 = 0;indexN65690 < illegalQNames.length; indexN65690++) {
+ qualifiedName = illegalQNames[indexN65690];
+ domImpl = doc.implementation;
+
+ {
+ success = false;
+ try {
+ docType = domImpl.createDocumentType(qualifiedName,publicId,systemId);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 5);
+ }
+ assertTrue("throw_INVALID_CHARACTER_ERR",success);
+ }
+
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/createDocumentType02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_createDocumentType03.html b/dom/tests/mochitest/dom-level2-core/test_createDocumentType03.html
new file mode 100644
index 0000000000..a71656c754
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_createDocumentType03.html
@@ -0,0 +1,132 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/createDocumentType03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['createDocumentType03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'createDocumentType03';
+
+
+/**
+*
+ The "createDocumentType(qualifiedName,publicId,systemId)" method for a
+ DOMImplementation should return a new DocumentType node
+ given that qualifiedName is valid and correctly formed.
+
+ Invoke method createDocumentType(qualifiedName,publicId,systemId) on
+ this domimplementation with qualifiedName "prefix:myDoc".
+ Method should return a new DocumentType node.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Level-2-Core-DOM-createDocType
+*/
+function createDocumentType03() {
+ var success;
+ if(checkInitialization(builder, "createDocumentType03") != null) return;
+ var namespaceURI = "http://ecommerce.org/schema";
+ var qualifiedName = "prefix:myDoc";
+ var publicId = "http://www.localhost.com";
+ var systemId = "myDoc.dtd";
+ var doc;
+ var domImpl;
+ var newType = null;
+
+ var nodeName;
+ var nodeValue;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+newType = domImpl.createDocumentType(qualifiedName,publicId,systemId);
+ nodeName = newType.nodeName;
+
+ assertEquals("nodeName","prefix:myDoc",nodeName);
+ nodeValue = newType.nodeValue;
+
+ assertNull("nodeValue",nodeValue);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/createDocumentType03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_createElementNS01.html b/dom/tests/mochitest/dom-level2-core/test_createElementNS01.html
new file mode 100644
index 0000000000..41e5caa052
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_createElementNS01.html
@@ -0,0 +1,132 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/createElementNS01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['createElementNS01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'createElementNS01';
+
+
+/**
+*
+ The "createElementNS(namespaceURI,qualifiedName)" method for a
+ Document should raise NAMESPACE_ERR DOMException if
+ qualifiedName is malformed.
+
+ Invoke method createElementNS(namespaceURI,qualifiedName) on
+ the XMLNS Document with namespaceURI being the literal string
+ "http://www.ecommerce.org/", and qualifiedName as "prefix::local".
+ Method should raise NAMESPACE_ERR DOMException.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='NAMESPACE_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-DocCrElNS
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-DocCrElNS')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='NAMESPACE_ERR'])
+*/
+function createElementNS01() {
+ var success;
+ if(checkInitialization(builder, "createElementNS01") != null) return;
+ var namespaceURI = "http://www.ecommerce.org/";
+ var malformedName = "prefix::local";
+ var doc;
+ var newElement;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ {
+ success = false;
+ try {
+ newElement = doc.createElementNS(namespaceURI,malformedName);
+ }
+ catch(ex) {
+ success = ex.code === DOMException.INVALID_CHARACTER_ERR;
+ }
+ assertTrue("throw INVALID_CHARACTER_ERR", success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/createElementNS01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_createElementNS02.html b/dom/tests/mochitest/dom-level2-core/test_createElementNS02.html
new file mode 100644
index 0000000000..3b49ff9ac2
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_createElementNS02.html
@@ -0,0 +1,132 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/createElementNS02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['createElementNS02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'createElementNS02';
+
+
+/**
+*
+ The "createElementNS(namespaceURI,qualifiedName)" method for a
+ Document should raise NAMESPACE_ERR DOMException if
+ qualifiedName has a prefix and namespaceURI is null.
+
+ Invoke method createElementNS(namespaceURI,qualifiedName) on this document
+ with namespaceURI being null and qualifiedName being "elem:attr1".
+ Method should raise NAMESPACE_ERR DOMException.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='NAMESPACE_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-DocCrElNS
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-DocCrElNS')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='NAMESPACE_ERR'])
+*/
+function createElementNS02() {
+ var success;
+ if(checkInitialization(builder, "createElementNS02") != null) return;
+ var namespaceURI = null;
+
+ var qualifiedName = "prefix:local";
+ var doc;
+ var newElement;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ {
+ success = false;
+ try {
+ newElement = doc.createElementNS(namespaceURI,qualifiedName);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 14);
+ }
+ assertTrue("throw_NAMESPACE_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/createElementNS02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_createElementNS03.html b/dom/tests/mochitest/dom-level2-core/test_createElementNS03.html
new file mode 100644
index 0000000000..dd71c2f7fe
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_createElementNS03.html
@@ -0,0 +1,166 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/createElementNS03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['createElementNS03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'createElementNS03';
+
+
+/**
+*
+ The "createElementNS(namespaceURI,qualifiedName)" method for a
+ Document should raise INVALID_CHARACTER_ERR DOMException if
+ qualifiedName contains an illegal character.
+
+ Invoke method createElementNS(namespaceURI,qualifiedName) on this document
+ with qualifiedName containing an illegal character from illegalChars[].
+ Method should raise INVALID_CHARACTER_ERR DOMException for all characters
+ in illegalChars[].
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-DocCrElNS
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-DocCrElNS')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='INVALID_CHARACTER_ERR'])
+*/
+function createElementNS03() {
+ var success;
+ if(checkInitialization(builder, "createElementNS03") != null) return;
+ var namespaceURI = "http://www.wedding.com/";
+ var qualifiedName;
+ var doc;
+ var done;
+ var newElement;
+ var charact;
+ illegalQNames = new Array();
+ illegalQNames[0] = "person:{";
+ illegalQNames[1] = "person:}";
+ illegalQNames[2] = "person:~";
+ illegalQNames[3] = "person:'";
+ illegalQNames[4] = "person:!";
+ illegalQNames[5] = "person:@";
+ illegalQNames[6] = "person:#";
+ illegalQNames[7] = "person:$";
+ illegalQNames[8] = "person:%";
+ illegalQNames[9] = "person:^";
+ illegalQNames[10] = "person:&";
+ illegalQNames[11] = "person:*";
+ illegalQNames[12] = "person:(";
+ illegalQNames[13] = "person:)";
+ illegalQNames[14] = "person:+";
+ illegalQNames[15] = "person:=";
+ illegalQNames[16] = "person:[";
+ illegalQNames[17] = "person:]";
+ illegalQNames[18] = "person:\\";
+ illegalQNames[19] = "person:/";
+ illegalQNames[20] = "person:;";
+ illegalQNames[21] = "person:`";
+ illegalQNames[22] = "person:<";
+ illegalQNames[23] = "person:>";
+ illegalQNames[24] = "person:,";
+ illegalQNames[25] = "person:a ";
+ illegalQNames[26] = "person:\"";
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ for(var indexN65688 = 0;indexN65688 < illegalQNames.length; indexN65688++) {
+ qualifiedName = illegalQNames[indexN65688];
+
+ {
+ success = false;
+ try {
+ newElement = doc.createElementNS(namespaceURI,qualifiedName);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 5);
+ }
+ assertTrue("throw_INVALID_CHARACTER_ERR",success);
+ }
+
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/createElementNS03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_createElementNS04.html b/dom/tests/mochitest/dom-level2-core/test_createElementNS04.html
new file mode 100644
index 0000000000..e70723aeba
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_createElementNS04.html
@@ -0,0 +1,134 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/createElementNS04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['createElementNS04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'createElementNS04';
+
+
+/**
+*
+ The "createElementNS(namespaceURI,qualifiedName") method for
+ a Document should raise NAMESPACE_ERR DOMException if the
+ qualifiedName has an "xml" prefix and the namespaceURI is different
+ from http://www.w3.org/XML/1998/namespace".
+
+ Invoke method createElementNS(namespaceURI,qualifiedName) on this document
+ with qualifiedName being "xml:element1" and namespaceURI equals the string
+ "http://www.w3.org/XML/1997/namespace" (which differs from the required
+ string "http://www.w3.org/XML/1998/namespace").
+ Method should raise NAMESPACE_ERR DOMException.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='NAMESPACE_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-DocCrElNS
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-DocCrElNS')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='NAMESPACE_ERR'])
+*/
+function createElementNS04() {
+ var success;
+ if(checkInitialization(builder, "createElementNS04") != null) return;
+ var namespaceURI = "http://www.w3.org/XML/1998/namespaces";
+ var qualifiedName = "xml:element1";
+ var doc;
+ var newElement;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ {
+ success = false;
+ try {
+ newElement = doc.createElementNS(namespaceURI,qualifiedName);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 14);
+ }
+ assertTrue("throw_NAMESPACE_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/createElementNS04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_createElementNS05.html b/dom/tests/mochitest/dom-level2-core/test_createElementNS05.html
new file mode 100644
index 0000000000..5ade12f66f
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_createElementNS05.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/createElementNS05</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['createElementNS05'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'createElementNS05';
+
+
+/**
+*
+ The "createElementNS(namespaceURI,qualifiedName)" method for a
+ Document should return a new Element object given that all parameters
+ are valid and correctly formed.
+
+ Invoke method createElementNS(namespaceURI,qualifiedName on this document
+ with namespaceURI as "http://www.nist.gov" and qualifiedName as "gov:faculty".
+ Method should return a new Element object whose name is "gov:faculty".
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-104682815
+*/
+function createElementNS05() {
+ var success;
+ if(checkInitialization(builder, "createElementNS05") != null) return;
+ var namespaceURI = "http://www.nist.gov";
+ var qualifiedName = "gov:faculty";
+ var doc;
+ var newElement;
+ var elementName;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ newElement = doc.createElementNS(namespaceURI,qualifiedName);
+ elementName = newElement.tagName;
+
+ assertEquals("throw_Equals",qualifiedName,elementName);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/createElementNS05</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_createElementNS06.html b/dom/tests/mochitest/dom-level2-core/test_createElementNS06.html
new file mode 100644
index 0000000000..c4bae45769
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_createElementNS06.html
@@ -0,0 +1,128 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/createElementNS06</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['createElementNS06'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "hc_staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'createElementNS06';
+
+
+/**
+*
+Document.createElementNS with an empty qualified name should cause an INVALID_CHARACTER_ERR.
+
+* @author Curt Arnold
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-DocCrElNS
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-DocCrElNS')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='INVALID_CHARACTER_ERR'])
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=525
+*/
+function createElementNS06() {
+ var success;
+ if(checkInitialization(builder, "createElementNS06") != null) return;
+ var namespaceURI = "http://www.example.com/";
+ var qualifiedName;
+ var doc;
+ var done;
+ var newElement;
+ var charact;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "hc_staff");
+
+ {
+ success = false;
+ try {
+ newElement = doc.createElementNS(namespaceURI,"");
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 5);
+ }
+ assertTrue("throw_INVALID_CHARACTER_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/createElementNS06</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+<iframe name="doc" src="files/hc_staff.html"></iframe>
+<br>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS01.html b/dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS01.html
new file mode 100644
index 0000000000..ac40eb1c79
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS01.html
@@ -0,0 +1,127 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentcreateattributeNS01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentcreateattributeNS01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentcreateattributeNS01';
+
+
+/**
+*
+ The method createAttributeNS creates an attribute of the given qualified name and namespace URI
+
+ Invoke the createAttributeNS method on this Document object with a null
+ namespaceURI, and a qualifiedName without a prefix. This should return a valid Attr
+ node object.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-DocCrAttrNS
+*/
+function documentcreateattributeNS01() {
+ var success;
+ if(checkInitialization(builder, "documentcreateattributeNS01") != null) return;
+ var doc;
+ var attribute;
+ var namespaceURI = null;
+
+ var qualifiedName = "test";
+ var name;
+ var nodeName;
+ var nodeValue;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ attribute = doc.createAttributeNS(namespaceURI,qualifiedName);
+ nodeName = attribute.nodeName;
+
+ nodeValue = attribute.nodeValue;
+
+ assertEquals("documentcreateattributeNS01","test",nodeName);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentcreateattributeNS01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS02.html b/dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS02.html
new file mode 100644
index 0000000000..1a6614debd
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS02.html
@@ -0,0 +1,151 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentcreateattributeNS02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentcreateattributeNS02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentcreateattributeNS02';
+
+
+/**
+*
+ The method createAttributeNS creates an attribute of the given qualified name and namespace URI
+
+ Invoke the createAttributeNS method on this Document object with a valid values for
+ namespaceURI, and a qualifiedName as below. This should return a valid Attr node.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-DocCrAttrNS
+*/
+function documentcreateattributeNS02() {
+ var success;
+ if(checkInitialization(builder, "documentcreateattributeNS02") != null) return;
+ var doc;
+ var attribute1;
+ var attribute2;
+ var name;
+ var nodeName;
+ var nodeValue;
+ var prefix;
+ var namespaceURI;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ attribute1 = doc.createAttributeNS("http://www.w3.org/XML/1998/namespace","xml:xml");
+ name = attribute1.name;
+
+ nodeName = attribute1.nodeName;
+
+ nodeValue = attribute1.nodeValue;
+
+ prefix = attribute1.prefix;
+
+ namespaceURI = attribute1.namespaceURI;
+
+ assertEquals("documentcreateattributeNS02_att1_name","xml:xml",name);
+ assertEquals("documentcreateattributeNS02_att1_nodeName","xml:xml",nodeName);
+ assertEquals("documentcreateattributeNS02_att1_nodeValue","",nodeValue);
+ assertEquals("documentcreateattributeNS02_att1_prefix","xml",prefix);
+ assertEquals("documentcreateattributeNS02_att1_namespaceURI","http://www.w3.org/XML/1998/namespace",namespaceURI);
+ attribute2 = doc.createAttributeNS("http://www.w3.org/2000/xmlns/","xmlns");
+ name = attribute2.name;
+
+ nodeName = attribute2.nodeName;
+
+ nodeValue = attribute2.nodeValue;
+
+ prefix = attribute2.prefix;
+
+ namespaceURI = attribute2.namespaceURI;
+
+ assertEquals("documentcreateattributeNS02_att2_name","xmlns",name);
+ assertEquals("documentcreateattributeNS02_att2_nodeName","xmlns",nodeName);
+ assertEquals("documentcreateattributeNS02_att2_nodeValue","",nodeValue);
+ assertEquals("documentcreateattributeNS02_att2_namespaceURI","http://www.w3.org/2000/xmlns/",namespaceURI);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentcreateattributeNS02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS03.html b/dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS03.html
new file mode 100644
index 0000000000..b41f476ded
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS03.html
@@ -0,0 +1,144 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentcreateattributeNS03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentcreateattributeNS03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentcreateattributeNS03';
+
+
+/**
+*
+ The method createAttributeNS raises an INVALID_CHARACTER_ERR if the specified
+ qualified name contains an illegal character
+
+ Invoke the createAttributeNS method on this Document object with a valid value for
+ namespaceURI, and qualifiedNames that contain illegal characters. Check if the an
+ INVALID_CHARACTER_ERR was thrown.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-DocCrAttrNS
+*/
+function documentcreateattributeNS03() {
+ var success;
+ if(checkInitialization(builder, "documentcreateattributeNS03") != null) return;
+ var doc;
+ var attribute;
+ var namespaceURI = "http://www.w3.org/DOM/Test/Level2";
+ var qualifiedName;
+ qualifiedNames = new Array();
+ qualifiedNames[0] = "/";
+ qualifiedNames[1] = "//";
+ qualifiedNames[2] = "\\";
+ qualifiedNames[3] = ";";
+ qualifiedNames[4] = "&";
+ qualifiedNames[5] = "*";
+ qualifiedNames[6] = "]]";
+ qualifiedNames[7] = ">";
+ qualifiedNames[8] = "<";
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ for(var indexN65626 = 0;indexN65626 < qualifiedNames.length; indexN65626++) {
+ qualifiedName = qualifiedNames[indexN65626];
+
+ {
+ success = false;
+ try {
+ attribute = doc.createAttributeNS(namespaceURI,qualifiedName);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 5);
+ }
+ assertTrue("documentcreateattributeNS03",success);
+ }
+
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentcreateattributeNS03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS04.html b/dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS04.html
new file mode 100644
index 0000000000..20466477a9
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS04.html
@@ -0,0 +1,139 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentcreateattributeNS04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentcreateattributeNS04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentcreateattributeNS04';
+
+
+/**
+*
+ The method createAttributeNS raises a NAMESPACE_ERR if the specified qualified name
+ is malformed.
+
+ Invoke the createAttributeNS method on this Document object with a valid value for
+ namespaceURI, and malformed qualifiedNames. Check if the a NAMESPACE_ERR was thrown.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-DocCrAttrNS
+*/
+function documentcreateattributeNS04() {
+ var success;
+ if(checkInitialization(builder, "documentcreateattributeNS04") != null) return;
+ var doc;
+ var attribute;
+ var namespaceURI = "http://www.w3.org/DOM/Test/Level2";
+ var qualifiedName;
+ qualifiedNames = new Array();
+ qualifiedNames[0] = "_:";
+ qualifiedNames[1] = ":0a";
+ qualifiedNames[2] = ":";
+ qualifiedNames[3] = "a:b:c";
+ qualifiedNames[4] = "_::a";
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ for(var indexN65614 = 0;indexN65614 < qualifiedNames.length; indexN65614++) {
+ qualifiedName = qualifiedNames[indexN65614];
+
+ {
+ success = false;
+ try {
+ attribute = doc.createAttributeNS(namespaceURI,qualifiedName);
+ }
+ catch(ex) {
+ success = ex.code === DOMException.INVALID_CHARACTER_ERR;
+ }
+ assertTrue("documentcreateattributeNS04",success);
+ }
+
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentcreateattributeNS04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS05.html b/dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS05.html
new file mode 100644
index 0000000000..84f1a40a11
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS05.html
@@ -0,0 +1,135 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentcreateattributeNS05</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentcreateattributeNS05'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentcreateattributeNS05';
+
+
+/**
+*
+ The method createAttributeNS raises a NAMESPACE_ERR if the qualifiedName has a prefix and
+ the namespaceURI is null.
+
+ Invoke the createAttributeNS method on a new Document object with a null value for
+ namespaceURI, and a valid qualifiedName. Check if a NAMESPACE_ERR is thrown.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-DocCrAttrNS
+*/
+function documentcreateattributeNS05() {
+ var success;
+ if(checkInitialization(builder, "documentcreateattributeNS05") != null) return;
+ var doc;
+ var newDoc;
+ var docType = null;
+
+ var domImpl;
+ var attribute;
+ var namespaceURI = null;
+
+ var qualifiedName = "abc:def";
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+newDoc = domImpl.createDocument("http://www.w3.org/DOM/Test","dom:doc",docType);
+
+ {
+ success = false;
+ try {
+ attribute = newDoc.createAttributeNS(namespaceURI,qualifiedName);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 14);
+ }
+ assertTrue("documentcreateattributeNS05",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentcreateattributeNS05</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS06.html b/dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS06.html
new file mode 100644
index 0000000000..ecfeb4af6d
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS06.html
@@ -0,0 +1,135 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentcreateattributeNS06</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentcreateattributeNS06'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentcreateattributeNS06';
+
+
+/**
+*
+ The method createAttributeNS raises a NAMESPACE_ERR if the qualifiedName has a prefix that
+ is "xml" and the namespaceURI is different from "http://www.w3.org/XML/1998/namespace".
+
+ Invoke the createAttributeNS method on a new DOMImplementation object with the qualifiedName
+ as xml:root and namespaceURI as http://www.w3.org/XML/1998 /namespace.
+ Check if the NAMESPACE_ERR exception is thrown.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-DocCrAttrNS
+*/
+function documentcreateattributeNS06() {
+ var success;
+ if(checkInitialization(builder, "documentcreateattributeNS06") != null) return;
+ var doc;
+ var newDoc;
+ var docType = null;
+
+ var domImpl;
+ var attribute;
+ var namespaceURI = "http://www.w3.org/XML/1998 /namespace";
+ var qualifiedName = "xml:root";
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+newDoc = domImpl.createDocument("http://www.w3.org/DOM/Test","dom:doc",docType);
+
+ {
+ success = false;
+ try {
+ attribute = newDoc.createAttributeNS(namespaceURI,qualifiedName);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 14);
+ }
+ assertTrue("documentcreateattributeNS06",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentcreateattributeNS06</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS07.html b/dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS07.html
new file mode 100644
index 0000000000..ae84931402
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentcreateattributeNS07.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentcreateattributeNS07</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentcreateattributeNS07'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentcreateattributeNS07';
+
+
+/**
+*
+ The method createAttributeNS raises a NAMESPACE_ERR if the qualifiedName is xmlns and
+ the namespaceURI is different from http://www.w3.org/2000/xmlns
+
+ Invoke the createAttributeNS method on this DOMImplementation object with
+ the qualifiedName as xmlns and namespaceURI as http://www.W3.org/2000/xmlns.
+ Check if the NAMESPACE_ERR exception is thrown.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-DocCrAttrNS
+*/
+function documentcreateattributeNS07() {
+ var success;
+ if(checkInitialization(builder, "documentcreateattributeNS07") != null) return;
+ var doc;
+ var attribute;
+ var namespaceURI = "http://www.W3.org/2000/xmlns";
+ var qualifiedName = "xmlns";
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ {
+ success = false;
+ try {
+ attribute = doc.createAttributeNS(namespaceURI,qualifiedName);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 14);
+ }
+ assertTrue("documentcreateattributeNS07",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentcreateattributeNS07</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentcreateelementNS01.html b/dom/tests/mochitest/dom-level2-core/test_documentcreateelementNS01.html
new file mode 100644
index 0000000000..49652dbaed
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentcreateelementNS01.html
@@ -0,0 +1,137 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentcreateelementNS01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentcreateelementNS01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentcreateelementNS01';
+
+
+/**
+*
+ The method createElementNS creates an element of the given valid qualifiedName and NamespaceURI.
+
+ Invoke the createElementNS method on this Document object with a valid namespaceURI
+ and qualifiedName. Check if a valid Element object is returned with the same node attributes.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-DocCrElNS
+*/
+function documentcreateelementNS01() {
+ var success;
+ if(checkInitialization(builder, "documentcreateelementNS01") != null) return;
+ var doc;
+ var element;
+ var namespaceURI = "http://www.w3.org/DOM/Test/level2";
+ var qualifiedName = "XML:XML";
+ var nodeName;
+ var nsURI;
+ var localName;
+ var prefix;
+ var tagName;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ element = doc.createElementNS(namespaceURI,qualifiedName);
+ nodeName = element.nodeName;
+
+ nsURI = element.namespaceURI;
+
+ localName = element.localName;
+
+ prefix = element.prefix;
+
+ tagName = element.tagName;
+
+ assertEquals("documentcreateelementNS01_nodeName","XML:XML",nodeName);
+ assertEquals("documentcreateelementNS01_namespaceURI","http://www.w3.org/DOM/Test/level2",nsURI);
+ assertEquals("documentcreateelementNS01_localName","XML",localName);
+ assertEquals("documentcreateelementNS01_prefix","XML",prefix);
+ assertEquals("documentcreateelementNS01_tagName","XML:XML",tagName);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentcreateelementNS01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentcreateelementNS02.html b/dom/tests/mochitest/dom-level2-core/test_documentcreateelementNS02.html
new file mode 100644
index 0000000000..fb5662242d
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentcreateelementNS02.html
@@ -0,0 +1,128 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentcreateelementNS02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentcreateelementNS02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentcreateelementNS02';
+
+
+/**
+*
+ The method createElementNS creates an element of the given valid qualifiedName and NamespaceURI.
+
+ Invoke the createElementNS method on this Document object with null values for namespaceURI,
+ and a qualifiedName with an invalid character and check if an INVALID_CHARACTER_ERR is thrown.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-DocCrElNS
+*/
+function documentcreateelementNS02() {
+ var success;
+ if(checkInitialization(builder, "documentcreateelementNS02") != null) return;
+ var doc;
+ var element;
+ var namespaceURI = null;
+
+ var qualifiedName = "^^";
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ {
+ success = false;
+ try {
+ element = doc.createElementNS(namespaceURI,qualifiedName);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 5);
+ }
+ assertTrue("documentcreateelementNS02",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentcreateelementNS02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentcreateelementNS05.html b/dom/tests/mochitest/dom-level2-core/test_documentcreateelementNS05.html
new file mode 100644
index 0000000000..2ec363db20
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentcreateelementNS05.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentcreateelementNS05</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentcreateelementNS05'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentcreateelementNS05';
+
+
+/**
+*
+ The method createElementNS raises a NAMESPACE_ERR if the qualifiedName has a prefix and
+ the namespaceURI is null.
+
+ Invoke the createElementNS method on a new Document object with a null value for
+ namespaceURI, and a valid qualifiedName. Check if a NAMESPACE_ERR is thrown.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-DocCrElNS
+*/
+function documentcreateelementNS05() {
+ var success;
+ if(checkInitialization(builder, "documentcreateelementNS05") != null) return;
+ var doc;
+ var element;
+ var namespaceURI = null;
+
+ var qualifiedName = "null:xml";
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ {
+ success = false;
+ try {
+ element = doc.createElementNS(namespaceURI,qualifiedName);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 14);
+ }
+ assertTrue("documentcreateelementNS05",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentcreateelementNS05</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentcreateelementNS06.html b/dom/tests/mochitest/dom-level2-core/test_documentcreateelementNS06.html
new file mode 100644
index 0000000000..6c2f0ce8c9
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentcreateelementNS06.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentcreateelementNS06</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentcreateelementNS06'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentcreateelementNS06';
+
+
+/**
+*
+ The method createElementNS raises a NAMESPACE_ERR if the qualifiedName
+ has a prefix that is "xml" and the namespaceURI is different
+ from http://www.w3.org/XML/1998/namespace
+
+ Invoke the createElementNS method on this DOMImplementation object with
+ the qualifiedName as xml:root and namespaceURI as http://www.w3.org/xml/1998/namespace
+ Check if the NAMESPACE_ERR exception is thrown.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-DocCrElNS
+*/
+function documentcreateelementNS06() {
+ var success;
+ if(checkInitialization(builder, "documentcreateelementNS06") != null) return;
+ var doc;
+ var newDoc;
+ var docType = null;
+
+ var domImpl;
+ var element;
+ var namespaceURI = "http://www.w3.org/xml/1998/namespace ";
+ var qualifiedName = "xml:root";
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+newDoc = domImpl.createDocument("http://www.w3.org/DOM/Test","dom:doc",docType);
+
+ {
+ success = false;
+ try {
+ element = newDoc.createElementNS(namespaceURI,qualifiedName);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 14);
+ }
+ assertTrue("documentcreateelementNS06",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentcreateelementNS06</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentgetelementbyid01.html b/dom/tests/mochitest/dom-level2-core/test_documentgetelementbyid01.html
new file mode 100644
index 0000000000..0b6c29e9af
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentgetelementbyid01.html
@@ -0,0 +1,118 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentgetelementbyid01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentgetelementbyid01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentgetelementbyid01';
+
+
+/**
+*
+ The method getElementById returns the element whose ID is given by elementId.
+ If not such element exists, returns null.
+
+ Invoke the getElementById method on this Document object with an invalid elementId.
+ This should return a null element.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getElBId
+*/
+function documentgetelementbyid01() {
+ var success;
+ if(checkInitialization(builder, "documentgetelementbyid01") != null) return;
+ var doc;
+ var element;
+ var elementId = "---";
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ element = doc.getElementById(elementId);
+ assertNull("documentgetelementbyid01",element);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentgetelementbyid01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentgetelementsbytagnameNS01.html b/dom/tests/mochitest/dom-level2-core/test_documentgetelementsbytagnameNS01.html
new file mode 100644
index 0000000000..54b7fb99ab
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentgetelementsbytagnameNS01.html
@@ -0,0 +1,127 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentgetelementsbytagnameNS01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentgetelementsbytagnameNS01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentgetelementsbytagnameNS01';
+
+
+/**
+*
+ The method getElementsByTagNameNS returns a NodeList of all the Elements with
+ a given local name and namespace URI in the order in which they are encountered
+ in a preorder traversal of the Document tree.
+
+ Invoke the getElementsByTagNameNS method on a new Document object with the values of
+ namespaceURI=* and localName=*. This should return a nodeList of 1 item.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getElBTNNS
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=259
+*/
+function documentgetelementsbytagnameNS01() {
+ var success;
+ if(checkInitialization(builder, "documentgetelementsbytagnameNS01") != null) return;
+ var doc;
+ var newDoc;
+ var docType = null;
+
+ var domImpl;
+ var childList;
+ var nullNS = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+newDoc = domImpl.createDocument(nullNS,"root",docType);
+ childList = newDoc.getElementsByTagNameNS("*","*");
+ assertSize("documentgetelementsbytagnameNS01",1,childList);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentgetelementsbytagnameNS01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentgetelementsbytagnameNS02.html b/dom/tests/mochitest/dom-level2-core/test_documentgetelementsbytagnameNS02.html
new file mode 100644
index 0000000000..50d3e8dc06
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentgetelementsbytagnameNS02.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentgetelementsbytagnameNS02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentgetelementsbytagnameNS02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentgetelementsbytagnameNS02';
+
+
+/**
+*
+ The method getElementsByTagNameNS returns a NodeList of all the Elements with
+ a given local name and namespace URI in the order in which they are encountered
+ in a preorder traversal of the Document tree.
+
+
+ Create a new element having a local name="employeeId" belonging to the namespace "test"
+ and append it to this document. Invoke the getElementsByTagNameNS method on a this
+ Document object with the values of namespaceURI=* and localName="elementId". This
+ should return a nodeList of 6 item. Check the length of the nodeList returned.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getElBTNNS
+*/
+function documentgetelementsbytagnameNS02() {
+ var success;
+ if(checkInitialization(builder, "documentgetelementsbytagnameNS02") != null) return;
+ var doc;
+ var docElem;
+ var element;
+ var childList;
+ var appendedChild;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ docElem = doc.documentElement;
+
+ element = doc.createElementNS("test","employeeId");
+ appendedChild = docElem.appendChild(element);
+ childList = doc.getElementsByTagNameNS("*","employeeId");
+ assertSize("documentgetelementsbytagnameNS02",6,childList);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentgetelementsbytagnameNS02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentgetelementsbytagnameNS03.html b/dom/tests/mochitest/dom-level2-core/test_documentgetelementsbytagnameNS03.html
new file mode 100644
index 0000000000..ae45fac214
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentgetelementsbytagnameNS03.html
@@ -0,0 +1,118 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentgetelementsbytagnameNS03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentgetelementsbytagnameNS03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentgetelementsbytagnameNS03';
+
+
+/**
+*
+ The method getElementsByTagNameNS returns a NodeList of all the Elements with
+ a given local name and namespace URI in the order in which they are encountered
+ in a preorder traversal of the Document tree.
+
+ Invoke the getElementsByTagNameNS method on a new Document object with the values of
+ namespaceURI=** and localName=**. This should return a nodeList of 0 items.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getElBTNNS
+*/
+function documentgetelementsbytagnameNS03() {
+ var success;
+ if(checkInitialization(builder, "documentgetelementsbytagnameNS03") != null) return;
+ var doc;
+ var childList;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ childList = doc.getElementsByTagNameNS("**","*");
+ assertSize("documentgetelementsbytagnameNS03",0,childList);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentgetelementsbytagnameNS03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentgetelementsbytagnameNS04.html b/dom/tests/mochitest/dom-level2-core/test_documentgetelementsbytagnameNS04.html
new file mode 100644
index 0000000000..793c548413
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentgetelementsbytagnameNS04.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentgetelementsbytagnameNS04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentgetelementsbytagnameNS04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentgetelementsbytagnameNS04';
+
+
+/**
+*
+ The method getElementsByTagNameNS returns a NodeList of all the Elements with
+ a given local name and namespace URI in the order in which they are encountered
+ in a preorder traversal of the Document tree.
+
+ Invoke the getElementsByTagNameNS method on a new Document object with the values of
+ namespaceURI="null" and localName="0". This should return a nodeList of 0 items.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getElBTNNS
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=259
+*/
+function documentgetelementsbytagnameNS04() {
+ var success;
+ if(checkInitialization(builder, "documentgetelementsbytagnameNS04") != null) return;
+ var doc;
+ var childList;
+ var nullNS = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ childList = doc.getElementsByTagNameNS(nullNS,"0");
+ assertSize("documentgetelementsbytagnameNS04",0,childList);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentgetelementsbytagnameNS04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentgetelementsbytagnameNS05.html b/dom/tests/mochitest/dom-level2-core/test_documentgetelementsbytagnameNS05.html
new file mode 100644
index 0000000000..cb6e93b6fb
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentgetelementsbytagnameNS05.html
@@ -0,0 +1,120 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentgetelementsbytagnameNS05</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentgetelementsbytagnameNS05'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentgetelementsbytagnameNS05';
+
+
+/**
+*
+ The method getElementsByTagNameNS returns a NodeList of all the Elements with
+ a given local name and namespace URI in the order in which they are encountered
+ in a preorder traversal of the Document tree.
+
+
+ Invoke the getElementsByTagNameNS method on a this Document object with the
+ values of namespaceURI=null and localName="elementId". This
+ should return a nodeList of 0 item. Check the length of the nodeList returned.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getElBTNNS
+*/
+function documentgetelementsbytagnameNS05() {
+ var success;
+ if(checkInitialization(builder, "documentgetelementsbytagnameNS05") != null) return;
+ var doc;
+ var childList;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ childList = doc.getElementsByTagNameNS("null","elementId");
+ assertSize("documentgetelementsbytagnameNS05",0,childList);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentgetelementsbytagnameNS05</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentimportnode01.html b/dom/tests/mochitest/dom-level2-core/test_documentimportnode01.html
new file mode 100644
index 0000000000..c73e615041
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentimportnode01.html
@@ -0,0 +1,139 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentimportnode01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentimportnode01';
+
+
+/**
+*
+ The importNode method imports a node from another document to this document.
+ The returned node has no parent; (parentNode is null). The source node is not
+ altered or removed from the original document but a new copy of the source node
+ is created.
+
+ Using the method importNode with deep=true, import the attribute, "street" of the second
+ element node, from a list of nodes whose local names are "address" and namespaceURI
+ "http://www.nist.gov" into the same document. Check the parentNode, nodeName,
+ nodeType and nodeValue of the imported node to verify if it has been imported correctly.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function documentimportnode01() {
+ var success;
+ if(checkInitialization(builder, "documentimportnode01") != null) return;
+ var doc;
+ var element;
+ var attr;
+ var childList;
+ var importedAttr;
+ var nodeName;
+ var nodeType;
+ var nodeValue;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ childList = doc.getElementsByTagNameNS("http://www.nist.gov","address");
+ element = childList.item(1);
+ attr = element.getAttributeNode("street");
+ importedAttr = doc.importNode(attr,false);
+ nodeName = importedAttr.nodeName;
+
+ nodeValue = importedAttr.nodeValue;
+
+ nodeType = importedAttr.nodeType;
+
+ assertEquals("documentimportnode01_nodeName","street",nodeName);
+ assertEquals("documentimportnode01_nodeType",2,nodeType);
+ assertEquals("documentimportnode01_nodeValue","Yes",nodeValue);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentimportnode02.html b/dom/tests/mochitest/dom-level2-core/test_documentimportnode02.html
new file mode 100644
index 0000000000..325165da75
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentimportnode02.html
@@ -0,0 +1,156 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentimportnode02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ var docImportedRef = null;
+ if (typeof(this.docImported) != 'undefined') {
+ docImportedRef = this.docImported;
+ }
+ docsLoaded += preload(docImportedRef, "docImported", "staff");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentimportnode02';
+
+
+/**
+*
+ The importNode method imports a node from another document to this document.
+ The returned node has no parent; (parentNode is null). The source node is not
+ altered or removed from the original document but a new copy of the source node
+ is created.
+
+ Using the method importNode with deep=false, import the attribute, "emp:zone" of the
+ element node which is retreived by its elementId="CANADA", into the another document.
+ Check the parentNode, nodeName, nodeType and nodeValue of the imported node to
+ verify if it has been imported correctly.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function documentimportnode02() {
+ var success;
+ if(checkInitialization(builder, "documentimportnode02") != null) return;
+ var doc;
+ var docImported;
+ var element;
+ var attr;
+ var importedAttr;
+ var nodeName;
+ var nodeType;
+ var nodeValue;
+ var addresses;
+ var attrsParent;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ var docImportedRef = null;
+ if (typeof(this.docImported) != 'undefined') {
+ docImportedRef = this.docImported;
+ }
+ docImported = load(docImportedRef, "docImported", "staff");
+ addresses = doc.getElementsByTagNameNS("http://www.nist.gov","address");
+ element = addresses.item(1);
+ attr = element.getAttributeNodeNS("http://www.nist.gov","zone");
+ importedAttr = docImported.importNode(attr,false);
+ nodeName = importedAttr.nodeName;
+
+ nodeType = importedAttr.nodeType;
+
+ nodeValue = importedAttr.nodeValue;
+
+ attrsParent = importedAttr.parentNode;
+
+ assertNull("documentimportnode02_parentNull",attrsParent);
+ assertEquals("documentimportnode02_nodeName","emp:zone",nodeName);
+ assertEquals("documentimportnode02_nodeType",2,nodeType);
+ assertEquals("documentimportnode02_nodeValue","CANADA",nodeValue);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentimportnode03.html b/dom/tests/mochitest/dom-level2-core/test_documentimportnode03.html
new file mode 100644
index 0000000000..c325c07178
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentimportnode03.html
@@ -0,0 +1,140 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentimportnode03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+ setImplementationAttribute("validating", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentimportnode03';
+
+
+/**
+*
+ The importNode method imports a node from another document to this document.
+ The returned node has no parent; (parentNode is null). The source node is not
+ altered or removed from the original document but a new copy of the source node
+ is created.
+
+ Using the method importNode with deep=false, import the default Attribute attribute,
+ "defaultAttr" of the second element node whose namespaceURI="http://www.nist.gov" and
+ localName="defaultAttr", into the same document.
+ Check the parentNode, nodeName, nodeType and nodeValue of the imported node to
+ verify if it has been imported correctly.
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function documentimportnode03() {
+ var success;
+ if(checkInitialization(builder, "documentimportnode03") != null) return;
+ var doc;
+ var element;
+ var attr;
+ var childList;
+ var importedAttr;
+ var nodeName;
+ var nodeType;
+ var nodeValue;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ childList = doc.getElementsByTagNameNS("http://www.nist.gov","employee");
+ element = childList.item(1);
+ attr = element.getAttributeNode("defaultAttr");
+ importedAttr = doc.importNode(attr,false);
+ nodeName = importedAttr.nodeName;
+
+ nodeValue = importedAttr.nodeValue;
+
+ nodeType = importedAttr.nodeType;
+
+ assertEquals("documentimportnode03_nodeName","defaultAttr",nodeName);
+ assertEquals("documentimportnode03_nodeType",2,nodeType);
+ assertEquals("documentimportnode03_nodeValue","defaultVal",nodeValue);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentimportnode04.html b/dom/tests/mochitest/dom-level2-core/test_documentimportnode04.html
new file mode 100644
index 0000000000..174eece4b7
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentimportnode04.html
@@ -0,0 +1,147 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentimportnode04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+ setImplementationAttribute("validating", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentimportnode04';
+
+
+/**
+*
+ The importNode method imports a node from another document to this document.
+ The returned node has no parent; (parentNode is null). The source node is not
+ altered or removed from the original document but a new copy of the source node
+ is created.
+
+ Using the method importNode with deep=true, import the default Attribute attribute,
+ "defaultAttr" of the second element node whose namespaceURI="http://www.nist.gov" and
+ localName="defaultAttr", into a new document.
+ Check the parentNode, nodeName, nodeType and nodeValue of the imported node to
+ verify if it has been imported correctly.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function documentimportnode04() {
+ var success;
+ if(checkInitialization(builder, "documentimportnode04") != null) return;
+ var doc;
+ var newDoc;
+ var docType = null;
+
+ var domImpl;
+ var element;
+ var attr;
+ var childList;
+ var importedAttr;
+ var nodeName;
+ var nodeType;
+ var nodeValue;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+newDoc = domImpl.createDocument("http://www.w3.org/DOM/Test","l2:root",docType);
+ childList = doc.getElementsByTagNameNS("http://www.nist.gov","employee");
+ element = childList.item(1);
+ attr = element.getAttributeNode("defaultAttr");
+ importedAttr = newDoc.importNode(attr,true);
+ nodeName = importedAttr.nodeName;
+
+ nodeValue = importedAttr.nodeValue;
+
+ nodeType = importedAttr.nodeType;
+
+ assertEquals("documentimportnode04_nodeName","defaultAttr",nodeName);
+ assertEquals("documentimportnode04_nodeType",2,nodeType);
+ assertEquals("documentimportnode04_nodeValue","defaultVal",nodeValue);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentimportnode05.html b/dom/tests/mochitest/dom-level2-core/test_documentimportnode05.html
new file mode 100644
index 0000000000..dac651c0fa
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentimportnode05.html
@@ -0,0 +1,152 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode05</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentimportnode05'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ var docImportedRef = null;
+ if (typeof(this.docImported) != 'undefined') {
+ docImportedRef = this.docImported;
+ }
+ docsLoaded += preload(docImportedRef, "docImported", "staff");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentimportnode05';
+
+
+/**
+*
+ The importNode method imports a node from another document to this document.
+ The returned node has no parent; (parentNode is null). The source node is not
+ altered or removed from the original document but a new copy of the source node
+ is created.
+
+ Using the method importNode with deep=false, import a newly created attribute node,
+ into the another document.
+ Check the nodeName, nodeType and nodeValue namespaceURI of the imported node to
+ verify if it has been imported correctly.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function documentimportnode05() {
+ var success;
+ if(checkInitialization(builder, "documentimportnode05") != null) return;
+ var doc;
+ var docImported;
+ var attr;
+ var importedAttr;
+ var nodeName;
+ var nodeType;
+ var nodeValue;
+ var namespaceURI;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ var docImportedRef = null;
+ if (typeof(this.docImported) != 'undefined') {
+ docImportedRef = this.docImported;
+ }
+ docImported = load(docImportedRef, "docImported", "staff");
+ attr = doc.createAttributeNS("http://www.w3.org/DOM/Test","a_:b0");
+ importedAttr = docImported.importNode(attr,false);
+ nodeName = importedAttr.nodeName;
+
+ nodeValue = importedAttr.nodeValue;
+
+ nodeType = importedAttr.nodeType;
+
+ namespaceURI = importedAttr.namespaceURI;
+
+ assertEquals("documentimportnode05_nodeName","a_:b0",nodeName);
+ assertEquals("documentimportnode05_nodeType",2,nodeType);
+ assertEquals("documentimportnode05_nodeValue","",nodeValue);
+ assertEquals("documentimportnode05_namespaceURI","http://www.w3.org/DOM/Test",namespaceURI);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode05</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentimportnode06.html b/dom/tests/mochitest/dom-level2-core/test_documentimportnode06.html
new file mode 100644
index 0000000000..2eb79f2c93
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentimportnode06.html
@@ -0,0 +1,128 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode06</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentimportnode06'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentimportnode06';
+
+
+/**
+*
+ The importNode method imports a node from another document to this document.
+ A NOT_SUPPORTED_ERR is raised if the type of node being imported is
+ not supported
+
+ Using the method importNode with deep=false, try to import this document object to itself.
+ Since Document nodes cannot be imported, a NOT_SUPPORTED_ERR should be raised.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function documentimportnode06() {
+ var success;
+ if(checkInitialization(builder, "documentimportnode06") != null) return;
+ var doc;
+ var docImported;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ {
+ success = false;
+ try {
+ docImported = doc.importNode(doc,false);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 9);
+ }
+ assertTrue("throw_NOT_SUPPORTED_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode06</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentimportnode07.html b/dom/tests/mochitest/dom-level2-core/test_documentimportnode07.html
new file mode 100644
index 0000000000..18d31146dc
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentimportnode07.html
@@ -0,0 +1,135 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode07</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentimportnode07'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentimportnode07';
+
+
+/**
+*
+ The importNode method imports a node from another document to this document.
+ A NOT_SUPPORTED_ERR is raised if the type of node being imported is
+ not supported
+
+ Using the method importNode with deep=true, try to import this Document's
+ DocumentType object. Since DocumentType nodes cannot be imported, a
+ NOT_SUPPORTED_ERR should be raised.
+
+ The specification has changed! No exception should be thrown.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function documentimportnode07() {
+ var success;
+ if(checkInitialization(builder, "documentimportnode07") != null) return;
+ var doc;
+ var imported;
+ var docType;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ docType = doc.doctype;
+
+
+ {
+ success = false;
+ try {
+ imported = doc.importNode(docType,true);
+ success = true;
+ }
+ catch(ex) {
+ success = false;
+ }
+ assertTrue("no_throw_NOT_SUPPORTED_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode07</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentimportnode08.html b/dom/tests/mochitest/dom-level2-core/test_documentimportnode08.html
new file mode 100644
index 0000000000..062e18842c
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentimportnode08.html
@@ -0,0 +1,138 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode08</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentimportnode08'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentimportnode08';
+
+
+/**
+*
+ The importNode method imports a node from another document to this document.
+ A NOT_SUPPORTED_ERR is raised if the type of node being imported is
+ not supported
+
+ Using the method importNode with deep=true, try to import a newly created DOcumentType
+ node. Since DocumentType nodes cannot be imported, a NOT_SUPPORTED_ERR should be raised.
+
+ The specification has changed! No exception should be thrown.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=259
+*/
+function documentimportnode08() {
+ var success;
+ if(checkInitialization(builder, "documentimportnode08") != null) return;
+ var doc;
+ var imported;
+ var docType;
+ var domImpl;
+ var nullNS = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+docType = domImpl.createDocumentType("test:root",nullNS,nullNS);
+
+ {
+ success = false;
+ try {
+ imported = doc.importNode(docType,true);
+ success = true;
+ }
+ catch(ex) {
+ success = false;
+ }
+ assertTrue("no_throw_NOT_SUPPORTED_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode08</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentimportnode09.html b/dom/tests/mochitest/dom-level2-core/test_documentimportnode09.html
new file mode 100644
index 0000000000..d7c2d4eabb
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentimportnode09.html
@@ -0,0 +1,131 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode09</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentimportnode09'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentimportnode09';
+
+
+/**
+*
+ The importNode method imports a node from another document to this document.
+ The returned node has no parent; (parentNode is null). The source node is not
+ altered or removed from the original document but a new copy of the source node
+ is created.
+
+ Using the method importNode with deep=false, import a newly created DocumentFragment node
+ with the first address element from this Document appended to it into this document.
+ Since deep=false, an empty DocumentFragment should be returned
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function documentimportnode09() {
+ var success;
+ if(checkInitialization(builder, "documentimportnode09") != null) return;
+ var doc;
+ var docFragment;
+ var childList;
+ var success;
+ var addressNode;
+ var appendedChild;
+ var importedDocFrag;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ docFragment = doc.createDocumentFragment();
+ childList = doc.getElementsByTagNameNS("*","address");
+ addressNode = childList.item(0);
+ appendedChild = docFragment.appendChild(addressNode);
+ importedDocFrag = doc.importNode(docFragment,false);
+ success = importedDocFrag.hasChildNodes();
+ assertFalse("documentimportnode09",success);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode09</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentimportnode10.html b/dom/tests/mochitest/dom-level2-core/test_documentimportnode10.html
new file mode 100644
index 0000000000..85c2e975d6
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentimportnode10.html
@@ -0,0 +1,131 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode10</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentimportnode10'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentimportnode10';
+
+
+/**
+*
+ The importNode method imports a node from another document to this document.
+ The returned node has no parent; (parentNode is null). The source node is not
+ altered or removed from the original document but a new copy of the source node
+ is created.
+
+ Using the method importNode with deep=false, import a newly created DocumentFragment node
+ with the first address element from this Document appended to it into this document.
+ Since deep=true, a DocumentFragment with its child should be returned
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function documentimportnode10() {
+ var success;
+ if(checkInitialization(builder, "documentimportnode10") != null) return;
+ var doc;
+ var docFragment;
+ var childList;
+ var success;
+ var addressNode;
+ var appendedChild;
+ var importedDocFrag;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ docFragment = doc.createDocumentFragment();
+ childList = doc.getElementsByTagNameNS("*","address");
+ addressNode = childList.item(0);
+ appendedChild = docFragment.appendChild(addressNode);
+ importedDocFrag = doc.importNode(docFragment,true);
+ success = importedDocFrag.hasChildNodes();
+ assertTrue("documentimportnode10",success);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode10</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentimportnode11.html b/dom/tests/mochitest/dom-level2-core/test_documentimportnode11.html
new file mode 100644
index 0000000000..0a695fdde9
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentimportnode11.html
@@ -0,0 +1,133 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode11</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentimportnode11'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentimportnode11';
+
+
+/**
+*
+ The importNode method imports a node from another document to this document.
+ The returned node has no parent; (parentNode is null). The source node is not
+ altered or removed from the original document but a new copy of the source node
+ is created.
+
+ Using the method importNode with deep=false, import this Document's documentElement
+ node. Verify if the node has been imported correctly by its nodeName atttribute and
+ if the original document is not altered by checking if hasChildNodes returns false.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function documentimportnode11() {
+ var success;
+ if(checkInitialization(builder, "documentimportnode11") != null) return;
+ var doc;
+ var docElement;
+ var imported;
+ var success;
+ var nodeNameOrig;
+ var nodeNameImported;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ docElement = doc.documentElement;
+
+ imported = doc.importNode(docElement,false);
+ success = imported.hasChildNodes();
+ assertFalse("documentimportnode11",success);
+nodeNameImported = imported.nodeName;
+
+ nodeNameOrig = docElement.nodeName;
+
+ assertEquals("documentimportnode11_NodeName",nodeNameImported,nodeNameOrig);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode11</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentimportnode12.html b/dom/tests/mochitest/dom-level2-core/test_documentimportnode12.html
new file mode 100644
index 0000000000..af3bfecce9
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentimportnode12.html
@@ -0,0 +1,137 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode12</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentimportnode12'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentimportnode12';
+
+
+/**
+*
+ The importNode method imports a node from another document to this document.
+ The returned node has no parent; (parentNode is null). The source node is not
+ altered or removed from the original document but a new copy of the source node
+ is created.
+
+ Using the method importNode with deep=true, import the first address element node of this
+ Document. Verify if the node has been imported correctly by checking the length of the
+ this elements childNode list before and after the import.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function documentimportnode12() {
+ var success;
+ if(checkInitialization(builder, "documentimportnode12") != null) return;
+ var doc;
+ var childList;
+ var imported;
+ var addressElem;
+ var addressElemChildren;
+ var importedChildren;
+ var addressElemLen;
+ var importedLen;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ childList = doc.getElementsByTagNameNS("*","address");
+ addressElem = childList.item(0);
+ imported = doc.importNode(addressElem,true);
+ addressElemChildren = addressElem.childNodes;
+
+ importedChildren = imported.childNodes;
+
+ addressElemLen = addressElemChildren.length;
+
+ importedLen = importedChildren.length;
+
+ assertEquals("documentimportnode12",importedLen,addressElemLen);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode12</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentimportnode13.html b/dom/tests/mochitest/dom-level2-core/test_documentimportnode13.html
new file mode 100644
index 0000000000..15a0c6bee5
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentimportnode13.html
@@ -0,0 +1,131 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode13</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentimportnode13'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentimportnode13';
+
+
+/**
+*
+ The importNode method imports a node from another document to this document.
+ The returned node has no parent; (parentNode is null). The source node is not
+ altered or removed from the original document but a new copy of the source node
+ is created.
+
+ Using the method importNode with deep=false, import the first employee element node of this
+ Document. Verify if the node has been imported correctly by checking the length of the
+ this elements childNode list before and after the import.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function documentimportnode13() {
+ var success;
+ if(checkInitialization(builder, "documentimportnode13") != null) return;
+ var doc;
+ var childList;
+ var imported;
+ var importedList;
+ var employeeElem;
+ var importedLen;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ childList = doc.getElementsByTagNameNS("*","employee");
+ employeeElem = childList.item(0);
+ imported = doc.importNode(employeeElem,false);
+ importedList = imported.childNodes;
+
+ importedLen = importedList.length;
+
+ assertEquals("documentimportnode13",0,importedLen);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode13</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentimportnode14.html b/dom/tests/mochitest/dom-level2-core/test_documentimportnode14.html
new file mode 100644
index 0000000000..aeeb38ebdb
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentimportnode14.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode14</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentimportnode14'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentimportnode14';
+
+
+/**
+*
+ Using the method importNode with deep=true, import the fourth employee element node of this
+ Document. Verify if the node has been imported correctly by checking
+ if the default attribute present on this node has not been imported
+ and an explicit attribute has been imported.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=259
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=402
+*/
+function documentimportnode14() {
+ var success;
+ if(checkInitialization(builder, "documentimportnode14") != null) return;
+ var doc;
+ var newDoc;
+ var domImpl;
+ var nullDocType = null;
+
+ var childList;
+ var imported;
+ var employeeElem;
+ var attrNode;
+ var attrValue;
+ var nullNS = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ childList = doc.getElementsByTagNameNS("*","employee");
+ employeeElem = childList.item(3);
+ domImpl = getImplementation();
+newDoc = domImpl.createDocument(nullNS,"staff",nullDocType);
+ imported = newDoc.importNode(employeeElem,true);
+ attrNode = imported.getAttributeNodeNS(nullNS,"defaultAttr");
+ assertNull("defaultAttrNotImported",attrNode);
+ attrValue = imported.getAttributeNS("http://www.w3.org/2000/xmlns/","emp");
+ assertEquals("explicitAttrImported","http://www.nist.gov",attrValue);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode14</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentimportnode15.html b/dom/tests/mochitest/dom-level2-core/test_documentimportnode15.html
new file mode 100644
index 0000000000..4b9d08e33e
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentimportnode15.html
@@ -0,0 +1,139 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode15</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentimportnode15'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ var docImpRef = null;
+ if (typeof(this.docImp) != 'undefined') {
+ docImpRef = this.docImp;
+ }
+ docsLoaded += preload(docImpRef, "docImp", "staffNS");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentimportnode15';
+
+
+/**
+*
+ The importNode method imports a node from another document to this document.
+ The returned node has no parent; (parentNode is null). The source node is not
+ altered or removed from the original document but a new copy of the source node
+ is created.
+
+ Using the method importNode with deep=true, import a newly created Text node for this
+ Document. Verify if the node has been imported correctly by checking the value of the
+ imported text node.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function documentimportnode15() {
+ var success;
+ if(checkInitialization(builder, "documentimportnode15") != null) return;
+ var doc;
+ var docImp;
+ var textImport;
+ var textToImport;
+ var nodeValue;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ var docImpRef = null;
+ if (typeof(this.docImp) != 'undefined') {
+ docImpRef = this.docImp;
+ }
+ docImp = load(docImpRef, "docImp", "staffNS");
+ textToImport = doc.createTextNode("Document.importNode test for a TEXT_NODE");
+ textImport = doc.importNode(textToImport,true);
+ nodeValue = textImport.nodeValue;
+
+ assertEquals("documentimportnode15","Document.importNode test for a TEXT_NODE",nodeValue);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode15</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentimportnode17.html b/dom/tests/mochitest/dom-level2-core/test_documentimportnode17.html
new file mode 100644
index 0000000000..03660bc8a2
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentimportnode17.html
@@ -0,0 +1,139 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode17</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentimportnode17'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ var docImpRef = null;
+ if (typeof(this.docImp) != 'undefined') {
+ docImpRef = this.docImp;
+ }
+ docsLoaded += preload(docImpRef, "docImp", "staffNS");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentimportnode17';
+
+
+/**
+*
+ The importNode method imports a node from another document to this document.
+ The returned node has no parent; (parentNode is null). The source node is not
+ altered or removed from the original document but a new copy of the source node
+ is created.
+
+ Using the method importNode with deep=true, import a newly created Comment node for this
+ Document. Verify if the node has been imported correctly by checking the value of the
+ imported Comment node.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function documentimportnode17() {
+ var success;
+ if(checkInitialization(builder, "documentimportnode17") != null) return;
+ var doc;
+ var docImp;
+ var commentImport;
+ var commentToImport;
+ var nodeValue;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ var docImpRef = null;
+ if (typeof(this.docImp) != 'undefined') {
+ docImpRef = this.docImp;
+ }
+ docImp = load(docImpRef, "docImp", "staffNS");
+ commentToImport = doc.createComment("Document.importNode test for a COMMENT_NODE");
+ commentImport = doc.importNode(commentToImport,true);
+ nodeValue = commentImport.nodeValue;
+
+ assertEquals("documentimportnode17","Document.importNode test for a COMMENT_NODE",nodeValue);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode17</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentimportnode18.html b/dom/tests/mochitest/dom-level2-core/test_documentimportnode18.html
new file mode 100644
index 0000000000..86d7198884
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentimportnode18.html
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode18</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentimportnode18'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ var docImpRef = null;
+ if (typeof(this.docImp) != 'undefined') {
+ docImpRef = this.docImp;
+ }
+ docsLoaded += preload(docImpRef, "docImp", "staffNS");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentimportnode18';
+
+
+/**
+*
+ The importNode method imports a node from another document to this document.
+ The returned node has no parent; (parentNode is null). The source node is not
+ altered or removed from the original document but a new copy of the source node
+ is created.
+
+ Using the method importNode with deep=true, import a newly created PI node for this
+ Document. Verify if the node has been imported correctly by checking the PITarget and
+ PIData values of the imported PI node.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function documentimportnode18() {
+ var success;
+ if(checkInitialization(builder, "documentimportnode18") != null) return;
+ var doc;
+ var docImp;
+ var piImport;
+ var piToImport;
+ var piData;
+ var piTarget;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ var docImpRef = null;
+ if (typeof(this.docImp) != 'undefined') {
+ docImpRef = this.docImp;
+ }
+ docImp = load(docImpRef, "docImp", "staffNS");
+ piToImport = doc.createProcessingInstruction("Target","Data");
+ piImport = doc.importNode(piToImport,false);
+ piTarget = piImport.target;
+
+ piData = piImport.data;
+
+ assertEquals("documentimportnode18_Target","Target",piTarget);
+ assertEquals("documentimportnode18_Data","Data",piData);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode18</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentimportnode19.html b/dom/tests/mochitest/dom-level2-core/test_documentimportnode19.html
new file mode 100644
index 0000000000..95daf1261b
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentimportnode19.html
@@ -0,0 +1,175 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode19</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentimportnode19'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentimportnode19';
+
+
+/**
+*
+ The importNode method imports a node from another document to this document.
+ The returned node has no parent; (parentNode is null). The source node is not
+ altered or removed from the original document but a new copy of the source node
+ is created.
+
+ Using the method importNode with deep=true/false, import a entity nodes ent2 and ent6
+ from this document to a new document object. Verify if the nodes have been
+ imported correctly by checking the nodeNames of the imported nodes and public and system ids.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function documentimportnode19() {
+ var success;
+ if(checkInitialization(builder, "documentimportnode19") != null) return;
+ var doc;
+ var docTypeNull = null;
+
+ var docImp;
+ var domImpl;
+ var docType;
+ var nodeMap;
+ var entity2;
+ var entity6;
+ var entityImp2;
+ var entityImp6;
+ var nodeName;
+ var systemId;
+ var notationName;
+ var nodeNameImp;
+ var systemIdImp;
+ var notationNameImp;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+docType = doc.doctype;
+
+ docImp = domImpl.createDocument("http://www.w3.org/DOM/Test","a:b",docTypeNull);
+ nodeMap = docType.entities;
+
+ assertNotNull("entitiesNotNull",nodeMap);
+entity2 = nodeMap.getNamedItem("ent2");
+ entity6 = nodeMap.getNamedItem("ent6");
+ entityImp2 = docImp.importNode(entity2,false);
+ entityImp6 = docImp.importNode(entity6,true);
+ nodeName = entity2.nodeName;
+
+ nodeNameImp = entityImp2.nodeName;
+
+ assertEquals("documentimportnode19_Ent2NodeName",nodeName,nodeNameImp);
+ nodeName = entity6.nodeName;
+
+ nodeNameImp = entityImp6.nodeName;
+
+ assertEquals("documentimportnode19_Ent6NodeName",nodeName,nodeNameImp);
+ systemId = entity2.systemId;
+
+ systemIdImp = entityImp2.systemId;
+
+ assertEquals("documentimportnode19_Ent2SystemId",systemId,systemIdImp);
+ systemId = entity6.systemId;
+
+ systemIdImp = entityImp6.systemId;
+
+ assertEquals("documentimportnode19_Ent6SystemId",systemId,systemIdImp);
+ notationName = entity2.notationName;
+
+ notationNameImp = entityImp2.notationName;
+
+ assertEquals("documentimportnode19_Ent2NotationName",notationName,notationNameImp);
+ notationName = entity6.notationName;
+
+ notationNameImp = entityImp6.notationName;
+
+ assertEquals("documentimportnode19_Ent6NotationName",notationName,notationNameImp);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode19</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentimportnode20.html b/dom/tests/mochitest/dom-level2-core/test_documentimportnode20.html
new file mode 100644
index 0000000000..0a25a343b6
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentimportnode20.html
@@ -0,0 +1,168 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode20</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentimportnode20'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+ setImplementationAttribute("expandEntityReferences", false);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentimportnode20';
+
+
+/**
+*
+ The importNode method imports a node from another document to this document.
+ The returned node has no parent; (parentNode is null). The source node is not
+ altered or removed from the original document but a new copy of the source node
+ is created.
+
+ Using the method importNode with deep=true, import a entity node ent4
+ from this document to a new document object. The replacement text of this entity is an element
+ node, a cdata node and a pi. Verify if the nodes have been
+ imported correctly by checking the nodeNames of the imported element node, the data for the
+ cdata nodes and the PItarget and PIData for the pi nodes.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function documentimportnode20() {
+ var success;
+ if(checkInitialization(builder, "documentimportnode20") != null) return;
+ var doc;
+ var docImp;
+ var domImpl;
+ var docType;
+ var docTypeNull = null;
+
+ var nodeMap;
+ var entity4;
+ var entityImp4;
+ var element;
+ var cdata;
+ var pi;
+ var childList;
+ var elemchildList;
+ var ent4Name;
+ var ent4ImpName;
+ var cdataVal;
+ var piTargetVal;
+ var piDataVal;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+docType = doc.doctype;
+
+ docImp = domImpl.createDocument("http://www.w3.org/DOM/Test","a:b",docTypeNull);
+ nodeMap = docType.entities;
+
+ entity4 = nodeMap.getNamedItem("ent4");
+ entityImp4 = docImp.importNode(entity4,true);
+ childList = entityImp4.childNodes;
+
+ element = childList.item(0);
+ elemchildList = element.childNodes;
+
+ cdata = elemchildList.item(0);
+ pi = childList.item(1);
+ ent4Name = entity4.nodeName;
+
+ ent4ImpName = entityImp4.nodeName;
+
+ cdataVal = cdata.data;
+
+ piTargetVal = pi.target;
+
+ piDataVal = pi.data;
+
+ assertEquals("documentimportnode20_Ent4NodeName",ent4Name,ent4ImpName);
+ assertEquals("documentimportnode20_Cdata","Element data",cdataVal);
+ assertEquals("documentimportnode20_PITarget","PItarget",piTargetVal);
+ assertEquals("documentimportnode20_PIData","PIdata",piDataVal);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode20</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentimportnode21.html b/dom/tests/mochitest/dom-level2-core/test_documentimportnode21.html
new file mode 100644
index 0000000000..c117575f24
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentimportnode21.html
@@ -0,0 +1,178 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode21</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentimportnode21'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+ setImplementationAttribute("expandEntityReferences", false);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentimportnode21';
+
+
+/**
+*
+ The importNode method imports a node from another document to this document.
+ The returned node has no parent; (parentNode is null). The source node is not
+ altered or removed from the original document but a new copy of the source node
+ is created.
+
+ Using the method importNode with deep=true, retreive the entity refs present in the
+ second element node whose tagName is address and import these nodes into another document.
+ Verify if the nodes have been imported correctly by checking the nodeNames of the
+ imported nodes, since they are imported into a new document which doesnot have thes defined,
+ the imported nodes should not have any children.
+ Now import the entityRef nodes into the same document and verify if the nodes have been
+ imported correctly by checking the nodeNames of the imported nodes, and by checking the
+ value of the replacement text of the imported nodes.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function documentimportnode21() {
+ var success;
+ if(checkInitialization(builder, "documentimportnode21") != null) return;
+ var doc;
+ var docTypeNull = null;
+
+ var docImp;
+ var domImpl;
+ var addressList;
+ var addressChildList;
+ var element;
+ var entRef2;
+ var entRefImp2;
+ var entRef3;
+ var entRefImp3;
+ var nodeName2;
+ var nodeName3;
+ var nodeNameImp2;
+ var nodeNameImp3;
+ var nodes;
+ var nodeImp3;
+ var nodeImp2;
+ var nodeValueImp2;
+ var nodeValueImp3;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+docImp = domImpl.createDocument("http://www.w3.org/DOM/Test","a:b",docTypeNull);
+ addressList = doc.getElementsByTagName("address");
+ element = addressList.item(1);
+ addressChildList = element.childNodes;
+
+ entRef2 = addressChildList.item(0);
+ entRef3 = addressChildList.item(2);
+ entRefImp2 = docImp.importNode(entRef2,true);
+ entRefImp3 = docImp.importNode(entRef3,false);
+ nodeName2 = entRef2.nodeName;
+
+ nodeName3 = entRef3.nodeName;
+
+ nodeNameImp2 = entRefImp2.nodeName;
+
+ nodeNameImp3 = entRefImp3.nodeName;
+
+ assertEquals("documentimportnode21_Ent2NodeName",nodeName2,nodeNameImp2);
+ assertEquals("documentimportnode21_Ent3NodeName",nodeName3,nodeNameImp3);
+ entRefImp2 = doc.importNode(entRef2,true);
+ entRefImp3 = doc.importNode(entRef3,false);
+ nodes = entRefImp2.childNodes;
+
+ nodeImp2 = nodes.item(0);
+ nodeValueImp2 = nodeImp2.nodeValue;
+
+ nodes = entRefImp3.childNodes;
+
+ nodeImp3 = nodes.item(0);
+ nodeValueImp3 = nodeImp3.nodeValue;
+
+ assertEquals("documentimportnode21_Ent2NodeValue","1900 Dallas Road",nodeValueImp2);
+ assertEquals("documentimportnode21_Ent3Nodevalue","Texas",nodeValueImp3);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode21</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documentimportnode22.html b/dom/tests/mochitest/dom-level2-core/test_documentimportnode22.html
new file mode 100644
index 0000000000..3e5a1e9e18
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documentimportnode22.html
@@ -0,0 +1,181 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode22</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documentimportnode22'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documentimportnode22';
+
+
+/**
+*
+ The importNode method imports a node from another document to this document.
+ The returned node has no parent; (parentNode is null). The source node is not
+ altered or removed from the original document but a new copy of the source node
+ is created.
+
+ Using the method importNode with deep=true/false, import two notaiton nodes into the
+ same and different documnet objects. In each case check if valid public and systemids
+ are returned if any and if none, check if a null value was returned.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function documentimportnode22() {
+ var success;
+ if(checkInitialization(builder, "documentimportnode22") != null) return;
+ var doc;
+ var docTypeNull = null;
+
+ var docImp;
+ var domImpl;
+ var docType;
+ var nodeMap;
+ var notation1;
+ var notation2;
+ var notationImp1;
+ var notationImp2;
+ var notationImpNew1;
+ var notationImpNew2;
+ var publicId1;
+ var publicId1Imp;
+ var publicId1NewImp;
+ var publicId2Imp;
+ var publicId2NewImp;
+ var systemId1Imp;
+ var systemId1NewImp;
+ var systemId2;
+ var systemId2Imp;
+ var systemId2NewImp;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+docType = doc.doctype;
+
+ docImp = domImpl.createDocument("http://www.w3.org/DOM/Test","a:b",docTypeNull);
+ nodeMap = docType.notations;
+
+ assertNotNull("notationsNotNull",nodeMap);
+notation1 = nodeMap.getNamedItem("notation1");
+ notation2 = nodeMap.getNamedItem("notation2");
+ notationImp1 = doc.importNode(notation1,true);
+ notationImp2 = doc.importNode(notation2,false);
+ notationImpNew1 = docImp.importNode(notation1,false);
+ notationImpNew2 = docImp.importNode(notation2,true);
+ publicId1 = notation1.publicId;
+
+ publicId1Imp = notation1.publicId;
+
+ publicId1NewImp = notation1.publicId;
+
+ systemId1Imp = notation1.systemId;
+
+ systemId1NewImp = notation1.systemId;
+
+ publicId2Imp = notation2.publicId;
+
+ publicId2NewImp = notation2.publicId;
+
+ systemId2 = notation2.systemId;
+
+ systemId2Imp = notation2.systemId;
+
+ systemId2NewImp = notation2.systemId;
+
+ assertEquals("documentimportnode22_N1PID",publicId1,publicId1Imp);
+ assertEquals("documentimportnode22_N1NPID",publicId1,publicId1NewImp);
+ assertNull("documentimportnode22_N1SID",systemId1Imp);
+ assertNull("documentimportnode22_N1NSID",systemId1NewImp);
+ assertEquals("documentimportnode22_N2SID",systemId2,systemId2Imp);
+ assertEquals("documentimportnode22_N2NSID",systemId2,systemId2NewImp);
+ assertNull("documentimportnode22_N2PID",publicId2Imp);
+ assertNull("documentimportnode22_N2NPID",publicId2Imp);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documentimportnode22</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documenttypepublicid01.html b/dom/tests/mochitest/dom-level2-core/test_documenttypepublicid01.html
new file mode 100644
index 0000000000..e04a853256
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documenttypepublicid01.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documenttypepublicid01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documenttypepublicid01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documenttypepublicid01';
+
+
+/**
+*
+ The method getInternalSubset() returns the public identifier of the external subset.
+
+ Create a new DocumentType node with the value "PUB" for its publicId.
+ Check the value of the publicId attribute using getPublicId().
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-Core-DocType-publicId
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=259
+*/
+function documenttypepublicid01() {
+ var success;
+ if(checkInitialization(builder, "documenttypepublicid01") != null) return;
+ var doc;
+ var docType;
+ var domImpl;
+ var publicId;
+ var nullNS = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+docType = domImpl.createDocumentType("l2:root","PUB",nullNS);
+ publicId = docType.publicId;
+
+ assertEquals("documenttypepublicid01","PUB",publicId);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documenttypepublicid01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_documenttypesystemid01.html b/dom/tests/mochitest/dom-level2-core/test_documenttypesystemid01.html
new file mode 100644
index 0000000000..973b6a9992
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_documenttypesystemid01.html
@@ -0,0 +1,124 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/documenttypesystemid01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['documenttypesystemid01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'documenttypesystemid01';
+
+
+/**
+*
+ The method getInternalSubset() returns the public identifier of the external subset.
+
+ Create a new DocumentType node with the value "SYS" for its systemId and PUB for
+ its publicId. Check the value of the systemId and pbulicId attributes.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-Core-DocType-systemId
+*/
+function documenttypesystemid01() {
+ var success;
+ if(checkInitialization(builder, "documenttypesystemid01") != null) return;
+ var doc;
+ var docType;
+ var domImpl;
+ var publicId;
+ var systemId;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+docType = domImpl.createDocumentType("l2:root","PUB","SYS");
+ publicId = docType.publicId;
+
+ systemId = docType.systemId;
+
+ assertEquals("documenttypepublicid01","PUB",publicId);
+ assertEquals("documenttypesystemid01","SYS",systemId);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/documenttypesystemid01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocument03.html b/dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocument03.html
new file mode 100644
index 0000000000..eaf5d4832e
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocument03.html
@@ -0,0 +1,140 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/domimplementationcreatedocument03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['domimplementationcreatedocument03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'domimplementationcreatedocument03';
+
+
+/**
+*
+ The createDocument method with valid arguments, should create a DOM Document of
+ the specified type.
+
+ Call the createDocument on this DOMImplementation with
+ createDocument ("http://www.w3.org/DOMTest/L2",see the array below for valid QNames,null).
+ Check if the returned Document object is is empty with no Document Element.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Level-2-Core-DOM-createDocument
+*/
+function domimplementationcreatedocument03() {
+ var success;
+ if(checkInitialization(builder, "domimplementationcreatedocument03") != null) return;
+ var doc;
+ var domImpl;
+ var newDoc;
+ var docType = null;
+
+ var namespaceURI = "http://www.w3.org/DOMTest/L2";
+ var qualifiedName;
+ qualifiedNames = new Array();
+ qualifiedNames[0] = "_:_";
+ qualifiedNames[1] = "_:h0";
+ qualifiedNames[2] = "_:test";
+ qualifiedNames[3] = "l_:_";
+ qualifiedNames[4] = "ns:_0";
+ qualifiedNames[5] = "ns:a0";
+ qualifiedNames[6] = "ns0:test";
+ qualifiedNames[7] = "a.b:c";
+ qualifiedNames[8] = "a-b:c";
+ qualifiedNames[9] = "a-b:c";
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+for(var indexN65643 = 0;indexN65643 < qualifiedNames.length; indexN65643++) {
+ qualifiedName = qualifiedNames[indexN65643];
+ newDoc = domImpl.createDocument(namespaceURI,qualifiedName,docType);
+ assertNotNull("domimplementationcreatedocument03",newDoc);
+
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/domimplementationcreatedocument03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocument04.html b/dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocument04.html
new file mode 100644
index 0000000000..f141c3ee55
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocument04.html
@@ -0,0 +1,134 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/domimplementationcreatedocument04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['domimplementationcreatedocument04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'domimplementationcreatedocument04';
+
+
+/**
+*
+ The createDocument method should throw a NAMESPACE_ERR if the qualifiedName has
+ a prefix and the namespaceURI is null.
+
+ Call the createDocument on this DOMImplementation with null namespaceURI and a
+ qualifiedName that has a namespace prefix using this DOMImplementation.
+ Check if the NAMESPACE_ERR is thrown.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Level-2-Core-DOM-createDocument
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Level-2-Core-DOM-createDocument
+*/
+function domimplementationcreatedocument04() {
+ var success;
+ if(checkInitialization(builder, "domimplementationcreatedocument04") != null) return;
+ var doc;
+ var domImpl;
+ var newDoc;
+ var namespaceURI = null;
+
+ var qualifiedName = "dom:root";
+ var docType = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+
+ {
+ success = false;
+ try {
+ newDoc = domImpl.createDocument(namespaceURI,qualifiedName,docType);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 14);
+ }
+ assertTrue("domimplementationcreatedocument04",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/domimplementationcreatedocument04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocument05.html b/dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocument05.html
new file mode 100644
index 0000000000..9fe0a35e79
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocument05.html
@@ -0,0 +1,133 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/domimplementationcreatedocument05</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['domimplementationcreatedocument05'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'domimplementationcreatedocument05';
+
+
+/**
+*
+ The createDocument method should throw a NAMESPACE_ERR if the qualifiedName has
+ a prefix that is xml and the namespaceURI is different from
+ http://www..w3.org/XML/1998/namespace.
+
+ Call the createDocument on this DOMImplementation with namespaceURI that is
+ http://www.w3.org/xml/1998/namespace and a qualifiedName that has the prefix xml
+ Check if the NAMESPACE_ERR is thrown.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Level-2-Core-DOM-createDocument
+*/
+function domimplementationcreatedocument05() {
+ var success;
+ if(checkInitialization(builder, "domimplementationcreatedocument05") != null) return;
+ var doc;
+ var domImpl;
+ var newDoc;
+ var namespaceURI = "http://www.w3.org/xml/1998/namespace";
+ var qualifiedName = "xml:root";
+ var docType = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+
+ {
+ success = false;
+ try {
+ newDoc = domImpl.createDocument(namespaceURI,qualifiedName,docType);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 14);
+ }
+ assertTrue("domimplementationcreatedocument05",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/domimplementationcreatedocument05</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocument07.html b/dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocument07.html
new file mode 100644
index 0000000000..46c75fc363
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocument07.html
@@ -0,0 +1,130 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/domimplementationcreatedocument07</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['domimplementationcreatedocument07'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'domimplementationcreatedocument07';
+
+
+/**
+*
+ The createDocument method should raise a NAMESPACE_ERR if the qualifiedName is malformed
+
+ Invoke the createDocument method on this DOMImplementation object with null values
+ for namespaceURI and docType and a malformed qualifiedName.
+ The NAMESPACE_ERR should be raised.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Level-2-Core-DOM-createDocument
+*/
+function domimplementationcreatedocument07() {
+ var success;
+ if(checkInitialization(builder, "domimplementationcreatedocument07") != null) return;
+ var doc;
+ var domImpl;
+ var newDoc;
+ var namespaceURI = "http://www.w3.org/DOMTest/level2";
+ var docType = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+
+ {
+ success = false;
+ try {
+ newDoc = domImpl.createDocument(namespaceURI,":",docType);
+ }
+ catch(ex) {
+ success = ex.code === DOMException.INVALID_CHARACTER_ERR;
+ }
+ assertTrue("domimplementationcreatedocument07",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/domimplementationcreatedocument07</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocumenttype01.html b/dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocumenttype01.html
new file mode 100644
index 0000000000..35d1d7d40f
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocumenttype01.html
@@ -0,0 +1,144 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/domimplementationcreatedocumenttype01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['domimplementationcreatedocumenttype01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'domimplementationcreatedocumenttype01';
+
+
+/**
+*
+ The method createDocumentType with valid values for qualifiedName, publicId and
+ systemId should create an empty DocumentType node.
+
+ Invoke createDocument on this DOMImplementation with a valid qualifiedName and different
+ publicIds and systemIds. Check if the the DocumentType node was created with its
+ ownerDocument attribute set to null.
+
+ The specification has changed! ownerDocument should not be null.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Level-2-Core-DOM-createDocument
+*/
+function domimplementationcreatedocumenttype01() {
+ var success;
+ if(checkInitialization(builder, "domimplementationcreatedocumenttype01") != null) return;
+ var doc;
+ var domImpl;
+ var newDocType;
+ var ownerDocument;
+ var qualifiedName = "test:root";
+ var publicId;
+ var systemId;
+ publicIds = new Array();
+ publicIds[0] = "1234";
+ publicIds[1] = "test";
+
+ systemIds = new Array();
+ systemIds[0] = "";
+ systemIds[1] = "test";
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+for(var indexN65629 = 0;indexN65629 < publicIds.length; indexN65629++) {
+ publicId = publicIds[indexN65629];
+ for(var indexN65633 = 0;indexN65633 < systemIds.length; indexN65633++) {
+ systemId = systemIds[indexN65633];
+ newDocType = domImpl.createDocumentType(qualifiedName,publicId,systemId);
+ assertNotNull("domimplementationcreatedocumenttype01_newDocType",newDocType);
+ownerDocument = newDocType.ownerDocument;
+
+ assertNotNull("domimplementationcreatedocumenttype01_ownerDocument",ownerDocument);
+
+ }
+
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/domimplementationcreatedocumenttype01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocumenttype02.html b/dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocumenttype02.html
new file mode 100644
index 0000000000..8ddd1126b8
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocumenttype02.html
@@ -0,0 +1,148 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/domimplementationcreatedocumenttype02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['domimplementationcreatedocumenttype02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'domimplementationcreatedocumenttype02';
+
+
+/**
+*
+ The method createDocumentType with valid values for qualifiedName, publicId and
+ systemId should create an empty DocumentType node.
+
+ Invoke createDocument on this DOMImplementation with a different valid qualifiedNames
+ and a valid publicId and systemId. Check if the the DocumentType node was created
+ with its ownerDocument attribute set to null.
+
+ The specification has changed! ownerDocument should not be null.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Level-2-Core-DOM-createDocType
+*/
+function domimplementationcreatedocumenttype02() {
+ var success;
+ if(checkInitialization(builder, "domimplementationcreatedocumenttype02") != null) return;
+ var doc;
+ var domImpl;
+ var newDocType;
+ var ownerDocument;
+ var publicId = "http://www.w3.org/DOM/Test/dom2.dtd";
+ var systemId = "dom2.dtd";
+ var qualifiedName;
+ qualifiedNames = new Array();
+ qualifiedNames[0] = "_:_";
+ qualifiedNames[1] = "_:h0";
+ qualifiedNames[2] = "_:test";
+ qualifiedNames[3] = "_:_.";
+ qualifiedNames[4] = "_:a-";
+ qualifiedNames[5] = "l_:_";
+ qualifiedNames[6] = "ns:_0";
+ qualifiedNames[7] = "ns:a0";
+ qualifiedNames[8] = "ns0:test";
+ qualifiedNames[9] = "ns:EEE.";
+ qualifiedNames[10] = "ns:_-";
+ qualifiedNames[11] = "a.b:c";
+ qualifiedNames[12] = "a-b:c.j";
+ qualifiedNames[13] = "a-b:c";
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+for(var indexN65655 = 0;indexN65655 < qualifiedNames.length; indexN65655++) {
+ qualifiedName = qualifiedNames[indexN65655];
+ newDocType = domImpl.createDocumentType(qualifiedName,publicId,systemId);
+ assertNotNull("domimplementationcreatedocumenttype02_newDocType",newDocType);
+ownerDocument = newDocType.ownerDocument;
+
+ assertNotNull("domimplementationcreatedocumenttype02_ownerDocument",ownerDocument);
+
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/domimplementationcreatedocumenttype02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocumenttype04.html b/dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocumenttype04.html
new file mode 100644
index 0000000000..6a5017d19a
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_domimplementationcreatedocumenttype04.html
@@ -0,0 +1,150 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/domimplementationcreatedocumenttype04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['domimplementationcreatedocumenttype04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'domimplementationcreatedocumenttype04';
+
+
+/**
+*
+ The method createDocumentType should raise a INVALID_CHARACTER_ERR if the qualifiedName
+ contains an illegal characters.
+
+ Invoke createDocument on this DOMImplementation with qualifiedNames having illegal characters.
+ Check if an INVALID_CHARACTER_ERR is raised in each case.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Level-2-Core-DOM-createDocType
+*/
+function domimplementationcreatedocumenttype04() {
+ var success;
+ if(checkInitialization(builder, "domimplementationcreatedocumenttype04") != null) return;
+ var doc;
+ var domImpl;
+ var newDocType;
+ var publicId = "http://www.w3.org/DOM/Test/dom2.dtd";
+ var systemId = "dom2.dtd";
+ var qualifiedName;
+ qualifiedNames = new Array();
+ qualifiedNames[0] = "{";
+ qualifiedNames[1] = "}";
+ qualifiedNames[2] = "'";
+ qualifiedNames[3] = "~";
+ qualifiedNames[4] = "`";
+ qualifiedNames[5] = "@";
+ qualifiedNames[6] = "#";
+ qualifiedNames[7] = "$";
+ qualifiedNames[8] = "%";
+ qualifiedNames[9] = "^";
+ qualifiedNames[10] = "&";
+ qualifiedNames[11] = "*";
+ qualifiedNames[12] = "(";
+ qualifiedNames[13] = ")";
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+for(var indexN65651 = 0;indexN65651 < qualifiedNames.length; indexN65651++) {
+ qualifiedName = qualifiedNames[indexN65651];
+
+ {
+ success = false;
+ try {
+ newDocType = domImpl.createDocumentType(qualifiedName,publicId,systemId);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 5);
+ }
+ assertTrue("domimplementationcreatedocumenttype04",success);
+ }
+
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/domimplementationcreatedocumenttype04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_domimplementationfeaturecore.html b/dom/tests/mochitest/dom-level2-core/test_domimplementationfeaturecore.html
new file mode 100644
index 0000000000..828c2dd591
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_domimplementationfeaturecore.html
@@ -0,0 +1,134 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/domimplementationfeaturecore</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['domimplementationfeaturecore'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'domimplementationfeaturecore';
+
+
+/**
+*
+
+ The "feature" parameter in the
+
+ "hasFeature(feature,version)" method is the package name
+
+ of the feature. Legal values are XML and HTML and CORE.
+
+ (Test for feature core, lower case)
+
+
+
+ Retrieve the entire DOM document and invoke its
+
+ "getImplementation()" method. This should create a
+
+ DOMImplementation object whose "hasFeature(feature,
+
+ version)" method is invoked with feature equal to "core".
+
+ The method should return a boolean "true".
+
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-5CED94D7
+*/
+function domimplementationfeaturecore() {
+ var success;
+ if(checkInitialization(builder, "domimplementationfeaturecore") != null) return;
+ var doc;
+ var domImpl;
+ var state;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ domImpl = doc.implementation;
+state = domImpl.hasFeature("core","2.0");
+assertTrue("domimplementationFeaturecoreAssert",state);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/domimplementationfeaturecore</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_domimplementationfeaturexmlversion2.html b/dom/tests/mochitest/dom-level2-core/test_domimplementationfeaturexmlversion2.html
new file mode 100644
index 0000000000..0893a53964
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_domimplementationfeaturexmlversion2.html
@@ -0,0 +1,134 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/domimplementationfeaturexmlversion2</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['domimplementationfeaturexmlversion2'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'domimplementationfeaturexmlversion2';
+
+
+/**
+*
+
+ The "feature" parameter in the
+
+ "hasFeature(feature,version)" method is the package name
+
+ of the feature. Legal values are XML and HTML.
+
+ (Test for feature "xml" and version "2.0")
+
+
+
+ Retrieve the entire DOM document and invoke its
+
+ "getImplementation()" method. This should create a
+
+ DOMImplementation object whose "hasFeature(feature,
+
+ version)" method is invoked with "feature" equal to "xml".
+
+ The method should return a boolean "true".
+
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-5CED94D7
+*/
+function domimplementationfeaturexmlversion2() {
+ var success;
+ if(checkInitialization(builder, "domimplementationfeaturexmlversion2") != null) return;
+ var doc;
+ var domImpl;
+ var state;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ domImpl = doc.implementation;
+state = domImpl.hasFeature("xml","2.0");
+assertTrue("domimplementationFeaturexmlVersion2Assert",state);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/domimplementationfeaturexmlversion2</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_domimplementationhasfeature01.html b/dom/tests/mochitest/dom-level2-core/test_domimplementationhasfeature01.html
new file mode 100644
index 0000000000..fc18c9f2bd
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_domimplementationhasfeature01.html
@@ -0,0 +1,148 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/domimplementationhasfeature01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['domimplementationhasfeature01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'domimplementationhasfeature01';
+
+
+/**
+*
+ The method "hasFeature(feature,version)" tests if the DOMImplementation implements
+ a specific feature and if so returns true.
+
+ Call the hasFeature method on this DOMImplementation with a combination of features
+ versions as below. Valid feature names are case insensitive and versions "2.0",
+ "1.0" and if the version is not specified, supporting any version of the feature
+ should return true. Check if the value returned value was true.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-5CED94D7
+*/
+function domimplementationhasfeature01() {
+ var success;
+ if(checkInitialization(builder, "domimplementationhasfeature01") != null) return;
+ var doc;
+ var domImpl;
+ var version = "";
+ var version1 = "1.0";
+ var version2 = "2.0";
+ var featureCore;
+ var featureXML;
+ var success;
+ featuresXML = new Array();
+ featuresXML[0] = "XML";
+ featuresXML[1] = "xmL";
+
+ featuresCore = new Array();
+ featuresCore[0] = "Core";
+ featuresCore[1] = "CORE";
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+for(var indexN65635 = 0;indexN65635 < featuresXML.length; indexN65635++) {
+ featureXML = featuresXML[indexN65635];
+ success = domImpl.hasFeature(featureXML,version);
+assertTrue("domimplementationhasfeature01_XML_1",success);
+success = domImpl.hasFeature(featureXML,version1);
+assertTrue("domimplementationhasfeature01_XML_2",success);
+
+ }
+ for(var indexN65660 = 0;indexN65660 < featuresCore.length; indexN65660++) {
+ featureCore = featuresCore[indexN65660];
+ success = domImpl.hasFeature(featureCore,version);
+assertTrue("domimplementationhasfeature01_Core_1",success);
+success = domImpl.hasFeature(featureCore,version1);
+success = domImpl.hasFeature(featureCore,version2);
+assertTrue("domimplementationhasfeature01_Core_3",success);
+
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/domimplementationhasfeature01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementgetattributenodens01.html b/dom/tests/mochitest/dom-level2-core/test_elementgetattributenodens01.html
new file mode 100644
index 0000000000..6b3281fcd2
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementgetattributenodens01.html
@@ -0,0 +1,146 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementgetattributenodens01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementgetattributenodens01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementgetattributenodens01';
+
+
+/**
+*
+ The method getAttributeNodeNS retrieves an Attr node by local name and namespace URI.
+ Create a new element node and add 2 new attribute nodes to it that have the same
+ local name but different namespaceURIs and prefixes.
+ Retrieve an attribute using namespace and localname and check its value, name and
+ namespaceURI.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElGetAtNodeNS
+*/
+function elementgetattributenodens01() {
+ var success;
+ if(checkInitialization(builder, "elementgetattributenodens01") != null) return;
+ var doc;
+ var element;
+ var attribute1;
+ var attribute2;
+ var newAttribute1;
+ var newAttribute2;
+ var attribute;
+ var attrValue;
+ var attrName;
+ var attNodeName;
+ var attrLocalName;
+ var attrNS;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ element = doc.createElementNS("namespaceURI","root");
+ attribute1 = doc.createAttributeNS("http://www.w3.org/DOM/Level2","l2:att");
+ newAttribute1 = element.setAttributeNodeNS(attribute1);
+ attribute2 = doc.createAttributeNS("http://www.w3.org/DOM/Level1","att");
+ newAttribute2 = element.setAttributeNodeNS(attribute2);
+ attribute = element.getAttributeNodeNS("http://www.w3.org/DOM/Level2","att");
+ attrValue = attribute.nodeValue;
+
+ attrName = attribute.name;
+
+ attNodeName = attribute.nodeName;
+
+ attrLocalName = attribute.localName;
+
+ attrNS = attribute.namespaceURI;
+
+ assertEquals("elementgetattributenodens01_attrValue","",attrValue);
+ assertEquals("elementgetattributenodens01_attrName","l2:att",attrName);
+ assertEquals("elementgetattributenodens01_attrNodeName","l2:att",attNodeName);
+ assertEquals("elementgetattributenodens01_attrLocalName","att",attrLocalName);
+ assertEquals("elementgetattributenodens01_attrNs","http://www.w3.org/DOM/Level2",attrNS);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementgetattributenodens01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementgetattributenodens02.html b/dom/tests/mochitest/dom-level2-core/test_elementgetattributenodens02.html
new file mode 100644
index 0000000000..2e2a19301c
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementgetattributenodens02.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementgetattributenodens02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementgetattributenodens02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementgetattributenodens02';
+
+
+/**
+*
+ The method getAttributeNodeNS retrieves an Attr node by local name and namespace URI.
+ Create a new element node and add a new attribute node to it. Using the getAttributeNodeNS,
+ retrieve the newly added attribute node and check its value.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElGetAtNodeNS
+*/
+function elementgetattributenodens02() {
+ var success;
+ if(checkInitialization(builder, "elementgetattributenodens02") != null) return;
+ var doc;
+ var element;
+ var attribute;
+ var newAttribute1;
+ var attrValue;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ element = doc.createElementNS("namespaceURI","root");
+ attribute = doc.createAttributeNS("http://www.w3.org/DOM/Level2","l2:att");
+ newAttribute1 = element.setAttributeNodeNS(attribute);
+ attribute = element.getAttributeNodeNS("http://www.w3.org/DOM/Level2","att");
+ attrValue = attribute.nodeValue;
+
+ assertEquals("elementgetattributenodens02","",attrValue);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementgetattributenodens02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementgetattributenodens03.html b/dom/tests/mochitest/dom-level2-core/test_elementgetattributenodens03.html
new file mode 100644
index 0000000000..0546491ae0
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementgetattributenodens03.html
@@ -0,0 +1,126 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementgetattributenodens03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementgetattributenodens03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+ setImplementationAttribute("validating", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementgetattributenodens03';
+
+
+/**
+*
+ The method getAttributeNodeNS retrieves an Attr node by local name and namespace URI.
+ Using the getAttributeNodeNS, retrieve and verify the value of the default
+ attribute node.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElGetAtNodeNS
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=259
+*/
+function elementgetattributenodens03() {
+ var success;
+ if(checkInitialization(builder, "elementgetattributenodens03") != null) return;
+ var doc;
+ var element;
+ var attribute;
+ var attrValue;
+ var childList;
+ var nullNS = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ childList = doc.getElementsByTagNameNS("http://www.nist.gov","employee");
+ element = childList.item(1);
+ attribute = element.getAttributeNodeNS(nullNS,"defaultAttr");
+ attrValue = attribute.nodeValue;
+
+ assertEquals("elementgetattributenodens03","defaultVal",attrValue);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementgetattributenodens03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementgetattributens02.html b/dom/tests/mochitest/dom-level2-core/test_elementgetattributens02.html
new file mode 100644
index 0000000000..29725f79e2
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementgetattributens02.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementgetattributens02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementgetattributens02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+ setImplementationAttribute("validating", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementgetattributens02';
+
+
+/**
+*
+ The method getAttributeNS retrieves an attribute value by local name and namespace URI.
+ Using the getAttributeNodeNS, retreive and verify the value of the default
+ attribute node.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElGetAttrNS
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=259
+*/
+function elementgetattributens02() {
+ var success;
+ if(checkInitialization(builder, "elementgetattributens02") != null) return;
+ var doc;
+ var element;
+ var attrValue;
+ var childList;
+ var nullNS = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ childList = doc.getElementsByTagNameNS("http://www.nist.gov","employee");
+ element = childList.item(1);
+ attrValue = element.getAttributeNS(nullNS,"defaultAttr");
+ assertEquals("elementgetattributens02","defaultVal",attrValue);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementgetattributens02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementgetelementsbytagnamens02.html b/dom/tests/mochitest/dom-level2-core/test_elementgetelementsbytagnamens02.html
new file mode 100644
index 0000000000..29a9c7f4ae
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementgetelementsbytagnamens02.html
@@ -0,0 +1,120 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementgetelementsbytagnamens02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementgetelementsbytagnamens02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementgetelementsbytagnamens02';
+
+
+/**
+*
+ The method getElementsByTagNameNS returns a NodeList of all the Elements with a given local
+ name and namespace URI in the order in which they are encountered in a preorder traversal
+ of the Document tree.
+ Invoke getElementsByTagNameNS on the documentElement with values for namespaceURI '*' and
+ localName '*'. Verify if this returns a nodeList of 0 elements.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getElBTNNS
+*/
+function elementgetelementsbytagnamens02() {
+ var success;
+ if(checkInitialization(builder, "elementgetelementsbytagnamens02") != null) return;
+ var doc;
+ var element;
+ var elementList;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ element = doc.documentElement;
+
+ elementList = element.getElementsByTagNameNS("**","*");
+ assertSize("elementgetelementsbytagnamens02",0,elementList);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementgetelementsbytagnamens02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementgetelementsbytagnamens04.html b/dom/tests/mochitest/dom-level2-core/test_elementgetelementsbytagnamens04.html
new file mode 100644
index 0000000000..b5d0e80c2b
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementgetelementsbytagnamens04.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementgetelementsbytagnamens04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementgetelementsbytagnamens04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementgetelementsbytagnamens04';
+
+
+/**
+*
+ Returns a NodeList of all the Elements with a given local name and namespace URI in the
+ order in which they are encountered in a preorder traversal of the Document tree.
+ Create a new element node ('root') and append three newly created child nodes (all have
+ local name 'child' and defined in different namespaces).
+ Test 1: invoke getElementsByTagNameNS to retrieve one of the children.
+ Test 2: invoke getElementsByTagNameNS with the value of namespace equals to '*', and
+ verify that the node list has length of 3.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getElBTNNS
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=259
+*/
+function elementgetelementsbytagnamens04() {
+ var success;
+ if(checkInitialization(builder, "elementgetelementsbytagnamens04") != null) return;
+ var doc;
+ var element;
+ var child1;
+ var child2;
+ var child3;
+ var appendedChild;
+ var elementList;
+ var nullNS = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ element = doc.createElementNS("http://www.w3.org/DOM","root");
+ child1 = doc.createElementNS("http://www.w3.org/DOM/Level1","dom:child");
+ child2 = doc.createElementNS(nullNS,"child");
+ child3 = doc.createElementNS("http://www.w3.org/DOM/Level2","dom:child");
+ appendedChild = element.appendChild(child1);
+ appendedChild = element.appendChild(child2);
+ appendedChild = element.appendChild(child3);
+ elementList = element.getElementsByTagNameNS(nullNS,"child");
+ assertSize("elementgetelementsbytagnamens04_1",1,elementList);
+elementList = element.getElementsByTagNameNS("*","child");
+ assertSize("elementgetelementsbytagnamens04_2",3,elementList);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementgetelementsbytagnamens04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementgetelementsbytagnamens05.html b/dom/tests/mochitest/dom-level2-core/test_elementgetelementsbytagnamens05.html
new file mode 100644
index 0000000000..35ec75f156
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementgetelementsbytagnamens05.html
@@ -0,0 +1,121 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementgetelementsbytagnamens05</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementgetelementsbytagnamens05'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementgetelementsbytagnamens05';
+
+
+/**
+*
+ Returns a NodeList of all the Elements with a given local name and namespace URI in the
+ order in which they are encountered in a preorder traversal of the Document tree.
+ Invoke getElementsByTagNameNS on the documentElement with the following values:
+ namespaceURI: 'http://www.altavista.com'
+ localName: '*'.
+ Verify if this returns a nodeList of 1 elements.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getElBTNNS
+*/
+function elementgetelementsbytagnamens05() {
+ var success;
+ if(checkInitialization(builder, "elementgetelementsbytagnamens05") != null) return;
+ var doc;
+ var element;
+ var elementList;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ element = doc.documentElement;
+
+ elementList = element.getElementsByTagNameNS("http://www.altavista.com","*");
+ assertSize("elementgetelementsbytagnamens05",1,elementList);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementgetelementsbytagnamens05</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementhasattribute01.html b/dom/tests/mochitest/dom-level2-core/test_elementhasattribute01.html
new file mode 100644
index 0000000000..930f8d0b50
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementhasattribute01.html
@@ -0,0 +1,118 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementhasattribute01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementhasattribute01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", false);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementhasattribute01';
+
+
+/**
+*
+ The method hasAttribute returns true when an attribute with a given name is specified
+ on this element or has a default value, false otherwise
+ Invoke the hasAttribute method to check if the documentElement has attributres.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-NodeHasAttrs
+*/
+function elementhasattribute01() {
+ var success;
+ if(checkInitialization(builder, "elementhasattribute01") != null) return;
+ var doc;
+ var element;
+ var state;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ element = doc.documentElement;
+
+ state = element.hasAttribute("");
+ assertFalse("elementhasattribute01",state);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementhasattribute01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementhasattribute02.html b/dom/tests/mochitest/dom-level2-core/test_elementhasattribute02.html
new file mode 100644
index 0000000000..0e03abcf2f
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementhasattribute02.html
@@ -0,0 +1,121 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementhasattribute02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementhasattribute02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("validating", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementhasattribute02';
+
+
+/**
+*
+ The method hasAttribute returns true when an attribute with a given name is specified
+ on this element or has a default value, false otherwise
+ Invoke the hasAttribute method to on an element with default attributes and verify if it
+ returns true.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-NodeHasAttrs
+*/
+function elementhasattribute02() {
+ var success;
+ if(checkInitialization(builder, "elementhasattribute02") != null) return;
+ var doc;
+ var element;
+ var state;
+ var elementList;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("emp:employee");
+ element = elementList.item(0);
+ assertNotNull("empEmployeeNotNull",element);
+state = element.hasAttribute("defaultAttr");
+ assertTrue("elementhasattribute02",state);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementhasattribute02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementhasattribute03.html b/dom/tests/mochitest/dom-level2-core/test_elementhasattribute03.html
new file mode 100644
index 0000000000..d63b213eee
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementhasattribute03.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementhasattribute03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementhasattribute03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementhasattribute03';
+
+
+/**
+*
+ The method hasAttribute returns true when an attribute with a given name is specified
+ on this element or has a default value, false otherwise.
+
+ Create an element Node and an attribute Node. Invoke hasAttribute method
+ to verify that there is no attribute. Append the attribute node to the element node.
+ Invoke the hasAttribute method on the element and verify if it returns true.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-NodeHasAttrs
+*/
+function elementhasattribute03() {
+ var success;
+ if(checkInitialization(builder, "elementhasattribute03") != null) return;
+ var doc;
+ var element;
+ var state;
+ var attribute;
+ var newAttribute;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ element = doc.createElement("address");
+ attribute = doc.createAttribute("domestic");
+ state = element.hasAttribute("domestic");
+ assertFalse("elementhasattribute03_False",state);
+newAttribute = element.setAttributeNode(attribute);
+ state = element.hasAttribute("domestic");
+ assertTrue("elementhasattribute03_True",state);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementhasattribute03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementhasattribute04.html b/dom/tests/mochitest/dom-level2-core/test_elementhasattribute04.html
new file mode 100644
index 0000000000..8e19f26794
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementhasattribute04.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementhasattribute04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementhasattribute04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementhasattribute04';
+
+
+/**
+*
+ The method hasAttribute returns true when an attribute with a given name is specified
+ on this element or has a default value, false otherwise.
+
+ Create an element Node and an attribute Node and add the attribute node to the element.
+ Invoke the hasAttribute method on the element and verify if the method returns true.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-NodeHasAttrs
+*/
+function elementhasattribute04() {
+ var success;
+ if(checkInitialization(builder, "elementhasattribute04") != null) return;
+ var doc;
+ var element;
+ var state;
+ var attribute;
+ var newAttribute;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ element = doc.createElement("address");
+ attribute = doc.createAttribute("domestic");
+ newAttribute = element.setAttributeNode(attribute);
+ state = element.hasAttribute("domestic");
+ assertTrue("elementhasattribute04",state);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementhasattribute04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementhasattributens01.html b/dom/tests/mochitest/dom-level2-core/test_elementhasattributens01.html
new file mode 100644
index 0000000000..9143e4f7b4
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementhasattributens01.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementhasattributens01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementhasattributens01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementhasattributens01';
+
+
+/**
+*
+ The method hasAttributeNS returns true when an attribute with a given local name
+ and namespace
+ URI is specified on this element or has a default value, false otherwise.
+
+ Retreive the first employee element node. Invoke the hasAttributeNS method to check if it
+ has the xmlns attribute that belongs to the namespace http://www.w3.org/2000/xmlns/.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElHasAttrNS
+*/
+function elementhasattributens01() {
+ var success;
+ if(checkInitialization(builder, "elementhasattributens01") != null) return;
+ var doc;
+ var element;
+ var state;
+ var elementList;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS("*","employee");
+ element = elementList.item(0);
+ state = element.hasAttributeNS("http://www.w3.org/2000/xmlns/","xmlns");
+ assertTrue("elementhasattributens01",state);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementhasattributens01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementhasattributens02.html b/dom/tests/mochitest/dom-level2-core/test_elementhasattributens02.html
new file mode 100644
index 0000000000..b188a908c5
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementhasattributens02.html
@@ -0,0 +1,126 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementhasattributens02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementhasattributens02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementhasattributens02';
+
+
+/**
+*
+ The method hasAttributeNS returns true when an attribute with a given local
+ name and namespace URI is specified on this element or has a default value,
+ false otherwise.
+
+ Create a new element and attribute node that belong to the same namespace.
+ Add the attribute node to the element node. Check if the newly created element
+ node has an attribute by invoking the hasAttributeNS method with appropriate
+ values for the namespaceURI and localName parameters.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElHasAttrNS
+*/
+function elementhasattributens02() {
+ var success;
+ if(checkInitialization(builder, "elementhasattributens02") != null) return;
+ var doc;
+ var element;
+ var state;
+ var attribute;
+ var newAttribute;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ element = doc.createElementNS("http://www.w3.org/DOM","address");
+ attribute = doc.createAttributeNS("http://www.w3.org/DOM","domestic");
+ newAttribute = element.setAttributeNode(attribute);
+ state = element.hasAttributeNS("http://www.w3.org/DOM","domestic");
+ assertTrue("hasDomesticAttr",state);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementhasattributens02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementhasattributens03.html b/dom/tests/mochitest/dom-level2-core/test_elementhasattributens03.html
new file mode 100644
index 0000000000..b529accc4c
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementhasattributens03.html
@@ -0,0 +1,130 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementhasattributens03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementhasattributens03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementhasattributens03';
+
+
+/**
+*
+ The method hasAttributeNS returns true when an attribute with a given local name
+ and namespace URI is specified on this element or has a default value,
+ false otherwise.
+
+ Create a new element and an attribute node that has an empty namespace.
+ Add the attribute node to the element node. Check if the newly created element
+ node has an attribute by invoking the hasAttributeNS method with appropriate
+ values for the namespaceURI and localName parameters.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElHasAttrNS
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=259
+*/
+function elementhasattributens03() {
+ var success;
+ if(checkInitialization(builder, "elementhasattributens03") != null) return;
+ var doc;
+ var element;
+ var state;
+ var attribute;
+ var newAttribute;
+ var nullNS = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ element = doc.createElementNS("http://www.w3.org/DOM","address");
+ assertNotNull("createElementNotNull",element);
+attribute = doc.createAttributeNS(nullNS,"domestic");
+ newAttribute = element.setAttributeNode(attribute);
+ state = element.hasAttributeNS(nullNS,"domestic");
+ assertTrue("elementhasattributens03",state);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementhasattributens03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementremoveattributens01.html b/dom/tests/mochitest/dom-level2-core/test_elementremoveattributens01.html
new file mode 100644
index 0000000000..feede9d7ca
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementremoveattributens01.html
@@ -0,0 +1,124 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementremoveattributens01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementremoveattributens01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementremoveattributens01';
+
+
+/**
+*
+ The method removeAttributeNS removes an attribute by local name and namespace URI.
+ Create a new element and add a new attribute node to it.
+ Remove the attribute node using the removeAttributeNodeNS method.
+ Check if the attribute was remove by invoking the hasAttributeNS
+ method on the element and check if it returns false.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElRemAtNS
+*/
+function elementremoveattributens01() {
+ var success;
+ if(checkInitialization(builder, "elementremoveattributens01") != null) return;
+ var doc;
+ var element;
+ var state;
+ var attribute;
+ var newAttribute;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ element = doc.createElementNS("http://www.w3.org/DOM","elem");
+ attribute = doc.createAttributeNS("http://www.w3.org/DOM/Test/createAttributeNS","attr");
+ newAttribute = element.setAttributeNodeNS(attribute);
+ element.removeAttributeNS("http://www.w3.org/DOM/Test/createAttributeNS","attr");
+ state = element.hasAttributeNS("http://www.w3.org/DOM/Test/createAttributeNS","attr");
+ assertFalse("elementremoveattributens01",state);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementremoveattributens01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementsetattributenodens01.html b/dom/tests/mochitest/dom-level2-core/test_elementsetattributenodens01.html
new file mode 100644
index 0000000000..41d6b47968
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementsetattributenodens01.html
@@ -0,0 +1,147 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementsetattributenodens01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementsetattributenodens01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementsetattributenodens01';
+
+
+/**
+*
+ Testing Element.setAttributeNodeNS: If an attribute with that local name
+ and that namespace URI is already present in the element, it is replaced
+ by the new one.
+
+ Create a new element and two new attribute nodes (in the same namespace
+ and same localNames).
+ Add the two new attribute nodes to the element node using the
+ setAttributeNodeNS method. Check that only one attribute is added, check
+ the value of this attribute.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAtNodeNS
+*/
+function elementsetattributenodens01() {
+ var success;
+ if(checkInitialization(builder, "elementsetattributenodens01") != null) return;
+ var doc;
+ var element;
+ var attribute1;
+ var attribute2;
+ var attrNode;
+ var attrName;
+ var attrNS;
+ var attrValue;
+ var attributes;
+ var newAttribute;
+ var length;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ element = doc.createElementNS("http://www.w3.org/DOM/Test/Level2","new:element");
+ attribute1 = doc.createAttributeNS("http://www.w3.org/DOM/Test/att1","p1:att");
+ attribute2 = doc.createAttributeNS("http://www.w3.org/DOM/Test/att1","p2:att");
+ attribute2.value = "value2";
+
+ newAttribute = element.setAttributeNodeNS(attribute1);
+ newAttribute = element.setAttributeNodeNS(attribute2);
+ attrNode = element.getAttributeNodeNS("http://www.w3.org/DOM/Test/att1","att");
+ attrName = attrNode.nodeName;
+
+ attrNS = attrNode.namespaceURI;
+
+ assertEquals("elementsetattributenodens01_attrName","p2:att",attrName);
+ assertEquals("elementsetattributenodens01_attrNS","http://www.w3.org/DOM/Test/att1",attrNS);
+ attributes = element.attributes;
+
+ length = attributes.length;
+
+ assertEquals("length",1,length);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementsetattributenodens01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementsetattributenodens02.html b/dom/tests/mochitest/dom-level2-core/test_elementsetattributenodens02.html
new file mode 100644
index 0000000000..49ed31a8aa
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementsetattributenodens02.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementsetattributenodens02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementsetattributenodens02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementsetattributenodens02';
+
+
+/**
+*
+ Test the setAttributeNodeNS method.
+ Retreive the street attribute from the second address element node.
+ Clone it and add it to the first address node. The INUSE_ATTRIBUTE_ERR exception
+ should not be thrown. Check the name and value of the newly added node.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAtNodeNS
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=259
+*/
+function elementsetattributenodens02() {
+ var success;
+ if(checkInitialization(builder, "elementsetattributenodens02") != null) return;
+ var doc;
+ var element;
+ var element2;
+ var attribute;
+ var attributeCloned;
+ var newAttr;
+ var elementList;
+ var attrName;
+ var attrValue;
+ var nullNS = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS("http://www.nist.gov","address");
+ element = elementList.item(1);
+ attribute = element.getAttributeNodeNS(nullNS,"street");
+ attributeCloned = attribute.cloneNode(true);
+ element2 = elementList.item(2);
+ newAttr = element2.setAttributeNodeNS(attributeCloned);
+ attrName = newAttr.nodeName;
+
+ attrValue = newAttr.nodeValue;
+
+ assertEquals("elementsetattributenodens02_attrName","street",attrName);
+ assertEquals("elementsetattributenodens02_attrValue","Yes",attrValue);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementsetattributenodens02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementsetattributenodens03.html b/dom/tests/mochitest/dom-level2-core/test_elementsetattributenodens03.html
new file mode 100644
index 0000000000..6d818edc9c
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementsetattributenodens03.html
@@ -0,0 +1,138 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementsetattributenodens03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementsetattributenodens03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementsetattributenodens03';
+
+
+/**
+*
+ The method setAttributeNodeNS adds a new attribute and raises the
+ INUSE_ATTRIBUTE_ERR exception if the newAttr is already an attribute of
+ another Element object.
+
+ Retreive an attribute node of an existing element node. Attempt to add it to an another
+ element node. Check if the INUSE_ATTRIBUTE_ERR exception is thrown.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAtNodeNS
+*/
+function elementsetattributenodens03() {
+ var success;
+ if(checkInitialization(builder, "elementsetattributenodens03") != null) return;
+ var doc;
+ var element1;
+ var element2;
+ var attribute;
+ var newAttribute;
+ var elementList;
+ var nullNS = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS("http://www.nist.gov","address");
+ element1 = elementList.item(1);
+ attribute = element1.getAttributeNodeNS(nullNS,"street");
+ element2 = elementList.item(2);
+
+ {
+ success = false;
+ try {
+ newAttribute = element2.setAttributeNodeNS(attribute);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 10);
+ }
+ assertTrue("elementsetattributenodens03",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementsetattributenodens03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementsetattributenodens04.html b/dom/tests/mochitest/dom-level2-core/test_elementsetattributenodens04.html
new file mode 100644
index 0000000000..8d1ca94b1c
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementsetattributenodens04.html
@@ -0,0 +1,134 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementsetattributenodens04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementsetattributenodens04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementsetattributenodens04';
+
+
+/**
+*
+ The method setAttributeNodeNS Adds a new attribute and raises an INUSE_ATTRIBUTE_ERR
+ if newAttr is already an attribute of another Element object.
+
+ Create two new element nodes and a new attribute node. Attempt to add the same attribute
+ node to the same two element nodes.
+ Check if an INUSE_ATTRIBUTE_ERR is thrown.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAtNodeNS
+*/
+function elementsetattributenodens04() {
+ var success;
+ if(checkInitialization(builder, "elementsetattributenodens04") != null) return;
+ var doc;
+ var element1;
+ var element2;
+ var attribute;
+ var newAttribute;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ element1 = doc.createElementNS("http://www.w3.org/DOM/Test","elem1");
+ element2 = doc.createElementNS("http://www.w3.org/DOM/Test","elem2");
+ attribute = doc.createAttributeNS("http://www.w3.org/DOM/Test","attr");
+ newAttribute = element1.setAttributeNodeNS(attribute);
+
+ {
+ success = false;
+ try {
+ newAttribute = element2.setAttributeNodeNS(attribute);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 10);
+ }
+ assertTrue("elementsetattributenodens04",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementsetattributenodens04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementsetattributenodens05.html b/dom/tests/mochitest/dom-level2-core/test_elementsetattributenodens05.html
new file mode 100644
index 0000000000..3fb2eaaa93
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementsetattributenodens05.html
@@ -0,0 +1,144 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementsetattributenodens05</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementsetattributenodens05'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ var docAltRef = null;
+ if (typeof(this.docAlt) != 'undefined') {
+ docAltRef = this.docAlt;
+ }
+ docsLoaded += preload(docAltRef, "docAlt", "staffNS");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementsetattributenodens05';
+
+
+/**
+*
+ The method setAttributeNodeNS Adds a new attribute and raises
+ an WRONG_DOCUMENT_ERR if newAttr was created from a different document
+ than the one that created the element.
+ Create new element and attribute nodes in different documents.
+ Attempt to add the attribute node to the element node.
+ Check if an WRONG_DOCUMENT_ERR is thrown.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAtNodeNS
+*/
+function elementsetattributenodens05() {
+ var success;
+ if(checkInitialization(builder, "elementsetattributenodens05") != null) return;
+ var doc;
+ var docAlt;
+ var element;
+ var attribute;
+ var newAttribute;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ var docAltRef = null;
+ if (typeof(this.docAlt) != 'undefined') {
+ docAltRef = this.docAlt;
+ }
+ docAlt = load(docAltRef, "docAlt", "staffNS");
+ element = doc.createElementNS("http://www.w3.org/DOM/Test","elem1");
+ attribute = docAlt.createAttributeNS("http://www.w3.org/DOM/Test","attr");
+
+ {
+ success = false;
+ try {
+ newAttribute = element.setAttributeNodeNS(attribute);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 4);
+ }
+ assertTrue("throw_WRONG_DOCUMENT_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementsetattributenodens05</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementsetattributenodens06.html b/dom/tests/mochitest/dom-level2-core/test_elementsetattributenodens06.html
new file mode 100644
index 0000000000..d165a7408e
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementsetattributenodens06.html
@@ -0,0 +1,142 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementsetattributenodens06</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementsetattributenodens06'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("expandEntityReferences", false);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementsetattributenodens06';
+
+
+/**
+*
+ The method setAttributeNodeNS Adds a new attribute and raises an WRONG_DOCUMENT_ERR if this node
+ is readonly.
+
+ Attempt to add an attribute node to an element node which is part of the replacement text of
+ a read-only EntityReference node.
+ Check if a NO_MODIFICATION_ALLOWED_ERR is thrown.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAtNodeNS
+*/
+function elementsetattributenodens06() {
+ var success;
+ if(checkInitialization(builder, "elementsetattributenodens06") != null) return;
+ var doc;
+ var element;
+ var attribute;
+ var attribute2;
+ var entRef;
+ var elementList;
+ var newAttribute;
+ var newChild;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ element = doc.createElementNS("http://www.w3.org/DOM/Test","elem1");
+ attribute = doc.createAttributeNS("http://www.w3.org/DOM/Test","attr");
+ entRef = doc.createEntityReference("ent4");
+ newChild = attribute.appendChild(entRef);
+ newAttribute = element.setAttributeNodeNS(attribute);
+ elementList = entRef.childNodes;
+
+ element = elementList.item(0);
+ attribute2 = doc.createAttributeNS("http://www.w3.org/DOM/Test","attr2");
+
+ {
+ success = false;
+ try {
+ newAttribute = element.setAttributeNodeNS(attribute2);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 7);
+ }
+ assertTrue("elementsetattributenodens06",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementsetattributenodens06</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementsetattributens01.html b/dom/tests/mochitest/dom-level2-core/test_elementsetattributens01.html
new file mode 100644
index 0000000000..3c8b8cea6a
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementsetattributens01.html
@@ -0,0 +1,126 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementsetattributens01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementsetattributens01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementsetattributens01';
+
+
+/**
+*
+ The method setAttributeNS adds a new attribute.
+ Create a new element and add a new attribute node to it using the setAttributeNS method.
+ Check if the attribute was correctly set by invoking the getAttributeNodeNS method
+ and checking the nodeName and nodeValue of the returned nodes.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAttrNS
+*/
+function elementsetattributens01() {
+ var success;
+ if(checkInitialization(builder, "elementsetattributens01") != null) return;
+ var doc;
+ var element;
+ var attribute;
+ var attrName;
+ var attrValue;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ element = doc.createElementNS("http://www.w3.org/DOM","dom:elem");
+ element.setAttributeNS("http://www.w3.org/DOM/Test/setAttributeNS","attr","value");
+ attribute = element.getAttributeNodeNS("http://www.w3.org/DOM/Test/setAttributeNS","attr");
+ attrName = attribute.nodeName;
+
+ attrValue = attribute.nodeValue;
+
+ assertEquals("elementsetattributens01_attrName","attr",attrName);
+ assertEquals("elementsetattributens01_attrValue","value",attrValue);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementsetattributens01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementsetattributens02.html b/dom/tests/mochitest/dom-level2-core/test_elementsetattributens02.html
new file mode 100644
index 0000000000..b3b3924abd
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementsetattributens02.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementsetattributens02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementsetattributens02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementsetattributens02';
+
+
+/**
+*
+ The method setAttributeNS adds a new attribute.
+
+ Retrieve an existing element node with attributes and add a new attribute node to it using
+ the setAttributeNS method. Check if the attribute was correctly set by invoking the
+ getAttributeNodeNS method and checking the nodeName and nodeValue of the returned nodes.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAttrNS
+*/
+function elementsetattributens02() {
+ var success;
+ if(checkInitialization(builder, "elementsetattributens02") != null) return;
+ var doc;
+ var element;
+ var attribute;
+ var elementList;
+ var attrName;
+ var attrValue;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ elementList = doc.getElementsByTagNameNS("*","address");
+ element = elementList.item(0);
+ element.setAttributeNS("http://www.w3.org/DOM/Test/setAttributeNS","this:street","Silver Street");
+ attribute = element.getAttributeNodeNS("http://www.w3.org/DOM/Test/setAttributeNS","street");
+ attrName = attribute.nodeName;
+
+ attrValue = attribute.nodeValue;
+
+ assertEquals("elementsetattributens02_attrName","this:street",attrName);
+ assertEquals("elementsetattributens02_attrValue","Silver Street",attrValue);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementsetattributens02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementsetattributens03.html b/dom/tests/mochitest/dom-level2-core/test_elementsetattributens03.html
new file mode 100644
index 0000000000..3764c4a7ac
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementsetattributens03.html
@@ -0,0 +1,132 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementsetattributens03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementsetattributens03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementsetattributens03';
+
+
+/**
+*
+ The method setAttributeNS adds a new attribute.
+ Retreive an existing element node with a default attribute node and
+ add two new attribute nodes that have the same local name as the
+ default attribute but different namespaceURI to it using the setAttributeNS method.
+ Check if the attribute was correctly set by invoking the getAttributeNodeNS method
+ and checking the nodeName and nodeValue of the returned nodes.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAttrNS
+*/
+function elementsetattributens03() {
+ var success;
+ if(checkInitialization(builder, "elementsetattributens03") != null) return;
+ var doc;
+ var element;
+ var attribute;
+ var elementList;
+ var attrName;
+ var attrValue;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("emp:employee");
+ element = elementList.item(0);
+ assertNotNull("empEmployeeNotNull",element);
+element.setAttributeNS("http://www.w3.org/DOM/Test/1","defaultAttr","default1");
+ element.setAttributeNS("http://www.w3.org/DOM/Test/2","defaultAttr","default2");
+ attribute = element.getAttributeNodeNS("http://www.w3.org/DOM/Test/1","defaultAttr");
+ attrName = attribute.nodeName;
+
+ attrValue = attribute.nodeValue;
+
+ assertEquals("elementsetattributens03_attrName","defaultAttr",attrName);
+ assertEquals("elementsetattributens03_attrValue","default1",attrValue);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementsetattributens03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementsetattributens04.html b/dom/tests/mochitest/dom-level2-core/test_elementsetattributens04.html
new file mode 100644
index 0000000000..4ba7eacda7
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementsetattributens04.html
@@ -0,0 +1,142 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementsetattributens04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementsetattributens04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementsetattributens04';
+
+
+/**
+*
+ The method setAttributeNS adds a new attribute and raises a INVALID_CHARACTER_ERR if
+ the specified qualified name contains an illegal character.
+ Invoke the setAttributeNS method on this Element object with a valid value for
+ namespaceURI, and qualifiedNames that contain illegal characters. Check if the an
+ INVALID_CHARACTER_ERR was thrown.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAttrNS
+*/
+function elementsetattributens04() {
+ var success;
+ if(checkInitialization(builder, "elementsetattributens04") != null) return;
+ var doc;
+ var element;
+ var qualifiedName;
+ qualifiedNames = new Array();
+ qualifiedNames[0] = "/";
+ qualifiedNames[1] = "//";
+ qualifiedNames[2] = "\\";
+ qualifiedNames[3] = ";";
+ qualifiedNames[4] = "&";
+ qualifiedNames[5] = "*";
+ qualifiedNames[6] = "]]";
+ qualifiedNames[7] = ">";
+ qualifiedNames[8] = "<";
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ element = doc.createElementNS("http://www.w3.org/DOM/Test/L2","dom:elem");
+ for(var indexN65624 = 0;indexN65624 < qualifiedNames.length; indexN65624++) {
+ qualifiedName = qualifiedNames[indexN65624];
+
+ {
+ success = false;
+ try {
+ element.setAttributeNS("http://www.w3.org/DOM/Test/L2",qualifiedName,"test");
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 5);
+ }
+ assertTrue("elementsetattributens04",success);
+ }
+
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementsetattributens04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementsetattributens05.html b/dom/tests/mochitest/dom-level2-core/test_elementsetattributens05.html
new file mode 100644
index 0000000000..7a8fce7f30
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementsetattributens05.html
@@ -0,0 +1,128 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementsetattributens05</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementsetattributens05'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementsetattributens05';
+
+
+/**
+*
+ The method setAttributeNS adds a new attribute and raises a NAMESPACE_ERR if the
+ qualifiedName has a prefix and the namespaceURI is null.
+ Invoke the setAttributeNS method on a new Element object with null namespaceURI and a
+ qualifiedName that has a namespace prefix. Check if the NAMESPACE_ERR was thrown.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAttrNS
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=259
+*/
+function elementsetattributens05() {
+ var success;
+ if(checkInitialization(builder, "elementsetattributens05") != null) return;
+ var doc;
+ var element;
+ var nullNS = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ element = doc.createElementNS("http://www.w3.org/DOM/Test/L2","dom:elem");
+
+ {
+ success = false;
+ try {
+ element.setAttributeNS(nullNS,"dom:root","test");
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 14);
+ }
+ assertTrue("elementsetattributens05",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementsetattributens05</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementsetattributens08.html b/dom/tests/mochitest/dom-level2-core/test_elementsetattributens08.html
new file mode 100644
index 0000000000..dc181e460c
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementsetattributens08.html
@@ -0,0 +1,140 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementsetattributens08</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementsetattributens08'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementsetattributens08';
+
+
+/**
+*
+ The method setAttributeNS adds a new attribute and raises a NAMESPACE_ERR
+ if the qualifiedName, or its prefix, is "xmlns" and the namespaceURI is
+ different from "http://www.w3.org/2000/xmlns/".
+
+ Invoke the setAttributeNS method on a new Element object with namespaceURI that is
+ http://www.w3.org/DOMTest/level2 and a qualifiedName that has the prefix xmlns and once
+ again with a qualifiedName that is xmlns.
+ Check if the NAMESPACE_ERR was thrown.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAttrNS
+*/
+function elementsetattributens08() {
+ var success;
+ if(checkInitialization(builder, "elementsetattributens08") != null) return;
+ var doc;
+ var element;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ element = doc.createElementNS("http://www.w3.org/DOMTest/level2","dom:elem");
+
+ {
+ success = false;
+ try {
+ element.setAttributeNS("http://www.w3.org/DOMTest/level2","xmlns","test");
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 14);
+ }
+ assertTrue("elementsetattributens08_Err1",success);
+ }
+
+ {
+ success = false;
+ try {
+ element.setAttributeNS("http://www.w3.org/DOMTest/level2","xmlns:root","test");
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 14);
+ }
+ assertTrue("elementsetattributens08_Err2",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementsetattributens08</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_elementsetattributensurinull.html b/dom/tests/mochitest/dom-level2-core/test_elementsetattributensurinull.html
new file mode 100644
index 0000000000..b1cb68f8a9
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_elementsetattributensurinull.html
@@ -0,0 +1,142 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementsetattributensurinull</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['elementsetattributensurinull'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'elementsetattributensurinull';
+
+
+/**
+*
+
+ The "setAttributeNS(namespaceURI,qualifiedName,value)" method raises a
+
+ NAMESPACE_ERR DOMException if the specified
+
+ qualifiedName has a prefix and the namespaceURI is null.
+
+
+
+ Attempt to add a new attribute on the first employee node.
+
+ An exception should be raised since the "qualifiedName" has a
+
+ prefix and the namespaceURI is null.
+
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAttrNS
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-ElSetAttrNS')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='NAMESPACE_ERR'])
+*/
+function elementsetattributensurinull() {
+ var success;
+ if(checkInitialization(builder, "elementsetattributensurinull") != null) return;
+ var namespaceURI = null;
+
+ var qualifiedName = "emp:qualifiedName";
+ var doc;
+ var elementList;
+ var testAddr;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ elementList = doc.getElementsByTagName("employee");
+ testAddr = elementList.item(0);
+
+ {
+ success = false;
+ try {
+ testAddr.setAttributeNS(namespaceURI,qualifiedName,"newValue");
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 14);
+ }
+ assertTrue("throw_NAMESPACE_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/elementsetattributensurinull</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getAttributeNS01.html b/dom/tests/mochitest/dom-level2-core/test_getAttributeNS01.html
new file mode 100644
index 0000000000..1e19275fa1
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getAttributeNS01.html
@@ -0,0 +1,127 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getAttributeNS01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getAttributeNS01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+ setImplementationAttribute("validating", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getAttributeNS01';
+
+
+/**
+*
+ The "getAttributeNS(namespaceURI,localName)" method retrieves an
+ attribute value by local name and NamespaceURI.
+
+ Retrieve the first "emp:address" element.
+ The value returned by the "getAttributeNS()" method should be the
+ value "DISTRICT" since the attribute has a default value.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElGetAttrNS
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=238
+*/
+function getAttributeNS01() {
+ var success;
+ if(checkInitialization(builder, "getAttributeNS01") != null) return;
+ var namespaceURI = "http://www.nist.gov";
+ var localName = "district";
+ var qualifiedName = "emp:district";
+ var doc;
+ var elementList;
+ var testAddr;
+ var attrValue;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("emp:address");
+ testAddr = elementList.item(0);
+ attrValue = testAddr.getAttributeNS(namespaceURI,localName);
+ assertEquals("attrValue","DISTRICT",attrValue);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getAttributeNS01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getAttributeNS02.html b/dom/tests/mochitest/dom-level2-core/test_getAttributeNS02.html
new file mode 100644
index 0000000000..b55b6e4dc1
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getAttributeNS02.html
@@ -0,0 +1,133 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getAttributeNS02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getAttributeNS02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getAttributeNS02';
+
+
+/**
+*
+ The "getAttributeNS(namespaceURI,localName)" method retrieves an
+ attribute value by local name and NamespaceURI.
+
+ Retrieve the first "emp:address" element.
+ Create a new attribute with the "createAttributeNS()" method.
+ Add the new attribute with the "setAttributeNS()" method.
+ The value returned by the "getAttributeNS()" method should be the
+ empty string since the attribute does not have a default value.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElGetAttrNS
+*/
+function getAttributeNS02() {
+ var success;
+ if(checkInitialization(builder, "getAttributeNS02") != null) return;
+ var namespaceURI = "http://www.nist.gov";
+ var localName = "district";
+ var qualifiedName = "emp:district";
+ var doc;
+ var newAttribute;
+ var elementList;
+ var testAddr;
+ var districtAttr;
+ var attrValue;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ newAttribute = doc.createAttributeNS(namespaceURI,qualifiedName);
+ elementList = doc.getElementsByTagName("emp:address");
+ testAddr = elementList.item(0);
+ assertNotNull("empAddrNotNull",testAddr);
+districtAttr = testAddr.setAttributeNodeNS(newAttribute);
+ elementList = doc.getElementsByTagName("emp:address");
+ testAddr = elementList.item(0);
+ attrValue = testAddr.getAttributeNS(namespaceURI,localName);
+ assertEquals("throw_Equals","",attrValue);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getAttributeNS02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getAttributeNS03.html b/dom/tests/mochitest/dom-level2-core/test_getAttributeNS03.html
new file mode 100644
index 0000000000..20e1196525
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getAttributeNS03.html
@@ -0,0 +1,126 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getAttributeNS03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getAttributeNS03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getAttributeNS03';
+
+
+/**
+*
+ The "getAttributeNS(namespaceURI,localName)" method retrieves an
+ attribute value by local name and NamespaceURI.
+
+ Retrieve the first "emp:address" element.
+ The value returned by the "getAttributeNS()" method for the emp:domestic attribute
+ should be the empty string since the attribute does not have a specified value
+ because it was removed by the "removeAttributeNS()" method.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElGetAttrNS
+*/
+function getAttributeNS03() {
+ var success;
+ if(checkInitialization(builder, "getAttributeNS03") != null) return;
+ var namespaceURI = "http://www.nist.gov";
+ var localName = "domestic";
+ var doc;
+ var elementList;
+ var testAddr;
+ var attrValue;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("emp:address");
+ testAddr = elementList.item(0);
+ assertNotNull("empAddrNotNull",testAddr);
+testAddr.removeAttributeNS(namespaceURI,localName);
+ attrValue = testAddr.getAttributeNS(namespaceURI,localName);
+ assertEquals("throw_Equals",null,attrValue);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getAttributeNS03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getAttributeNS04.html b/dom/tests/mochitest/dom-level2-core/test_getAttributeNS04.html
new file mode 100644
index 0000000000..5e57fef798
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getAttributeNS04.html
@@ -0,0 +1,131 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getAttributeNS04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getAttributeNS04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getAttributeNS04';
+
+
+/**
+*
+ The "getAttributeNS(namespaceURI,localName)" method retrieves an
+ attribute value by local name and NamespaceURI.
+
+ Retrieve the first "emp:address" element.
+ Create a new attribute with the "createAttributeNS()" method.
+ Add the new attribute and value with the "setAttributeNS()" method.
+ The value returned by the "getAttributeNS()" method should be
+ the string "NewValue" since the attribute had a specified value.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElGetAttrNS
+*/
+function getAttributeNS04() {
+ var success;
+ if(checkInitialization(builder, "getAttributeNS04") != null) return;
+ var namespaceURI = "http://www.nist.gov";
+ var localName = "blank";
+ var qualifiedName = "emp:blank";
+ var doc;
+ var newAttribute;
+ var elementList;
+ var testAddr;
+ var districtAttr;
+ var attrValue;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ newAttribute = doc.createAttributeNS(namespaceURI,qualifiedName);
+ elementList = doc.getElementsByTagName("emp:address");
+ testAddr = elementList.item(0);
+ assertNotNull("empAddrNotNull",testAddr);
+testAddr.setAttributeNS(namespaceURI,qualifiedName,"NewValue");
+ attrValue = testAddr.getAttributeNS(namespaceURI,localName);
+ assertEquals("throw_Equals","NewValue",attrValue);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getAttributeNS04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getAttributeNS05.html b/dom/tests/mochitest/dom-level2-core/test_getAttributeNS05.html
new file mode 100644
index 0000000000..8605585b39
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getAttributeNS05.html
@@ -0,0 +1,124 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getAttributeNS05</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getAttributeNS05'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getAttributeNS05';
+
+
+/**
+*
+ The "getAttributeNS(namespaceURI,localName)" method retrieves an
+ attribute value by local name and NamespaceURI.
+
+ Retrieve the first emp:address element node
+ and retrieve the emp:domestic attribute. The method returns an
+ Attr value as a string, the "value" can be examined to ensure the
+ proper attribute value was retrieved.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElGetAttrNS
+*/
+function getAttributeNS05() {
+ var success;
+ if(checkInitialization(builder, "getAttributeNS05") != null) return;
+ var doc;
+ var elementList;
+ var testAddr;
+ var attrValue;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("emp:address");
+ testAddr = elementList.item(0);
+ assertNotNull("empAddrNotNull",testAddr);
+attrValue = testAddr.getAttributeNS("http://www.nist.gov","domestic");
+ assertEquals("attrValue","Yes",attrValue);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getAttributeNS05</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getAttributeNodeNS01.html b/dom/tests/mochitest/dom-level2-core/test_getAttributeNodeNS01.html
new file mode 100644
index 0000000000..59b2aed7d8
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getAttributeNodeNS01.html
@@ -0,0 +1,126 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getAttributeNodeNS01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getAttributeNodeNS01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getAttributeNodeNS01';
+
+
+/**
+*
+ The "getAttributeNodeNS(namespaceURI,localName)" method retrieves an
+ attribute node by local name and NamespaceURI.
+
+ Retrieve the first emp:address element node.
+ The getAttributeNodeNS method returns an
+ Attr node, the "value" can be examined to ensure the
+ proper attribute node was retrieved. This attribute
+ value should be null since there is no such attribute.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElGetAtNodeNS
+*/
+function getAttributeNodeNS01() {
+ var success;
+ if(checkInitialization(builder, "getAttributeNodeNS01") != null) return;
+ var namespaceURI = "http://www.nist.gov";
+ var localName = "invalidlocalname";
+ var doc;
+ var elementList;
+ var testAddr;
+ var attribute;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("emp:address");
+ testAddr = elementList.item(0);
+ assertNotNull("empAddrNotNull",testAddr);
+attribute = testAddr.getAttributeNodeNS(namespaceURI,localName);
+ assertNull("throw_Null",attribute);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getAttributeNodeNS01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getAttributeNodeNS02.html b/dom/tests/mochitest/dom-level2-core/test_getAttributeNodeNS02.html
new file mode 100644
index 0000000000..b55a8f97bd
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getAttributeNodeNS02.html
@@ -0,0 +1,127 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getAttributeNodeNS02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getAttributeNodeNS02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getAttributeNodeNS02';
+
+
+/**
+*
+ The "getAttributeNodeNS(namespaceURI,localName)" method retrieves an
+ attribute node by local name and NamespaceURI.
+
+ Retrieve the first emp:address element node.
+ The getAttributeNodeNS method returns an
+ Attr node, the "value" can be examined to ensure the
+ proper attribute node was retrieved.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-F68D095
+*/
+function getAttributeNodeNS02() {
+ var success;
+ if(checkInitialization(builder, "getAttributeNodeNS02") != null) return;
+ var doc;
+ var elementList;
+ var testAddr;
+ var attribute;
+ var attrName;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("emp:address");
+ testAddr = elementList.item(0);
+ assertNotNull("empAddrNotNull",testAddr);
+attribute = testAddr.getAttributeNodeNS("http://www.nist.gov","domestic");
+ attrName = attribute.nodeName;
+
+ assertEquals("attrName","emp:domestic",attrName);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getAttributeNodeNS02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getElementById01.html b/dom/tests/mochitest/dom-level2-core/test_getElementById01.html
new file mode 100644
index 0000000000..8282eba33d
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getElementById01.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementById01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getElementById01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("validating", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getElementById01';
+
+
+/**
+*
+ The "getElementById(elementId)" method for a
+ Document should return an element whose ID matches elementId.
+
+ Invoke method getElementById(elementId) on this document
+ with elementId equals "CANADA". Method should return an element
+ whose tag name is "emp:address".
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-104682815
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=383
+*/
+function getElementById01() {
+ var success;
+ if(checkInitialization(builder, "getElementById01") != null) return;
+ var doc;
+ var element;
+ var tagname;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ element = doc.getElementById("CANADA");
+ tagname = element.tagName;
+
+ assertEquals("throw_Equals","emp:address",tagname);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementById01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getElementById02.html b/dom/tests/mochitest/dom-level2-core/test_getElementById02.html
new file mode 100644
index 0000000000..2e145880db
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getElementById02.html
@@ -0,0 +1,118 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementById02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getElementById02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getElementById02';
+
+
+/**
+*
+
+ The "getElementById(elementId)" method for a
+ Document should return null if elementId does not identify any
+ elements in this document.
+
+ Invoke method getElementById(elementId) on this document
+ with elementId equals "Cancun". Method should return null.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getElBId
+*/
+function getElementById02() {
+ var success;
+ if(checkInitialization(builder, "getElementById02") != null) return;
+ var doc;
+ var element;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ element = doc.getElementById("Cancun");
+ assertNull("throw_Null",element);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementById02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS01.html b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS01.html
new file mode 100644
index 0000000000..f83e13382c
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS01.html
@@ -0,0 +1,128 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getElementsByTagNameNS01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getElementsByTagNameNS01';
+
+
+/**
+*
+ Invoke method getElementsByTagNameNS(namespaceURI,localName) on this document
+ with namespaceURI and localName as "*" and check size of returned node list.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getElBTNNS
+*/
+function getElementsByTagNameNS01() {
+ var success;
+ if(checkInitialization(builder, "getElementsByTagNameNS01") != null) return;
+ var namespaceURI = "*";
+ var localName = "*";
+ var doc;
+ var newList;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ newList = doc.getElementsByTagNameNS(namespaceURI,localName);
+
+ if(
+
+ (builder.contentType == "image/svg+xml")
+
+ ) {
+ assertSize("listLength_svg",39,newList);
+
+ }
+
+ else {
+ assertSize("listLength",37,newList);
+
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS02.html b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS02.html
new file mode 100644
index 0000000000..d2705a41ee
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS02.html
@@ -0,0 +1,131 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getElementsByTagNameNS02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getElementsByTagNameNS02';
+
+
+/**
+*
+ The "getElementsByTagNameNS(namespaceURI,localName)" method for a
+ Document should return a new NodeList of all Elements with a given
+ localName and namespaceURI in the order they were encountered in a preorder
+ traversal of the document tree.
+
+ Invoke method getElementsByTagNameNS(namespaceURI,localName) on this document
+ with namespaceURI being " " and localName is "employee".
+ Method should return a new NodeList containing five Elements.
+ Retrieve the FOURTH element whose name should be "emp:employee".
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getElBTNNS
+*/
+function getElementsByTagNameNS02() {
+ var success;
+ if(checkInitialization(builder, "getElementsByTagNameNS02") != null) return;
+ var doc;
+ var newList;
+ var newElement;
+ var prefix;
+ var lname;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ newList = doc.getElementsByTagNameNS("*","employee");
+ assertSize("employeeCount",5,newList);
+newElement = newList.item(3);
+ prefix = newElement.prefix;
+
+ assertEquals("prefix","emp",prefix);
+ lname = newElement.localName;
+
+ assertEquals("lname","employee",lname);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS03.html b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS03.html
new file mode 100644
index 0000000000..de73f9e63c
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS03.html
@@ -0,0 +1,148 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getElementsByTagNameNS03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getElementsByTagNameNS03';
+
+
+/**
+*
+ The "getElementsByTagNameNS(namespaceURI,localName)" method returns a NodeList
+ of all descendant Elements with a given local name and namespace URI in the
+ order in which they are encountered in a preorder traversal of this Element tree.
+
+ Create a NodeList of all the descendant elements
+ using the "http://www.nist.gov" as the namespaceURI and the special value " " as the
+ localName.
+ The method should return a NodeList of elements that have "http://www.nist.gov
+ as a namespace URI.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getElBTNNS
+*/
+function getElementsByTagNameNS03() {
+ var success;
+ if(checkInitialization(builder, "getElementsByTagNameNS03") != null) return;
+ var doc;
+ var elementList;
+ var child;
+ var childName;
+ var result = new Array();
+
+ expectedResult = new Array();
+ expectedResult[0] = "employee";
+ expectedResult[1] = "employeeId";
+ expectedResult[2] = "name";
+ expectedResult[3] = "position";
+ expectedResult[4] = "salary";
+ expectedResult[5] = "gender";
+ expectedResult[6] = "address";
+ expectedResult[7] = "emp:employee";
+ expectedResult[8] = "emp:employeeId";
+ expectedResult[9] = "emp:position";
+ expectedResult[10] = "emp:salary";
+ expectedResult[11] = "emp:gender";
+ expectedResult[12] = "emp:address";
+ expectedResult[13] = "address";
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS("http://www.nist.gov","*");
+ for(var indexN65654 = 0;indexN65654 < elementList.length; indexN65654++) {
+ child = elementList.item(indexN65654);
+ childName = child.nodeName;
+
+ result[result.length] = childName;
+
+ }
+ assertEqualsList("nodeNames",expectedResult,result);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS04.html b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS04.html
new file mode 100644
index 0000000000..8629f09dd5
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS04.html
@@ -0,0 +1,139 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getElementsByTagNameNS04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getElementsByTagNameNS04';
+
+
+/**
+*
+ The "getElementsByTagNameNS(namespaceURI,localName)" method returns a NodeList
+ of all descendant Elements with a given local name and namespace URI in the
+ order in which they are encountered in a preorder traversal of this Element tree.
+
+ Create a NodeList of all the descendant elements
+ using the special value " " as the namespaceURI and "address" as the
+ localName.
+ The method should return a NodeList of Elements that have
+ "address" as the local name.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getElBTNNS
+*/
+function getElementsByTagNameNS04() {
+ var success;
+ if(checkInitialization(builder, "getElementsByTagNameNS04") != null) return;
+ var doc;
+ var elementList;
+ var child;
+ var childName;
+ var result = new Array();
+
+ expectedResult = new Array();
+ expectedResult[0] = "address";
+ expectedResult[1] = "address";
+ expectedResult[2] = "address";
+ expectedResult[3] = "emp:address";
+ expectedResult[4] = "address";
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS("*","address");
+ for(var indexN65625 = 0;indexN65625 < elementList.length; indexN65625++) {
+ child = elementList.item(indexN65625);
+ childName = child.nodeName;
+
+ result[result.length] = childName;
+
+ }
+ assertEqualsList("nodeNames",expectedResult,result);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS05.html b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS05.html
new file mode 100644
index 0000000000..70f4d79e09
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS05.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS05</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getElementsByTagNameNS05'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getElementsByTagNameNS05';
+
+
+/**
+*
+ The "getElementsByTagNameNS(namespaceURI,localName)" method returns a NodeList
+ of all descendant Elements with a given local name and namespace URI in the
+ order in which they are encountered in a preorder traversal of this Element tree.
+
+ Create a NodeList of all the descendant elements
+ using the "http://www.nist.gov" as the namespaceURI and "nomatch" as the
+ localName.
+ The method should return a NodeList whose length is
+ "0".
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getElBTNNS
+*/
+function getElementsByTagNameNS05() {
+ var success;
+ if(checkInitialization(builder, "getElementsByTagNameNS05") != null) return;
+ var namespaceURI = "http://www.nist.gov";
+ var localName = "nomatch";
+ var doc;
+ var elementList;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS(namespaceURI,localName);
+ assertSize("throw_Size",0,elementList);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS05</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS06.html b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS06.html
new file mode 100644
index 0000000000..31c28fec9b
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS06.html
@@ -0,0 +1,121 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS06</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getElementsByTagNameNS06'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getElementsByTagNameNS06';
+
+
+/**
+*
+ The "getElementsByTagNameNS(namespaceURI,localName)" method returns a NodeList
+ of all descendant Elements with a given local name and namespace URI in the
+ order in which they are encountered in a preorder traversal of this Element tree.
+
+ Create a NodeList of all the descendant elements
+ using the "http://www.nomatch.com" as the namespaceURI and "address" as the
+ localName.
+ The method should return a NodeList whose length is
+ "0".
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getElBTNNS
+*/
+function getElementsByTagNameNS06() {
+ var success;
+ if(checkInitialization(builder, "getElementsByTagNameNS06") != null) return;
+ var doc;
+ var elementList;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS("http://www.nomatch.com","address");
+ assertSize("matchSize",0,elementList);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS06</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS07.html b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS07.html
new file mode 100644
index 0000000000..1213a57f1a
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS07.html
@@ -0,0 +1,121 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS07</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getElementsByTagNameNS07'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getElementsByTagNameNS07';
+
+
+/**
+*
+ The "getElementsByTagNameNS(namespaceURI,localName)" method returns a NodeList
+ of all descendant Elements with a given local name and namespace URI in the
+ order in which they are encountered in a preorder traversal of this Element tree.
+
+ Create a NodeList of all the descendant elements
+ using the string "http://www.nist.gov" as the namespaceURI and "address" as the
+ localName.
+ The method should return a NodeList whose length is
+ "3".
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getElBTNNS
+*/
+function getElementsByTagNameNS07() {
+ var success;
+ if(checkInitialization(builder, "getElementsByTagNameNS07") != null) return;
+ var doc;
+ var elementList;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS("http://www.nist.gov","address");
+ assertSize("addresses",3,elementList);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS07</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS08.html b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS08.html
new file mode 100644
index 0000000000..a6d17fc92f
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS08.html
@@ -0,0 +1,133 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS08</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getElementsByTagNameNS08'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getElementsByTagNameNS08';
+
+
+/**
+*
+ Element.getElementsByTagNameNS('*','*') should return all child
+ elements. There is some contention on whether this should match
+ unqualified elements, this test reflects the interpretation that
+ '*' should match elements in all namespaces and unqualified elements.
+
+ Derived from getElementsByTagNameNS01 which tests similar functionality
+ on the Document interface.
+
+* @author Curt Arnold
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-1938918D
+*/
+function getElementsByTagNameNS08() {
+ var success;
+ if(checkInitialization(builder, "getElementsByTagNameNS08") != null) return;
+ var doc;
+ var docElem;
+ var newList;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ docElem = doc.documentElement;
+
+ newList = docElem.getElementsByTagNameNS("*","*");
+
+ if(
+
+ (builder.contentType == "image/svg+xml")
+
+ ) {
+ assertSize("listSize_svg",38,newList);
+
+ }
+
+ else {
+ assertSize("listSize",36,newList);
+
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS08</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS09.html b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS09.html
new file mode 100644
index 0000000000..a0627b4b07
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS09.html
@@ -0,0 +1,137 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS09</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getElementsByTagNameNS09'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getElementsByTagNameNS09';
+
+
+/**
+*
+ The "getElementsByTagNameNS(namespaceURI,localName)" method for a
+ Element should return a new NodeList of all descendant Elements with a given
+ localName and namespaceURI in the order they were encountered in a preorder
+ traversal of the document tree.
+
+ Invoke method getElementsByTagNameNS(namespaceURI,localName) on the document
+ element with namespaceURI being "*" and localName is "employee".
+ Method should return a new NodeList containing five Elements.
+ Retrieve the FOURTH element whose name should be "emp:employee".
+
+ Derived from getElementsByTagNameNS02 and reflects its interpretation
+ that namespace="*" matches namespace unqualified tagnames.
+
+* @author Curt Arnold
+* @author Curt Arnold
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-1938918D
+*/
+function getElementsByTagNameNS09() {
+ var success;
+ if(checkInitialization(builder, "getElementsByTagNameNS09") != null) return;
+ var doc;
+ var newList;
+ var newElement;
+ var prefix;
+ var lname;
+ var docElem;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ docElem = doc.documentElement;
+
+ newList = docElem.getElementsByTagNameNS("*","employee");
+ assertSize("employeeCount",5,newList);
+newElement = newList.item(3);
+ prefix = newElement.prefix;
+
+ assertEquals("prefix","emp",prefix);
+ lname = newElement.localName;
+
+ assertEquals("lname","employee",lname);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS09</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS10.html b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS10.html
new file mode 100644
index 0000000000..0da0362f93
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS10.html
@@ -0,0 +1,153 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS10</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getElementsByTagNameNS10'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getElementsByTagNameNS10';
+
+
+/**
+*
+ The "getElementsByTagNameNS(namespaceURI,localName)" method returns a NodeList
+ of all descendant Elements with a given local name and namespace URI in the
+ order in which they are encountered in a preorder traversal of this Element tree.
+
+ Create a NodeList of all the descendant elements of the document element
+ using the "http://www.nist.gov" as the namespaceURI and the special value "*" as the
+ localName.
+ The method should return a NodeList of elements that have "http://www.nist.gov
+ as a namespace URI.
+
+ Derived from getElementsByTagNameNS03
+
+* @author Curt Arnold
+* @author Curt Arnold
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-1938918D
+*/
+function getElementsByTagNameNS10() {
+ var success;
+ if(checkInitialization(builder, "getElementsByTagNameNS10") != null) return;
+ var doc;
+ var docElem;
+ var elementList;
+ var child;
+ var childName;
+ var result = new Array();
+
+ expectedResult = new Array();
+ expectedResult[0] = "employee";
+ expectedResult[1] = "employeeId";
+ expectedResult[2] = "name";
+ expectedResult[3] = "position";
+ expectedResult[4] = "salary";
+ expectedResult[5] = "gender";
+ expectedResult[6] = "address";
+ expectedResult[7] = "emp:employee";
+ expectedResult[8] = "emp:employeeId";
+ expectedResult[9] = "emp:position";
+ expectedResult[10] = "emp:salary";
+ expectedResult[11] = "emp:gender";
+ expectedResult[12] = "emp:address";
+ expectedResult[13] = "address";
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ docElem = doc.documentElement;
+
+ elementList = docElem.getElementsByTagNameNS("http://www.nist.gov","*");
+ for(var indexN65662 = 0;indexN65662 < elementList.length; indexN65662++) {
+ child = elementList.item(indexN65662);
+ childName = child.nodeName;
+
+ result[result.length] = childName;
+
+ }
+ assertEqualsList("nodeNames",expectedResult,result);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS10</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS11.html b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS11.html
new file mode 100644
index 0000000000..0d1ac477b2
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS11.html
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS11</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getElementsByTagNameNS11'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getElementsByTagNameNS11';
+
+
+/**
+*
+ The "getElementsByTagNameNS(namespaceURI,localName)" method returns a NodeList
+ of all descendant Elements with a given local name and namespace URI in the
+ order in which they are encountered in a preorder traversal of this Element tree.
+
+ Create a NodeList of all the descendant elements
+ using the special value "*" as the namespaceURI and "address" as the
+ localName.
+ The method should return a NodeList of Elements that have
+ "address" as the local name.
+
+ This test is derived from getElementsByTagNameNS04
+
+* @author Curt Arnold
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-1938918D
+*/
+function getElementsByTagNameNS11() {
+ var success;
+ if(checkInitialization(builder, "getElementsByTagNameNS11") != null) return;
+ var doc;
+ var docElem;
+ var elementList;
+ var child;
+ var childName;
+ var result = new Array();
+
+ expectedResult = new Array();
+ expectedResult[0] = "address";
+ expectedResult[1] = "address";
+ expectedResult[2] = "address";
+ expectedResult[3] = "emp:address";
+ expectedResult[4] = "address";
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ docElem = doc.documentElement;
+
+ elementList = docElem.getElementsByTagNameNS("*","address");
+ for(var indexN65630 = 0;indexN65630 < elementList.length; indexN65630++) {
+ child = elementList.item(indexN65630);
+ childName = child.nodeName;
+
+ result[result.length] = childName;
+
+ }
+ assertEqualsList("nodeNames",expectedResult,result);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS11</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS12.html b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS12.html
new file mode 100644
index 0000000000..38b000d502
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS12.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS12</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getElementsByTagNameNS12'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getElementsByTagNameNS12';
+
+
+/**
+*
+ The "getElementsByTagNameNS(namespaceURI,localName)" method returns a NodeList
+ of all descendant Elements with a given local name and namespace URI in the
+ order in which they are encountered in a preorder traversal of this Element tree.
+
+ Create a NodeList of all the descendant elements
+ using the "http://www.nist.gov" as the namespaceURI and "nomatch" as the
+ localName.
+ The method should return a NodeList whose length is "0".
+
+ This test is a modification of getElementsByTagName05
+
+* @author Curt Arnold
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-1938918D
+*/
+function getElementsByTagNameNS12() {
+ var success;
+ if(checkInitialization(builder, "getElementsByTagNameNS12") != null) return;
+ var doc;
+ var docElem;
+ var elementList;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ docElem = doc.documentElement;
+
+ elementList = docElem.getElementsByTagNameNS("http://www.nist.gov","nomatch");
+ assertSize("size",0,elementList);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS12</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS13.html b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS13.html
new file mode 100644
index 0000000000..68c1b1b6c6
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS13.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS13</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getElementsByTagNameNS13'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getElementsByTagNameNS13';
+
+
+/**
+*
+ The "getElementsByTagNameNS(namespaceURI,localName)" method returns a NodeList
+ of all descendant Elements with a given local name and namespace URI in the
+ order in which they are encountered in a preorder traversal of this Element tree.
+
+ Create a NodeList of all the descendant elements
+ using the "http://www.nomatch.com" as the namespaceURI and "address" as the
+ localName.
+ The method should return a NodeList whose length is
+ "0".
+
+* @author Curt Arnold
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-1938918D
+*/
+function getElementsByTagNameNS13() {
+ var success;
+ if(checkInitialization(builder, "getElementsByTagNameNS13") != null) return;
+ var doc;
+ var docElem;
+ var elementList;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ docElem = doc.documentElement;
+
+ elementList = docElem.getElementsByTagNameNS("http://www.nomatch.com","address");
+ assertSize("matchSize",0,elementList);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS13</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS14.html b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS14.html
new file mode 100644
index 0000000000..ddad169e86
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getElementsByTagNameNS14.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS14</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getElementsByTagNameNS14'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getElementsByTagNameNS14';
+
+
+/**
+*
+ The "getElementsByTagNameNS(namespaceURI,localName)" method returns a NodeList
+ of all descendant Elements with a given local name and namespace URI in the
+ order in which they are encountered in a preorder traversal of this Element tree.
+
+ Create a NodeList of all the descendant elements
+ using the string "http://www.nist.gov" as the namespaceURI and "address" as the
+ localName.
+ The method should return a NodeList whose length is
+ "3".
+
+* @author Curt Arnold
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-1938918D
+*/
+function getElementsByTagNameNS14() {
+ var success;
+ if(checkInitialization(builder, "getElementsByTagNameNS14") != null) return;
+ var doc;
+ var docElem;
+ var elementList;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ docElem = doc.documentElement;
+
+ elementList = docElem.getElementsByTagNameNS("http://www.nist.gov","address");
+ assertSize("addresses",3,elementList);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getElementsByTagNameNS14</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getNamedItemNS01.html b/dom/tests/mochitest/dom-level2-core/test_getNamedItemNS01.html
new file mode 100644
index 0000000000..95eaeb9487
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getNamedItemNS01.html
@@ -0,0 +1,130 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getNamedItemNS01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getNamedItemNS01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getNamedItemNS01';
+
+
+/**
+*
+ The "getNamedItemNS(namespaceURI,localName)" method for a
+ NamedNodeMap should return a node specified by localName and namespaceURI
+
+ Retrieve a list of elements with tag name "address".
+ Access the second element from the list and get its attributes.
+ Try to retrieve the attribute node with local name "domestic"
+ and namespace uri "http://www.usa.com" with
+ method getNamedItemNS(namespaceURI,localName).
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-F68D095
+*/
+function getNamedItemNS01() {
+ var success;
+ if(checkInitialization(builder, "getNamedItemNS01") != null) return;
+ var doc;
+ var elementList;
+ var testEmployee;
+ var attributes;
+ var domesticAttr;
+ var attrName;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("address");
+ testEmployee = elementList.item(1);
+ attributes = testEmployee.attributes;
+
+ domesticAttr = attributes.getNamedItemNS("http://www.usa.com","domestic");
+ attrName = domesticAttr.nodeName;
+
+ assertEquals("attrName","dmstc:domestic",attrName);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getNamedItemNS01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getNamedItemNS02.html b/dom/tests/mochitest/dom-level2-core/test_getNamedItemNS02.html
new file mode 100644
index 0000000000..363f5eda30
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getNamedItemNS02.html
@@ -0,0 +1,130 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getNamedItemNS02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getNamedItemNS02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getNamedItemNS02';
+
+
+/**
+*
+ The "getNamedItemNS(namespaceURI,localName)" method for a
+ NamedNodeMap should return null
+ if parameters do not identify any node in this map.
+
+ Retrieve a list of elements with tag name "address".
+ Access the second element from the list and get its attributes.
+ Try to retrieve an attribute node with local name "domest"
+ and namespace uri "http://www.usa.com" with
+ method getNamedItemNS(namespaceURI,localName).
+ This should return null because "domest" does not match any local names in this map.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getNamedItemNS
+*/
+function getNamedItemNS02() {
+ var success;
+ if(checkInitialization(builder, "getNamedItemNS02") != null) return;
+ var namespaceURI = "http://www.usa.com";
+ var localName = "domest";
+ var doc;
+ var elementList;
+ var testEmployee;
+ var attributes;
+ var newAttr;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("address");
+ testEmployee = elementList.item(1);
+ attributes = testEmployee.attributes;
+
+ newAttr = attributes.getNamedItemNS(namespaceURI,localName);
+ assertNull("throw_Null",newAttr);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getNamedItemNS02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getNamedItemNS03.html b/dom/tests/mochitest/dom-level2-core/test_getNamedItemNS03.html
new file mode 100644
index 0000000000..e10a61e047
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getNamedItemNS03.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getNamedItemNS03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getNamedItemNS03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getNamedItemNS03';
+
+
+/**
+*
+Entity nodes are not namespaced and should not be retrievable using
+getNamedItemNS.
+
+* @author Curt Arnold
+* @author Curt Arnold
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getNamedItemNS
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=259
+*/
+function getNamedItemNS03() {
+ var success;
+ if(checkInitialization(builder, "getNamedItemNS03") != null) return;
+ var doc;
+ var docType;
+ var entities;
+ var entity;
+ var nullNS = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ docType = doc.doctype;
+
+ entities = docType.entities;
+
+ assertNotNull("entitiesNotNull",entities);
+entity = entities.getNamedItemNS(nullNS,"ent1");
+ assertNull("entityNull",entity);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getNamedItemNS03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_getNamedItemNS04.html b/dom/tests/mochitest/dom-level2-core/test_getNamedItemNS04.html
new file mode 100644
index 0000000000..6e73498873
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_getNamedItemNS04.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/getNamedItemNS04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['getNamedItemNS04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'getNamedItemNS04';
+
+
+/**
+*
+Notation nodes are not namespaced and should not be retrievable using
+getNamedItemNS.
+
+* @author Curt Arnold
+* @author Curt Arnold
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getNamedItemNS
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=259
+*/
+function getNamedItemNS04() {
+ var success;
+ if(checkInitialization(builder, "getNamedItemNS04") != null) return;
+ var doc;
+ var docType;
+ var notations;
+ var notation;
+ var nullNS = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ docType = doc.doctype;
+
+ notations = docType.notations;
+
+ assertNotNull("notationsNotNull",notations);
+notation = notations.getNamedItemNS(nullNS,"notation1");
+ assertNull("notationNull",notation);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/getNamedItemNS04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_hasAttribute01.html b/dom/tests/mochitest/dom-level2-core/test_hasAttribute01.html
new file mode 100644
index 0000000000..a6b29858d6
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_hasAttribute01.html
@@ -0,0 +1,120 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/hasAttribute01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['hasAttribute01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'hasAttribute01';
+
+
+/**
+*
+ The "hasAttribute()" method for an Element should
+ return true if the element has an attribute with the given name.
+
+ Retrieve the first "address" element and the "hasAttribute()" method
+ should return false since the element does not have a default value.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElHasAttr
+*/
+function hasAttribute01() {
+ var success;
+ if(checkInitialization(builder, "hasAttribute01") != null) return;
+ var doc;
+ var elementList;
+ var testNode;
+ var state;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ elementList = doc.getElementsByTagName("address");
+ testNode = elementList.item(4);
+ state = testNode.hasAttribute("domestic");
+ assertFalse("throw_False",state);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/hasAttribute01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_hasAttribute02.html b/dom/tests/mochitest/dom-level2-core/test_hasAttribute02.html
new file mode 100644
index 0000000000..bd4b87c9a1
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_hasAttribute02.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/hasAttribute02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['hasAttribute02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("validating", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'hasAttribute02';
+
+
+/**
+*
+ The "hasAttribute()" method for an Element should
+ return true if the element has an attribute with the given name.
+
+ Retrieve the first "address" element and the "hasAttribute()" method
+ should return true since the attribute "street" has a default value.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElHasAttr
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=238
+*/
+function hasAttribute02() {
+ var success;
+ if(checkInitialization(builder, "hasAttribute02") != null) return;
+ var doc;
+ var elementList;
+ var testNode;
+ var state;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ elementList = doc.getElementsByTagName("address");
+ testNode = elementList.item(0);
+ state = testNode.hasAttribute("street");
+ assertTrue("throw_True",state);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/hasAttribute02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_hasAttribute03.html b/dom/tests/mochitest/dom-level2-core/test_hasAttribute03.html
new file mode 100644
index 0000000000..fd09860de2
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_hasAttribute03.html
@@ -0,0 +1,120 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/hasAttribute03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['hasAttribute03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'hasAttribute03';
+
+
+/**
+*
+ The "hasAttribute()" method for an Element should
+ return false if the element does not have an attribute with the given name.
+
+ Retrieve the first "address" element and the "hasAttribute()" method
+ should return false since the element does not have "nomatch" as an attribute.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElHasAttr
+*/
+function hasAttribute03() {
+ var success;
+ if(checkInitialization(builder, "hasAttribute03") != null) return;
+ var doc;
+ var elementList;
+ var testNode;
+ var state;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ elementList = doc.getElementsByTagName("address");
+ testNode = elementList.item(0);
+ state = testNode.hasAttribute("nomatch");
+ assertFalse("throw_False",state);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/hasAttribute03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_hasAttribute04.html b/dom/tests/mochitest/dom-level2-core/test_hasAttribute04.html
new file mode 100644
index 0000000000..6213e84309
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_hasAttribute04.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/hasAttribute04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['hasAttribute04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("validating", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'hasAttribute04';
+
+
+/**
+*
+ The "hasAttribute()" method for an Element should
+ return true if the element has an attribute with the given name.
+
+ Retrieve the first "address" element and the "hasAttribute()" method
+ should return true since the element has "domestic" as an attribute.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElHasAttr
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=238
+*/
+function hasAttribute04() {
+ var success;
+ if(checkInitialization(builder, "hasAttribute04") != null) return;
+ var doc;
+ var elementList;
+ var testNode;
+ var state;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("address");
+ testNode = elementList.item(0);
+ state = testNode.hasAttribute("dmstc:domestic");
+ assertTrue("hasDomesticAttr",state);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/hasAttribute04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_hasAttributeNS01.html b/dom/tests/mochitest/dom-level2-core/test_hasAttributeNS01.html
new file mode 100644
index 0000000000..182b102a25
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_hasAttributeNS01.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/hasAttributeNS01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['hasAttributeNS01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'hasAttributeNS01';
+
+
+/**
+*
+
+ The "hasAttributeNS()" method for an Element should
+ return false if the element does not have an attribute with the given local name
+ and/or a namespace URI specified on this element or does not have a default value.
+
+ Retrieve the first "address" element and the "hasAttributeNS()" method
+ should return false since the element has "nomatch" as the local name
+ and "http://www.usa.com" as the namespace URI.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElHasAttrNS
+*/
+function hasAttributeNS01() {
+ var success;
+ if(checkInitialization(builder, "hasAttributeNS01") != null) return;
+ var localName = "nomatch";
+ var namespaceURI = "http://www.usa.com";
+ var doc;
+ var elementList;
+ var testNode;
+ var state;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("address");
+ testNode = elementList.item(0);
+ state = testNode.hasAttributeNS(namespaceURI,localName);
+ assertFalse("throw_False",state);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/hasAttributeNS01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_hasAttributeNS02.html b/dom/tests/mochitest/dom-level2-core/test_hasAttributeNS02.html
new file mode 100644
index 0000000000..e3222ca86a
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_hasAttributeNS02.html
@@ -0,0 +1,124 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/hasAttributeNS02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['hasAttributeNS02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'hasAttributeNS02';
+
+
+/**
+*
+ The "hasAttributeNS()" method for an Element should
+ return false if the element does not have an attribute with the given local name
+ and/or namespace URI specified on this element or does not have a default value.
+
+ Retrieve the first "address" element and the "hasAttributeNS()" method
+ should return false since the element has "domestic" as the local name
+ and "http://www.nomatch.com" as the namespace URI.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElHasAttrNS
+*/
+function hasAttributeNS02() {
+ var success;
+ if(checkInitialization(builder, "hasAttributeNS02") != null) return;
+ var localName = "domestic";
+ var namespaceURI = "http://www.nomatch.com";
+ var doc;
+ var elementList;
+ var testNode;
+ var state;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("address");
+ testNode = elementList.item(0);
+ state = testNode.hasAttributeNS(namespaceURI,localName);
+ assertFalse("throw_False",state);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/hasAttributeNS02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_hasAttributeNS03.html b/dom/tests/mochitest/dom-level2-core/test_hasAttributeNS03.html
new file mode 100644
index 0000000000..45bebc2c61
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_hasAttributeNS03.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/hasAttributeNS03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['hasAttributeNS03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'hasAttributeNS03';
+
+
+/**
+*
+ The "hasAttributeNS()" method for an Element should
+ return false if the element does not have an attribute with the given local name
+ and/or namespace URI specified on this element or does not have a default value.
+
+ Retrieve the first "emp:address" element.
+ The boolean value returned by the "hasAttributeNS()" should be false
+ since the attribute does not have a default value.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElHasAttrNS
+*/
+function hasAttributeNS03() {
+ var success;
+ if(checkInitialization(builder, "hasAttributeNS03") != null) return;
+ var localName = "blank";
+ var namespaceURI = "http://www.nist.gov";
+ var doc;
+ var elementList;
+ var testNode;
+ var state;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("emp:address");
+ testNode = elementList.item(0);
+ assertNotNull("empAddrNotNull",testNode);
+state = testNode.hasAttributeNS(namespaceURI,localName);
+ assertFalse("throw_False",state);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/hasAttributeNS03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_hasAttributeNS04.html b/dom/tests/mochitest/dom-level2-core/test_hasAttributeNS04.html
new file mode 100644
index 0000000000..a811705656
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_hasAttributeNS04.html
@@ -0,0 +1,127 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/hasAttributeNS04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['hasAttributeNS04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+ setImplementationAttribute("validating", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'hasAttributeNS04';
+
+
+/**
+*
+ The "hasAttributeNS()" method for an Element should
+ return true if the attribute with the given local name
+ and namespace URI has a default value.
+
+ Retrieve the first "emp:address" element.
+ The boolean value returned by the "hasAttributeNS()" should be true
+ since the attribute has a default value.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElHasAttrNS
+*/
+function hasAttributeNS04() {
+ var success;
+ if(checkInitialization(builder, "hasAttributeNS04") != null) return;
+ var localName = "district";
+ var namespaceURI = "http://www.nist.gov";
+ var doc;
+ var elementList;
+ var testNode;
+ var state;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("emp:address");
+ testNode = elementList.item(0);
+ assertNotNull("empAddressNotNull",testNode);
+state = testNode.hasAttributeNS(namespaceURI,localName);
+ assertTrue("hasAttribute",state);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/hasAttributeNS04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_hasAttributeNS05.html b/dom/tests/mochitest/dom-level2-core/test_hasAttributeNS05.html
new file mode 100644
index 0000000000..1312958f87
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_hasAttributeNS05.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/hasAttributeNS05</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['hasAttributeNS05'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'hasAttributeNS05';
+
+
+/**
+*
+ The "hasAttributeNS()" method for an Element should
+ return true if the element has an attribute with the given local name
+ and the namespace URI is specified on this element or has a default value.
+
+ Retrieve the first "address" element and the "hasAttributeNS()" method
+ should return true since the element has "domestic" as the local name
+ and "http://www.usa.com" as the namespace URI.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElHasAttrNS
+*/
+function hasAttributeNS05() {
+ var success;
+ if(checkInitialization(builder, "hasAttributeNS05") != null) return;
+ var localName = "domestic";
+ var namespaceURI = "http://www.usa.com";
+ var doc;
+ var elementList;
+ var testNode;
+ var state;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("address");
+ testNode = elementList.item(0);
+ state = testNode.hasAttributeNS(namespaceURI,localName);
+ assertTrue("hasAttribute",state);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/hasAttributeNS05</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_hasAttributes01.html b/dom/tests/mochitest/dom-level2-core/test_hasAttributes01.html
new file mode 100644
index 0000000000..dce45f6536
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_hasAttributes01.html
@@ -0,0 +1,120 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/hasAttributes01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['hasAttributes01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'hasAttributes01';
+
+
+/**
+*
+ The "hasAttributes()" method for a node should
+ return false if the node does not have an attribute.
+
+ Retrieve the first "name" node and invoke the "hasAttributes()" method.
+ The method should return false since the node does not have an attribute.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-NodeHasAttrs
+*/
+function hasAttributes01() {
+ var success;
+ if(checkInitialization(builder, "hasAttributes01") != null) return;
+ var doc;
+ var addrList;
+ var addrNode;
+ var state;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ addrList = doc.getElementsByTagName("name");
+ addrNode = addrList.item(0);
+ state = addrNode.hasAttributes();
+ assertFalse("throw_False",state);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/hasAttributes01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_hasAttributes02.html b/dom/tests/mochitest/dom-level2-core/test_hasAttributes02.html
new file mode 100644
index 0000000000..b560093d0b
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_hasAttributes02.html
@@ -0,0 +1,120 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/hasAttributes02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['hasAttributes02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'hasAttributes02';
+
+
+/**
+*
+ The "hasAttributes()" method for a node should
+ return true if the node has attributes.
+
+ Retrieve the first address node and the "hasAttributes()" method
+ should return true since the node has "domestic" as an attribute.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-NodeHasAttrs
+*/
+function hasAttributes02() {
+ var success;
+ if(checkInitialization(builder, "hasAttributes02") != null) return;
+ var doc;
+ var addrList;
+ var addrNode;
+ var state;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ addrList = doc.getElementsByTagName("address");
+ addrNode = addrList.item(0);
+ state = addrNode.hasAttributes();
+ assertTrue("throw_True",state);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/hasAttributes02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_hc_namednodemapinvalidtype1.html b/dom/tests/mochitest/dom-level2-core/test_hc_namednodemapinvalidtype1.html
new file mode 100644
index 0000000000..264368712a
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_hc_namednodemapinvalidtype1.html
@@ -0,0 +1,133 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/hc_namednodemapinvalidtype1</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['hc_namednodemapinvalidtype1'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "hc_staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'hc_namednodemapinvalidtype1';
+
+
+/**
+*
+Attempt to insert an element into an attribute list,
+should raise a HIERARCHY_REQUEST_ERR.
+
+* @author Curt Arnold
+* @see http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core#xpointer(id('ID-258A00AF')/constant[@name='HIERARCHY_REQUEST_ERR'])
+* @see http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core#ID-1025163788
+* @see http://www.w3.org/2000/11/DOM-Level-2-errata#core-4
+*/
+function hc_namednodemapinvalidtype1() {
+ var success;
+ if(checkInitialization(builder, "hc_namednodemapinvalidtype1") != null) return;
+ var doc;
+ var attributes;
+ var docElem;
+ var newElem;
+ var retval;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "hc_staff");
+ docElem = doc.documentElement;
+
+ attributes = docElem.attributes;
+
+ newElem = doc.createElement("html");
+
+ {
+ success = false;
+ try {
+ retval = attributes.setNamedItem(newElem);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 3);
+ }
+ assertTrue("throw_HIERARCHY_REQUEST_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/hc_namednodemapinvalidtype1</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+<iframe name="doc" src="files/hc_staff.html"></iframe>
+<br>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_hc_nodedocumentfragmentnormalize1.html b/dom/tests/mochitest/dom-level2-core/test_hc_nodedocumentfragmentnormalize1.html
new file mode 100644
index 0000000000..555523609f
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_hc_nodedocumentfragmentnormalize1.html
@@ -0,0 +1,130 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/hc_nodedocumentfragmentnormalize1</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['hc_nodedocumentfragmentnormalize1'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "hc_staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'hc_nodedocumentfragmentnormalize1';
+
+
+/**
+*
+Create a document fragment with two adjacent text nodes, normalize and see if the text nodes
+were combined.
+
+* @author Curt Arnold
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-F68D095
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-B63ED1A3
+*/
+function hc_nodedocumentfragmentnormalize1() {
+ var success;
+ if(checkInitialization(builder, "hc_nodedocumentfragmentnormalize1") != null) return;
+ var doc;
+ var docFragment;
+ var nodeValue;
+ var txtNode;
+ var retval;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "hc_staff");
+ docFragment = doc.createDocumentFragment();
+ txtNode = doc.createTextNode("foo");
+ retval = docFragment.appendChild(txtNode);
+ txtNode = doc.createTextNode("bar");
+ retval = docFragment.appendChild(txtNode);
+ docFragment.normalize();
+ txtNode = docFragment.firstChild;
+
+ nodeValue = txtNode.nodeValue;
+
+ assertEquals("normalizedNodeValue","foobar",nodeValue);
+ retval = txtNode.nextSibling;
+
+ assertNull("singleChild",retval);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/hc_nodedocumentfragmentnormalize1</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+<iframe name="doc" src="files/hc_staff.html"></iframe>
+<br>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_hc_nodedocumentfragmentnormalize2.html b/dom/tests/mochitest/dom-level2-core/test_hc_nodedocumentfragmentnormalize2.html
new file mode 100644
index 0000000000..360be4a2d7
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_hc_nodedocumentfragmentnormalize2.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/hc_nodedocumentfragmentnormalize2</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['hc_nodedocumentfragmentnormalize2'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "hc_staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'hc_nodedocumentfragmentnormalize2';
+
+
+/**
+*
+Create a document fragment with an empty text node, after normalization there should be no child nodes.
+were combined.
+
+* @author Curt Arnold
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-F68D095
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-B63ED1A3
+*/
+function hc_nodedocumentfragmentnormalize2() {
+ var success;
+ if(checkInitialization(builder, "hc_nodedocumentfragmentnormalize2") != null) return;
+ var doc;
+ var docFragment;
+ var nodeValue;
+ var txtNode;
+ var retval;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "hc_staff");
+ docFragment = doc.createDocumentFragment();
+ txtNode = doc.createTextNode("");
+ retval = docFragment.appendChild(txtNode);
+ docFragment.normalize();
+ txtNode = docFragment.firstChild;
+
+ assertNull("noChild",txtNode);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/hc_nodedocumentfragmentnormalize2</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+<iframe name="doc" src="files/hc_staff.html"></iframe>
+<br>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_importNode01.html b/dom/tests/mochitest/dom-level2-core/test_importNode01.html
new file mode 100644
index 0000000000..182f246f1c
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_importNode01.html
@@ -0,0 +1,181 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['importNode01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ docsLoaded += preload(aNewDocRef, "aNewDoc", "staffNS");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'importNode01';
+
+
+/**
+*
+ The "importNode(importedNode,deep)" method for a
+ Document should import the given importedNode into that Document.
+ The importedNode is of type Attr.
+ The ownerElement is set to null. Specified flag is set to true.
+ Children is imported.
+
+ Create a new attribute whose name is "elem:attr1" in a different document.
+ Create a child Text node with value "importedText" for the attribute node above.
+ Invoke method importNode(importedNode,deep) on this document with
+ importedNode being the newly created attribute.
+ Method should return a node whose name matches "elem:attr1" and a child node
+ whose value equals "importedText".
+ The returned node should belong to this document whose systemId is "staff.dtd"
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function importNode01() {
+ var success;
+ if(checkInitialization(builder, "importNode01") != null) return;
+ var doc;
+ var aNewDoc;
+ var newAttr;
+ var importedChild;
+ var aNode;
+ var ownerDocument;
+ var attrOwnerElement;
+ var docType;
+ var system;
+ var specified;
+ var childList;
+ var nodeName;
+ var child;
+ var childValue;
+ var result = new Array();
+
+ expectedResult = new Array();
+ expectedResult[0] = "elem:attr1";
+ expectedResult[1] = "importedText";
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ aNewDoc = load(aNewDocRef, "aNewDoc", "staffNS");
+ newAttr = aNewDoc.createAttribute("elem:attr1");
+ importedChild = aNewDoc.createTextNode("importedText");
+ aNode = newAttr.appendChild(importedChild);
+ aNode = doc.importNode(newAttr,false);
+ ownerDocument = aNode.ownerDocument;
+
+ docType = ownerDocument.doctype;
+
+ system = docType.systemId;
+
+ assertNotNull("aNode",aNode);
+assertURIEquals("systemId",null,null,null,"staffNS.dtd",null,null,null,null,system);
+attrOwnerElement = aNode.ownerElement;
+
+ assertNull("ownerElement",attrOwnerElement);
+ specified = aNode.specified;
+
+ assertTrue("specified",specified);
+childList = aNode.childNodes;
+
+ assertSize("childList",1,childList);
+nodeName = aNode.nodeName;
+
+ assertEquals("nodeName","elem:attr1",nodeName);
+ child = aNode.firstChild;
+
+ childValue = child.nodeValue;
+
+ assertEquals("childValue","importedText",childValue);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_importNode02.html b/dom/tests/mochitest/dom-level2-core/test_importNode02.html
new file mode 100644
index 0000000000..a2b4d0db3f
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_importNode02.html
@@ -0,0 +1,148 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['importNode02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ docsLoaded += preload(aNewDocRef, "aNewDoc", "staffNS");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'importNode02';
+
+
+/**
+*
+ The "importNode(importedNode,deep)" method for a
+ Document should import the given importedNode into that Document.
+ The importedNode is of type CData_Section.
+
+ Create a CDATASection node with value being the string "this is CDATASection data" in
+ a different document. Invoke method importNode(importedNode,deep) on
+ this document. Method should return a CDATASection node whose value matches
+ the above string. The returned node should belong to this document whose systemId is "staff.dtd"
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function importNode02() {
+ var success;
+ if(checkInitialization(builder, "importNode02") != null) return;
+ var doc;
+ var aNewDoc;
+ var cDataSec;
+ var aNode;
+ var ownerDocument;
+ var docType;
+ var system;
+ var value;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ aNewDoc = load(aNewDocRef, "aNewDoc", "staffNS");
+ cDataSec = aNewDoc.createCDATASection("this is CDATASection data");
+ aNode = doc.importNode(cDataSec,false);
+ ownerDocument = aNode.ownerDocument;
+
+ assertNotNull("ownerDocumentNotNull",ownerDocument);
+docType = ownerDocument.doctype;
+
+ system = docType.systemId;
+
+ assertURIEquals("dtdSystemId",null,null,null,"staffNS.dtd",null,null,null,null,system);
+value = aNode.nodeValue;
+
+ assertEquals("nodeValue","this is CDATASection data",value);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_importNode03.html b/dom/tests/mochitest/dom-level2-core/test_importNode03.html
new file mode 100644
index 0000000000..3940825641
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_importNode03.html
@@ -0,0 +1,149 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['importNode03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ docsLoaded += preload(aNewDocRef, "aNewDoc", "staffNS");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'importNode03';
+
+
+/**
+*
+ The "importNode(importedNode,deep)" method for a
+ Document should import the given importedNode into that Document.
+ The importedNode is of type Comment.
+
+ Create a comment node with value being the string "this is a comment" in
+ a different document. Invoke method importNode(importedNode,deep) on
+ this document. Method should return a comment node whose value matches
+ the above string. The returned node should belong to this document whose
+ systemId is "staff.dtd"
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function importNode03() {
+ var success;
+ if(checkInitialization(builder, "importNode03") != null) return;
+ var doc;
+ var aNewDoc;
+ var comment;
+ var aNode;
+ var ownerDocument;
+ var docType;
+ var system;
+ var value;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ aNewDoc = load(aNewDocRef, "aNewDoc", "staffNS");
+ comment = aNewDoc.createComment("this is a comment");
+ aNode = doc.importNode(comment,false);
+ ownerDocument = aNode.ownerDocument;
+
+ assertNotNull("ownerDocumentNotNull",ownerDocument);
+docType = ownerDocument.doctype;
+
+ system = docType.systemId;
+
+ assertURIEquals("systemId",null,null,null,"staffNS.dtd",null,null,null,null,system);
+value = aNode.nodeValue;
+
+ assertEquals("nodeValue","this is a comment",value);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_importNode04.html b/dom/tests/mochitest/dom-level2-core/test_importNode04.html
new file mode 100644
index 0000000000..6cb677d903
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_importNode04.html
@@ -0,0 +1,149 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['importNode04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ docsLoaded += preload(aNewDocRef, "aNewDoc", "staff");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'importNode04';
+
+
+/**
+*
+ The "importNode(importedNode,deep)" method for a
+ Document should import the given importedNode into that Document.
+ The importedNode is of type Document_Fragment.
+
+ Create a DocumentFragment in a different document.
+ Create a Comment child node for the Document Fragment.
+ Invoke method importNode(importedNode,deep) on this document
+ with importedNode being the newly created DocumentFragment.
+ Method should return a node of type DocumentFragment whose child has
+ comment value "descendant1".
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function importNode04() {
+ var success;
+ if(checkInitialization(builder, "importNode04") != null) return;
+ var doc;
+ var aNewDoc;
+ var docFrag;
+ var comment;
+ var aNode;
+ var children;
+ var child;
+ var childValue;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ aNewDoc = load(aNewDocRef, "aNewDoc", "staff");
+ docFrag = aNewDoc.createDocumentFragment();
+ comment = aNewDoc.createComment("descendant1");
+ aNode = docFrag.appendChild(comment);
+ aNode = doc.importNode(docFrag,true);
+ children = aNode.childNodes;
+
+ assertSize("throw_Size",1,children);
+child = aNode.firstChild;
+
+ childValue = child.nodeValue;
+
+ assertEquals("descendant1","descendant1",childValue);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_importNode05.html b/dom/tests/mochitest/dom-level2-core/test_importNode05.html
new file mode 100644
index 0000000000..b03589cd17
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_importNode05.html
@@ -0,0 +1,155 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode05</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['importNode05'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ docsLoaded += preload(aNewDocRef, "aNewDoc", "staffNS");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'importNode05';
+
+
+/**
+*
+ The "importNode(importedNode,deep)" method for a
+ Document should import the given importedNode into that Document.
+ The importedNode is of type Element.
+
+ Retrieve element "emp:address" from staffNS.xml document.
+ Invoke method importNode(importedNode,deep) on this document
+ with importedNode being the element from above and deep is false.
+ Method should return an element node whose name matches "emp:address"
+ and whose children are not imported. The returned node should
+ belong to this document whose systemId is "staff.dtd"
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function importNode05() {
+ var success;
+ if(checkInitialization(builder, "importNode05") != null) return;
+ var doc;
+ var aNewDoc;
+ var element;
+ var aNode;
+ var hasChild;
+ var ownerDocument;
+ var docType;
+ var system;
+ var name;
+ var addresses;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ aNewDoc = load(aNewDocRef, "aNewDoc", "staffNS");
+ addresses = aNewDoc.getElementsByTagName("emp:address");
+ element = addresses.item(0);
+ assertNotNull("empAddressNotNull",element);
+aNode = doc.importNode(element,false);
+ hasChild = aNode.hasChildNodes();
+ assertFalse("hasChild",hasChild);
+ownerDocument = aNode.ownerDocument;
+
+ docType = ownerDocument.doctype;
+
+ system = docType.systemId;
+
+ assertURIEquals("dtdSystemId",null,null,null,"staffNS.dtd",null,null,null,null,system);
+name = aNode.nodeName;
+
+ assertEquals("nodeName","emp:address",name);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode05</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_importNode06.html b/dom/tests/mochitest/dom-level2-core/test_importNode06.html
new file mode 100644
index 0000000000..cd6223b2bf
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_importNode06.html
@@ -0,0 +1,151 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode06</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['importNode06'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ docsLoaded += preload(aNewDocRef, "aNewDoc", "staffNS");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'importNode06';
+
+
+/**
+*
+ The "importNode(importedNode,deep)" method for a
+ Document should import the given importedNode into that Document.
+ The importedNode is of type Element.
+
+ Retrieve element "emp:address" from staffNS.xml document.
+ Invoke method importNode(importedNode,deep) on this document
+ with importedNode being the element from above and deep is true.
+ Method should return an element node whose name matches "emp:address" and
+ whose descendant is imported.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function importNode06() {
+ var success;
+ if(checkInitialization(builder, "importNode06") != null) return;
+ var doc;
+ var aNewDoc;
+ var element;
+ var aNode;
+ var hasChild;
+ var name;
+ var child;
+ var value;
+ var addresses;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ aNewDoc = load(aNewDocRef, "aNewDoc", "staffNS");
+ addresses = aNewDoc.getElementsByTagName("emp:address");
+ element = addresses.item(0);
+ assertNotNull("empAddressNotNull",element);
+aNode = doc.importNode(element,true);
+ hasChild = aNode.hasChildNodes();
+ assertTrue("throw_True",hasChild);
+name = aNode.nodeName;
+
+ assertEquals("nodeName","emp:address",name);
+ child = aNode.firstChild;
+
+ value = child.nodeValue;
+
+ assertEquals("nodeValue","27 South Road. Dallas, texas 98556",value);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode06</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_importNode07.html b/dom/tests/mochitest/dom-level2-core/test_importNode07.html
new file mode 100644
index 0000000000..d514e6ff42
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_importNode07.html
@@ -0,0 +1,154 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode07</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['importNode07'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+ setImplementationAttribute("validating", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ docsLoaded += preload(aNewDocRef, "aNewDoc", "staff");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'importNode07';
+
+
+/**
+*
+ The "importNode(importedNode,deep)" method for a
+ Document should import the given importedNode into that Document.
+ The importedNode is of type Element.
+ If this document defines default attributes for this element name (importedNode),
+ those default attributes are assigned.
+
+ Create an element whose name is "emp:employee" in a different document.
+ Invoke method importNode(importedNode,deep) on this document which
+ defines default attribute for the element name "emp:employee".
+ Method should return an the imported element with an assigned default attribute.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=238
+*/
+function importNode07() {
+ var success;
+ if(checkInitialization(builder, "importNode07") != null) return;
+ var doc;
+ var aNewDoc;
+ var element;
+ var aNode;
+ var attributes;
+ var name;
+ var attr;
+ var lname;
+ var namespaceURI = "http://www.nist.gov";
+ var qualifiedName = "emp:employee";
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ aNewDoc = load(aNewDocRef, "aNewDoc", "staff");
+ element = aNewDoc.createElementNS(namespaceURI,qualifiedName);
+ aNode = doc.importNode(element,false);
+ attributes = aNode.attributes;
+
+ assertSize("throw_Size",1,attributes);
+name = aNode.nodeName;
+
+ assertEquals("nodeName","emp:employee",name);
+ attr = attributes.item(0);
+ lname = attr.localName;
+
+ assertEquals("lname","defaultAttr",lname);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode07</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_importNode08.html b/dom/tests/mochitest/dom-level2-core/test_importNode08.html
new file mode 100644
index 0000000000..fdc9ca283b
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_importNode08.html
@@ -0,0 +1,148 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode08</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['importNode08'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ docsLoaded += preload(aNewDocRef, "aNewDoc", "staffNS");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'importNode08';
+
+
+/**
+*
+ The "importNode(importedNode,deep)" method for a
+ Document should import the given importedNode into that Document.
+ The importedNode is of type Document_Fragment.
+
+ Create a DocumentFragment in a different document.
+ Invoke method importNode(importedNode,deep) on this document
+ with importedNode being the newly created DocumentFragment.
+ Method should return an empty DocumentFragment that belongs
+ to this document whose systemId is "staff.dtd"
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-Core-DocType-systemId
+*/
+function importNode08() {
+ var success;
+ if(checkInitialization(builder, "importNode08") != null) return;
+ var doc;
+ var aNewDoc;
+ var docFrag;
+ var aNode;
+ var hasChild;
+ var ownerDocument;
+ var docType;
+ var system;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ aNewDoc = load(aNewDocRef, "aNewDoc", "staffNS");
+ docFrag = aNewDoc.createDocumentFragment();
+ aNode = doc.importNode(docFrag,false);
+ hasChild = aNode.hasChildNodes();
+ assertFalse("hasChild",hasChild);
+ownerDocument = aNode.ownerDocument;
+
+ docType = ownerDocument.doctype;
+
+ system = docType.systemId;
+
+ assertURIEquals("system",null,null,null,"staffNS.dtd",null,null,null,null,system);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode08</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_importNode09.html b/dom/tests/mochitest/dom-level2-core/test_importNode09.html
new file mode 100644
index 0000000000..739c4a2de5
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_importNode09.html
@@ -0,0 +1,166 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode09</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['importNode09'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ docsLoaded += preload(aNewDocRef, "aNewDoc", "staffNS");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'importNode09';
+
+
+/**
+*
+ The "importNode(importedNode,deep)" method for a
+ Document should import the given importedNode into that Document.
+ The importedNode is of type Entity.
+
+ Retrieve entity "ent6" from staffNS.xml document.
+ Invoke method importNode(importedNode,deep) on this document.
+ Method should return a node of type Entity whose publicId, systemId and
+ notationName attributes are copied.
+ The returned node should belong to this document whose systemId is "staff.dtd"
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function importNode09() {
+ var success;
+ if(checkInitialization(builder, "importNode09") != null) return;
+ var doc;
+ var aNewDoc;
+ var doc1Type;
+ var entityList;
+ var entity2;
+ var entity1;
+ var ownerDocument;
+ var docType;
+ var system;
+ var entityName;
+ var publicVal;
+ var notationName;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ aNewDoc = load(aNewDocRef, "aNewDoc", "staffNS");
+ docType = aNewDoc.doctype;
+
+ entityList = docType.entities;
+
+ assertNotNull("entitiesNotNull",entityList);
+entity2 = entityList.getNamedItem("ent6");
+ entity1 = doc.importNode(entity2,false);
+ ownerDocument = entity1.ownerDocument;
+
+ docType = ownerDocument.doctype;
+
+ system = docType.systemId;
+
+ assertURIEquals("dtdSystemId",null,null,null,"staffNS.dtd",null,null,null,null,system);
+entityName = entity1.nodeName;
+
+ assertEquals("entityName","ent6",entityName);
+ publicVal = entity1.publicId;
+
+ assertEquals("entityPublicId","uri",publicVal);
+ system = entity1.systemId;
+
+ assertURIEquals("entitySystemId",null,null,null,"file",null,null,null,null,system);
+notationName = entity1.notationName;
+
+ assertEquals("notationName","notation2",notationName);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode09</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_importNode10.html b/dom/tests/mochitest/dom-level2-core/test_importNode10.html
new file mode 100644
index 0000000000..d209214e58
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_importNode10.html
@@ -0,0 +1,153 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode10</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['importNode10'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ docsLoaded += preload(aNewDocRef, "aNewDoc", "staffNS");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'importNode10';
+
+
+/**
+*
+ The "importNode(importedNode,deep)" method for a
+ Document should import the given importedNode into that Document.
+ The importedNode is of type Entity_Reference.
+ Only the EntityReference is copied, regardless of deep's value.
+
+ Create an entity reference whose name is "entRef1" in a different document.
+ Give it value "entRef1Value".
+ Invoke method importNode(importedNode,deep) on this document with importedNode
+ being "entRef1".
+ Method should return a node of type Entity_Reference (whose value is null) that
+ belongs to this document whose systemId is "staff.dtd".
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function importNode10() {
+ var success;
+ if(checkInitialization(builder, "importNode10") != null) return;
+ var doc;
+ var aNewDoc;
+ var entRef;
+ var aNode;
+ var ownerDocument;
+ var docType;
+ var system;
+ var name;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ aNewDoc = load(aNewDocRef, "aNewDoc", "staffNS");
+ entRef = aNewDoc.createEntityReference("entRef1");
+ assertNotNull("createdEntRefNotNull",entRef);
+entRef.nodeValue = "entRef1Value";
+
+ aNode = doc.importNode(entRef,false);
+ ownerDocument = aNode.ownerDocument;
+
+ docType = ownerDocument.doctype;
+
+ system = docType.systemId;
+
+ assertURIEquals("systemId",null,null,null,"staffNS.dtd",null,null,null,null,system);
+name = aNode.nodeName;
+
+ assertEquals("nodeName","entRef1",name);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode10</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_importNode11.html b/dom/tests/mochitest/dom-level2-core/test_importNode11.html
new file mode 100644
index 0000000000..d1f4727ff0
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_importNode11.html
@@ -0,0 +1,149 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode11</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['importNode11'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ docsLoaded += preload(aNewDocRef, "aNewDoc", "staff");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'importNode11';
+
+
+/**
+*
+ The "importNode(importedNode,deep)" method for a
+ Document should import the given importedNode into that Document.
+ The importedNode is of type Entity_Reference.
+ Only the EntityReference is copied, regardless of deep's value.
+ If the Document provides a definition for the entity name, its value is assigned.
+
+ Create an entity reference whose name is "ent3" in a different document.
+ Invoke method importNode(importedNode,deep) on this document with importedNode
+ being "ent3".
+ Method should return a node of type Entity_Reference whose first child's value is "Texas" as defined
+ in this document.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function importNode11() {
+ var success;
+ if(checkInitialization(builder, "importNode11") != null) return;
+ var doc;
+ var aNewDoc;
+ var entRef;
+ var aNode;
+ var name;
+ var child;
+ var childValue;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ aNewDoc = load(aNewDocRef, "aNewDoc", "staff");
+ entRef = aNewDoc.createEntityReference("ent3");
+ assertNotNull("createdEntRefNotNull",entRef);
+aNode = doc.importNode(entRef,true);
+ name = aNode.nodeName;
+
+ assertEquals("entityName","ent3",name);
+ child = aNode.firstChild;
+
+ assertNotNull("child",child);
+childValue = child.nodeValue;
+
+ assertEquals("childValue","Texas",childValue);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode11</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_importNode12.html b/dom/tests/mochitest/dom-level2-core/test_importNode12.html
new file mode 100644
index 0000000000..797b1191a4
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_importNode12.html
@@ -0,0 +1,162 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode12</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['importNode12'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ docsLoaded += preload(aNewDocRef, "aNewDoc", "staffNS");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'importNode12';
+
+
+/**
+*
+ The "importNode(importedNode,deep)" method for a
+ Document should import the given importedNode into that Document.
+ The importedNode is of type Entity.
+
+ Retrieve entity "ent4" from staffNS.xml document.
+ Invoke method importNode(importedNode,deep) on this document with deep as false.
+ Method should return a node of type Entity whose descendant is copied.
+ The returned node should belong to this document whose systemId is "staffNS.dtd"
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function importNode12() {
+ var success;
+ if(checkInitialization(builder, "importNode12") != null) return;
+ var doc;
+ var aNewDoc;
+ var doc1Type;
+ var entityList;
+ var entity2;
+ var entity1;
+ var ownerDocument;
+ var docType;
+ var system;
+ var entityName;
+ var child;
+ var childName;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ aNewDoc = load(aNewDocRef, "aNewDoc", "staffNS");
+ doc1Type = aNewDoc.doctype;
+
+ entityList = doc1Type.entities;
+
+ assertNotNull("entitiesNotNull",entityList);
+entity2 = entityList.getNamedItem("ent4");
+ entity1 = doc.importNode(entity2,true);
+ ownerDocument = entity1.ownerDocument;
+
+ docType = ownerDocument.doctype;
+
+ system = docType.systemId;
+
+ assertURIEquals("systemId",null,null,null,"staffNS.dtd",null,null,null,null,system);
+entityName = entity1.nodeName;
+
+ assertEquals("entityName","ent4",entityName);
+ child = entity1.firstChild;
+
+ assertNotNull("notnull",child);
+childName = child.nodeName;
+
+ assertEquals("childName","entElement1",childName);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode12</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_importNode13.html b/dom/tests/mochitest/dom-level2-core/test_importNode13.html
new file mode 100644
index 0000000000..2b217c8c46
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_importNode13.html
@@ -0,0 +1,158 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode13</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['importNode13'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ docsLoaded += preload(aNewDocRef, "aNewDoc", "staffNS");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'importNode13';
+
+
+/**
+*
+ The "importNode(importedNode,deep)" method for a
+ Document should import the given importedNode into that Document.
+ The importedNode is of type Notation.
+
+ Retrieve notation named "notation1" from document staffNS.xml.
+ Invoke method importNode(importedNode,deep) where importedNode
+ contains the retrieved notation and deep is false. Method should
+ return a node of type notation whose name is "notation1".
+ The returned node should belong to this document whose systemId is "staff.dtd"
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function importNode13() {
+ var success;
+ if(checkInitialization(builder, "importNode13") != null) return;
+ var doc;
+ var aNewDoc;
+ var doc1Type;
+ var notationList;
+ var notation;
+ var aNode;
+ var ownerDocument;
+ var docType;
+ var system;
+ var publicVal;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ aNewDoc = load(aNewDocRef, "aNewDoc", "staffNS");
+ doc1Type = aNewDoc.doctype;
+
+ notationList = doc1Type.notations;
+
+ assertNotNull("notationsNotNull",notationList);
+notation = notationList.getNamedItem("notation1");
+ aNode = doc.importNode(notation,false);
+ ownerDocument = aNode.ownerDocument;
+
+ docType = ownerDocument.doctype;
+
+ system = docType.systemId;
+
+ assertURIEquals("systemId",null,null,null,"staffNS.dtd",null,null,null,null,system);
+publicVal = aNode.publicId;
+
+ assertEquals("publicId","notation1File",publicVal);
+ system = aNode.systemId;
+
+ assertNull("notationSystemId",system);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode13</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_importNode14.html b/dom/tests/mochitest/dom-level2-core/test_importNode14.html
new file mode 100644
index 0000000000..f58e7827d7
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_importNode14.html
@@ -0,0 +1,154 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode14</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['importNode14'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ docsLoaded += preload(aNewDocRef, "aNewDoc", "staffNS");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'importNode14';
+
+
+/**
+*
+ The "importNode(importedNode,deep)" method for a
+ Document should import the given importedNode into that Document.
+ The importedNode is of type Processing Instruction.
+
+ Create a processing instruction with target as "target1" and data as "data1"
+ in a different document. Invoke method importNode(importedNode,deep) on this document.
+ Method should return a processing instruction whose target and data match the given
+ parameters. The returned PI should belong to this document whose systemId is "staff.dtd".
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function importNode14() {
+ var success;
+ if(checkInitialization(builder, "importNode14") != null) return;
+ var doc;
+ var aNewDoc;
+ var pi;
+ var aNode;
+ var ownerDocument;
+ var docType;
+ var system;
+ var target;
+ var data;
+ var result = new Array();
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ aNewDoc = load(aNewDocRef, "aNewDoc", "staffNS");
+ pi = aNewDoc.createProcessingInstruction("target1","data1");
+ aNode = doc.importNode(pi,false);
+ ownerDocument = aNode.ownerDocument;
+
+ assertNotNull("ownerDocumentNotNull",ownerDocument);
+docType = ownerDocument.doctype;
+
+ system = docType.systemId;
+
+ assertURIEquals("systemId",null,null,null,"staffNS.dtd",null,null,null,null,system);
+target = aNode.target;
+
+ assertEquals("piTarget","target1",target);
+ data = aNode.data;
+
+ assertEquals("piData","data1",data);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode14</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_importNode15.html b/dom/tests/mochitest/dom-level2-core/test_importNode15.html
new file mode 100644
index 0000000000..35c8c5a49c
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_importNode15.html
@@ -0,0 +1,149 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode15</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['importNode15'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ docsLoaded += preload(aNewDocRef, "aNewDoc", "staffNS");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'importNode15';
+
+
+/**
+*
+ The "importNode(importedNode,deep)" method for a
+ Document should import the given importedNode into that Document.
+ The importedNode is of type Text.
+
+ Create a text node with value being the string "this is text data" in
+ a different document. Invoke method importNode(importedNode,deep) on
+ this document. Method should return a text node whose value matches
+ the above string. The returned node should belong to this document
+ whose systemId is "staff.dtd"
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+*/
+function importNode15() {
+ var success;
+ if(checkInitialization(builder, "importNode15") != null) return;
+ var doc;
+ var aNewDoc;
+ var text;
+ var aNode;
+ var ownerDocument;
+ var docType;
+ var system;
+ var value;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ var aNewDocRef = null;
+ if (typeof(this.aNewDoc) != 'undefined') {
+ aNewDocRef = this.aNewDoc;
+ }
+ aNewDoc = load(aNewDocRef, "aNewDoc", "staffNS");
+ text = aNewDoc.createTextNode("this is text data");
+ aNode = doc.importNode(text,false);
+ ownerDocument = aNode.ownerDocument;
+
+ assertNotNull("ownerDocumentNotNull",ownerDocument);
+docType = ownerDocument.doctype;
+
+ system = docType.systemId;
+
+ assertURIEquals("systemId",null,null,null,"staffNS.dtd",null,null,null,null,system);
+value = aNode.nodeValue;
+
+ assertEquals("nodeValue","this is text data",value);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode15</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_importNode16.html b/dom/tests/mochitest/dom-level2-core/test_importNode16.html
new file mode 100644
index 0000000000..412acbefb0
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_importNode16.html
@@ -0,0 +1,149 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode16</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['importNode16'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ var anotherDocRef = null;
+ if (typeof(this.anotherDoc) != 'undefined') {
+ anotherDocRef = this.anotherDoc;
+ }
+ docsLoaded += preload(anotherDocRef, "anotherDoc", "staffNS");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'importNode16';
+
+
+/**
+*
+ The "importNode(importedNode,deep)" method for a
+ Document should raise NOT_SUPPORTED_ERR DOMException if
+ the type of node being imported is DocumentType.
+
+ The specification has changed! No exception should be thrown.
+
+ Retrieve document staff.xml and get its type.
+ Invoke method importNode(importedNode,deep) where importedNode
+ contains the document type of the staff.xml.
+ Method should raise NOT_SUPPORT_ERR DOMException.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='NOT_SUPPORTED_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('Core-Document-importNode')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='NOT_SUPPORTED_ERR'])
+*/
+function importNode16() {
+ var success;
+ if(checkInitialization(builder, "importNode16") != null) return;
+ var doc;
+ var anotherDoc;
+ var docType;
+ var node;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ var anotherDocRef = null;
+ if (typeof(this.anotherDoc) != 'undefined') {
+ anotherDocRef = this.anotherDoc;
+ }
+ anotherDoc = load(anotherDocRef, "anotherDoc", "staffNS");
+ docType = anotherDoc.doctype;
+
+
+ {
+ success = false;
+ try {
+ node = doc.importNode(docType,false);
+ success = true;
+ }
+ catch(ex) {
+ success = false;
+ }
+ assertTrue("no_throw_NOT_SUPPORTED_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode16</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_importNode17.html b/dom/tests/mochitest/dom-level2-core/test_importNode17.html
new file mode 100644
index 0000000000..b52c7ddce3
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_importNode17.html
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode17</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['importNode17'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ var anotherDocRef = null;
+ if (typeof(this.anotherDoc) != 'undefined') {
+ anotherDocRef = this.anotherDoc;
+ }
+ docsLoaded += preload(anotherDocRef, "anotherDoc", "staffNS");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'importNode17';
+
+
+/**
+*
+ The "importNode(importedNode,deep)" method for a
+ Document should raise NOT_SUPPORTED_ERR DOMException if
+ the type of node being imported is Document.
+
+ Retrieve staff.xml document.
+ Invoke method importNode(importedNode,deep) where importedNode
+ contains staff.xml and deep is true.
+ Method should raise NOT_SUPPORTED_ERR DOMException.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='NOT_SUPPORTED_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Core-Document-importNode
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('Core-Document-importNode')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='NOT_SUPPORTED_ERR'])
+*/
+function importNode17() {
+ var success;
+ if(checkInitialization(builder, "importNode17") != null) return;
+ var doc;
+ var anotherDoc;
+ var node;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ var anotherDocRef = null;
+ if (typeof(this.anotherDoc) != 'undefined') {
+ anotherDocRef = this.anotherDoc;
+ }
+ anotherDoc = load(anotherDocRef, "anotherDoc", "staffNS");
+
+ {
+ success = false;
+ try {
+ node = doc.importNode(anotherDoc,false);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 9);
+ }
+ assertTrue("throw_NOT_SUPPORTED_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/importNode17</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_localName01.html b/dom/tests/mochitest/dom-level2-core/test_localName01.html
new file mode 100644
index 0000000000..738417e3cd
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_localName01.html
@@ -0,0 +1,128 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/localName01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['localName01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'localName01';
+
+
+/**
+*
+ The "getLocalName()" method for a Node
+ returns the local part of the qualified name of this node,
+ and for nodes of any type other than ELEMENT_NODE and ATTRIBUTE_NODE
+ and nodes created with a DOM Level 1 method, this is null.
+
+ Retrieve the first emp:address node and get the attributes of this node."
+ Then apply the getLocalName() method to the emp:domestic attribute.
+ The method should return "domestic".
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-NodeNSLocalN
+*/
+function localName01() {
+ var success;
+ if(checkInitialization(builder, "localName01") != null) return;
+ var doc;
+ var elementList;
+ var testAddr;
+ var addrAttr;
+ var localName;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("emp:address");
+ testAddr = elementList.item(0);
+ assertNotNull("empAddrNotNull",testAddr);
+addrAttr = testAddr.getAttributeNode("emp:domestic");
+ localName = addrAttr.localName;
+
+ assertEquals("localName","domestic",localName);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/localName01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_localName02.html b/dom/tests/mochitest/dom-level2-core/test_localName02.html
new file mode 100644
index 0000000000..a3cad6eb54
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_localName02.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/localName02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['localName02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'localName02';
+
+
+/**
+*
+ The "getLocalName()" method for a Node
+ returns the local part of the qualified name of this node,
+ and for nodes of any type other than ELEMENT_NODE and ATTRIBUTE_NODE
+ and nodes created with a DOM Level 1 method, this is null.
+
+ Create an new Element with the createElement() method.
+ Invoke the "getLocalName()" method on the newly created element
+ node will cause "null" to be returned.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-NodeNSLocalN
+*/
+function localName02() {
+ var success;
+ if(checkInitialization(builder, "localName02") != null) return;
+ var doc;
+ var createdNode;
+ var localName;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ createdNode = doc.createElement("test:employee");
+ localName = createdNode.localName;
+
+ assertNull("localNameNull",localName);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/localName02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_localName04.html b/dom/tests/mochitest/dom-level2-core/test_localName04.html
new file mode 100644
index 0000000000..c414e24b4b
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_localName04.html
@@ -0,0 +1,124 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/localName04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['localName04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'localName04';
+
+
+/**
+*
+ The "getLocalName()" method for a Node
+ returns the local part of the qualified name of this node,
+ and for nodes of any type other than ELEMENT_NODE and ATTRIBUTE_NODE
+ and nodes created with a DOM Level 1 method, this is null.
+
+ Retrieve the first employee node and invoke the "getLocalName()"
+ method. The method should return "employee".
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-NodeNSLocalN
+*/
+function localName04() {
+ var success;
+ if(checkInitialization(builder, "localName04") != null) return;
+ var doc;
+ var elementList;
+ var testEmployee;
+ var employeeLocalName;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("employee");
+ testEmployee = elementList.item(0);
+ employeeLocalName = testEmployee.localName;
+
+ assertEquals("lname","employee",employeeLocalName);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/localName04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namednodemapgetnameditemns01.html b/dom/tests/mochitest/dom-level2-core/test_namednodemapgetnameditemns01.html
new file mode 100644
index 0000000000..c7076accd8
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namednodemapgetnameditemns01.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapgetnameditemns01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namednodemapgetnameditemns01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namednodemapgetnameditemns01';
+
+
+/**
+*
+ Using the method getNamedItemNS, retreive the entity "ent1" and notation "notation1"
+ from a NamedNodeMap of this DocumentTypes entities and notations.
+ Both should be null since entities and notations are not namespaced.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getNamedItemNS
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=259
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=407
+* @see http://lists.w3.org/Archives/Member/w3c-dom-ig/2003Nov/0016.html
+*/
+function namednodemapgetnameditemns01() {
+ var success;
+ if(checkInitialization(builder, "namednodemapgetnameditemns01") != null) return;
+ var doc;
+ var docType;
+ var entities;
+ var notations;
+ var entity;
+ var notation;
+ var entityName;
+ var notationName;
+ var nullNS = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ docType = doc.doctype;
+
+ entities = docType.entities;
+
+ assertNotNull("entitiesNotNull",entities);
+notations = docType.notations;
+
+ assertNotNull("notationsNotNull",notations);
+entity = entities.getNamedItemNS(nullNS,"ent1");
+ assertNull("entityNull",entity);
+ notation = notations.getNamedItemNS(nullNS,"notation1");
+ assertNull("notationNull",notation);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapgetnameditemns01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namednodemapgetnameditemns02.html b/dom/tests/mochitest/dom-level2-core/test_namednodemapgetnameditemns02.html
new file mode 100644
index 0000000000..845518c92d
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namednodemapgetnameditemns02.html
@@ -0,0 +1,128 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapgetnameditemns02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namednodemapgetnameditemns02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namednodemapgetnameditemns02';
+
+
+/**
+*
+ The method getNamedItemNS retrieves a node specified by local name and namespace URI.
+
+ Using the method getNamedItemNS, retreive an attribute node having namespaceURI=http://www.nist.gov
+ and localName=domestic, from a NamedNodeMap of attribute nodes, for the second element
+ whose namespaceURI=http://www.nist.gov and localName=address. Verify if the attr node
+ has been retreived successfully by checking its nodeName atttribute.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getNamedItemNS
+*/
+function namednodemapgetnameditemns02() {
+ var success;
+ if(checkInitialization(builder, "namednodemapgetnameditemns02") != null) return;
+ var doc;
+ var attributes;
+ var element;
+ var attribute;
+ var elementList;
+ var attrName;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS("http://www.nist.gov","address");
+ element = elementList.item(1);
+ attributes = element.attributes;
+
+ attribute = attributes.getNamedItemNS("http://www.nist.gov","domestic");
+ attrName = attribute.nodeName;
+
+ assertEquals("namednodemapgetnameditemns02","emp:domestic",attrName);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapgetnameditemns02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namednodemapgetnameditemns03.html b/dom/tests/mochitest/dom-level2-core/test_namednodemapgetnameditemns03.html
new file mode 100644
index 0000000000..8332b351fe
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namednodemapgetnameditemns03.html
@@ -0,0 +1,132 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapgetnameditemns03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namednodemapgetnameditemns03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namednodemapgetnameditemns03';
+
+
+/**
+*
+ The method getNamedItemNS retrieves a node specified by local name and namespace URI.
+
+ Create a new Element node and add 2 new attribute nodes having the same local name but different
+ namespace names and namespace prefixes to it. Using the getNamedItemNS retreive the second attribute node.
+ Verify if the attr node has been retreived successfully by checking its nodeName atttribute.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getNamedItemNS
+*/
+function namednodemapgetnameditemns03() {
+ var success;
+ if(checkInitialization(builder, "namednodemapgetnameditemns03") != null) return;
+ var doc;
+ var attributes;
+ var element;
+ var attribute;
+ var newAttr1;
+ var newAttr2;
+ var newAttribute;
+ var attrName;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ element = doc.createElementNS("http://www.w3.org/DOM/Test","root");
+ newAttr1 = doc.createAttributeNS("http://www.w3.org/DOM/L1","L1:att");
+ newAttribute = element.setAttributeNodeNS(newAttr1);
+ newAttr2 = doc.createAttributeNS("http://www.w3.org/DOM/L2","L2:att");
+ newAttribute = element.setAttributeNodeNS(newAttr2);
+ attributes = element.attributes;
+
+ attribute = attributes.getNamedItemNS("http://www.w3.org/DOM/L2","att");
+ attrName = attribute.nodeName;
+
+ assertEquals("namednodemapgetnameditemns03","L2:att",attrName);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapgetnameditemns03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namednodemapgetnameditemns04.html b/dom/tests/mochitest/dom-level2-core/test_namednodemapgetnameditemns04.html
new file mode 100644
index 0000000000..61f19562d6
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namednodemapgetnameditemns04.html
@@ -0,0 +1,133 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapgetnameditemns04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namednodemapgetnameditemns04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namednodemapgetnameditemns04';
+
+
+/**
+*
+ The method getNamedItemNS retrieves a node specified by local name and namespace URI.
+
+ Retreive the second address element node having localName=adrress.
+ Create a new attribute node having the same name as an existing node but different namespaceURI
+ and add it to this element. Using the getNamedItemNS retreive the newly created attribute
+ node from a nodemap of attributes of the retreive element node.
+ Verify if the attr node has been retreived successfully by checking its nodeName atttribute.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getNamedItemNS
+*/
+function namednodemapgetnameditemns04() {
+ var success;
+ if(checkInitialization(builder, "namednodemapgetnameditemns04") != null) return;
+ var doc;
+ var attributes;
+ var element;
+ var attribute;
+ var newAttr1;
+ var newAttribute;
+ var elementList;
+ var attrName;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS("*","address");
+ element = elementList.item(1);
+ newAttr1 = doc.createAttributeNS("http://www.w3.org/DOM/L1","street");
+ newAttribute = element.setAttributeNodeNS(newAttr1);
+ attributes = element.attributes;
+
+ attribute = attributes.getNamedItemNS("http://www.w3.org/DOM/L1","street");
+ attrName = attribute.nodeName;
+
+ assertEquals("namednodemapgetnameditemns04","street",attrName);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapgetnameditemns04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namednodemapgetnameditemns05.html b/dom/tests/mochitest/dom-level2-core/test_namednodemapgetnameditemns05.html
new file mode 100644
index 0000000000..f6ccb847f2
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namednodemapgetnameditemns05.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapgetnameditemns05</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namednodemapgetnameditemns05'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namednodemapgetnameditemns05';
+
+
+/**
+*
+ The method getNamedItemNS retrieves a node specified by local name and namespace URI.
+
+ Retreieve the second address element and its attribute into a named node map.
+ Try retreiving the street attribute from the namednodemap using the
+ default namespace uri and the street attribute name. Since the default
+ namespace doesnot apply to attributes this should return null.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getNamedItemNS
+*/
+function namednodemapgetnameditemns05() {
+ var success;
+ if(checkInitialization(builder, "namednodemapgetnameditemns05") != null) return;
+ var doc;
+ var attributes;
+ var element;
+ var attribute;
+ var elementList;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS("*","address");
+ element = elementList.item(1);
+ attributes = element.attributes;
+
+ attribute = attributes.getNamedItemNS("*","street");
+ assertNull("namednodemapgetnameditemns05",attribute);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapgetnameditemns05</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namednodemapgetnameditemns06.html b/dom/tests/mochitest/dom-level2-core/test_namednodemapgetnameditemns06.html
new file mode 100644
index 0000000000..5e06946c1e
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namednodemapgetnameditemns06.html
@@ -0,0 +1,138 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapgetnameditemns06</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namednodemapgetnameditemns06'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namednodemapgetnameditemns06';
+
+
+/**
+*
+ Retreive the second address element node having localName=adrress. Retreive the attributes
+ of this element into 2 nodemaps. Create a new attribute node and add it to this element.
+ Since NamedNodeMaps are live each one should get updated, using the getNamedItemNS retreive
+ the newly created attribute from each node map.
+ Verify if the attr node has been retreived successfully by checking its nodeName atttribute.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getNamedItemNS
+*/
+function namednodemapgetnameditemns06() {
+ var success;
+ if(checkInitialization(builder, "namednodemapgetnameditemns06") != null) return;
+ var doc;
+ var attributesMap1;
+ var attributesMap2;
+ var element;
+ var attribute;
+ var newAttr1;
+ var newAttribute;
+ var elementList;
+ var attrName;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS("*","address");
+ element = elementList.item(1);
+ attributesMap1 = element.attributes;
+
+ attributesMap2 = element.attributes;
+
+ newAttr1 = doc.createAttributeNS("http://www.w3.org/DOM/L1","street");
+ newAttribute = element.setAttributeNodeNS(newAttr1);
+ attribute = attributesMap1.getNamedItemNS("http://www.w3.org/DOM/L1","street");
+ attrName = attribute.nodeName;
+
+ assertEquals("namednodemapgetnameditemnsMap106","street",attrName);
+ attribute = attributesMap2.getNamedItemNS("http://www.w3.org/DOM/L1","street");
+ attrName = attribute.nodeName;
+
+ assertEquals("namednodemapgetnameditemnsMap206","street",attrName);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapgetnameditemns06</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns01.html b/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns01.html
new file mode 100644
index 0000000000..e3b8cd8e88
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns01.html
@@ -0,0 +1,124 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapremovenameditemns01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namednodemapremovenameditemns01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namednodemapremovenameditemns01';
+
+
+/**
+*
+ The method removeNamedItemNS removes a node specified by local name and namespace
+
+ Retreive an attribute node and then remove from the NamedNodeMap. Verify if the attribute
+ node was actually remove from the node map.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-D58B193
+*/
+function namednodemapremovenameditemns01() {
+ var success;
+ if(checkInitialization(builder, "namednodemapremovenameditemns01") != null) return;
+ var doc;
+ var attributes;
+ var element;
+ var attribute;
+ var elementList;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS("http://www.nist.gov","address");
+ element = elementList.item(1);
+ attributes = element.attributes;
+
+ attribute = attributes.removeNamedItemNS("http://www.nist.gov","domestic");
+ attribute = attributes.getNamedItemNS("http://www.nist.gov","domestic");
+ assertNull("namednodemapremovenameditemns01",attribute);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapremovenameditemns01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns02.html b/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns02.html
new file mode 100644
index 0000000000..a15582cd15
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns02.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapremovenameditemns02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namednodemapremovenameditemns02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+ setImplementationAttribute("validating", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namednodemapremovenameditemns02';
+
+
+/**
+*
+ The method removeNamedItemNS removes a node specified by local name and namespace
+ A removed attribute may be known to have a default value when this map contains the
+ attributes attached to an element, as returned by the attributes attribute of the Node
+ interface. If so, an attribute immediately appears containing the default value as well
+ as the corresponding namespace URI, local name, and prefix when applicable.
+
+ Retreive a default attribute node. Remove it from the NodeMap. Check if a new one immediately
+ appears containing the default value.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-D58B193
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=259
+*/
+function namednodemapremovenameditemns02() {
+ var success;
+ if(checkInitialization(builder, "namednodemapremovenameditemns02") != null) return;
+ var doc;
+ var attributes;
+ var element;
+ var attribute;
+ var elementList;
+ var attrValue;
+ var nullNS = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS("http://www.nist.gov","employee");
+ element = elementList.item(1);
+ attributes = element.attributes;
+
+ attribute = attributes.removeNamedItemNS(nullNS,"defaultAttr");
+ attribute = attributes.getNamedItemNS(nullNS,"defaultAttr");
+ attrValue = attribute.nodeValue;
+
+ assertNotNull("namednodemapremovenameditemns02",attribute);
+assertEquals("namednodemapremovenameditemns02_attrValue","defaultVal",attrValue);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapremovenameditemns02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns03.html b/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns03.html
new file mode 100644
index 0000000000..e2c8486acb
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns03.html
@@ -0,0 +1,133 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapremovenameditemns03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namednodemapremovenameditemns03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namednodemapremovenameditemns03';
+
+
+/**
+*
+ The method removeNamedItemNS removes a node specified by local name and namespace
+
+ Create a new element node and add 2 new attribute nodes to it that have the same localName
+ but different namespaceURI's. Remove the first attribute node from the namedNodeMap of the
+ new element node and check to see that the second attribute still exists.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-D58B193
+*/
+function namednodemapremovenameditemns03() {
+ var success;
+ if(checkInitialization(builder, "namednodemapremovenameditemns03") != null) return;
+ var doc;
+ var attributes;
+ var element;
+ var attribute;
+ var newAttribute;
+ var attribute1;
+ var attribute2;
+ var nodeName;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ element = doc.createElementNS("http://www.w3.org/DOM/Test","root");
+ attribute1 = doc.createAttributeNS("http://www.w3.org/DOM/L1","L1:att");
+ newAttribute = element.setAttributeNodeNS(attribute1);
+ attribute2 = doc.createAttributeNS("http://www.w3.org/DOM/L2","L2:att");
+ newAttribute = element.setAttributeNodeNS(attribute2);
+ attributes = element.attributes;
+
+ attribute = attributes.removeNamedItemNS("http://www.w3.org/DOM/L1","att");
+ attribute = attributes.getNamedItemNS("http://www.w3.org/DOM/L2","att");
+ nodeName = attribute.nodeName;
+
+ assertEquals("namednodemapremovenameditemns02","L2:att",nodeName);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapremovenameditemns03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns04.html b/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns04.html
new file mode 100644
index 0000000000..b29dcffc5c
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns04.html
@@ -0,0 +1,128 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapremovenameditemns04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namednodemapremovenameditemns04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namednodemapremovenameditemns04';
+
+
+/**
+*
+ The method removeNamedItemNS removes a node specified by local name and namespace
+
+ Attempt to remove the xmlns and dmstc attributes of the first element node with the localName
+ employee. Verify if the 2 attributes were successfully removed.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-D58B193
+*/
+function namednodemapremovenameditemns04() {
+ var success;
+ if(checkInitialization(builder, "namednodemapremovenameditemns04") != null) return;
+ var doc;
+ var attributes;
+ var element;
+ var attribute;
+ var attributeRemoved;
+ var elementList;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS("*","employee");
+ element = elementList.item(0);
+ attributes = element.attributes;
+
+ attributeRemoved = attributes.removeNamedItemNS("http://www.w3.org/2000/xmlns/","xmlns");
+ attribute = attributes.getNamedItemNS("http://www.w3.org/2000/xmlns/","xmlns");
+ assertNull("namednodemapremovenameditemns04_1",attribute);
+ attributeRemoved = attributes.removeNamedItemNS("http://www.w3.org/2000/xmlns/","dmstc");
+ attribute = attributes.getNamedItemNS("http://www.w3.org/2000/xmlns/","dmstc");
+ assertNull("namednodemapremovenameditemns04_2",attribute);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapremovenameditemns04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns05.html b/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns05.html
new file mode 100644
index 0000000000..3f00f5d642
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns05.html
@@ -0,0 +1,167 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapremovenameditemns05</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namednodemapremovenameditemns05'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namednodemapremovenameditemns05';
+
+
+/**
+*
+ Retreive an entity and notation node and remove the first notation from the
+ entity node map and first entity node from the notation map. Since both these
+ maps are readonly, a NO_MODIFICATION_ALLOWED_ERR should be raised.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-setNamedItemNS
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=259
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=407
+* @see http://lists.w3.org/Archives/Member/w3c-dom-ig/2003Nov/0016.html
+*/
+function namednodemapremovenameditemns05() {
+ var success;
+ if(checkInitialization(builder, "namednodemapremovenameditemns05") != null) return;
+ var doc;
+ var docType;
+ var entities;
+ var notations;
+ var removedNode;
+ var nullNS = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ docType = doc.doctype;
+
+ entities = docType.entities;
+
+ assertNotNull("entitiesNotNull",entities);
+notations = docType.notations;
+
+ assertNotNull("notationsNotNull",notations);
+
+ try {
+ removedNode = entities.removeNamedItemNS(nullNS,"ent1");
+ fail("entity_throw_DOMException");
+
+ } catch (ex) {
+ if (typeof(ex.code) != 'undefined') {
+ switch(ex.code) {
+ case /* NOT_FOUND_ERR */ 8 :
+ break;
+ case /* NO_MODIFICATION_ALLOWED_ERR */ 7 :
+ break;
+ default:
+ throw ex;
+ }
+ } else {
+ throw ex;
+ }
+ }
+
+ try {
+ removedNode = notations.removeNamedItemNS(nullNS,"notation1");
+ fail("notation_throw_DOMException");
+
+ } catch (ex) {
+ if (typeof(ex.code) != 'undefined') {
+ switch(ex.code) {
+ case /* NOT_FOUND_ERR */ 8 :
+ break;
+ case /* NO_MODIFICATION_ALLOWED_ERR */ 7 :
+ break;
+ default:
+ throw ex;
+ }
+ } else {
+ throw ex;
+ }
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapremovenameditemns05</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns06.html b/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns06.html
new file mode 100644
index 0000000000..ea40d0c931
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns06.html
@@ -0,0 +1,134 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapremovenameditemns06</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namednodemapremovenameditemns06'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namednodemapremovenameditemns06';
+
+
+/**
+*
+ The method removeNamedItemNS removes a node using its namespaceURI and localName and
+ raises a NOT_FOUND_ERR if there is no node with the specified namespaceURI and
+ localName in this map
+
+ Retreive an attribute node into a namednodemap. While removing it from the map specify
+ an incorrect namespaceURI. This should raise a NOT_FOUND_ERR.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-D58B193
+*/
+function namednodemapremovenameditemns06() {
+ var success;
+ if(checkInitialization(builder, "namednodemapremovenameditemns06") != null) return;
+ var doc;
+ var attributes;
+ var element;
+ var attribute;
+ var elementList;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS("http://www.nist.gov","employee");
+ element = elementList.item(1);
+ attributes = element.attributes;
+
+
+ {
+ success = false;
+ try {
+ attribute = attributes.removeNamedItemNS("http://www.Nist.gov","domestic");
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 8);
+ }
+ assertTrue("throw_NOT_FOUND_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapremovenameditemns06</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns07.html b/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns07.html
new file mode 100644
index 0000000000..99a0cc083d
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns07.html
@@ -0,0 +1,134 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapremovenameditemns07</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namednodemapremovenameditemns07'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namednodemapremovenameditemns07';
+
+
+/**
+*
+ The method removeNamedItemNS removes a node using its namespaceURI and localName and
+ raises a NOT_FOUND_ERR if there is no node with the specified namespaceURI and
+ localName in this map
+
+ Retreive an attribute node from a namednodemap. While removing it from the map specify
+ an incorrect localName. This should raise a NOT_FOUND_ERR.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-D58B193
+*/
+function namednodemapremovenameditemns07() {
+ var success;
+ if(checkInitialization(builder, "namednodemapremovenameditemns07") != null) return;
+ var doc;
+ var attributes;
+ var element;
+ var attribute;
+ var elementList;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS("http://www.nist.gov","employee");
+ element = elementList.item(1);
+ attributes = element.attributes;
+
+
+ {
+ success = false;
+ try {
+ attribute = attributes.removeNamedItemNS("http://www.nist.gov","domestic");
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 8);
+ }
+ assertTrue("throw_NOT_FOUND_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapremovenameditemns07</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns08.html b/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns08.html
new file mode 100644
index 0000000000..1e1448d42f
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns08.html
@@ -0,0 +1,137 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapremovenameditemns08</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namednodemapremovenameditemns08'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namednodemapremovenameditemns08';
+
+
+/**
+*
+ The method removeNamedItemNS removes a node using its namespaceURI and localName and
+ raises a NOT_FOUND_ERR if there is no node with the specified namespaceURI and
+ localName in this map
+
+ Retreive an attribute node from a namednodemap. Remove the attribute node from the document
+ object. Since NamedNodeMaps are live it should also automatically get removed from
+ the node map. And so if an attempt is made to remove it using removeAttributeNS, this should
+ raise a NOT_FOUND_ERR.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-D58B193
+*/
+function namednodemapremovenameditemns08() {
+ var success;
+ if(checkInitialization(builder, "namednodemapremovenameditemns08") != null) return;
+ var doc;
+ var attributes;
+ var element;
+ var attribute;
+ var elementList;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS("http://www.nist.gov","address");
+ element = elementList.item(1);
+ attributes = element.attributes;
+
+ element.removeAttributeNS("http://www.nist.gov","domestic");
+
+ {
+ success = false;
+ try {
+ attribute = attributes.removeNamedItemNS("http://www.nist.gov","domestic");
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 8);
+ }
+ assertTrue("throw_NOT_FOUND_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapremovenameditemns08</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns09.html b/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns09.html
new file mode 100644
index 0000000000..45ef833702
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namednodemapremovenameditemns09.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapremovenameditemns09</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namednodemapremovenameditemns09'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namednodemapremovenameditemns09';
+
+
+/**
+*
+ The method removeNamedItemNS removes a node using its namespaceURI and localName and
+ raises a NOT_FOUND_ERR if there is no node with the specified namespaceURI and
+ localName in this map
+
+ Retreive an attribute node. Remove the attribute node from the node map.
+ Check the element object to ensure that the attribute node has been removed from it.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-D58B193
+*/
+function namednodemapremovenameditemns09() {
+ var success;
+ if(checkInitialization(builder, "namednodemapremovenameditemns09") != null) return;
+ var doc;
+ var attributes;
+ var newAttributes;
+ var element;
+ var attribute;
+ var elementList;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS("http://www.nist.gov","address");
+ element = elementList.item(1);
+ attributes = element.attributes;
+
+ attribute = attributes.removeNamedItemNS("http://www.nist.gov","domestic");
+ newAttributes = element.attributes;
+
+ attribute = newAttributes.getNamedItemNS("http://www.nist.gov","domestic");
+ assertNull("namednodemapremovenameditemns09",attribute);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapremovenameditemns09</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns01.html b/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns01.html
new file mode 100644
index 0000000000..84133fd9bf
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns01.html
@@ -0,0 +1,133 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapsetnameditemns01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namednodemapsetnameditemns01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namednodemapsetnameditemns01';
+
+
+/**
+*
+ The method setNamedItemNS adds a node using its namespaceURI and localName. If a node with
+ that namespace URI and that local name is already present in this map, it is replaced
+ by the new one.
+
+ Retreive the first element whose localName is address and namespaceURI http://www.nist.gov",
+ and put its attributes into a named node map. Create a new attribute node and add it to this map.
+ Verify if the attr node was successfully added by checking the nodeName of the retreived atttribute.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-getNamedItemNS
+*/
+function namednodemapsetnameditemns01() {
+ var success;
+ if(checkInitialization(builder, "namednodemapsetnameditemns01") != null) return;
+ var doc;
+ var attributes;
+ var element;
+ var attribute;
+ var newAttribute;
+ var newAttr1;
+ var elementList;
+ var attrName;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS("http://www.nist.gov","address");
+ element = elementList.item(0);
+ attributes = element.attributes;
+
+ newAttr1 = doc.createAttributeNS("http://www.w3.org/DOM/L1","streets");
+ newAttribute = element.setAttributeNodeNS(newAttr1);
+ attribute = attributes.getNamedItemNS("http://www.w3.org/DOM/L1","streets");
+ attrName = attribute.nodeName;
+
+ assertEquals("namednodemapsetnameditemns01","streets",attrName);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapsetnameditemns01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns02.html b/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns02.html
new file mode 100644
index 0000000000..80eb42e37a
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns02.html
@@ -0,0 +1,132 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapsetnameditemns02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namednodemapsetnameditemns02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namednodemapsetnameditemns02';
+
+
+/**
+*
+ The method setNamedItemNS adds a node using its namespaceURI and localName. If a node with
+ that namespace URI and that local name is already present in this map, it is replaced
+ by the new one.
+
+ Create a new element and attribute Node and add the newly created attribute node to the elements
+ NamedNodeMap. Verify if the new attr node has been successfully added to the map by checking
+ the nodeName of the retreived atttribute from the list of attribute nodes in this map.
+
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-setNamedItemNS
+*/
+function namednodemapsetnameditemns02() {
+ var success;
+ if(checkInitialization(builder, "namednodemapsetnameditemns02") != null) return;
+ var doc;
+ var attributes;
+ var element;
+ var attribute;
+ var attribute1;
+ var newNode;
+ var attrName;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ element = doc.createElementNS("http://www.w3.org/DOM/Test","root");
+ attribute1 = doc.createAttributeNS("http://www.w3.org/DOM/L1","L1:att");
+ attributes = element.attributes;
+
+ newNode = attributes.setNamedItemNS(attribute1);
+ attribute = attributes.getNamedItemNS("http://www.w3.org/DOM/L1","att");
+ attrName = attribute.nodeName;
+
+ assertEquals("namednodemapsetnameditemns02","L1:att",attrName);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapsetnameditemns02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns03.html b/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns03.html
new file mode 100644
index 0000000000..e711b7d38c
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns03.html
@@ -0,0 +1,163 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapsetnameditemns03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namednodemapsetnameditemns03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ var docAltRef = null;
+ if (typeof(this.docAlt) != 'undefined') {
+ docAltRef = this.docAlt;
+ }
+ docsLoaded += preload(docAltRef, "docAlt", "staffNS");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namednodemapsetnameditemns03';
+
+
+/**
+*
+ The method setNamedItemNS adds a node using its namespaceURI and localName and
+ raises a WRONG_DOCUMENT_ERR if arg was created from a different document than the
+ one that created this map.
+
+ Retreieve the second element whose local name is address and its attribute into a named node map.
+ Do the same for another document and retreive its street attribute. Call the setNamedItemNS
+ using the first namedNodeMap and the retreive street attribute of the second. This should
+ raise a WRONG_DOCUMENT_ERR.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-setNamedItemNS
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=259
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=408
+*/
+function namednodemapsetnameditemns03() {
+ var success;
+ if(checkInitialization(builder, "namednodemapsetnameditemns03") != null) return;
+ var doc;
+ var docAlt;
+ var attributes;
+ var attributesAlt;
+ var elementList;
+ var elementListAlt;
+ var element;
+ var elementAlt;
+ var attr;
+ var newNode;
+ var nullNS = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS("*","address");
+ element = elementList.item(1);
+ attributes = element.attributes;
+
+
+ var docAltRef = null;
+ if (typeof(this.docAlt) != 'undefined') {
+ docAltRef = this.docAlt;
+ }
+ docAlt = load(docAltRef, "docAlt", "staffNS");
+ elementListAlt = docAlt.getElementsByTagNameNS("*","address");
+ elementAlt = elementListAlt.item(1);
+ attributesAlt = elementAlt.attributes;
+
+ attr = attributesAlt.getNamedItemNS(nullNS,"street");
+ newNode = attributesAlt.removeNamedItemNS(nullNS,"street");
+
+ {
+ success = false;
+ try {
+ newNode = attributes.setNamedItemNS(attr);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 4);
+ }
+ assertTrue("throw_WRONG_DOCUMENT_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapsetnameditemns03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns04.html b/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns04.html
new file mode 100644
index 0000000000..6fa313f5e8
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns04.html
@@ -0,0 +1,147 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapsetnameditemns04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namednodemapsetnameditemns04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namednodemapsetnameditemns04';
+
+
+/**
+*
+ The method setNamedItemNS adds a node using its namespaceURI and localName and
+ raises a WRONG_DOCUMENT_ERR if arg was created from a different document than the
+ one that created this map.
+
+ Retreieve the second element whose local name is address and its attribute into a named node map.
+ Create a new document and a new attribute node in it. Call the setNamedItemNS using the first
+ namedNodeMap and the new attribute node attribute of the new document. This should
+ raise a WRONG_DOCUMENT_ERR.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-setNamedItemNS
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=259
+*/
+function namednodemapsetnameditemns04() {
+ var success;
+ if(checkInitialization(builder, "namednodemapsetnameditemns04") != null) return;
+ var doc;
+ var domImpl;
+ var docAlt;
+ var docType = null;
+
+ var attributes;
+ var elementList;
+ var element;
+ var attrAlt;
+ var newNode;
+ var nullNS = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS("*","address");
+ element = elementList.item(1);
+ attributes = element.attributes;
+
+ domImpl = doc.implementation;
+docAlt = domImpl.createDocument(nullNS,"newDoc",docType);
+ attrAlt = docAlt.createAttributeNS(nullNS,"street");
+
+ {
+ success = false;
+ try {
+ newNode = attributes.setNamedItemNS(attrAlt);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 4);
+ }
+ todo(success, "throw_WRONG_DOCUMENT_ERR");
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapsetnameditemns04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns05.html b/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns05.html
new file mode 100644
index 0000000000..07ba4904a1
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns05.html
@@ -0,0 +1,155 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapsetnameditemns05</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namednodemapsetnameditemns05'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namednodemapsetnameditemns05';
+
+
+/**
+*
+ Retreive an entity and notation node and add the first notation to the
+ notation node map and first entity node to the entity map. Since both these
+ maps are for readonly node, a NO_MODIFICATION_ALLOWED_ERR should be raised.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-setNamedItemNS
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=259
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=407
+* @see http://lists.w3.org/Archives/Member/w3c-dom-ig/2003Nov/0016.html
+*/
+function namednodemapsetnameditemns05() {
+ var success;
+ if(checkInitialization(builder, "namednodemapsetnameditemns05") != null) return;
+ var doc;
+ var docType;
+ var entities;
+ var notations;
+ var entity;
+ var notation;
+ var newNode;
+ var nullNS = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ docType = doc.doctype;
+
+ entities = docType.entities;
+
+ assertNotNull("entitiesNotNull",entities);
+notations = docType.notations;
+
+ assertNotNull("notationsNotNull",notations);
+entity = entities.getNamedItem("ent1");
+ notation = notations.getNamedItem("notation1");
+
+ {
+ success = false;
+ try {
+ newNode = entities.setNamedItemNS(entity);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 7);
+ }
+ assertTrue("throw_NO_MODIFICATION_ALLOWED_ERR_entities",success);
+ }
+
+ {
+ success = false;
+ try {
+ newNode = notations.setNamedItemNS(notation);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 7);
+ }
+ assertTrue("throw_NO_MODIFICATION_ALLOWED_ERR_notations",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapsetnameditemns05</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns06.html b/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns06.html
new file mode 100644
index 0000000000..031c0b16a5
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns06.html
@@ -0,0 +1,138 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapsetnameditemns06</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namednodemapsetnameditemns06'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namednodemapsetnameditemns06';
+
+
+/**
+*
+ Retreieve the first element whose localName is address and its attributes into a named node map.
+ Retreiving the domestic attribute from the namednodemap.
+ Retreieve the second element whose localName is address and its attributes into a named node map.
+ Invoke setNamedItemNS on the second NamedNodeMap specifying the first domestic attribute from
+ the first map. This should raise an INUSE_ATTRIBIUTE_ERR.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-setNamedItemNS
+*/
+function namednodemapsetnameditemns06() {
+ var success;
+ if(checkInitialization(builder, "namednodemapsetnameditemns06") != null) return;
+ var doc;
+ var attributes;
+ var elementList;
+ var element;
+ var attr;
+ var newNode;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS("*","address");
+ element = elementList.item(0);
+ attributes = element.attributes;
+
+ attr = attributes.getNamedItemNS("http://www.usa.com","domestic");
+ element = elementList.item(1);
+ attributes = element.attributes;
+
+
+ {
+ success = false;
+ try {
+ newNode = attributes.setNamedItemNS(attr);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 10);
+ }
+ assertTrue("namednodemapsetnameditemns06",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapsetnameditemns06</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns07.html b/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns07.html
new file mode 100644
index 0000000000..0be6db7136
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns07.html
@@ -0,0 +1,144 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapsetnameditemns07</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namednodemapsetnameditemns07'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namednodemapsetnameditemns07';
+
+
+/**
+*
+ The method setNamedItemNS adds a node using its namespaceURI and localName and
+ raises a INUSE_ATTRIBUTE_ERR Raised if arg is an Attr that is already an
+ attribute of another Element object.
+
+ Retreieve the attributes of first element whose localName is address into a named node map.
+ Retreive the attribute whose namespaceURI=http://www.usa.com and localName=domestic
+ from the NamedNodeMap. Retreieve the attributes of second element whose localName is address
+ into a named node map. Call the setNamedItemNS method on the second nodemap with the domestic
+ attribute that was retreived and removed from the first nodeMap as an argument.
+ Assuming that when an attribute is removed from a nodemap, it still remains in the domtree
+ his should raise an INUSE_ATTRIBIUTE_ERR.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-setNamedItemNS
+*/
+function namednodemapsetnameditemns07() {
+ var success;
+ if(checkInitialization(builder, "namednodemapsetnameditemns07") != null) return;
+ var doc;
+ var attributes;
+ var elementList;
+ var element;
+ var attr;
+ var newNode;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS("*","address");
+ element = elementList.item(0);
+ attributes = element.attributes;
+
+ attr = attributes.getNamedItemNS("http://www.usa.com","domestic");
+ element = elementList.item(1);
+ attributes = element.attributes;
+
+
+ {
+ success = false;
+ try {
+ newNode = attributes.setNamedItemNS(attr);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 10);
+ }
+ assertTrue("namednodemapsetnameditemns07",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapsetnameditemns07</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns08.html b/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns08.html
new file mode 100644
index 0000000000..8d2097a565
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns08.html
@@ -0,0 +1,141 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapsetnameditemns08</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namednodemapsetnameditemns08'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namednodemapsetnameditemns08';
+
+
+/**
+*
+ raises a INUSE_ATTRIBUTE_ERR Raised if arg is an Attr that is already an
+ attribute of another Element object.
+
+ Retreieve the first element whose localName is address and its attributes into a named node map.
+ Retreiving the domestic attribute from the namednodemap. Retreieve the second element whose
+ localName is address and its attributes into a named node map. Invoke setNamedItemNS on the
+ second NamedNodeMap specifying the attribute from the first map.
+ This should raise an INUSE_ATTRIBIUTE_ERR.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-setNamedItemNS
+*/
+function namednodemapsetnameditemns08() {
+ var success;
+ if(checkInitialization(builder, "namednodemapsetnameditemns08") != null) return;
+ var doc;
+ var attributes;
+ var elementList;
+ var element;
+ var attr;
+ var newNode;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagNameNS("*","address");
+ element = elementList.item(0);
+ attributes = element.attributes;
+
+ attr = attributes.getNamedItemNS("http://www.usa.com","domestic");
+ element = elementList.item(1);
+ attributes = element.attributes;
+
+
+ {
+ success = false;
+ try {
+ newNode = attributes.setNamedItemNS(attr);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 10);
+ }
+ assertTrue("namednodemapsetnameditemns08",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapsetnameditemns08</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns09.html b/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns09.html
new file mode 100644
index 0000000000..777b18d923
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns09.html
@@ -0,0 +1,148 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapsetnameditemns09</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namednodemapsetnameditemns09'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namednodemapsetnameditemns09';
+
+
+/**
+*
+ The method setNamedItemNS adds a node using its namespaceURI and localName and
+ raises a NO_MODIFICATION_ALLOWED_ERR if this map is readonly.
+
+ Create a new attribute node and attempt to add it to the nodemap of entities and notations
+ for this documenttype. This should reaise a NO_MODIFICATION_ALLOWED_ERR.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-setNamedItemNS
+*/
+function namednodemapsetnameditemns09() {
+ var success;
+ if(checkInitialization(builder, "namednodemapsetnameditemns09") != null) return;
+ var doc;
+ var docType;
+ var entities;
+ var notations;
+ var attr;
+ var newNode;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ docType = doc.doctype;
+
+ entities = docType.entities;
+
+ notations = docType.notations;
+
+ attr = doc.createAttributeNS("http://www.w3.org/DOM/Test","test");
+
+ {
+ success = false;
+ try {
+ newNode = entities.setNamedItemNS(attr);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 7);
+ }
+ assertTrue("throw_NO_MODIFICATION_ALLOWED_ERR_entities",success);
+ }
+
+ {
+ success = false;
+ try {
+ newNode = notations.setNamedItemNS(attr);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 7);
+ }
+ assertTrue("throw_NO_MODIFICATION_ALLOWED_ERR_notations",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapsetnameditemns09</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns10.html b/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns10.html
new file mode 100644
index 0000000000..e99b5cdd36
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns10.html
@@ -0,0 +1,146 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapsetnameditemns10</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namednodemapsetnameditemns10'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namednodemapsetnameditemns10';
+
+
+/**
+*
+ The method setNamedItemNS adds a node using its namespaceURI and localName and
+ raises a HIERARCHY_REQUEST_ERR if an attempt is made to add a node doesn't belong
+ in this NamedNodeMap.
+
+ Attempt to add an entity to a NamedNodeMap of attribute nodes,
+ Since nodes of this type cannot be added to the attribute node map a HIERARCHY_REQUEST_ERR
+ should be raised.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-setNamedItemNS
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=259
+*/
+function namednodemapsetnameditemns10() {
+ var success;
+ if(checkInitialization(builder, "namednodemapsetnameditemns10") != null) return;
+ var doc;
+ var docType;
+ var entities;
+ var attributes;
+ var entity;
+ var notation;
+ var element;
+ var elementList;
+ var newNode;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ docType = doc.doctype;
+
+ entities = docType.entities;
+
+ assertNotNull("entitiesNotNull",entities);
+entity = entities.getNamedItem("ent1");
+ elementList = doc.getElementsByTagNameNS("http://www.nist.gov","address");
+ element = elementList.item(0);
+ attributes = element.attributes;
+
+
+ {
+ success = false;
+ try {
+ newNode = attributes.setNamedItemNS(entity);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 3);
+ }
+ assertTrue("throw_HIERARCHY_REQUEST_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapsetnameditemns10</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns11.html b/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns11.html
new file mode 100644
index 0000000000..689c233eb7
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namednodemapsetnameditemns11.html
@@ -0,0 +1,147 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapsetnameditemns11</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namednodemapsetnameditemns11'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namednodemapsetnameditemns11';
+
+
+/**
+*
+ The method setNamedItemNS adds a node using its namespaceURI and localName and
+ raises a HIERARCHY_REQUEST_ERR if an attempt is made to add a node doesn't belong
+ in this NamedNodeMap.
+
+ Attempt to add a notation node to a NamedNodeMap of attribute nodes,
+ Since notations nodes do not belong in the attribute node map a HIERARCHY_REQUEST_ERR
+ should be raised.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-setNamedItemNS
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=259
+*/
+function namednodemapsetnameditemns11() {
+ var success;
+ if(checkInitialization(builder, "namednodemapsetnameditemns11") != null) return;
+ var doc;
+ var docType;
+ var notations;
+ var attributes;
+ var notation;
+ var element;
+ var elementList;
+ var newNode;
+ var nullNS = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ docType = doc.doctype;
+
+ notations = docType.notations;
+
+ assertNotNull("notationsNotNull",notations);
+notation = notations.getNamedItem("notation1");
+ elementList = doc.getElementsByTagNameNS("http://www.nist.gov","address");
+ element = elementList.item(0);
+ attributes = element.attributes;
+
+
+ {
+ success = false;
+ try {
+ newNode = attributes.setNamedItemNS(notation);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 3);
+ }
+ assertTrue("throw_HIERARCHY_REQUEST_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namednodemapsetnameditemns11</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namespaceURI01.html b/dom/tests/mochitest/dom-level2-core/test_namespaceURI01.html
new file mode 100644
index 0000000000..e0a078eb1b
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namespaceURI01.html
@@ -0,0 +1,128 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namespaceURI01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namespaceURI01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+ setImplementationAttribute("validating", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namespaceURI01';
+
+
+/**
+*
+ The "getNamespaceURI()" method for an Attribute
+ returns the namespace URI of this node, or null if unspecified.
+
+ Retrieve the first "emp:address" node which has an attribute of "emp:district"
+ that is specified in the DTD.
+ Invoke the "getNamespaceURI()" method on the attribute.
+ The method should return "http://www.nist.gov".
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-NodeNSname
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=238
+*/
+function namespaceURI01() {
+ var success;
+ if(checkInitialization(builder, "namespaceURI01") != null) return;
+ var doc;
+ var elementList;
+ var testAddr;
+ var addrAttr;
+ var attrNamespaceURI;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("emp:address");
+ testAddr = elementList.item(0);
+ addrAttr = testAddr.getAttributeNodeNS("http://www.nist.gov","district");
+ attrNamespaceURI = addrAttr.namespaceURI;
+
+ assertEquals("namespaceURI","http://www.nist.gov",attrNamespaceURI);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namespaceURI01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namespaceURI02.html b/dom/tests/mochitest/dom-level2-core/test_namespaceURI02.html
new file mode 100644
index 0000000000..49d3a27d07
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namespaceURI02.html
@@ -0,0 +1,126 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namespaceURI02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namespaceURI02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namespaceURI02';
+
+
+/**
+*
+ The "getNamespaceURI()" method for an Attribute
+ returns the namespace URI of this node, or null if unspecified.
+
+ Retrieve the first emp:address node and get the emp:domestic attribute.
+ Invoke the "getNamespaceURI()" method on the attribute.
+ The method should return "http://www.nist.gov".
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-NodeNSname
+*/
+function namespaceURI02() {
+ var success;
+ if(checkInitialization(builder, "namespaceURI02") != null) return;
+ var doc;
+ var elementList;
+ var testAddr;
+ var addrAttr;
+ var attrNamespaceURI;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("emp:address");
+ testAddr = elementList.item(0);
+ assertNotNull("empAddressNotNull",testAddr);
+addrAttr = testAddr.getAttributeNodeNS("http://www.nist.gov","domestic");
+ attrNamespaceURI = addrAttr.namespaceURI;
+
+ assertEquals("namespaceURI","http://www.nist.gov",attrNamespaceURI);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namespaceURI02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namespaceURI03.html b/dom/tests/mochitest/dom-level2-core/test_namespaceURI03.html
new file mode 100644
index 0000000000..c4a7690984
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namespaceURI03.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namespaceURI03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namespaceURI03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namespaceURI03';
+
+
+/**
+*
+ The "getNamespaceURI()" method for a Node
+ returns the namespace URI of this node, or null if unspecified.
+
+ Retrieve the first employee node and invoke the "getNamespaceURI()"
+ method. The method should return "http://www.nist.gov".
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-NodeNSname
+*/
+function namespaceURI03() {
+ var success;
+ if(checkInitialization(builder, "namespaceURI03") != null) return;
+ var doc;
+ var elementList;
+ var testEmployee;
+ var employeeNamespace;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("employee");
+ testEmployee = elementList.item(0);
+ assertNotNull("employeeNotNull",testEmployee);
+employeeNamespace = testEmployee.namespaceURI;
+
+ assertEquals("namespaceURI","http://www.nist.gov",employeeNamespace);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namespaceURI03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_namespaceURI04.html b/dom/tests/mochitest/dom-level2-core/test_namespaceURI04.html
new file mode 100644
index 0000000000..765c516e9d
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_namespaceURI04.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/namespaceURI04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['namespaceURI04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'namespaceURI04';
+
+
+/**
+*
+ Retrieve the second employee node and invoke the "getNamespaceURI()"
+ method. The method should return "null".
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-NodeNSname
+*/
+function namespaceURI04() {
+ var success;
+ if(checkInitialization(builder, "namespaceURI04") != null) return;
+ var doc;
+ var elementList;
+ var testEmployee;
+ var employeeNamespace;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("employee");
+ testEmployee = elementList.item(1);
+ employeeNamespace = testEmployee.namespaceURI;
+
+
+ if(
+
+ (builder.contentType == "image/svg+xml")
+
+ ) {
+ assertTrue("employeeNS_svg",
+
+ (
+ (employeeNamespace == null)
+ || ("http://www.w3.org/2001/DOM-Test-Suite/Level-2/Files" == employeeNamespace))
+);
+
+ }
+
+ else {
+ assertNull("employeeNS_null",employeeNamespace);
+
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/namespaceURI04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_nodegetlocalname03.html b/dom/tests/mochitest/dom-level2-core/test_nodegetlocalname03.html
new file mode 100644
index 0000000000..303ffef14c
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_nodegetlocalname03.html
@@ -0,0 +1,138 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/nodegetlocalname03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['nodegetlocalname03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'nodegetlocalname03';
+
+
+/**
+*
+ The method getLocalName returns the local part of the qualified name of this node.
+
+ Ceate two new element nodes and atribute nodes, with and without namespace prefixes.
+ Retreive the local part of their qualified names using getLocalName and verrify
+ if it is correct.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-NodeNSLocalN
+*/
+function nodegetlocalname03() {
+ var success;
+ if(checkInitialization(builder, "nodegetlocalname03") != null) return;
+ var doc;
+ var element;
+ var qelement;
+ var attr;
+ var qattr;
+ var localElemName;
+ var localQElemName;
+ var localAttrName;
+ var localQAttrName;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ element = doc.createElementNS("http://www.w3.org/DOM/Test/elem","elem");
+ qelement = doc.createElementNS("http://www.w3.org/DOM/Test/elem","qual:qelem");
+ attr = doc.createAttributeNS("http://www.w3.org/DOM/Test/attr","attr");
+ qattr = doc.createAttributeNS("http://www.w3.org/DOM/Test/attr","qual:qattr");
+ localElemName = element.localName;
+
+ localQElemName = qelement.localName;
+
+ localAttrName = attr.localName;
+
+ localQAttrName = qattr.localName;
+
+ assertEquals("nodegetlocalname03_localElemName","elem",localElemName);
+ assertEquals("nodegetlocalname03_localQElemName","qelem",localQElemName);
+ assertEquals("nodegetlocalname03_localAttrName","attr",localAttrName);
+ assertEquals("nodegetlocalname03_localQAttrName","qattr",localQAttrName);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/nodegetlocalname03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_nodegetnamespaceuri03.html b/dom/tests/mochitest/dom-level2-core/test_nodegetnamespaceuri03.html
new file mode 100644
index 0000000000..198b950ca4
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_nodegetnamespaceuri03.html
@@ -0,0 +1,142 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/nodegetnamespaceuri03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['nodegetnamespaceuri03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'nodegetnamespaceuri03';
+
+
+/**
+*
+ The method getNamespaceURI returns the namespace URI of this node, or null if it is unspecified
+ For nodes of any type other than ELEMENT_NODE and ATTRIBUTE_NODE and nodes created with
+ a DOM Level 1 method, such as createElement from the Document interface, this is always null.
+
+ Ceate two new element nodes and atribute nodes, with and without namespace prefixes.
+ Retreive their namespaceURI's using getNamespaceURI and verrify if it is correct.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-NodeNSname
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=259
+*/
+function nodegetnamespaceuri03() {
+ var success;
+ if(checkInitialization(builder, "nodegetnamespaceuri03") != null) return;
+ var doc;
+ var element;
+ var elementNS;
+ var attr;
+ var attrNS;
+ var elemNSURI;
+ var elemNSURINull;
+ var attrNSURI;
+ var attrNSURINull;
+ var nullNS = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ element = doc.createElementNS(nullNS,"elem");
+ elementNS = doc.createElementNS("http://www.w3.org/DOM/Test/elem","qual:qelem");
+ attr = doc.createAttributeNS(nullNS,"attr");
+ attrNS = doc.createAttributeNS("http://www.w3.org/DOM/Test/attr","qual:qattr");
+ elemNSURI = elementNS.namespaceURI;
+
+ elemNSURINull = element.namespaceURI;
+
+ attrNSURI = attrNS.namespaceURI;
+
+ attrNSURINull = attr.namespaceURI;
+
+ assertEquals("nodegetnamespaceuri03_elemNSURI","http://www.w3.org/DOM/Test/elem",elemNSURI);
+ assertNull("nodegetnamespaceuri03_1",elemNSURINull);
+ assertEquals("nodegetnamespaceuri03_attrNSURI","http://www.w3.org/DOM/Test/attr",attrNSURI);
+ assertNull("nodegetnamespaceuri03_2",attrNSURINull);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/nodegetnamespaceuri03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_nodegetownerdocument01.html b/dom/tests/mochitest/dom-level2-core/test_nodegetownerdocument01.html
new file mode 100644
index 0000000000..28dacf12c9
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_nodegetownerdocument01.html
@@ -0,0 +1,126 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/nodegetownerdocument01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['nodegetownerdocument01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'nodegetownerdocument01';
+
+
+/**
+*
+ The method getOwnerDocument returns the Document object associated with this node
+
+ Create a new DocumentType node. Since this node is not used with any Document yet
+ verify if the ownerDocument is null.
+
+ The specification has changed! ownerDocument should not be null.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#node-ownerDoc
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=259
+*/
+function nodegetownerdocument01() {
+ var success;
+ if(checkInitialization(builder, "nodegetownerdocument01") != null) return;
+ var doc;
+ var ownerDoc;
+ var domImpl;
+ var docType;
+ var nullID = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ domImpl = doc.implementation;
+docType = domImpl.createDocumentType("mydoc",nullID,nullID);
+ ownerDoc = docType.ownerDocument;
+
+ assertNotNull("nodegetownerdocument01",ownerDoc);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/nodegetownerdocument01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_nodegetownerdocument02.html b/dom/tests/mochitest/dom-level2-core/test_nodegetownerdocument02.html
new file mode 100644
index 0000000000..8f91797a41
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_nodegetownerdocument02.html
@@ -0,0 +1,133 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/nodegetownerdocument02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['nodegetownerdocument02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'nodegetownerdocument02';
+
+
+/**
+*
+ The method getOwnerDocument returns the Document object associated with this node
+
+ Create a new Document node. Since this node is not used with any Document yet
+ verify if the ownerDocument is null. Create a new element Node on the new Document
+ object. Check the ownerDocument of the new element node.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#node-ownerDoc
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=259
+*/
+function nodegetownerdocument02() {
+ var success;
+ if(checkInitialization(builder, "nodegetownerdocument02") != null) return;
+ var doc;
+ var newDoc;
+ var newElem;
+ var ownerDocDoc;
+ var ownerDocElem;
+ var domImpl;
+ var docType;
+ var nullNS = null;
+
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ domImpl = doc.implementation;
+docType = domImpl.createDocumentType("mydoc",nullNS,nullNS);
+ newDoc = domImpl.createDocument("http://www.w3.org/DOM/Test","mydoc",docType);
+ ownerDocDoc = newDoc.ownerDocument;
+
+ assertNull("nodegetownerdocument02_1",ownerDocDoc);
+ newElem = newDoc.createElementNS("http://www.w3.org/DOM/Test","myelem");
+ ownerDocElem = newElem.ownerDocument;
+
+ assertNotNull("nodegetownerdocument02_2",ownerDocElem);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/nodegetownerdocument02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_nodegetprefix03.html b/dom/tests/mochitest/dom-level2-core/test_nodegetprefix03.html
new file mode 100644
index 0000000000..d9c4140ffd
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_nodegetprefix03.html
@@ -0,0 +1,138 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/nodegetprefix03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['nodegetprefix03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'nodegetprefix03';
+
+
+/**
+*
+ The method getPrefix returns the namespace prefix of this node, or null if it is unspecified.
+
+ Ceate two new element nodes and atribute nodes, with and without namespace prefixes.
+ Retreive the prefix part of their qualified names using getPrefix and verify
+ if it is correct.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-NodeNSPrefix
+*/
+function nodegetprefix03() {
+ var success;
+ if(checkInitialization(builder, "nodegetprefix03") != null) return;
+ var doc;
+ var element;
+ var qelement;
+ var attr;
+ var qattr;
+ var elemNoPrefix;
+ var elemPrefix;
+ var attrNoPrefix;
+ var attrPrefix;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ element = doc.createElementNS("http://www.w3.org/DOM/Test/elem","elem");
+ qelement = doc.createElementNS("http://www.w3.org/DOM/Test/elem","qual:qelem");
+ attr = doc.createAttributeNS("http://www.w3.org/DOM/Test/attr","attr");
+ qattr = doc.createAttributeNS("http://www.w3.org/DOM/Test/attr","qual:qattr");
+ elemNoPrefix = element.prefix;
+
+ elemPrefix = qelement.prefix;
+
+ attrNoPrefix = attr.prefix;
+
+ attrPrefix = qattr.prefix;
+
+ assertNull("nodegetprefix03_1",elemNoPrefix);
+ assertEquals("nodegetprefix03_2","qual",elemPrefix);
+ assertNull("nodegetprefix03_3",attrNoPrefix);
+ assertEquals("nodegetprefix03_4","qual",attrPrefix);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/nodegetprefix03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_nodehasattributes01.html b/dom/tests/mochitest/dom-level2-core/test_nodehasattributes01.html
new file mode 100644
index 0000000000..82bca3a4e5
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_nodehasattributes01.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/nodehasattributes01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['nodehasattributes01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'nodehasattributes01';
+
+
+/**
+*
+ The method hasAttributes returns whether this node (if it is an element) has any attributes.
+
+ Retreive an element node without attributes. Verify if hasAttributes returns false.
+ Retreive another element node with attributes. Verify if hasAttributes returns true.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-NodeHasAttrs
+*/
+function nodehasattributes01() {
+ var success;
+ if(checkInitialization(builder, "nodehasattributes01") != null) return;
+ var doc;
+ var element;
+ var elementList;
+ var hasAttributes;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ elementList = doc.getElementsByTagName("employeeId");
+ element = elementList.item(0);
+ hasAttributes = element.hasAttributes();
+ assertFalse("employeeIdHasAttributesFalse",hasAttributes);
+elementList = doc.getElementsByTagName("address");
+ element = elementList.item(0);
+ hasAttributes = element.hasAttributes();
+ assertTrue("addressHasAttributesTrue",hasAttributes);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/nodehasattributes01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_nodehasattributes02.html b/dom/tests/mochitest/dom-level2-core/test_nodehasattributes02.html
new file mode 100644
index 0000000000..b94abf3c83
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_nodehasattributes02.html
@@ -0,0 +1,118 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/nodehasattributes02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['nodehasattributes02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'nodehasattributes02';
+
+
+/**
+*
+ The method hasAttributes returns whether this node (if it is an element) has any attributes.
+
+ Retrieve the docType node. Since this is not an element node check if hasAttributes returns
+ null.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-NodeHasAttrs
+*/
+function nodehasattributes02() {
+ var success;
+ if(checkInitialization(builder, "nodehasattributes02") != null) return;
+ var doc;
+ var docType;
+ var hasAttributes;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ docType = doc.doctype;
+
+ hasAttributes = docType.hasAttributes();
+ assertFalse("nodehasattributes02",hasAttributes);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/nodehasattributes02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_nodehasattributes03.html b/dom/tests/mochitest/dom-level2-core/test_nodehasattributes03.html
new file mode 100644
index 0000000000..5b365a2d01
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_nodehasattributes03.html
@@ -0,0 +1,119 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/nodehasattributes03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['nodehasattributes03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'nodehasattributes03';
+
+
+/**
+*
+ The method hasAttributes returns whether this node (if it is an element) has any attributes.
+
+ Retreive an element node with a default attributes. Verify if hasAttributes returns true.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-NodeHasAttrs
+*/
+function nodehasattributes03() {
+ var success;
+ if(checkInitialization(builder, "nodehasattributes03") != null) return;
+ var doc;
+ var element;
+ var elementList;
+ var hasAttributes;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("emp:employee");
+ element = elementList.item(0);
+ assertNotNull("empEmployeeNotNull",element);
+hasAttributes = element.hasAttributes();
+ assertTrue("hasAttributes",hasAttributes);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/nodehasattributes03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_nodehasattributes04.html b/dom/tests/mochitest/dom-level2-core/test_nodehasattributes04.html
new file mode 100644
index 0000000000..e3af33f0e3
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_nodehasattributes04.html
@@ -0,0 +1,138 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/nodehasattributes04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['nodehasattributes04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'nodehasattributes04';
+
+
+/**
+*
+ The method hasAttributes returns whether this node (if it is an element) has any attributes.
+
+ Create a new Document, Element and Attr node. Add the Attr to the Element and append the
+ Element to the Document. Retreive the newly created element node from the document and check
+ if it has attributes using hasAttributes.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-NodeHasAttrs
+*/
+function nodehasattributes04() {
+ var success;
+ if(checkInitialization(builder, "nodehasattributes04") != null) return;
+ var doc;
+ var newDoc;
+ var docType = null;
+
+ var domImpl;
+ var element;
+ var elementTest;
+ var elementDoc;
+ var attribute;
+ var setNode;
+ var appendedChild;
+ var elementList;
+ var hasAttributes;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+newDoc = domImpl.createDocument("http://www.w3.org/DOM/Test","test",docType);
+ element = newDoc.createElementNS("http://www.w3.org/DOM/Test","dom:elem");
+ attribute = newDoc.createAttribute("attr");
+ setNode = element.setAttributeNode(attribute);
+ elementDoc = newDoc.documentElement;
+
+ appendedChild = elementDoc.appendChild(element);
+ elementList = newDoc.getElementsByTagNameNS("http://www.w3.org/DOM/Test","elem");
+ elementTest = elementList.item(0);
+ hasAttributes = elementTest.hasAttributes();
+ assertTrue("nodehasattributes04",hasAttributes);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/nodehasattributes04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_nodenormalize01.html b/dom/tests/mochitest/dom-level2-core/test_nodenormalize01.html
new file mode 100644
index 0000000000..2a2beab4ad
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_nodenormalize01.html
@@ -0,0 +1,238 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/nodenormalize01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['nodenormalize01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'nodenormalize01';
+
+
+/**
+*
+ The method "normalize" puts all Text nodes in the full depth of the sub-tree underneath
+ this Node, including attribute nodes, into a "normal" form where only structure
+ (e.g., elements, comments, processing instructions, CDATA sections, and entity references)
+ separates Text nodes, i.e., there are neither adjacent Text nodes nor empty Text nodes.
+
+ Create a dom tree consisting of elements, comments, processing instructions, CDATA sections,
+ and entity references nodes seperated by text nodes. Check the length of the node list of each
+ before and after normalize has been called.
+
+* @author IBM
+* @author Neil Delima
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-normalize
+*/
+function nodenormalize01() {
+ var success;
+ if(checkInitialization(builder, "nodenormalize01") != null) return;
+ var doc;
+ var newDoc;
+ var domImpl;
+ var docType;
+ var docTypeNull = null;
+
+ var documentElement;
+ var element1;
+ var element2;
+ var element3;
+ var element4;
+ var element5;
+ var element6;
+ var element7;
+ var text1;
+ var text2;
+ var text3;
+ var pi;
+ var cData;
+ var comment;
+ var entRef;
+ var elementList;
+ var appendedChild;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ domImpl = doc.implementation;
+newDoc = domImpl.createDocument("http://www.w3.org/DOM/Test","dom:root",docTypeNull);
+ element1 = newDoc.createElement("element1");
+ element2 = newDoc.createElement("element2");
+ element3 = newDoc.createElement("element3");
+ element4 = newDoc.createElement("element4");
+ element5 = newDoc.createElement("element5");
+ element6 = newDoc.createElement("element6");
+ element7 = newDoc.createElement("element7");
+ text1 = newDoc.createTextNode("text1");
+ text2 = newDoc.createTextNode("text2");
+ text3 = newDoc.createTextNode("text3");
+ cData = newDoc.createCDATASection("Cdata");
+ comment = newDoc.createComment("comment");
+ pi = newDoc.createProcessingInstruction("PITarget","PIData");
+ entRef = newDoc.createEntityReference("EntRef");
+ assertNotNull("createdEntRefNotNull",entRef);
+documentElement = newDoc.documentElement;
+
+ appendedChild = documentElement.appendChild(element1);
+ appendedChild = element2.appendChild(text1);
+ appendedChild = element2.appendChild(text2);
+ appendedChild = element2.appendChild(text3);
+ appendedChild = element1.appendChild(element2);
+ text1 = text1.cloneNode(false);
+ text2 = text2.cloneNode(false);
+ appendedChild = element3.appendChild(entRef);
+ appendedChild = element3.appendChild(text1);
+ appendedChild = element3.appendChild(text2);
+ appendedChild = element1.appendChild(element3);
+ text1 = text1.cloneNode(false);
+ text2 = text2.cloneNode(false);
+ appendedChild = element4.appendChild(cData);
+ appendedChild = element4.appendChild(text1);
+ appendedChild = element4.appendChild(text2);
+ appendedChild = element1.appendChild(element4);
+ text2 = text2.cloneNode(false);
+ text3 = text3.cloneNode(false);
+ appendedChild = element5.appendChild(comment);
+ appendedChild = element5.appendChild(text2);
+ appendedChild = element5.appendChild(text3);
+ appendedChild = element1.appendChild(element5);
+ text2 = text2.cloneNode(false);
+ text3 = text3.cloneNode(false);
+ appendedChild = element6.appendChild(pi);
+ appendedChild = element6.appendChild(text2);
+ appendedChild = element6.appendChild(text3);
+ appendedChild = element1.appendChild(element6);
+ entRef = entRef.cloneNode(false);
+ text1 = text1.cloneNode(false);
+ text2 = text2.cloneNode(false);
+ text3 = text3.cloneNode(false);
+ appendedChild = element7.appendChild(entRef);
+ appendedChild = element7.appendChild(text1);
+ appendedChild = element7.appendChild(text2);
+ appendedChild = element7.appendChild(text3);
+ appendedChild = element1.appendChild(element7);
+ elementList = element1.childNodes;
+
+ assertSize("nodeNormalize01_1Bef",6,elementList);
+elementList = element2.childNodes;
+
+ assertSize("nodeNormalize01_2Bef",3,elementList);
+elementList = element3.childNodes;
+
+ assertSize("nodeNormalize01_3Bef",3,elementList);
+elementList = element4.childNodes;
+
+ assertSize("nodeNormalize01_4Bef",3,elementList);
+elementList = element5.childNodes;
+
+ assertSize("nodeNormalize01_5Bef",3,elementList);
+elementList = element6.childNodes;
+
+ assertSize("nodeNormalize01_6Bef",3,elementList);
+elementList = element7.childNodes;
+
+ assertSize("nodeNormalize01_7Bef",4,elementList);
+newDoc.normalize();
+ elementList = element1.childNodes;
+
+ assertSize("nodeNormalize01_1Aft",6,elementList);
+elementList = element2.childNodes;
+
+ assertSize("nodeNormalize01_2Aft",1,elementList);
+elementList = element3.childNodes;
+
+ assertSize("nodeNormalize01_3Aft",2,elementList);
+elementList = element4.childNodes;
+
+ assertSize("nodeNormalize01_4Aft",2,elementList);
+elementList = element5.childNodes;
+
+ assertSize("nodeNormalize01_5Aft",2,elementList);
+elementList = element6.childNodes;
+
+ assertSize("nodeNormalize01_6Aft",2,elementList);
+elementList = element7.childNodes;
+
+ assertSize("nodeNormalize01_7Aft",2,elementList);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/nodenormalize01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_normalize01.html b/dom/tests/mochitest/dom-level2-core/test_normalize01.html
new file mode 100644
index 0000000000..3264355281
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_normalize01.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/normalize01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['normalize01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'normalize01';
+
+
+/**
+*
+ The "normalize()" method puts all the nodes in the full
+ depth of the sub-tree underneath this element into a
+ "normal" form.
+
+ Retrieve the third employee and access its second child.
+ This child contains a block of text that is spread
+ across multiple lines. The content of the "name" child
+ should be parsed and treated as a single Text node.
+
+ This appears to be a duplicate of elementnormalize.xml in DOM L1 Test Suite
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-normalize
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-72AB8359
+*/
+function normalize01() {
+ var success;
+ if(checkInitialization(builder, "normalize01") != null) return;
+ var doc;
+ var root;
+ var elementList;
+ var firstChild;
+ var textList;
+ var textNode;
+ var data;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ root = doc.documentElement;
+
+ root.normalize();
+ elementList = root.getElementsByTagName("name");
+ firstChild = elementList.item(2);
+ textList = firstChild.childNodes;
+
+ textNode = textList.item(0);
+ data = textNode.data;
+
+ assertEquals("data","Roger\n Jones",data);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/normalize01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_ownerDocument01.html b/dom/tests/mochitest/dom-level2-core/test_ownerDocument01.html
new file mode 100644
index 0000000000..8f676c9d41
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_ownerDocument01.html
@@ -0,0 +1,117 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/ownerDocument01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['ownerDocument01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'ownerDocument01';
+
+
+/**
+*
+ The "getOwnerDocument()" method returns null if the target
+ node itself is a DocumentType which is not used with any document yet.
+
+ Invoke the "getOwnerDocument()" method on the master
+ document. The DocumentType returned should be null.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#node-ownerDoc
+*/
+function ownerDocument01() {
+ var success;
+ if(checkInitialization(builder, "ownerDocument01") != null) return;
+ var doc;
+ var ownerDocument;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ ownerDocument = doc.ownerDocument;
+
+ assertNull("throw_Null",ownerDocument);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/ownerDocument01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_ownerElement01.html b/dom/tests/mochitest/dom-level2-core/test_ownerElement01.html
new file mode 100644
index 0000000000..ba2d14b5e2
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_ownerElement01.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/ownerElement01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['ownerElement01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'ownerElement01';
+
+
+/**
+*
+ The "getOwnerElement()" will return the Element node this attribute
+ is attached to or null if this attribute is not in use.
+ Get the "domestic" attribute from the first "address" node.
+ Apply the "getOwnerElement()" method to get the Element associated
+ with the attribute. The value returned should be "address".
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-F68D095
+*/
+function ownerElement01() {
+ var success;
+ if(checkInitialization(builder, "ownerElement01") != null) return;
+ var doc;
+ var addressList;
+ var testNode;
+ var attributes;
+ var domesticAttr;
+ var elementNode;
+ var name;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ addressList = doc.getElementsByTagName("address");
+ testNode = addressList.item(0);
+ attributes = testNode.attributes;
+
+ domesticAttr = attributes.getNamedItem("domestic");
+ elementNode = domesticAttr.ownerElement;
+
+ name = elementNode.nodeName;
+
+ assertEquals("throw_Equals","address",name);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/ownerElement01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_ownerElement02.html b/dom/tests/mochitest/dom-level2-core/test_ownerElement02.html
new file mode 100644
index 0000000000..bbc4eede86
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_ownerElement02.html
@@ -0,0 +1,120 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/ownerElement02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['ownerElement02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'ownerElement02';
+
+
+/**
+*
+ The "getOwnerElement()" will return the Element node this attribute
+ is attached to or null if this attribute is not in use.
+ Create a new attribute.
+ Apply the "getOwnerElement()" method to get the Element associated
+ with the attribute. The value returned should be "null" since this
+ attribute is not in use.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#Attr-ownerElement
+*/
+function ownerElement02() {
+ var success;
+ if(checkInitialization(builder, "ownerElement02") != null) return;
+ var doc;
+ var newAttr;
+ var elementNode;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staff");
+ newAttr = doc.createAttribute("newAttribute");
+ elementNode = newAttr.ownerElement;
+
+ assertNull("throw_Null",elementNode);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/ownerElement02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_prefix01.html b/dom/tests/mochitest/dom-level2-core/test_prefix01.html
new file mode 100644
index 0000000000..d1ed87b2e1
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_prefix01.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/prefix01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['prefix01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'prefix01';
+
+
+/**
+*
+ The "getPrefix()" method for a Node
+ returns the namespace prefix of the node,
+ and for nodes of any type other than ELEMENT_NODE and ATTRIBUTE_NODE
+ and nodes created with a DOM Level 1 method, this is null.
+
+ Create an new Element with the createElement() method.
+ Invoke the "getPrefix()" method on the newly created element
+ node will cause "null" to be returned.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-NodeNSPrefix
+*/
+function prefix01() {
+ var success;
+ if(checkInitialization(builder, "prefix01") != null) return;
+ var doc;
+ var createdNode;
+ var prefix;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ createdNode = doc.createElement("test:employee");
+ prefix = createdNode.prefix;
+
+ assertNull("throw_Null",prefix);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/prefix01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_prefix03.html b/dom/tests/mochitest/dom-level2-core/test_prefix03.html
new file mode 100644
index 0000000000..6960ace268
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_prefix03.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/prefix03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['prefix03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'prefix03';
+
+
+/**
+*
+ The "getPrefix()" method for a node
+ returns the namespace prefix of this node, or null if it is unspecified.
+
+ Retrieve the first emp:employee node and invoke the getPrefix() method."
+ The method should return "emp".
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-NodeNSPrefix
+*/
+function prefix03() {
+ var success;
+ if(checkInitialization(builder, "prefix03") != null) return;
+ var doc;
+ var elementList;
+ var testEmployee;
+ var prefix;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("emp:employee");
+ testEmployee = elementList.item(0);
+ assertNotNull("empEmployeeNotNull",testEmployee);
+prefix = testEmployee.prefix;
+
+ assertEquals("prefix","emp",prefix);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/prefix03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_prefix04.html b/dom/tests/mochitest/dom-level2-core/test_prefix04.html
new file mode 100644
index 0000000000..97fac3e3fe
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_prefix04.html
@@ -0,0 +1,121 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/prefix04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['prefix04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'prefix04';
+
+
+/**
+*
+ The "getPrefix()" method for a node
+ returns the namespace prefix of this node, or null if it is unspecified.
+
+ Retrieve the first employee node and invoke the getPrefix() method."
+ The method should return "null".
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-NodeNSPrefix
+*/
+function prefix04() {
+ var success;
+ if(checkInitialization(builder, "prefix04") != null) return;
+ var doc;
+ var elementList;
+ var testEmployee;
+ var prefix;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("employee");
+ testEmployee = elementList.item(0);
+ prefix = testEmployee.prefix;
+
+ assertNull("throw_Null",prefix);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/prefix04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_publicId01.html b/dom/tests/mochitest/dom-level2-core/test_publicId01.html
new file mode 100644
index 0000000000..ac57ed25bd
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_publicId01.html
@@ -0,0 +1,121 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/publicId01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['publicId01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'publicId01';
+
+
+/**
+*
+ The "getPublicId()" method of a documenttype node contains
+ the public identifier associated with the external subset.
+
+ Retrieve the documenttype.
+ Apply the "getPublicId()" method. The string "STAFF" should be
+ returned.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-Core-DocType-publicId
+*/
+function publicId01() {
+ var success;
+ if(checkInitialization(builder, "publicId01") != null) return;
+ var doc;
+ var docType;
+ var publicId;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ docType = doc.doctype;
+
+ publicId = docType.publicId;
+
+ assertEquals("throw_Equals","STAFF",publicId);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/publicId01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_removeAttributeNS01.html b/dom/tests/mochitest/dom-level2-core/test_removeAttributeNS01.html
new file mode 100644
index 0000000000..dfafdc4d56
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_removeAttributeNS01.html
@@ -0,0 +1,155 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/removeAttributeNS01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['removeAttributeNS01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'removeAttributeNS01';
+
+
+/**
+*
+ The "removeAttributeNS(namespaceURI,localName)" method for an attribute causes the
+ DOMException NO_MODIFICATION_ALLOWED_ERR to be raised
+ if the node is readonly.
+
+ Obtain the children of the THIRD "gender" element. The elements
+ content is an entity reference. Try to remove an attribute
+ from the entity reference by executing the
+ "removeAttributeNS(namespaceURI,localName)" method.
+ This causes a NO_MODIFICATION_ALLOWED_ERR DOMException to be thrown.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='NO_MODIFICATION_ALLOWED_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElRemAtNS
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-ElRemAtNS')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='NO_MODIFICATION_ALLOWED_ERR'])
+*/
+function removeAttributeNS01() {
+ var success;
+ if(checkInitialization(builder, "removeAttributeNS01") != null) return;
+ var doc;
+ var genderList;
+ var gender;
+ var gen;
+ var gList;
+ var genElement;
+ var nodeType;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ genderList = doc.getElementsByTagName("gender");
+ gender = genderList.item(2);
+ gen = gender.firstChild;
+
+ nodeType = gen.nodeType;
+
+
+ if(
+ (1 == nodeType)
+ ) {
+ gen = doc.createEntityReference("ent4");
+ assertNotNull("createdEntRefNotNull",gen);
+
+ }
+ gList = gen.childNodes;
+
+ genElement = gList.item(0);
+ assertNotNull("notnull",genElement);
+
+ {
+ success = false;
+ try {
+ genElement.removeAttributeNS("www.xyz.com","local1");
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 7);
+ }
+ assertTrue("throw_NO_MODIFICATION_ALLOWED_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/removeAttributeNS01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_removeAttributeNS02.html b/dom/tests/mochitest/dom-level2-core/test_removeAttributeNS02.html
new file mode 100644
index 0000000000..5b790fcf1a
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_removeAttributeNS02.html
@@ -0,0 +1,146 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/removeAttributeNS02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['removeAttributeNS02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+ setImplementationAttribute("validating", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'removeAttributeNS02';
+
+
+/**
+*
+ The "removeAttributeNS(namespaceURI,localName)" removes an attribute by
+ local name and namespace URI. If the removed attribute has a
+ default value it is immediately replaced. The replacing attribute has the same
+ namespace URI and local name, as well as the original prefix.
+
+ Retrieve the attribute named "emp:local" from emp:address
+ node, then remove the "emp:local"
+ attribute by invoking the "removeAttributeNS(namespaceURI,localName)" method.
+ The "emp:local" attribute has a default value defined in the
+ DTD file, that value should immediately replace the old
+ value.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElRemAtNS
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=238
+*/
+function removeAttributeNS02() {
+ var success;
+ if(checkInitialization(builder, "removeAttributeNS02") != null) return;
+ var doc;
+ var elementList;
+ var testAddr;
+ var addrAttr;
+ var attr;
+ var namespaceURI;
+ var localName;
+ var prefix;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("emp:address");
+ testAddr = elementList.item(0);
+ testAddr.removeAttributeNS("http://www.nist.gov","local1");
+ elementList = doc.getElementsByTagName("emp:address");
+ testAddr = elementList.item(0);
+ addrAttr = testAddr.getAttributeNodeNS("http://www.nist.gov","local1");
+ attr = testAddr.getAttributeNS("http://www.nist.gov","local1");
+ namespaceURI = addrAttr.namespaceURI;
+
+ localName = addrAttr.localName;
+
+ prefix = testAddr.prefix;
+
+ assertEquals("attr","FALSE",attr);
+ assertEquals("uri","http://www.nist.gov",namespaceURI);
+ assertEquals("lname","local1",localName);
+ assertEquals("prefix","emp",prefix);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/removeAttributeNS02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_removeNamedItemNS01.html b/dom/tests/mochitest/dom-level2-core/test_removeNamedItemNS01.html
new file mode 100644
index 0000000000..6d85b8d01d
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_removeNamedItemNS01.html
@@ -0,0 +1,131 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/removeNamedItemNS01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['removeNamedItemNS01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'removeNamedItemNS01';
+
+
+/**
+*
+ The "removeNamedItemNS(namespaceURI,localName)" method for a
+ NamedNodeMap should remove a node specified by localName and namespaceURI.
+
+ Retrieve a list of elements with tag name "address".
+ Access the second element from the list and get its attributes.
+ Try to remove the attribute node with local name "domestic"
+ and namespace uri "http://www.usa.com" with
+ method removeNamedItemNS(namespaceURI,localName).
+ Check to see if the node has been removed.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-1074577549
+*/
+function removeNamedItemNS01() {
+ var success;
+ if(checkInitialization(builder, "removeNamedItemNS01") != null) return;
+ var doc;
+ var elementList;
+ var testAddress;
+ var attributes;
+ var newAttr;
+ var removedNode;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("address");
+ testAddress = elementList.item(1);
+ attributes = testAddress.attributes;
+
+ removedNode = attributes.removeNamedItemNS("http://www.usa.com","domestic");
+ assertNotNull("retval",removedNode);
+newAttr = attributes.getNamedItem("dmstc:domestic");
+ assertNull("nodeRemoved",newAttr);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/removeNamedItemNS01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_removeNamedItemNS02.html b/dom/tests/mochitest/dom-level2-core/test_removeNamedItemNS02.html
new file mode 100644
index 0000000000..132ec5599d
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_removeNamedItemNS02.html
@@ -0,0 +1,141 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/removeNamedItemNS02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['removeNamedItemNS02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'removeNamedItemNS02';
+
+
+/**
+*
+ The "removeNamedItemNS(namespaceURI,localName)" method for a
+ NamedNodeMap should raise NOT_FOUND_ERR DOMException if
+ there is no node with the specified namespaceURI and localName in this map.
+
+ Retrieve a list of elements with tag name "address".
+ Access the second element from the list and get its attributes.
+ Try to remove an attribute node with local name "domest"
+ and namespace uri "http://www.usa.com" with
+ method removeNamedItemNS(namespaceURI,localName).
+ This should raise NOT_FOUND_ERR DOMException.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='NOT_FOUND_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-removeNamedItemNS
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-removeNamedItemNS')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='NOT_FOUND_ERR'])
+*/
+function removeNamedItemNS02() {
+ var success;
+ if(checkInitialization(builder, "removeNamedItemNS02") != null) return;
+ var namespaceURI = "http://www.usa.com";
+ var localName = "domest";
+ var doc;
+ var elementList;
+ var testAddress;
+ var attributes;
+ var removedNode;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("address");
+ testAddress = elementList.item(1);
+ attributes = testAddress.attributes;
+
+
+ {
+ success = false;
+ try {
+ removedNode = attributes.removeNamedItemNS(namespaceURI,localName);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 8);
+ }
+ assertTrue("throw_NOT_FOUND_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/removeNamedItemNS02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_removeNamedItemNS03.html b/dom/tests/mochitest/dom-level2-core/test_removeNamedItemNS03.html
new file mode 100644
index 0000000000..0b41f3fc0a
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_removeNamedItemNS03.html
@@ -0,0 +1,163 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/removeNamedItemNS03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['removeNamedItemNS03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'removeNamedItemNS03';
+
+
+/**
+*
+ The "removeNamedItemNS(namespaceURI,localName)" method for a
+ NamedNodeMap should raise NO_MODIFICATION_ALLOWED_ERR DOMException if
+ this map is readonly.
+
+ Retrieve a list of "gender" elements. Get access to the THIRD element
+ which contains an ENTITY_REFERENCE child node. Try to remove the attribute
+ in the node's map with method removeNamedItemNS(namespaceURI,localName).
+ This should result in NO_MODIFICATION_ALLOWED_ERR
+ DOMException.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='NO_MODIFICATION_ALLOWED_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-removeNamedItemNS
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-removeNamedItemNS')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='NO_MODIFICATION_ALLOWED_ERR'])
+*/
+function removeNamedItemNS03() {
+ var success;
+ if(checkInitialization(builder, "removeNamedItemNS03") != null) return;
+ var namespaceURI = "http://www.w3.org/2000/xmlns/";
+ var localName = "local1";
+ var doc;
+ var elementList;
+ var testAddress;
+ var nList;
+ var child;
+ var n2List;
+ var child2;
+ var attributes;
+ var removedNode;
+ var nodeType;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("gender");
+ testAddress = elementList.item(2);
+ nList = testAddress.childNodes;
+
+ child = nList.item(0);
+ nodeType = child.nodeType;
+
+
+ if(
+ (1 == nodeType)
+ ) {
+ child = doc.createEntityReference("ent4");
+ assertNotNull("createdEntRefNotNull",child);
+
+ }
+ n2List = child.childNodes;
+
+ child2 = n2List.item(0);
+ assertNotNull("notnull",child2);
+attributes = child2.attributes;
+
+
+ {
+ success = false;
+ try {
+ removedNode = attributes.removeNamedItemNS(namespaceURI,localName);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 7);
+ }
+ assertTrue("throw_NO_MODIFICATION_ALLOWED_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/removeNamedItemNS03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_setAttributeNS01.html b/dom/tests/mochitest/dom-level2-core/test_setAttributeNS01.html
new file mode 100644
index 0000000000..68abcf4915
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_setAttributeNS01.html
@@ -0,0 +1,134 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNS01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['setAttributeNS01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'setAttributeNS01';
+
+
+/**
+*
+ The "setAttributeNS(namespaceURI,qualifiedName,Value)" method raises a
+ INVALID_CHARACTER_ERR DOMException if the specified
+ prefix contains an illegal character.
+
+ Attempt to add a new attribute on the first employee node.
+ An exception should be raised since the "qualifiedName" has an invalid
+ character.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='INVALID_CHARACTER_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAttrNS
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-ElSetAttrNS')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='INVALID_CHARACTER_ERR'])
+*/
+function setAttributeNS01() {
+ var success;
+ if(checkInitialization(builder, "setAttributeNS01") != null) return;
+ var namespaceURI = "http://www.nist.gov";
+ var qualifiedName = "emp:qual?name";
+ var doc;
+ var elementList;
+ var testAddr;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("employee");
+ testAddr = elementList.item(0);
+
+ {
+ success = false;
+ try {
+ testAddr.setAttributeNS(namespaceURI,qualifiedName,"newValue");
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 5);
+ }
+ assertTrue("throw_INVALID_CHARACTER_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNS01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_setAttributeNS02.html b/dom/tests/mochitest/dom-level2-core/test_setAttributeNS02.html
new file mode 100644
index 0000000000..162cb66649
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_setAttributeNS02.html
@@ -0,0 +1,133 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNS02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['setAttributeNS02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'setAttributeNS02';
+
+
+/**
+*
+ The "setAttributeNS(namespaceURI,qualifiedName,value)" method raises a
+ NAMESPACE_ERR DOMException if the specified
+ qualifiedName if malformed.
+
+ Attempt to add a new attribute on the second employee node.
+ An exception should be raised since the "qualifiedName" is malformed.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='NAMESPACE_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAttrNS
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-ElSetAttrNS')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='NAMESPACE_ERR'])
+*/
+function setAttributeNS02() {
+ var success;
+ if(checkInitialization(builder, "setAttributeNS02") != null) return;
+ var namespaceURI = "http://www.nist.gov";
+ var qualifiedName = "emp:";
+ var doc;
+ var elementList;
+ var testAddr;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("emp:employee");
+ testAddr = elementList.item(0);
+
+ {
+ success = false;
+ try {
+ testAddr.setAttributeNS(namespaceURI,qualifiedName,"newValue");
+ }
+ catch(ex) {
+ success = ex.code === DOMException.INVALID_CHARACTER_ERR;
+ }
+ assertTrue("throw INVALID_CHARACTER_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNS02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_setAttributeNS03.html b/dom/tests/mochitest/dom-level2-core/test_setAttributeNS03.html
new file mode 100644
index 0000000000..98afdb02da
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_setAttributeNS03.html
@@ -0,0 +1,158 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNS03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['setAttributeNS03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'setAttributeNS03';
+
+
+/**
+*
+ The "setAttributeNS(namespaceURI,qualifiedName,value)" method for an attribute causes the
+ DOMException NO_MODIFICATION_ALLOWED_ERR to be raised
+ if the node is readonly.
+
+ Obtain the children of the THIRD "gender" element. The elements
+ content is an entity reference. Try to set an attribute
+ in the entity reference by executing the
+ "setAttributeNS(namespaceURI,qualifiedName,value)" method.
+ This causes a NO_MODIFICATION_ALLOWED_ERR DOMException to be thrown.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='NO_MODIFICATION_ALLOWED_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAttrNS
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-ElSetAttrNS')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='NO_MODIFICATION_ALLOWED_ERR'])
+*/
+function setAttributeNS03() {
+ var success;
+ if(checkInitialization(builder, "setAttributeNS03") != null) return;
+ var namespaceURI = "www.xyz.com";
+ var qualifiedName = "emp:local1";
+ var doc;
+ var genderList;
+ var gender;
+ var genList;
+ var gen;
+ var gList;
+ var genElement;
+ var nodeType;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ genderList = doc.getElementsByTagName("gender");
+ gender = genderList.item(2);
+ genList = gender.childNodes;
+
+ gen = genList.item(0);
+ nodeType = gen.nodeType;
+
+
+ if(
+ (1 == nodeType)
+ ) {
+ gen = doc.createEntityReference("ent4");
+ assertNotNull("createdEntRefNotNull",gen);
+
+ }
+ gList = gen.childNodes;
+
+ genElement = gList.item(0);
+ assertNotNull("notnull",genElement);
+
+ {
+ success = false;
+ try {
+ genElement.setAttributeNS(namespaceURI,qualifiedName,"newValue");
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 7);
+ }
+ assertTrue("throw_NO_MODIFICATION_ALLOWED_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNS03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_setAttributeNS04.html b/dom/tests/mochitest/dom-level2-core/test_setAttributeNS04.html
new file mode 100644
index 0000000000..f06f726904
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_setAttributeNS04.html
@@ -0,0 +1,144 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNS04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['setAttributeNS04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'setAttributeNS04';
+
+
+/**
+*
+ The "setAttributeNS(namespaceURI,qualifiedName,value)" method adds a new attribute.
+ If an attribute with the same local name and namespace URI is already present
+ on the element, its prefix is changed to be the prefix part of the "qualifiedName",
+ and its vale is changed to be the "value" paramter.
+ null value if no previously existing Attr node with the
+ same name was replaced.
+
+ Add a new attribute to the "emp:address" element.
+ Check to see if the new attribute has been successfully added to the document
+ by getting the attributes value, namespace URI, local Name and prefix.
+ The prefix will be changed to the prefix part of the "qualifiedName"
+ and its value changed to the "value" parameter.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#
+*/
+function setAttributeNS04() {
+ var success;
+ if(checkInitialization(builder, "setAttributeNS04") != null) return;
+ var doc;
+ var elementList;
+ var testAddr;
+ var addrAttr;
+ var resultAttr;
+ var resultNamespaceURI;
+ var resultLocalName;
+ var resultPrefix;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("emp:address");
+ testAddr = elementList.item(0);
+ assertNotNull("empAddrNotNull",testAddr);
+testAddr.setAttributeNS("http://www.nist.gov","newprefix:zone","newValue");
+ addrAttr = testAddr.getAttributeNodeNS("http://www.nist.gov","zone");
+ resultAttr = testAddr.getAttributeNS("http://www.nist.gov","zone");
+ assertEquals("attrValue","newValue",resultAttr);
+ resultNamespaceURI = addrAttr.namespaceURI;
+
+ assertEquals("nsuri","http://www.nist.gov",resultNamespaceURI);
+ resultLocalName = addrAttr.localName;
+
+ assertEquals("lname","zone",resultLocalName);
+ resultPrefix = addrAttr.prefix;
+
+ assertEquals("prefix","newprefix",resultPrefix);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNS04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_setAttributeNS05.html b/dom/tests/mochitest/dom-level2-core/test_setAttributeNS05.html
new file mode 100644
index 0000000000..443c817f5b
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_setAttributeNS05.html
@@ -0,0 +1,132 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNS05</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['setAttributeNS05'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'setAttributeNS05';
+
+
+/**
+*
+ The "setAttributeNS(namespaceURI,qualifiedName,value)" method adds a new attribute.
+ If an attribute with the same local name and namespace URI is already present
+ on the element, its prefix is changed to be the prefix part of the "qualifiedName",
+ and its vale is changed to be the "value" paramter.
+ null value if no previously existing Attr node with the
+ same name was replaced.
+
+ Add a new attribute to the "emp:address" element.
+ Check to see if the new attribute has been successfully added to the document.
+ The new attribute "<newValue>" contains markup and therefore is escaped
+ by the implementation.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElGetAttrNS
+*/
+function setAttributeNS05() {
+ var success;
+ if(checkInitialization(builder, "setAttributeNS05") != null) return;
+ var localName = "newAttr";
+ var namespaceURI = "http://www.newattr.com";
+ var qualifiedName = "emp:newAttr";
+ var doc;
+ var elementList;
+ var testAddr;
+ var addrAttr;
+ var resultAttr;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("emp:address");
+ testAddr = elementList.item(0);
+ assertNotNull("empAddrNotNull",testAddr);
+testAddr.setAttributeNS(namespaceURI,qualifiedName,"<newValue>");
+ resultAttr = testAddr.getAttributeNS(namespaceURI,localName);
+ assertEquals("throw_Equals","<newValue>",resultAttr);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNS05</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_setAttributeNS06.html b/dom/tests/mochitest/dom-level2-core/test_setAttributeNS06.html
new file mode 100644
index 0000000000..df92c69281
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_setAttributeNS06.html
@@ -0,0 +1,135 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNS06</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['setAttributeNS06'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'setAttributeNS06';
+
+
+/**
+*
+ The "setAttributeNS(namespaceURI,localName,value)" method raises a
+ NAMESPACE_ERR DOMException if the "qualifiedName" has a
+ prefix of "xml" and the namespaceURI is different from
+ http://www.w3.org/XML/1998/namespace.
+
+ Attempt to add an attribute with a prefix of "xml" as the on the first employee node.
+ An exception should be raised since the namespaceURI of this node is not
+ http://www.w3.org/XML/1998/namespace.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='NAMESPACE_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAttrNS
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-ElSetAttrNS')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='NAMESPACE_ERR'])
+*/
+function setAttributeNS06() {
+ var success;
+ if(checkInitialization(builder, "setAttributeNS06") != null) return;
+ var namespaceURI = "http://www.nist.gov";
+ var qualifiedName = "xml:qualifiedName";
+ var doc;
+ var elementList;
+ var testAddr;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("employee");
+ testAddr = elementList.item(0);
+
+ {
+ success = false;
+ try {
+ testAddr.setAttributeNS(namespaceURI,qualifiedName,"newValue");
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 14);
+ }
+ assertTrue("throw_NAMESPACE_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNS06</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_setAttributeNS07.html b/dom/tests/mochitest/dom-level2-core/test_setAttributeNS07.html
new file mode 100644
index 0000000000..d36789de24
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_setAttributeNS07.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNS07</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['setAttributeNS07'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'setAttributeNS07';
+
+
+/**
+*
+ The "setAttributeNS(namespaceURI,localName,value)" method raises a
+ NAMESPACE_ERR DOMException if the "qualifiedName" has a
+ value of "xmlns" and the namespaceURI is different from
+ http://www.w3.org/2000/xmlns.
+
+ Attempt to add an attribute with a "qualifiedName" of "xmlns" as the
+ on the first employee node.
+ An exception should be raised since the namespaceURI of this node is not
+ http://www.w3.org/2000/xmlns.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='NAMESPACE_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAttrNS
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-ElSetAttrNS')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='NAMESPACE_ERR'])
+*/
+function setAttributeNS07() {
+ var success;
+ if(checkInitialization(builder, "setAttributeNS07") != null) return;
+ var namespaceURI = "http://www.nist.gov";
+ var qualifiedName = "xmlns";
+ var doc;
+ var elementList;
+ var testAddr;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("employee");
+ testAddr = elementList.item(0);
+
+ {
+ success = false;
+ try {
+ testAddr.setAttributeNS(namespaceURI,qualifiedName,"newValue");
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 14);
+ }
+ assertTrue("throw_NAMESPACE_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNS07</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_setAttributeNS09.html b/dom/tests/mochitest/dom-level2-core/test_setAttributeNS09.html
new file mode 100644
index 0000000000..3b0ca22005
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_setAttributeNS09.html
@@ -0,0 +1,144 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNS09</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['setAttributeNS09'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'setAttributeNS09';
+
+
+/**
+*
+ The "setAttributeNS(namespaceURI,qualifiedName,value)" method adds a new attribute.
+ If an attribute with the same local name and namespace URI is already present
+ on the element, its prefix is changed to be the prefix part of the "qualifiedName",
+ and its vale is changed to be the "value" paramter.
+ null value if no previously existing Attr node with the
+ same name was replaced.
+
+ Add a new attribute to the "emp:address" element.
+ Check to see if the new attribute has been successfully added to the document
+ by getting the attributes value, namespace URI, local Name and prefix.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAttrNS
+*/
+function setAttributeNS09() {
+ var success;
+ if(checkInitialization(builder, "setAttributeNS09") != null) return;
+ var localName = "newAttr";
+ var namespaceURI = "http://www.newattr.com";
+ var qualifiedName = "emp:newAttr";
+ var doc;
+ var elementList;
+ var testAddr;
+ var addrAttr;
+ var resultAttr;
+ var resultNamespaceURI;
+ var resultLocalName;
+ var resultPrefix;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("emp:address");
+ testAddr = elementList.item(0);
+ assertNotNull("empAddrNotNull",testAddr);
+testAddr.setAttributeNS(namespaceURI,qualifiedName,"newValue");
+ addrAttr = testAddr.getAttributeNodeNS(namespaceURI,localName);
+ resultAttr = testAddr.getAttributeNS(namespaceURI,localName);
+ assertEquals("attrValue","newValue",resultAttr);
+ resultNamespaceURI = addrAttr.namespaceURI;
+
+ assertEquals("nsuri","http://www.newattr.com",resultNamespaceURI);
+ resultLocalName = addrAttr.localName;
+
+ assertEquals("lname","newAttr",resultLocalName);
+ resultPrefix = addrAttr.prefix;
+
+ assertEquals("prefix","emp",resultPrefix);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNS09</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_setAttributeNS10.html b/dom/tests/mochitest/dom-level2-core/test_setAttributeNS10.html
new file mode 100644
index 0000000000..0d2ff8b2e8
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_setAttributeNS10.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNS10</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['setAttributeNS10'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "hc_staff");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'setAttributeNS10';
+
+
+/**
+*
+Element.setAttributeNS with an empty qualified name should cause an INVALID_CHARACTER_ERR.
+
+* @author Curt Arnold
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='INVALID_CHARACTER_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAttrNS
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-ElSetAttrNS')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='INVALID_CHARACTER_ERR'])
+* @see http://www.w3.org/Bugs/Public/show_bug.cgi?id=525
+*/
+function setAttributeNS10() {
+ var success;
+ if(checkInitialization(builder, "setAttributeNS10") != null) return;
+ var namespaceURI = "http://www.example.gov";
+ var doc;
+ var elementList;
+ var testAddr;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "hc_staff");
+ elementList = doc.getElementsByTagName("em");
+ testAddr = elementList.item(0);
+
+ {
+ success = false;
+ try {
+ testAddr.setAttributeNS(namespaceURI,"","newValue");
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 5);
+ }
+ assertTrue("throw_INVALID_CHARACTER_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNS10</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+<iframe name="doc" src="files/hc_staff.html"></iframe>
+<br>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_setAttributeNodeNS01.html b/dom/tests/mochitest/dom-level2-core/test_setAttributeNodeNS01.html
new file mode 100644
index 0000000000..80407cd9cb
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_setAttributeNodeNS01.html
@@ -0,0 +1,149 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNodeNS01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['setAttributeNodeNS01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'setAttributeNodeNS01';
+
+
+/**
+*
+ The "setAttributeNode(newAttr)" method raises an
+ "INUSE_ATTRIBUTE_ERR DOMException if the "newAttr"
+ is already an attribute of another element.
+
+ Retrieve the first emp:address and append
+ a newly created element. The "createAttributeNS(namespaceURI,qualifiedName)"
+ and "setAttributeNodeNS(newAttr)" methods are invoked
+ to create and add a new attribute to the newly created
+ Element. The "setAttributeNodeNS(newAttr)" method is
+ once again called to add the new attribute causing an
+ exception to be raised since the attribute is already
+ an attribute of another element.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='INUSE_ATTRIBUTE_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAtNodeNS
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-ElSetAtNodeNS')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='INUSE_ATTRIBUTE_ERR'])
+*/
+function setAttributeNodeNS01() {
+ var success;
+ if(checkInitialization(builder, "setAttributeNodeNS01") != null) return;
+ var namespaceURI = "http://www.newattr.com";
+ var qualifiedName = "emp:newAttr";
+ var doc;
+ var newElement;
+ var newAttr;
+ var elementList;
+ var testAddr;
+ var appendedChild;
+ var setAttr1;
+ var setAttr2;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("emp:address");
+ testAddr = elementList.item(0);
+ assertNotNull("empAddrNotNull",testAddr);
+newElement = doc.createElement("newElement");
+ appendedChild = testAddr.appendChild(newElement);
+ newAttr = doc.createAttributeNS(namespaceURI,qualifiedName);
+ setAttr1 = newElement.setAttributeNodeNS(newAttr);
+
+ {
+ success = false;
+ try {
+ setAttr2 = testAddr.setAttributeNodeNS(newAttr);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 10);
+ }
+ assertTrue("throw_INUSE_ATTRIBUTE_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNodeNS01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_setAttributeNodeNS02.html b/dom/tests/mochitest/dom-level2-core/test_setAttributeNodeNS02.html
new file mode 100644
index 0000000000..7fd7447f94
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_setAttributeNodeNS02.html
@@ -0,0 +1,160 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNodeNS02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['setAttributeNodeNS02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", false);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'setAttributeNodeNS02';
+
+
+/**
+*
+ The "setAttributeNodeNS(namespaceURI,qualifiedName,value)" method for an attribute causes the
+ DOMException NO_MODIFICATION_ALLOWED_ERR to be raised
+ if the node is readonly.
+
+ Obtain the children of the THIRD "gender" element. The elements
+ content is an entity reference. Try to set an attribute
+ in the entity reference by executing the
+ "setAttributeNodeNS(newAttr)" method.
+ This causes a NO_MODIFICATION_ALLOWED_ERR DOMException to be thrown.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='NO_MODIFICATION_ALLOWED_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAtNodeNS
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-ElSetAtNodeNS')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='NO_MODIFICATION_ALLOWED_ERR'])
+*/
+function setAttributeNodeNS02() {
+ var success;
+ if(checkInitialization(builder, "setAttributeNodeNS02") != null) return;
+ var doc;
+ var genderList;
+ var gender;
+ var genList;
+ var gen;
+ var gList;
+ var genElement;
+ var newAttr;
+ var setAttr1;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ if(
+ (getImplementationAttribute("expandEntityReferences") == false)
+ ) {
+ genderList = doc.getElementsByTagName("gender");
+ gender = genderList.item(2);
+ genList = gender.childNodes;
+
+ gen = genList.item(0);
+
+ }
+
+ else {
+ gen = doc.createEntityReference("ent4");
+
+ }
+ gList = gen.childNodes;
+
+ genElement = gList.item(0);
+ assertNotNull("notnull",genElement);
+newAttr = doc.createAttributeNS("www.xyz.com","emp:local1");
+
+ {
+ success = false;
+ try {
+ setAttr1 = genElement.setAttributeNodeNS(newAttr);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 7);
+ }
+ assertTrue("throw_NO_MODIFICATION_ALLOWED_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNodeNS02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_setAttributeNodeNS03.html b/dom/tests/mochitest/dom-level2-core/test_setAttributeNodeNS03.html
new file mode 100644
index 0000000000..c68f5c35bb
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_setAttributeNodeNS03.html
@@ -0,0 +1,130 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNodeNS03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['setAttributeNodeNS03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'setAttributeNodeNS03';
+
+
+/**
+*
+ The "setAttributeNodeNS(newAttr)" adds a new attribute.
+ If an attribute with that local name and that namespaceURI is already
+ present in the element, it is replaced by the new one.
+
+ Retrieve the first emp:address element and add a new attribute
+ to the element. Since an attribute with the same local name
+ and namespaceURI as the newly created attribute does not exist
+ the value "null" is returned.
+ This test uses the "createAttributeNS(namespaceURI,localName)
+ method from the Document interface to create the new attribute to add.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAtNodeNS
+*/
+function setAttributeNodeNS03() {
+ var success;
+ if(checkInitialization(builder, "setAttributeNodeNS03") != null) return;
+ var namespaceURI = "http://www.newattr.com";
+ var qualifiedName = "emp:newAttr";
+ var doc;
+ var elementList;
+ var testAddr;
+ var newAttr;
+ var newAddrAttr;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("emp:address");
+ testAddr = elementList.item(0);
+ assertNotNull("empAddrNotNull",testAddr);
+newAttr = doc.createAttributeNS(namespaceURI,qualifiedName);
+ newAddrAttr = testAddr.setAttributeNodeNS(newAttr);
+ assertNull("throw_Null",newAddrAttr);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNodeNS03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_setAttributeNodeNS04.html b/dom/tests/mochitest/dom-level2-core/test_setAttributeNodeNS04.html
new file mode 100644
index 0000000000..c2bf1a372c
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_setAttributeNodeNS04.html
@@ -0,0 +1,132 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNodeNS04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['setAttributeNodeNS04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'setAttributeNodeNS04';
+
+
+/**
+*
+ The "setAttributeNodeNS(newAttr)" adds a new attribute.
+ If an attribute with that local name and that namespaceURI is already
+ present in the element, it is replaced by the new one.
+
+ Retrieve the first emp:address element and add a new attribute
+ to the element. Since an attribute with the same local name
+ and namespaceURI already exists, it is replaced by the new one and
+ returns the replaced "Attr" node.
+ This test uses the "createAttributeNS(namespaceURI,localName)
+ method from the Document interface to create the new attribute to add.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-F68D095
+*/
+function setAttributeNodeNS04() {
+ var success;
+ if(checkInitialization(builder, "setAttributeNodeNS04") != null) return;
+ var doc;
+ var elementList;
+ var testAddr;
+ var newAttr;
+ var newAddrAttr;
+ var newName;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("emp:address");
+ testAddr = elementList.item(0);
+ assertNotNull("empAddrNotNull",testAddr);
+newAttr = doc.createAttributeNS("http://www.nist.gov","xxx:domestic");
+ newAddrAttr = testAddr.setAttributeNodeNS(newAttr);
+ newName = newAddrAttr.nodeName;
+
+ assertEquals("nodeName","emp:domestic",newName);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNodeNS04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_setAttributeNodeNS05.html b/dom/tests/mochitest/dom-level2-core/test_setAttributeNodeNS05.html
new file mode 100644
index 0000000000..726fd2091a
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_setAttributeNodeNS05.html
@@ -0,0 +1,155 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNodeNS05</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['setAttributeNodeNS05'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var doc1Ref = null;
+ if (typeof(this.doc1) != 'undefined') {
+ doc1Ref = this.doc1;
+ }
+ docsLoaded += preload(doc1Ref, "doc1", "staffNS");
+
+ var doc2Ref = null;
+ if (typeof(this.doc2) != 'undefined') {
+ doc2Ref = this.doc2;
+ }
+ docsLoaded += preload(doc2Ref, "doc2", "staffNS");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'setAttributeNodeNS05';
+
+
+/**
+*
+ The "setAttributeNodeNS(newAttr)" method raises an
+ "WRONG_DOCUMENT_ERR DOMException if the "newAttr"
+ was created from a different document than the one that
+ created this document.
+
+ Retrieve the first emp:address and attempt to set a new
+ attribute node. The new
+ attribute was created from a document other than the
+ one that created this element, therefore a
+ WRONG_DOCUMENT_ERR DOMException should be raised.
+ This test uses the "createAttributeNS(newAttr)" method
+ from the Document interface.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='WRONG_DOCUMENT_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAtNodeNS
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-ElSetAtNodeNS')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='WRONG_DOCUMENT_ERR'])
+*/
+function setAttributeNodeNS05() {
+ var success;
+ if(checkInitialization(builder, "setAttributeNodeNS05") != null) return;
+ var namespaceURI = "http://www.newattr.com";
+ var qualifiedName = "emp:newAttr";
+ var doc1;
+ var doc2;
+ var newAttr;
+ var elementList;
+ var testAddr;
+ var setAttr1;
+
+ var doc1Ref = null;
+ if (typeof(this.doc1) != 'undefined') {
+ doc1Ref = this.doc1;
+ }
+ doc1 = load(doc1Ref, "doc1", "staffNS");
+
+ var doc2Ref = null;
+ if (typeof(this.doc2) != 'undefined') {
+ doc2Ref = this.doc2;
+ }
+ doc2 = load(doc2Ref, "doc2", "staffNS");
+ newAttr = doc2.createAttributeNS(namespaceURI,qualifiedName);
+ elementList = doc1.getElementsByTagName("emp:address");
+ testAddr = elementList.item(0);
+
+ {
+ success = false;
+ try {
+ setAttr1 = testAddr.setAttributeNodeNS(newAttr);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 4);
+ }
+ assertTrue("throw_WRONG_DOCUMENT_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/setAttributeNodeNS05</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_setNamedItemNS01.html b/dom/tests/mochitest/dom-level2-core/test_setNamedItemNS01.html
new file mode 100644
index 0000000000..31bf521d11
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_setNamedItemNS01.html
@@ -0,0 +1,146 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/setNamedItemNS01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['setNamedItemNS01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'setNamedItemNS01';
+
+
+/**
+*
+ The "setNamedItemNS(arg)" method for a
+ NamedNodeMap should raise INUSE_ATTRIBUTE_ERR DOMException if
+ arg is an Attr that is already an attribute of another Element object.
+
+ Retrieve an attr node from the third "address" element whose local name
+ is "domestic" and namespaceURI is "http://www.netzero.com".
+ Invoke method setNamedItemNS(arg) on the map of the first "address" element with
+ arg being the attr node from above. Method should raise
+ INUSE_ATTRIBUTE_ERR DOMException.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='INUSE_ATTRIBUTE_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-setNamedItemNS
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-setNamedItemNS')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='INUSE_ATTRIBUTE_ERR'])
+*/
+function setNamedItemNS01() {
+ var success;
+ if(checkInitialization(builder, "setNamedItemNS01") != null) return;
+ var doc;
+ var elementList;
+ var anotherElement;
+ var anotherMap;
+ var arg;
+ var testAddress;
+ var map;
+ var setNode;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("address");
+ anotherElement = elementList.item(2);
+ anotherMap = anotherElement.attributes;
+
+ arg = anotherMap.getNamedItemNS("http://www.netzero.com","domestic");
+ testAddress = elementList.item(0);
+ map = testAddress.attributes;
+
+
+ {
+ success = false;
+ try {
+ setNode = map.setNamedItemNS(arg);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 10);
+ }
+ assertTrue("throw_INUSE_ATTRIBUTE_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/setNamedItemNS01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_setNamedItemNS02.html b/dom/tests/mochitest/dom-level2-core/test_setNamedItemNS02.html
new file mode 100644
index 0000000000..d33346db17
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_setNamedItemNS02.html
@@ -0,0 +1,157 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/setNamedItemNS02</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['setNamedItemNS02'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ var anotherDocRef = null;
+ if (typeof(this.anotherDoc) != 'undefined') {
+ anotherDocRef = this.anotherDoc;
+ }
+ docsLoaded += preload(anotherDocRef, "anotherDoc", "staffNS");
+
+ if (docsLoaded == 2) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 2) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'setNamedItemNS02';
+
+
+/**
+*
+ The "setNamedItemNS(arg)" method for a
+ NamedNodeMap should raise WRONG_DOCUMENT_ERR DOMException if arg was
+ created from a different document than the one that created this map.
+
+ Create an attr node in a different document with qualifiedName equals
+ "dmstc:domestic" and namespaceURI is "http://www.usa.com".
+ Access the namednodemap of the first "address" element in this document.
+ Invoke method setNamedItemNS(arg) with arg being the attr node from above.
+ Method should raise WRONG_DOCUMENT_ERR DOMException.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='WRONG_DOCUMENT_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-setNamedItemNS
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-setNamedItemNS')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='WRONG_DOCUMENT_ERR'])
+*/
+function setNamedItemNS02() {
+ var success;
+ if(checkInitialization(builder, "setNamedItemNS02") != null) return;
+ var namespaceURI = "http://www.usa.com";
+ var qualifiedName = "dmstc:domestic";
+ var doc;
+ var anotherDoc;
+ var arg;
+ var elementList;
+ var testAddress;
+ var attributes;
+ var setNode;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+
+ var anotherDocRef = null;
+ if (typeof(this.anotherDoc) != 'undefined') {
+ anotherDocRef = this.anotherDoc;
+ }
+ anotherDoc = load(anotherDocRef, "anotherDoc", "staffNS");
+ arg = anotherDoc.createAttributeNS(namespaceURI,qualifiedName);
+ arg.nodeValue = "Maybe";
+
+ elementList = doc.getElementsByTagName("address");
+ testAddress = elementList.item(0);
+ attributes = testAddress.attributes;
+
+
+ {
+ success = false;
+ try {
+ setNode = attributes.setNamedItemNS(arg);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 4);
+ }
+ assertTrue("throw_WRONG_DOCUMENT_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/setNamedItemNS02</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_setNamedItemNS03.html b/dom/tests/mochitest/dom-level2-core/test_setNamedItemNS03.html
new file mode 100644
index 0000000000..3c747fb451
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_setNamedItemNS03.html
@@ -0,0 +1,138 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/setNamedItemNS03</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['setNamedItemNS03'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'setNamedItemNS03';
+
+
+/**
+*
+ The "setNamedItemNS(arg)" method for a
+ NamedNodeMap should add a node using its namespaceURI and localName given that
+ there is no existing node with the same namespaceURI and localName in the map.
+
+ Create an attr node with namespaceURI "http://www.nist.gov",qualifiedName
+ "prefix:newAttr" and value "newValue".
+ Invoke method setNamedItemNS(arg) on the map of the first "address"
+ element where arg is identified by the namespaceURI and qualifiedName
+ from above. Method should return the newly added attr node.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-F68D080
+*/
+function setNamedItemNS03() {
+ var success;
+ if(checkInitialization(builder, "setNamedItemNS03") != null) return;
+ var namespaceURI = "http://www.nist.gov";
+ var qualifiedName = "prefix:newAttr";
+ var doc;
+ var arg;
+ var elementList;
+ var testAddress;
+ var attributes;
+ var retnode;
+ var value;
+ var setNode;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ arg = doc.createAttributeNS(namespaceURI,qualifiedName);
+ arg.nodeValue = "newValue";
+
+ elementList = doc.getElementsByTagName("address");
+ testAddress = elementList.item(0);
+ attributes = testAddress.attributes;
+
+ setNode = attributes.setNamedItemNS(arg);
+ retnode = attributes.getNamedItemNS(namespaceURI,"newAttr");
+ value = retnode.nodeValue;
+
+ assertEquals("throw_Equals","newValue",value);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/setNamedItemNS03</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_setNamedItemNS04.html b/dom/tests/mochitest/dom-level2-core/test_setNamedItemNS04.html
new file mode 100644
index 0000000000..a53ecfd0a9
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_setNamedItemNS04.html
@@ -0,0 +1,165 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/setNamedItemNS04</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['setNamedItemNS04'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+ setImplementationAttribute("namespaceAware", true);
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'setNamedItemNS04';
+
+
+/**
+*
+ The "setNamedItemNS(arg)" method for a
+ NamedNodeMap should raise NO_MODIFICATION_ALLOWED_ERR DOMException if
+ this map is readonly.
+
+ Retrieve a list of "gender" elements. Get access to the THIRD element
+ which contains an ENTITY_REFERENCE child node. Get access to the node's
+ map. Try to add an attribute node specified by arg with
+ method setNamedItemNS(arg). This should result in NO_MODIFICATION_ALLOWED_ERR
+ DOMException.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-258A00AF')/constant[@name='NO_MODIFICATION_ALLOWED_ERR'])
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-setNamedItemNS
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#xpointer(id('ID-setNamedItemNS')/raises/exception[@name='DOMException']/descr/p[substring-before(.,':')='NO_MODIFICATION_ALLOWED_ERR'])
+*/
+function setNamedItemNS04() {
+ var success;
+ if(checkInitialization(builder, "setNamedItemNS04") != null) return;
+ var namespaceURI = "http://www.w3.org/2000/xmlns/";
+ var localName = "local1";
+ var doc;
+ var elementList;
+ var testAddress;
+ var nList;
+ var child;
+ var n2List;
+ var child2;
+ var attributes;
+ var arg;
+ var setNode;
+ var nodeType;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ elementList = doc.getElementsByTagName("gender");
+ testAddress = elementList.item(2);
+ nList = testAddress.childNodes;
+
+ child = nList.item(0);
+ nodeType = child.nodeType;
+
+
+ if(
+ (1 == nodeType)
+ ) {
+ child = doc.createEntityReference("ent4");
+ assertNotNull("createdEntRefNotNull",child);
+
+ }
+ n2List = child.childNodes;
+
+ child2 = n2List.item(0);
+ assertNotNull("notnull",child2);
+attributes = child2.attributes;
+
+ arg = attributes.getNamedItemNS(namespaceURI,localName);
+
+ {
+ success = false;
+ try {
+ setNode = attributes.setNamedItemNS(arg);
+ }
+ catch(ex) {
+ success = (typeof(ex.code) != 'undefined' && ex.code == 7);
+ }
+ assertTrue("throw_NO_MODIFICATION_ALLOWED_ERR",success);
+ }
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/setNamedItemNS04</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_setNamedItemNS05.html b/dom/tests/mochitest/dom-level2-core/test_setNamedItemNS05.html
new file mode 100644
index 0000000000..ca12b04188
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_setNamedItemNS05.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/setNamedItemNS05</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['setNamedItemNS05'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'setNamedItemNS05';
+
+
+/**
+*
+ The "setNamedItemNS(arg)" method for a
+ NamedNodeMap should replace an existing node n1 found in the map with arg if n1
+ has the same namespaceURI and localName as arg and return n1.
+
+ Create an attribute node in with namespaceURI "http://www.usa.com"
+ and qualifiedName "dmstc:domestic" whose value is "newVal".
+ Invoke method setNamedItemNS(arg) on the map of the first "address"
+ element. Method should return the old attribute node identified
+ by namespaceURI and qualifiedName from above,whose value is "Yes".
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-ElSetAtNodeNS
+*/
+function setNamedItemNS05() {
+ var success;
+ if(checkInitialization(builder, "setNamedItemNS05") != null) return;
+ var namespaceURI = "http://www.usa.com";
+ var qualifiedName = "dmstc:domestic";
+ var doc;
+ var arg;
+ var elementList;
+ var testAddress;
+ var attributes;
+ var retnode;
+ var value;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ arg = doc.createAttributeNS(namespaceURI,qualifiedName);
+ arg.nodeValue = "newValue";
+
+ elementList = doc.getElementsByTagName("address");
+ testAddress = elementList.item(0);
+ attributes = testAddress.attributes;
+
+ retnode = attributes.setNamedItemNS(arg);
+ value = retnode.nodeValue;
+
+ assertEquals("throw_Equals","Yes",value);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/setNamedItemNS05</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/dom-level2-core/test_systemId01.html b/dom/tests/mochitest/dom-level2-core/test_systemId01.html
new file mode 100644
index 0000000000..09b29ea1df
--- /dev/null
+++ b/dom/tests/mochitest/dom-level2-core/test_systemId01.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>http://www.w3.org/2001/DOM-Test-Suite/level2/core/systemId01</title>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="DOMTestCase.js"></script>
+<script type="text/javascript" src="exclusions.js"></script>
+<script type="text/javascript">
+// expose test function names
+function exposeTestFunctionNames()
+{
+return ['systemId01'];
+}
+
+var docsLoaded = -1000000;
+var builder = null;
+
+//
+// This function is called by the testing framework before
+// running the test suite.
+//
+// If there are no configuration exceptions, asynchronous
+// document loading is started. Otherwise, the status
+// is set to complete and the exception is immediately
+// raised when entering the body of the test.
+//
+function setUpPage() {
+ setUpPageStatus = 'running';
+ try {
+ //
+ // creates test document builder, may throw exception
+ //
+ builder = createConfiguredBuilder();
+
+ docsLoaded = 0;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ docsLoaded += preload(docRef, "doc", "staffNS");
+
+ if (docsLoaded == 1) {
+ setUpPage = 'complete';
+ }
+ } catch(ex) {
+ catchInitializationError(builder, ex);
+ setUpPage = 'complete';
+ }
+}
+
+//
+// This method is called on the completion of
+// each asychronous load started in setUpTests.
+//
+// When every synchronous loaded document has completed,
+// the page status is changed which allows the
+// body of the test to be executed.
+function loadComplete() {
+ if (++docsLoaded == 1) {
+ setUpPageStatus = 'complete';
+ runJSUnitTests();
+ markTodos();
+ SimpleTest.finish();
+ }
+}
+
+var docName = 'systemId01';
+
+
+/**
+*
+ The "getSystemId()" method of a documenttype node contains
+ the system identifier associated with the external subset.
+
+ Retrieve the documenttype.
+ Apply the "getSystemId()" method. The string "staffNS.dtd" should be
+ returned.
+
+* @author NIST
+* @author Mary Brady
+* @see http://www.w3.org/TR/DOM-Level-2-Core/core#ID-Core-DocType-systemId
+*/
+function systemId01() {
+ var success;
+ if(checkInitialization(builder, "systemId01") != null) return;
+ var doc;
+ var docType;
+ var systemId;
+ var index;
+
+ var docRef = null;
+ if (typeof(this.doc) != 'undefined') {
+ docRef = this.doc;
+ }
+ doc = load(docRef, "doc", "staffNS");
+ docType = doc.doctype;
+
+ systemId = docType.systemId;
+
+ assertURIEquals("systemId",null,null,null,"staffNS.dtd",null,null,null,null,systemId);
+
+}
+
+</script>
+</head>
+<body>
+<h2>Test http://www.w3.org/2001/DOM-Test-Suite/level2/core/systemId01</h2>
+<p></p>
+<p>
+Copyright (c) 2001-2004 World Wide Web Consortium,
+(Massachusetts Institute of Technology, European Research Consortium
+for Informatics and Mathematics, Keio University). All
+Rights Reserved. This work is distributed under the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C(r) Software License</a> in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+</body>
+</html>