diff --git a/src/renderers/dom/client/__tests__/validateDOMNesting-test.js b/src/renderers/dom/client/__tests__/validateDOMNesting-test.js index 7f671c61f8..2c18a89d61 100644 --- a/src/renderers/dom/client/__tests__/validateDOMNesting-test.js +++ b/src/renderers/dom/client/__tests__/validateDOMNesting-test.js @@ -67,6 +67,7 @@ describe('ReactContextValidator', function() { expect(isTagStackValid(['div', 'a', 'object', 'a'])).toBe(true); expect(isTagStackValid(['div', 'p', 'button', 'p'])).toBe(true); expect(isTagStackValid(['p', 'svg', 'foreignObject', 'p'])).toBe(true); + expect(isTagStackValid(['html', 'body', 'div'])).toBe(true); // Invalid, but not changed by browser parsing so we allow them expect(isTagStackValid(['div', 'ul', 'ul', 'li'])).toBe(true); @@ -81,5 +82,6 @@ describe('ReactContextValidator', function() { expect(isTagStackValid(['p', 'p'])).toBe(false); expect(isTagStackValid(['table', 'tr'])).toBe(false); expect(isTagStackValid(['div', 'ul', 'li', 'div', 'li'])).toBe(false); + expect(isTagStackValid(['div', 'html'])).toBe(false); }); }); diff --git a/src/renderers/dom/client/validateDOMNesting.js b/src/renderers/dom/client/validateDOMNesting.js index d853990b01..69e69845a1 100644 --- a/src/renderers/dom/client/validateDOMNesting.js +++ b/src/renderers/dom/client/validateDOMNesting.js @@ -186,6 +186,8 @@ if (__DEV__) { // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element case 'html': return tag === 'head' || tag === 'body'; + case '#document': + return tag === 'html'; } // Probably in the "in body" parsing mode, so we outlaw only tag combos @@ -212,6 +214,7 @@ if (__DEV__) { case 'colgroup': case 'frame': case 'head': + case 'html': case 'tbody': case 'td': case 'tfoot':