diff --git a/tests/html/html.status b/tests/html/html.status
index c7a25eb0990..d166da2ef70 100644
--- a/tests/html/html.status
+++ b/tests/html/html.status
@@ -54,8 +54,6 @@ documentfragment_test: Pass, Timeout
[ $runtime == ie9 || $runtime == ie10 || $runtime == safari || $runtime == ff || $runtime == chrome || $runtime == opera ]
# TODO(vsm): Triage DOM tests.
htmloptionscollection_test: Fail # Issue 3813.
-shadow_dom_test: Skip # No ShadowDOM support except on tip dartium.
-shadow_dom_layout_test: Skip
unknownelement_test: Fail # Issue 4189
[ $runtime == dartium || $runtime == chrome || $runtime == ie9 || $runtime == ie10 || $runtime == safari || $runtime == ff || $runtime == opera ]
@@ -92,6 +90,7 @@ measurement_test: Fail, Pass
messageevent_test: Fail
mutationobserver_test: Fail
serialized_script_value_test: Fail
+shadow_dom_layout_test: Fail # IE10 does not support shadow root.
storage_test: Fail, Pass
svgelement_test/additionalConstructors: Fail
svgelement_test/elementset: Fail
@@ -157,8 +156,7 @@ messageevent_test: Fail
mutationobserver_test: Fail
postmessage_structured_test: Skip # BUG(5685): times out.
serialized_script_value_test: Fail
-shadow_dom_layout_test: Fail
-shadow_dom_test: Fail
+shadow_dom_layout_test: Fail # IE9 does not support shadow root.
storage_test: Fail
svg_3_test: Fail
svgelement_test/additionalConstructors: Fail
@@ -176,6 +174,8 @@ xhr_test: Skip # BUG(4016)
xhr_cross_origin_test: Fail # Issue 6016.
[ $runtime == safari ]
+# TODO(efortuna): Make our test framework able to separate tests out by browser
+# version.
# TODO(ahe, efortuna): These tests need to be retriaged now that we're testing
# with Safari 6.
audiocontext_test: Crash, Fail # Issue: 7414
@@ -195,10 +195,8 @@ input_element_test/week: Fail, Crash # Safari does not support this input ty
fileapi_test: Fail # requestFileSystem not supported in Safari 6.
datalistelement_test: Fail # HTMLDataListElement not yet supported in Safari.
contentelement_test: Fail # Safari 6 does not support content element.
-# TODO(efortuna): Make our test framework able to separate tests out by browser
-# version.
-datalistelement_test: Fail # Issue: 7414
node_test: Skip # Issue 6457
+shadow_dom_layout_test: Fail # Safari does not support shadow root.
[ $runtime == opera && $system == windows ]
htmlelement_test: Fail, Pass
@@ -239,6 +237,7 @@ indexeddb_4_test: Fail
mutationobserver_test: Fail
performance_api_test: Fail
serialized_script_value_test: Fail
+shadow_dom_layout_test: Fail # Opera does not support shadow root.
svg_3_test: Fail
svgelement_test/additionalConstructors: Fail
svgelement2_test: Fail
@@ -277,6 +276,7 @@ input_element_test/month: Fail # FF does not support this input type.
input_element_test/time: Fail # FF does not support this input type.
input_element_test/week: Fail # FF does not support this input type.
input_element_test/range: Fail # FF does not support this input type.
+shadow_dom_layout_test: Fail # FF does not support shadow root.
# Interfaces not implemented: SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGStylable
svg_3_test: Fail
svgelement_test/additionalConstructors: Fail
diff --git a/tests/html/shadow_dom_layout_test.dart b/tests/html/shadow_dom_layout_test.dart
index ec809ca134a..92999512000 100644
--- a/tests/html/shadow_dom_layout_test.dart
+++ b/tests/html/shadow_dom_layout_test.dart
@@ -20,10 +20,15 @@ main() {
var greenbox = _colorBox('green', 60, 10);
// assemble DOM
- var sRoot = new ShadowRoot(div);
- sRoot.nodes.add(new Element.html(''));
- sRoot.nodes.add(redbox);
- sRoot.nodes.add(new Element.tag('content'));
+ try {
+ var sRoot = new ShadowRoot(div);
+ sRoot.nodes.add(new Element.html(''));
+ sRoot.nodes.add(redbox);
+ sRoot.nodes.add(new Element.tag('content'));
+ catch () {
+ // Shadow Root may not be supported and throw an exception.
+ // Catch and continue to fail the test rather than hang.
+ }
div.nodes.add(bluebox);
div.nodes.add(greenbox);
diff --git a/tests/html/shadow_dom_test.dart b/tests/html/shadow_dom_test.dart
index 8e9a93209e4..b4cbc57bc1f 100644
--- a/tests/html/shadow_dom_test.dart
+++ b/tests/html/shadow_dom_test.dart
@@ -14,7 +14,7 @@ main() {
var div1, div2, shadowRoot, paragraph1, paragraph2;
- setUp(() {
+ void init() {
paragraph1 = new ParagraphElement();
paragraph2 = new ParagraphElement();
[paragraph1, paragraph2].forEach((p) { p.classes.add('foo');});
@@ -29,14 +29,24 @@ main() {
div2.nodes.add(paragraph2);
document.body.nodes.add(div1);
document.body.nodes.add(div2);
- });
+ }
+
+ var expectation = ShadowRoot.supported ? returnsNormally : throws;
test("Shadowed nodes aren't visible to queries from outside ShadowDOM", () {
- expect(queryAll('.foo'), equals([div1, paragraph2]));
+ expect(() {
+ init();
+
+ expect(queryAll('.foo'), equals([div1, paragraph2]));
+ }, expectation);
});
test('Parent node of a shadow root must be null.', () {
- expect(shadowRoot.parent, isNull);
+ expect(() {
+ init();
+
+ expect(shadowRoot.parent, isNull);
+ }, expectation);
});
@@ -46,7 +56,11 @@ main() {
// rendering tests.
test('Querying in shadowed fragment respects the shadow boundary.', () {
- expect(shadowRoot.queryAll('.foo'), equals([paragraph1]));
+ expect(() {
+ init();
+
+ expect(shadowRoot.queryAll('.foo'), equals([paragraph1]));
+ }, expectation);
});
});
}