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

Unified Diff: Source/core/dom/Document.cpp

Issue 19002005: Share Custom Element registration contexts between related documents. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Tweak the test to do lazy wrapping in both cases. Created 7 years, 5 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
« no previous file with comments | « Source/core/dom/Document.h ('k') | Source/core/editing/markup.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/dom/Document.cpp
diff --git a/Source/core/dom/Document.cpp b/Source/core/dom/Document.cpp
index c9369c2a2348a719612179199e3bcb51bb314a85..31013c281514abef907aacea36110edb28e906bc 100644
--- a/Source/core/dom/Document.cpp
+++ b/Source/core/dom/Document.cpp
@@ -53,6 +53,7 @@
#include "core/dom/Comment.h"
#include "core/dom/ContextFeatures.h"
#include "core/dom/CustomElementRegistrationContext.h"
+#include "core/dom/CustomElementRegistrationContextualizer.h"
#include "core/dom/DOMImplementation.h"
#include "core/dom/DOMNamedFlowCollection.h"
#include "core/dom/DocumentEventQueue.h"
@@ -479,13 +480,6 @@ Document::Document(Frame* frame, const KURL& url, DocumentClassFlags documentCla
m_nodeListCounts[i] = 0;
InspectorCounters::incrementCounter(InspectorCounters::DocumentCounter);
-
- bool shouldProcessCustomElements =
- (isHTMLDocument() || isXHTMLDocument())
- && RuntimeEnabledFeatures::customDOMElementsEnabled();
- m_registrationContext = shouldProcessCustomElements
- ? CustomElementRegistrationContext::create()
- : CustomElementRegistrationContext::nullRegistrationContext();
}
static void histogramMutationEventUsage(const unsigned short& listenerTypes)
@@ -768,6 +762,12 @@ ScriptValue Document::registerElement(WebCore::ScriptState* state, const AtomicS
return constructorBuilder.bindingsReturnValue();
}
+void Document::setRegistrationContext(PassRefPtr<CustomElementRegistrationContext> context)
+{
+ ASSERT(!registrationContext());
+ m_registrationContext = context;
+}
+
void Document::setImport(HTMLImport* import)
{
ASSERT(!m_import || !import);
@@ -3905,7 +3905,7 @@ void Document::applyXSLTransform(ProcessingInstruction* pi)
return;
// FIXME: If the transform failed we should probably report an error (like Mozilla does).
Frame* ownerFrame = frame();
- processor->createDocumentFromSource(newSource, resultEncoding, resultMIMEType, this, ownerFrame);
+ processor->createDocumentFromSource(newSource, resultEncoding, resultMIMEType, this, ownerFrame, CustomElementRegistrationContextualizer::DocumentWithXSLTPI);
InspectorInstrumentation::frameDocumentUpdated(ownerFrame);
}
@@ -5123,6 +5123,7 @@ Document* Document::ensureTemplateDocument()
m_templateDocument = Document::create(0, blankURL());
m_templateDocument->setTemplateDocumentHost(this); // balanced in dtor.
+ CustomElementRegistrationContextualizer::didCreateRelatedDocument(registrationContext(), CustomElementRegistrationContextualizer::Template, m_templateDocument.get());
return m_templateDocument.get();
}
« no previous file with comments | « Source/core/dom/Document.h ('k') | Source/core/editing/markup.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698