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" | 7 #include "core/HTMLNames.h" |
8 #include "core/SVGNames.h" | 8 #include "core/SVGNames.h" |
9 #include "core/dom/Document.h" | 9 #include "core/dom/Document.h" |
10 #include "core/html/HTMLElement.h" | 10 #include "core/html/HTMLElement.h" |
11 #include "core/testing/DummyPageHolder.h" | 11 #include "core/testing/DummyPageHolder.h" |
12 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
| 13 #include <memory> |
13 | 14 |
14 namespace blink { | 15 namespace blink { |
15 | 16 |
16 static void testIsPotentialCustomElementName(const AtomicString& str, bool expec
ted) | 17 static void testIsPotentialCustomElementName(const AtomicString& str, bool expec
ted) |
17 { | 18 { |
18 if (expected) { | 19 if (expected) { |
19 EXPECT_TRUE(CustomElement::isValidName(str)) | 20 EXPECT_TRUE(CustomElement::isValidName(str)) |
20 << str << " should be a valid custom element name."; | 21 << str << " should be a valid custom element name."; |
21 } else { | 22 } else { |
22 EXPECT_FALSE(CustomElement::isValidName(str)) | 23 EXPECT_FALSE(CustomElement::isValidName(str)) |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
124 EXPECT_FALSE(CustomElement::isValidName("font-face-format")); | 125 EXPECT_FALSE(CustomElement::isValidName("font-face-format")); |
125 EXPECT_FALSE(CustomElement::isValidName("font-face-name")); | 126 EXPECT_FALSE(CustomElement::isValidName("font-face-name")); |
126 EXPECT_FALSE(CustomElement::isValidName("missing-glyph")); | 127 EXPECT_FALSE(CustomElement::isValidName("missing-glyph")); |
127 } | 128 } |
128 | 129 |
129 TEST(CustomElementTest, StateByParser) | 130 TEST(CustomElementTest, StateByParser) |
130 { | 131 { |
131 const char* bodyContent = "<div id=div></div>" | 132 const char* bodyContent = "<div id=div></div>" |
132 "<a-a id=v1v0></a-a>" | 133 "<a-a id=v1v0></a-a>" |
133 "<font-face id=v0></font-face>"; | 134 "<font-face id=v0></font-face>"; |
134 OwnPtr<DummyPageHolder> pageHolder = DummyPageHolder::create(); | 135 std::unique_ptr<DummyPageHolder> pageHolder = DummyPageHolder::create(); |
135 Document& document = pageHolder->document(); | 136 Document& document = pageHolder->document(); |
136 document.body()->setInnerHTML(String::fromUTF8(bodyContent), ASSERT_NO_EXCEP
TION); | 137 document.body()->setInnerHTML(String::fromUTF8(bodyContent), ASSERT_NO_EXCEP
TION); |
137 | 138 |
138 struct { | 139 struct { |
139 const char* id; | 140 const char* id; |
140 CustomElementState state; | 141 CustomElementState state; |
141 Element::V0CustomElementState v0state; | 142 Element::V0CustomElementState v0state; |
142 } parserData[] = { | 143 } parserData[] = { |
143 { "div", CustomElementState::Uncustomized, Element::V0NotCustomElement }
, | 144 { "div", CustomElementState::Uncustomized, Element::V0NotCustomElement }
, |
144 { "v1v0", CustomElementState::Undefined, Element::V0WaitingForUpgrade }, | 145 { "v1v0", CustomElementState::Undefined, Element::V0WaitingForUpgrade }, |
(...skipping 14 matching lines...) Expand all Loading... |
159 Element::V0CustomElementState v0state; | 160 Element::V0CustomElementState v0state; |
160 } createElementData[] = { | 161 } createElementData[] = { |
161 { "div", CustomElementState::Uncustomized, Element::V0NotCustomElement }
, | 162 { "div", CustomElementState::Uncustomized, Element::V0NotCustomElement }
, |
162 { "a-a", CustomElementState::Undefined, Element::V0WaitingForUpgrade }, | 163 { "a-a", CustomElementState::Undefined, Element::V0WaitingForUpgrade }, |
163 // TODO(pdr): <font-face> should be V0NotCustomElement as per the spec, | 164 // TODO(pdr): <font-face> should be V0NotCustomElement as per the spec, |
164 // but was regressed to be V0WaitingForUpgrade in | 165 // but was regressed to be V0WaitingForUpgrade in |
165 // http://crrev.com/656913006 | 166 // http://crrev.com/656913006 |
166 { "font-face", CustomElementState::Uncustomized, Element::V0WaitingForUp
grade }, | 167 { "font-face", CustomElementState::Uncustomized, Element::V0WaitingForUp
grade }, |
167 { "_-X", CustomElementState::Uncustomized, Element::V0WaitingForUpgrade
}, | 168 { "_-X", CustomElementState::Uncustomized, Element::V0WaitingForUpgrade
}, |
168 }; | 169 }; |
169 OwnPtr<DummyPageHolder> pageHolder = DummyPageHolder::create(); | 170 std::unique_ptr<DummyPageHolder> pageHolder = DummyPageHolder::create(); |
170 Document& document = pageHolder->document(); | 171 Document& document = pageHolder->document(); |
171 for (const auto& data : createElementData) { | 172 for (const auto& data : createElementData) { |
172 Element* element = document.createElement(data.name, ASSERT_NO_EXCEPTION
); | 173 Element* element = document.createElement(data.name, ASSERT_NO_EXCEPTION
); |
173 EXPECT_EQ(data.state, element->getCustomElementState()) << data.name; | 174 EXPECT_EQ(data.state, element->getCustomElementState()) << data.name; |
174 EXPECT_EQ(data.v0state, element->getV0CustomElementState()) << data.name
; | 175 EXPECT_EQ(data.v0state, element->getV0CustomElementState()) << data.name
; |
175 | 176 |
176 element = document.createElementNS(HTMLNames::xhtmlNamespaceURI, data.na
me, ASSERT_NO_EXCEPTION); | 177 element = document.createElementNS(HTMLNames::xhtmlNamespaceURI, data.na
me, ASSERT_NO_EXCEPTION); |
177 EXPECT_EQ(data.state, element->getCustomElementState()) << data.name; | 178 EXPECT_EQ(data.state, element->getCustomElementState()) << data.name; |
178 EXPECT_EQ(data.v0state, element->getV0CustomElementState()) << data.name
; | 179 EXPECT_EQ(data.v0state, element->getV0CustomElementState()) << data.name
; |
179 | 180 |
180 element = document.createElementNS(SVGNames::svgNamespaceURI, data.name,
ASSERT_NO_EXCEPTION); | 181 element = document.createElementNS(SVGNames::svgNamespaceURI, data.name,
ASSERT_NO_EXCEPTION); |
181 EXPECT_EQ(CustomElementState::Uncustomized, element->getCustomElementSta
te()) << data.name; | 182 EXPECT_EQ(CustomElementState::Uncustomized, element->getCustomElementSta
te()) << data.name; |
182 EXPECT_EQ(data.v0state, element->getV0CustomElementState()) << data.name
; | 183 EXPECT_EQ(data.v0state, element->getV0CustomElementState()) << data.name
; |
183 } | 184 } |
184 } | 185 } |
185 | 186 |
186 } // namespace blink | 187 } // namespace blink |
OLD | NEW |