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

Unified Diff: Source/core/html/imports/HTMLImportChild.cpp

Issue 238923009: HTML Imports: No more BlockingDocumentCreation. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fixed the build breakage Created 6 years, 8 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: Source/core/html/imports/HTMLImportChild.cpp
diff --git a/Source/core/html/imports/HTMLImportChild.cpp b/Source/core/html/imports/HTMLImportChild.cpp
index 4a6b89a5939ae3f0fcc99b0c23fac782fb4e9a38..3c2c94f640227f2fdfafd8a316151e3723c476c0 100644
--- a/Source/core/html/imports/HTMLImportChild.cpp
+++ b/Source/core/html/imports/HTMLImportChild.cpp
@@ -72,6 +72,7 @@ void HTMLImportChild::wasAlreadyLoaded()
{
ASSERT(!m_loader);
ASSERT(m_client);
+ ensureLoader();
stateWillChange();
}
@@ -80,21 +81,8 @@ void HTMLImportChild::startLoading(const ResourcePtr<RawResource>& resource)
ASSERT(!this->resource());
ASSERT(!m_loader);
- if (isSync()) {
- ASSERT(!m_customElementMicrotaskStep);
- m_customElementMicrotaskStep = CustomElement::didCreateImport(this);
- }
-
setResource(resource);
- // If the node is "document blocked", it cannot create HTMLImportLoader
- // even if there is no sharable one found, as there is possibility that
- // preceding imports load the sharable imports.
- // In that case preceding one should win because it comes first in the tree order.
- // See also didUnblockFromCreatingDocument().
- if (state().shouldBlockDocumentCreation())
- return;
-
ensureLoader();
}
@@ -134,7 +122,7 @@ void HTMLImportChild::importDestroyed()
Document* HTMLImportChild::document() const
{
- return (m_loader && m_loader->isOwnedBy(this)) ? m_loader->document() : 0;
+ return m_loader ? m_loader->document() : 0;
}
void HTMLImportChild::stateWillChange()
@@ -146,11 +134,7 @@ void HTMLImportChild::stateDidChange()
{
HTMLImport::stateDidChange();
- // Once all preceding imports are loaded,
- // HTMLImportChild can decide whether it should load the import by itself
- // or it can share existing one.
- if (!state().shouldBlockDocumentCreation())
- ensureLoader();
+ ensureLoader();
if (state().isReady())
didFinish();
}
@@ -164,11 +148,15 @@ void HTMLImportChild::ensureLoader()
shareLoader(found);
else
createLoader();
+
+ if (isSync() && !isDone()) {
+ ASSERT(!m_customElementMicrotaskStep);
+ m_customElementMicrotaskStep = CustomElement::didCreateImport(this);
dominicc (has gone to gerrit) 2014/04/18 00:56:26 I like the simplicity of this. Its a bit wasteful
Hajime Morrita 2014/04/18 01:48:33 That's my thinking, and making it lazy complicates
+ }
}
void HTMLImportChild::createLoader()
{
- ASSERT(!state().shouldBlockDocumentCreation());
ASSERT(!m_loader);
m_loader = toHTMLImportsController(root())->createLoader();
m_loader->addImport(this);
@@ -188,16 +176,6 @@ bool HTMLImportChild::isDone() const
return m_loader && m_loader->isDone();
}
-bool HTMLImportChild::hasLoader() const
-{
- return m_loader;
-}
-
-bool HTMLImportChild::ownsLoader() const
-{
- return m_loader && m_loader->isOwnedBy(this);
-}
-
bool HTMLImportChild::loaderHasError() const
{
return m_loader && m_loader->hasError();
@@ -229,9 +207,8 @@ HTMLLinkElement* HTMLImportChild::link() const
void HTMLImportChild::showThis()
{
HTMLImport::showThis();
- fprintf(stderr, " loader=%p own=%s async=%s url=%s",
+ fprintf(stderr, " loader=%p sync=%s url=%s",
m_loader,
- hasLoader() && ownsLoader() ? "Y" : "N",
isSync() ? "Y" : "N",
url().string().utf8().data());
}

Powered by Google App Engine
This is Rietveld 408576698