#include "core/fileapi/File.h"
#include "core/fileapi/FileList.h"
#include "core/html/HTMLFrameOwnerElement.h"
+#include "core/html/HTMLImportChild.h"
#include "core/html/HTMLInputElement.h"
+#include "core/html/HTMLLinkElement.h"
#include "core/html/HTMLTemplateElement.h"
#include "core/inspector/DOMEditor.h"
#include "core/inspector/DOMPatchSupport.h"
unbind(element->pseudoElement(BEFORE), nodesMap);
if (element->pseudoElement(AFTER))
unbind(element->pseudoElement(AFTER), nodesMap);
+
+ if (element->hasTagName(HTMLNames::linkTag)) {
+ HTMLLinkElement* linkElement = toHTMLLinkElement(element);
+ if (linkElement->isImport() && linkElement->import())
+ unbind(linkElement->import(), nodesMap);
+ }
}
nodesMap->remove(node);
bool shouldIgnoreCase = element->document().isHTMLDocument() && element->isHTMLElement();
// Not all elements can represent the context (i.e. IFRAME), hence using document.body.
if (shouldIgnoreCase && element->document().body())
- fragment->parseHTML(markup, element->document().body(), DisallowScriptingContent);
+ fragment->parseHTML(markup, element->document().body(), AllowScriptingContent);
else
- fragment->parseXML(markup, 0, DisallowScriptingContent);
+ fragment->parseXML(markup, 0, AllowScriptingContent);
Element* parsedElement = fragment->firstChild() && fragment->firstChild()->isElementNode() ? toElement(fragment->firstChild()) : 0;
if (!parsedElement) {
const EventListenerVector& vector = info.eventListenerVector;
for (size_t j = 0; j < vector.size(); ++j) {
const RegisteredEventListener& listener = vector[j];
- if (listener.useCapture)
- listenersArray->addItem(buildObjectForEventListener(listener, info.eventType, info.eventTarget->toNode(), objectGroup));
+ if (listener.useCapture) {
+ RefPtr<TypeBuilder::DOM::EventListener> listenerObject = buildObjectForEventListener(listener, info.eventType, info.eventTarget->toNode(), objectGroup);
+ if (listenerObject)
+ listenersArray->addItem(listenerObject);
+ }
}
}
const EventListenerVector& vector = info.eventListenerVector;
for (size_t j = 0; j < vector.size(); ++j) {
const RegisteredEventListener& listener = vector[j];
- if (!listener.useCapture)
- listenersArray->addItem(buildObjectForEventListener(listener, info.eventType, info.eventTarget->toNode(), objectGroup));
+ if (!listener.useCapture) {
+ RefPtr<TypeBuilder::DOM::EventListener> listenerObject = buildObjectForEventListener(listener, info.eventType, info.eventTarget->toNode(), objectGroup);
+ if (listenerObject)
+ listenersArray->addItem(listenerObject);
+ }
}
}
}
}
*searchId = IdentifiersFactory::createIdentifier();
- SearchResults::iterator resultsIt = m_searchResults.add(*searchId, Vector<RefPtr<Node> >()).iterator;
+ Vector<RefPtr<Node> >* resultsIt = &m_searchResults.add(*searchId, Vector<RefPtr<Node> >()).storedValue->value;
for (ListHashSet<Node*>::iterator it = resultCollector.begin(); it != resultCollector.end(); ++it)
- resultsIt->value.append(*it);
+ resultsIt->append(*it);
- *resultCount = resultsIt->value.size();
+ *resultCount = resultsIt->size();
}
void InspectorDOMAgent::getSearchResults(ErrorString* errorString, const String& searchId, int fromIndex, int toIndex, RefPtr<TypeBuilder::Array<int> >& nodeIds)
if (node->isElementNode()) {
Element* element = toElement(node);
value->setAttributes(buildArrayForElementAttributes(element));
+
if (node->isFrameOwnerElement()) {
HTMLFrameOwnerElement* frameOwner = toHTMLFrameOwnerElement(node);
if (Frame* frame = frameOwner->contentFrame())
forcePushChildren = true;
}
+ if (element->hasTagName(linkTag)) {
+ HTMLLinkElement* linkElement = toHTMLLinkElement(element);
+ if (linkElement->isImport() && linkElement->import() && innerParentNode(linkElement->import()) == linkElement)
+ value->setImportedDocument(buildObjectForNode(linkElement->import(), 0, nodesMap));
+ forcePushChildren = true;
+ }
+
if (element->hasTagName(templateTag)) {
value->setTemplateContent(buildObjectForNode(toHTMLTemplateElement(element)->content(), 0, nodesMap));
forcePushChildren = true;
PassRefPtr<TypeBuilder::DOM::EventListener> InspectorDOMAgent::buildObjectForEventListener(const RegisteredEventListener& registeredEventListener, const AtomicString& eventType, Node* node, const String* objectGroupId)
{
RefPtr<EventListener> eventListener = registeredEventListener.listener;
+ String sourceName;
+ String scriptId;
+ int lineNumber;
+ if (!eventListenerHandlerLocation(&node->document(), eventListener.get(), sourceName, scriptId, lineNumber))
+ return 0;
+
Document& document = node->document();
+ RefPtr<TypeBuilder::Debugger::Location> location = TypeBuilder::Debugger::Location::create()
+ .setScriptId(scriptId)
+ .setLineNumber(lineNumber);
RefPtr<TypeBuilder::DOM::EventListener> value = TypeBuilder::DOM::EventListener::create()
.setType(eventType)
.setUseCapture(registeredEventListener.useCapture)
.setIsAttribute(eventListener->isAttribute())
.setNodeId(pushNodePathToFrontend(node))
- .setHandlerBody(eventListenerHandlerBody(&document, eventListener.get()));
+ .setHandlerBody(eventListenerHandlerBody(&document, eventListener.get()))
+ .setLocation(location);
if (objectGroupId) {
ScriptValue functionValue = eventListenerHandler(&document, eventListener.get());
if (!functionValue.hasNoValue()) {
}
}
}
- String sourceName;
- String scriptId;
- int lineNumber;
- if (eventListenerHandlerLocation(&node->document(), eventListener.get(), sourceName, scriptId, lineNumber)) {
- RefPtr<TypeBuilder::Debugger::Location> location = TypeBuilder::Debugger::Location::create()
- .setScriptId(scriptId)
- .setLineNumber(lineNumber);
- value->setLocation(location);
- if (!sourceName.isEmpty())
- value->setSourceName(sourceName);
- }
+ if (!sourceName.isEmpty())
+ value->setSourceName(sourceName);
return value.release();
}
{
if (node->isDocumentNode()) {
Document* document = toDocument(node);
+ HTMLImportChild* importChild = toHTMLImportChild(document->import());
+ if (importChild)
+ return importChild->link();
return document->ownerElement();
}
return node->parentOrShadowHostNode();