Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "core/dom/custom/CustomElement.h" | 5 #include "core/dom/custom/CustomElement.h" |
| 6 | 6 |
| 7 #include "core/HTMLNames.h" | |
| 8 #include "core/SVGNames.h" | |
| 9 #include "core/dom/Document.h" | |
| 10 #include "core/frame/FrameView.h" | |
| 11 #include "core/testing/DummyPageHolder.h" | |
| 7 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
| 8 | 13 |
| 9 namespace blink { | 14 namespace blink { |
| 10 | 15 |
| 11 static void testIsPotentialCustomElementName(const AtomicString& str, bool expec ted) | 16 static void testIsPotentialCustomElementName(const AtomicString& str, bool expec ted) |
| 12 { | 17 { |
| 13 if (expected) { | 18 if (expected) { |
| 14 EXPECT_TRUE(CustomElement::isValidName(str)) | 19 EXPECT_TRUE(CustomElement::isValidName(str)) |
| 15 << str << " should be a valid custom element name."; | 20 << str << " should be a valid custom element name."; |
| 16 } else { | 21 } else { |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 114 EXPECT_FALSE(CustomElement::isValidName("annotation-xml")); | 119 EXPECT_FALSE(CustomElement::isValidName("annotation-xml")); |
| 115 EXPECT_FALSE(CustomElement::isValidName("color-profile")); | 120 EXPECT_FALSE(CustomElement::isValidName("color-profile")); |
| 116 EXPECT_FALSE(CustomElement::isValidName("font-face")); | 121 EXPECT_FALSE(CustomElement::isValidName("font-face")); |
| 117 EXPECT_FALSE(CustomElement::isValidName("font-face-src")); | 122 EXPECT_FALSE(CustomElement::isValidName("font-face-src")); |
| 118 EXPECT_FALSE(CustomElement::isValidName("font-face-uri")); | 123 EXPECT_FALSE(CustomElement::isValidName("font-face-uri")); |
| 119 EXPECT_FALSE(CustomElement::isValidName("font-face-format")); | 124 EXPECT_FALSE(CustomElement::isValidName("font-face-format")); |
| 120 EXPECT_FALSE(CustomElement::isValidName("font-face-name")); | 125 EXPECT_FALSE(CustomElement::isValidName("font-face-name")); |
| 121 EXPECT_FALSE(CustomElement::isValidName("missing-glyph")); | 126 EXPECT_FALSE(CustomElement::isValidName("missing-glyph")); |
| 122 } | 127 } |
| 123 | 128 |
| 129 TEST(CustomElementTest, StateByParser) | |
| 130 { | |
| 131 const char* bodyContent = "<div id=div></div>" | |
| 132 "<a-a id=v1v0></a-a>" | |
| 133 "<font-face id=v0></font-face>"; | |
| 134 OwnPtr<DummyPageHolder> pageHolder = DummyPageHolder::create(); | |
| 135 Document& document = pageHolder->document(); | |
| 136 document.body()->setInnerHTML(String::fromUTF8(bodyContent), ASSERT_NO_EXCEP TION); | |
| 137 document.view()->updateAllLifecyclePhases(); | |
|
dominicc (has gone to gerrit)
2016/05/25 05:25:52
Do we need this? The script could set innerHTML an
kojii
2016/05/25 05:58:24
Removed, wasn't needed, thanks.
| |
| 138 | |
| 139 struct { | |
| 140 const char* id; | |
| 141 CustomElementState state; | |
| 142 Element::V0CustomElementState v0state; | |
| 143 } parserData[] = { | |
| 144 { "div", CustomElementState::Uncustomized, Element::V0NotCustomElement } , | |
| 145 { "v1v0", CustomElementState::Undefined, Element::V0WaitingForUpgrade }, | |
| 146 { "v0", CustomElementState::Uncustomized, Element::V0WaitingForUpgrade } , | |
| 147 }; | |
| 148 for (const auto& data : parserData) { | |
| 149 Element* element = document.getElementById(data.id); | |
| 150 EXPECT_EQ(data.state, element->getCustomElementState()) << data.id; | |
| 151 EXPECT_EQ(data.v0state, element->getV0CustomElementState()) << data.id; | |
| 152 } | |
| 153 } | |
| 154 | |
| 155 TEST(CustomElementTest, StateByCreateElement) | |
| 156 { | |
| 157 struct { | |
| 158 const char* name; | |
| 159 CustomElementState state; | |
| 160 Element::V0CustomElementState v0state; | |
| 161 } createElementData[] = { | |
| 162 { "div", CustomElementState::Uncustomized, Element::V0NotCustomElement } , | |
| 163 { "a-a", CustomElementState::Undefined, Element::V0WaitingForUpgrade }, | |
| 164 { "font-face", CustomElementState::Uncustomized, Element::V0WaitingForUp grade }, | |
|
dominicc (has gone to gerrit)
2016/05/25 05:25:52
I think V0WaitingForUpgrade is a bug; I think pdr
kojii
2016/05/25 05:58:24
Done.
| |
| 165 { "_-X", CustomElementState::Uncustomized, Element::V0WaitingForUpgrade }, | |
| 166 }; | |
| 167 OwnPtr<DummyPageHolder> pageHolder = DummyPageHolder::create(); | |
| 168 Document& document = pageHolder->document(); | |
| 169 for (const auto& data : createElementData) { | |
| 170 Element* element = document.createElement(data.name, ASSERT_NO_EXCEPTION ); | |
| 171 EXPECT_EQ(data.state, element->getCustomElementState()) << data.name; | |
| 172 EXPECT_EQ(data.v0state, element->getV0CustomElementState()) << data.name ; | |
| 173 | |
| 174 element = document.createElementNS(HTMLNames::xhtmlNamespaceURI, data.na me, ASSERT_NO_EXCEPTION); | |
| 175 EXPECT_EQ(data.state, element->getCustomElementState()) << data.name; | |
| 176 EXPECT_EQ(data.v0state, element->getV0CustomElementState()) << data.name ; | |
| 177 | |
| 178 element = document.createElementNS(SVGNames::svgNamespaceURI, data.name, ASSERT_NO_EXCEPTION); | |
| 179 EXPECT_EQ(CustomElementState::Uncustomized, element->getCustomElementSta te()) << data.name; | |
| 180 EXPECT_EQ(data.v0state, element->getV0CustomElementState()) << data.name ; | |
| 181 } | |
| 182 } | |
| 183 | |
| 124 } // namespace blink | 184 } // namespace blink |
| OLD | NEW |