Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(187)

Unified Diff: third_party/WebKit/Source/core/dom/custom/CustomElementTest.cpp

Issue 2002903002: Hook createElement for Custom Elements V1 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: RuntimeEnabledFeatures Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/dom/custom/CustomElementTest.cpp
diff --git a/third_party/WebKit/Source/core/dom/custom/CustomElementTest.cpp b/third_party/WebKit/Source/core/dom/custom/CustomElementTest.cpp
index 7f47cd6735fd9502b9eee3878bfe94629eacd77b..a3e6b3a97e9662cc1e2c6958361e1ab6025ab6c6 100644
--- a/third_party/WebKit/Source/core/dom/custom/CustomElementTest.cpp
+++ b/third_party/WebKit/Source/core/dom/custom/CustomElementTest.cpp
@@ -4,6 +4,11 @@
#include "core/dom/custom/CustomElement.h"
+#include "core/HTMLNames.h"
+#include "core/SVGNames.h"
+#include "core/dom/Document.h"
+#include "core/frame/FrameView.h"
+#include "core/testing/DummyPageHolder.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace blink {
@@ -121,4 +126,59 @@ TEST(CustomElementTest, TestIsValidNameHyphenContainingElementNames)
EXPECT_FALSE(CustomElement::isValidName("missing-glyph"));
}
+TEST(CustomElementTest, StateByParser)
+{
+ const char* bodyContent = "<div id=div></div>"
+ "<a-a id=v1v0></a-a>"
+ "<font-face id=v0></font-face>";
+ OwnPtr<DummyPageHolder> pageHolder = DummyPageHolder::create();
+ Document& document = pageHolder->document();
+ document.body()->setInnerHTML(String::fromUTF8(bodyContent), ASSERT_NO_EXCEPTION);
+ 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.
+
+ struct {
+ const char* id;
+ CustomElementState state;
+ Element::V0CustomElementState v0state;
+ } parserData[] = {
+ { "div", CustomElementState::Uncustomized, Element::V0NotCustomElement },
+ { "v1v0", CustomElementState::Undefined, Element::V0WaitingForUpgrade },
+ { "v0", CustomElementState::Uncustomized, Element::V0WaitingForUpgrade },
+ };
+ for (const auto& data : parserData) {
+ Element* element = document.getElementById(data.id);
+ EXPECT_EQ(data.state, element->getCustomElementState()) << data.id;
+ EXPECT_EQ(data.v0state, element->getV0CustomElementState()) << data.id;
+ }
+}
+
+TEST(CustomElementTest, StateByCreateElement)
+{
+ struct {
+ const char* name;
+ CustomElementState state;
+ Element::V0CustomElementState v0state;
+ } createElementData[] = {
+ { "div", CustomElementState::Uncustomized, Element::V0NotCustomElement },
+ { "a-a", CustomElementState::Undefined, Element::V0WaitingForUpgrade },
+ { "font-face", CustomElementState::Uncustomized, Element::V0WaitingForUpgrade },
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.
+ { "_-X", CustomElementState::Uncustomized, Element::V0WaitingForUpgrade },
+ };
+ OwnPtr<DummyPageHolder> pageHolder = DummyPageHolder::create();
+ Document& document = pageHolder->document();
+ for (const auto& data : createElementData) {
+ Element* element = document.createElement(data.name, ASSERT_NO_EXCEPTION);
+ EXPECT_EQ(data.state, element->getCustomElementState()) << data.name;
+ EXPECT_EQ(data.v0state, element->getV0CustomElementState()) << data.name;
+
+ element = document.createElementNS(HTMLNames::xhtmlNamespaceURI, data.name, ASSERT_NO_EXCEPTION);
+ EXPECT_EQ(data.state, element->getCustomElementState()) << data.name;
+ EXPECT_EQ(data.v0state, element->getV0CustomElementState()) << data.name;
+
+ element = document.createElementNS(SVGNames::svgNamespaceURI, data.name, ASSERT_NO_EXCEPTION);
+ EXPECT_EQ(CustomElementState::Uncustomized, element->getCustomElementState()) << data.name;
+ EXPECT_EQ(data.v0state, element->getV0CustomElementState()) << data.name;
+ }
+}
+
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698