Chromium Code Reviews| Index: sky/engine/core/html/HTMLImportElement.cpp |
| diff --git a/sky/engine/core/html/HTMLImportElement.cpp b/sky/engine/core/html/HTMLImportElement.cpp |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..d35deed657deb2dd333eaff60fb26bfb38c48e72 |
| --- /dev/null |
| +++ b/sky/engine/core/html/HTMLImportElement.cpp |
| @@ -0,0 +1,75 @@ |
| +// Copyright 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "config.h" |
| +#include "core/html/HTMLImportElement.h" |
| + |
| +#include "base/debug/stack_trace.h" |
|
ojan
2014/11/03 18:08:29
leftover?
abarth-chromium
2014/11/03 20:37:02
Fixed!
|
| +#include "core/dom/Document.h" |
| +#include "core/html/imports/HTMLImportsController.h" |
| +#include "core/html/imports/HTMLImportChild.h" |
| + |
| +namespace blink { |
| + |
| +HTMLImportElement::HTMLImportElement(Document& document) |
| + : HTMLElement(HTMLNames::importTag, document) |
| + , m_child(nullptr) |
| +{ |
| + ScriptWrappable::init(this); |
| +} |
| + |
| +PassRefPtr<HTMLImportElement> HTMLImportElement::create(Document& document) |
| +{ |
| + return adoptRef(new HTMLImportElement(document)); |
| +} |
| + |
| +Node::InsertionNotificationRequest HTMLImportElement::insertedInto(ContainerNode* insertionPoint) |
| +{ |
| + HTMLElement::insertedInto(insertionPoint); |
| + if (!insertionPoint->inDocument() || isInShadowTree()) |
| + return InsertionDone; |
| + |
| + if (shouldLoad()) |
| + load(); |
| + |
| + return InsertionDone; |
| +} |
| + |
| +bool HTMLImportElement::shouldLoad() const |
| +{ |
| + return document().frame() || document().importsController(); |
| +} |
| + |
| +void HTMLImportElement::load() |
| +{ |
| + if (m_child || !hasAttribute(HTMLNames::srcAttr)) |
| + return; |
| + KURL url = document().completeURL(getAttribute(HTMLNames::srcAttr)); |
| + m_child = document().ensureImportsController().load(document().import(), this, FetchRequest(ResourceRequest(url))); |
| + |
| + if (m_child) |
| + m_child->ownerInserted(); |
| +} |
| + |
| +void HTMLImportElement::didFinish() |
| +{ |
| +} |
| + |
| +void HTMLImportElement::importChildWasDestroyed(HTMLImportChild* child) |
| +{ |
| + ASSERT(m_child == child); |
| + m_child = nullptr; |
| +} |
| + |
| +bool HTMLImportElement::isSync() const |
| +{ |
| + return true; |
| +} |
| + |
| +Element* HTMLImportElement::link() |
| +{ |
| + return this; |
| +} |
| + |
| +} |