summaryrefslogtreecommitdiffstats
path: root/WebCore/inspector/InspectorDOMAgent.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/inspector/InspectorDOMAgent.cpp')
-rw-r--r--WebCore/inspector/InspectorDOMAgent.cpp256
1 files changed, 87 insertions, 169 deletions
diff --git a/WebCore/inspector/InspectorDOMAgent.cpp b/WebCore/inspector/InspectorDOMAgent.cpp
index 075944a..7cf0a82 100644
--- a/WebCore/inspector/InspectorDOMAgent.cpp
+++ b/WebCore/inspector/InspectorDOMAgent.cpp
@@ -384,10 +384,9 @@ Node* InspectorDOMAgent::nodeForId(long id)
return 0;
}
-void InspectorDOMAgent::getChildNodes(long callId, long nodeId)
+void InspectorDOMAgent::getChildNodes(long nodeId)
{
pushChildNodesToFrontend(nodeId);
- m_frontend->didGetChildNodes(callId);
}
long InspectorDOMAgent::pushNodePathToFrontend(Node* nodeToPush)
@@ -432,72 +431,56 @@ long InspectorDOMAgent::pushNodePathToFrontend(Node* nodeToPush)
return map->get(nodeToPush);
}
-void InspectorDOMAgent::setAttribute(long callId, long elementId, const String& name, const String& value)
+void InspectorDOMAgent::setAttribute(long elementId, const String& name, const String& value, bool* success)
{
Node* node = nodeForId(elementId);
if (node && (node->nodeType() == Node::ELEMENT_NODE)) {
Element* element = static_cast<Element*>(node);
ExceptionCode ec = 0;
element->setAttribute(name, value, ec);
- m_frontend->didApplyDomChange(callId, ec == 0);
- } else {
- m_frontend->didApplyDomChange(callId, false);
+ *success = !ec;
}
}
-void InspectorDOMAgent::removeAttribute(long callId, long elementId, const String& name)
+void InspectorDOMAgent::removeAttribute(long elementId, const String& name, bool* success)
{
Node* node = nodeForId(elementId);
if (node && (node->nodeType() == Node::ELEMENT_NODE)) {
Element* element = static_cast<Element*>(node);
ExceptionCode ec = 0;
element->removeAttribute(name, ec);
- m_frontend->didApplyDomChange(callId, ec == 0);
- } else {
- m_frontend->didApplyDomChange(callId, false);
+ *success = !ec;
}
}
-void InspectorDOMAgent::removeNode(long callId, long nodeId)
+void InspectorDOMAgent::removeNode(long nodeId, long* outNodeId)
{
Node* node = nodeForId(nodeId);
- if (!node) {
- m_frontend->didRemoveNode(callId, 0);
+ if (!node)
return;
- }
Node* parentNode = node->parentNode();
- if (!parentNode) {
- m_frontend->didRemoveNode(callId, 0);
+ if (!parentNode)
return;
- }
ExceptionCode ec = 0;
parentNode->removeChild(node, ec);
- if (ec) {
- m_frontend->didRemoveNode(callId, 0);
+ if (ec)
return;
- }
- m_frontend->didRemoveNode(callId, nodeId);
+ *outNodeId = nodeId;
}
-void InspectorDOMAgent::changeTagName(long callId, long nodeId, const String& tagName)
+void InspectorDOMAgent::changeTagName(long nodeId, const String& tagName, long* newId)
{
Node* oldNode = nodeForId(nodeId);
- if (!oldNode || !oldNode->isElementNode()) {
- m_frontend->didChangeTagName(callId, 0);
+ if (!oldNode || !oldNode->isElementNode())
return;
- }
-
- bool childrenRequested = m_childrenRequested.contains(nodeId);
ExceptionCode ec = 0;
RefPtr<Element> newElem = oldNode->document()->createElement(tagName, ec);
- if (ec) {
- m_frontend->didChangeTagName(callId, 0);
+ if (ec)
return;
- }
// Copy over the original node's attributes.
Element* oldElem = static_cast<Element*>(oldNode);
@@ -515,36 +498,28 @@ void InspectorDOMAgent::changeTagName(long callId, long nodeId, const String& ta
parent->insertBefore(newElem, oldNode->nextSibling(), ec);
parent->removeChild(oldNode, ec);
- if (ec) {
- m_frontend->didChangeTagName(callId, 0);
+ if (ec)
return;
- }
- long newId = pushNodePathToFrontend(newElem.get());
- if (childrenRequested)
- pushChildNodesToFrontend(newId);
- m_frontend->didChangeTagName(callId, newId);
+ *newId = pushNodePathToFrontend(newElem.get());
+ if (m_childrenRequested.contains(nodeId))
+ pushChildNodesToFrontend(*newId);
}
-void InspectorDOMAgent::getOuterHTML(long callId, long nodeId)
+void InspectorDOMAgent::getOuterHTML(long nodeId, WTF::String* outerHTML)
{
Node* node = nodeForId(nodeId);
- if (!node || !node->isHTMLElement()) {
- m_frontend->didGetOuterHTML(callId, "");
+ if (!node || !node->isHTMLElement())
return;
- }
- HTMLElement* htmlElement = static_cast<HTMLElement*>(node);
- m_frontend->didGetOuterHTML(callId, htmlElement->outerHTML());
+ *outerHTML = static_cast<HTMLElement*>(node)->outerHTML();
}
-void InspectorDOMAgent::setOuterHTML(long callId, long nodeId, const String& outerHTML)
+void InspectorDOMAgent::setOuterHTML(long nodeId, const String& outerHTML, long* newId)
{
Node* node = nodeForId(nodeId);
- if (!node || !node->isHTMLElement()) {
- m_frontend->didSetOuterHTML(callId, 0);
+ if (!node || !node->isHTMLElement())
return;
- }
bool childrenRequested = m_childrenRequested.contains(nodeId);
Node* previousSibling = node->previousSibling();
@@ -554,41 +529,35 @@ void InspectorDOMAgent::setOuterHTML(long callId, long nodeId, const String& out
ExceptionCode ec = 0;
htmlElement->setOuterHTML(outerHTML, ec);
if (ec)
- m_frontend->didSetOuterHTML(callId, 0);
+ return;
Node* newNode = previousSibling ? previousSibling->nextSibling() : parentNode->firstChild();
- long newId = pushNodePathToFrontend(newNode);
+ *newId = pushNodePathToFrontend(newNode);
if (childrenRequested)
- pushChildNodesToFrontend(newId);
-
- m_frontend->didSetOuterHTML(callId, newId);
+ pushChildNodesToFrontend(*newId);
}
-void InspectorDOMAgent::setTextNodeValue(long callId, long nodeId, const String& value)
+void InspectorDOMAgent::setTextNodeValue(long nodeId, const String& value, bool* success)
{
Node* node = nodeForId(nodeId);
if (node && (node->nodeType() == Node::TEXT_NODE)) {
Text* text_node = static_cast<Text*>(node);
ExceptionCode ec = 0;
text_node->replaceWholeText(value, ec);
- m_frontend->didApplyDomChange(callId, ec == 0);
- } else {
- m_frontend->didApplyDomChange(callId, false);
+ *success = !ec;
}
}
-void InspectorDOMAgent::getEventListenersForNode(long callId, long nodeId)
+void InspectorDOMAgent::getEventListenersForNode(long nodeId, long* outNodeId, RefPtr<InspectorArray>* listenersArray)
{
Node* node = nodeForId(nodeId);
- RefPtr<InspectorArray> listenersArray = InspectorArray::create();
+ *outNodeId = nodeId;
EventTargetData* d;
// Quick break if a null node or no listeners at all
- if (!node || !(d = node->eventTargetData())) {
- m_frontend->didGetEventListenersForNode(callId, nodeId, listenersArray.release());
+ if (!node || !(d = node->eventTargetData()))
return;
- }
// Get the list of event types this Node is concerned with
Vector<AtomicString> eventTypes;
@@ -599,10 +568,8 @@ void InspectorDOMAgent::getEventListenersForNode(long callId, long nodeId)
// Quick break if no useful listeners
size_t eventTypesLength = eventTypes.size();
- if (eventTypesLength == 0) {
- m_frontend->didGetEventListenersForNode(callId, nodeId, listenersArray.release());
+ if (!eventTypesLength)
return;
- }
// The Node's Event Ancestors (not including self)
Vector<RefPtr<ContainerNode> > ancestors;
@@ -633,7 +600,7 @@ void InspectorDOMAgent::getEventListenersForNode(long callId, long nodeId)
for (size_t j = 0; j < vector.size(); ++j) {
const RegisteredEventListener& listener = vector[j];
if (listener.useCapture)
- listenersArray->push(buildObjectForEventListener(listener, info.eventType, info.node));
+ (*listenersArray)->push(buildObjectForEventListener(listener, info.eventType, info.node));
}
}
@@ -644,11 +611,9 @@ void InspectorDOMAgent::getEventListenersForNode(long callId, long nodeId)
for (size_t j = 0; j < vector.size(); ++j) {
const RegisteredEventListener& listener = vector[j];
if (!listener.useCapture)
- listenersArray->push(buildObjectForEventListener(listener, info.eventType, info.node));
+ (*listenersArray)->push(buildObjectForEventListener(listener, info.eventType, info.node));
}
}
-
- m_frontend->didGetEventListenersForNode(callId, nodeId, listenersArray.release());
}
void InspectorDOMAgent::addInspectedNode(long nodeId)
@@ -1006,19 +971,15 @@ void InspectorDOMAgent::didModifyDOMAttr(Element* element)
m_frontend->attributesUpdated(id, buildArrayForElementAttributes(element));
}
-void InspectorDOMAgent::getStyles(long callId, long nodeId, bool authorOnly)
+void InspectorDOMAgent::getStyles(long nodeId, bool authorOnly, RefPtr<InspectorValue>* styles)
{
Node* node = nodeForId(nodeId);
- if (!node || node->nodeType() != Node::ELEMENT_NODE) {
- m_frontend->didGetStyles(callId, InspectorValue::null());
+ if (!node || node->nodeType() != Node::ELEMENT_NODE)
return;
- }
DOMWindow* defaultView = node->ownerDocument()->defaultView();
- if (!defaultView) {
- m_frontend->didGetStyles(callId, InspectorValue::null());
+ if (!defaultView)
return;
- }
Element* element = static_cast<Element*>(node);
RefPtr<CSSComputedStyleDeclaration> computedStyleInfo = computedStyle(node, true); // Support the viewing of :visited information in computed style.
@@ -1050,41 +1011,35 @@ void InspectorDOMAgent::getStyles(long callId, long nodeId, bool authorOnly)
parentElement = parentElement->parentElement();
currentStyle = parentStyle;
}
- m_frontend->didGetStyles(callId, result.release());
+ *styles = result.release();
}
-void InspectorDOMAgent::getAllStyles(long callId)
+void InspectorDOMAgent::getAllStyles(RefPtr<InspectorArray>* styles)
{
- RefPtr<InspectorArray> result = InspectorArray::create();
for (ListHashSet<RefPtr<Document> >::iterator it = m_documents.begin(); it != m_documents.end(); ++it) {
StyleSheetList* list = (*it)->styleSheets();
for (unsigned i = 0; i < list->length(); ++i) {
StyleSheet* styleSheet = list->item(i);
if (styleSheet->isCSSStyleSheet())
- result->push(buildObjectForStyleSheet((*it).get(), static_cast<CSSStyleSheet*>(styleSheet)));
+ (*styles)->push(buildObjectForStyleSheet((*it).get(), static_cast<CSSStyleSheet*>(styleSheet)));
}
}
- m_frontend->didGetAllStyles(callId, result.release());
}
-void InspectorDOMAgent::getStyleSheet(long callId, long styleSheetId)
+void InspectorDOMAgent::getStyleSheet(long styleSheetId, RefPtr<InspectorObject>* styleSheetObject)
{
CSSStyleSheet* styleSheet = cssStore()->styleSheetForId(styleSheetId);
if (styleSheet && styleSheet->doc())
- m_frontend->didGetStyleSheet(callId, buildObjectForStyleSheet(styleSheet->doc(), styleSheet));
- else
- m_frontend->didGetStyleSheet(callId, InspectorObject::create());
+ *styleSheetObject = buildObjectForStyleSheet(styleSheet->doc(), styleSheet);
}
-void InspectorDOMAgent::getRuleRanges(long callId, long styleSheetId)
+void InspectorDOMAgent::getRuleRanges(long styleSheetId, RefPtr<InspectorValue>* ruleRange)
{
CSSStyleSheet* styleSheet = cssStore()->styleSheetForId(styleSheetId);
if (styleSheet && styleSheet->doc()) {
HashMap<long, SourceRange> ruleRanges = cssStore()->getRuleRanges(styleSheet);
- if (!ruleRanges.size()) {
- m_frontend->didGetStyleSheet(callId, InspectorObject::create());
+ if (!ruleRanges.size())
return;
- }
RefPtr<InspectorObject> result = InspectorObject::create();
for (HashMap<long, SourceRange>::iterator it = ruleRanges.begin(); it != ruleRanges.end(); ++it) {
if (it->second.second) {
@@ -1096,39 +1051,30 @@ void InspectorDOMAgent::getRuleRanges(long callId, long styleSheetId)
bodyRange->setNumber("end", it->second.second);
}
}
- m_frontend->didGetRuleRanges(callId, result);
- } else
- m_frontend->didGetRuleRanges(callId, InspectorValue::null());
+ *ruleRange = result.release();
+ }
}
-void InspectorDOMAgent::getInlineStyle(long callId, long nodeId)
+void InspectorDOMAgent::getInlineStyle(long nodeId, RefPtr<InspectorValue>* style)
{
Node* node = nodeForId(nodeId);
- if (!node || node->nodeType() != Node::ELEMENT_NODE) {
- m_frontend->didGetInlineStyle(callId, InspectorValue::null());
+ if (!node || node->nodeType() != Node::ELEMENT_NODE)
return;
- }
- Element* element = static_cast<Element*>(node);
- m_frontend->didGetInlineStyle(callId, buildObjectForStyle(element->style(), true));
+ *style = buildObjectForStyle(static_cast<Element*>(node)->style(), true);
}
-void InspectorDOMAgent::getComputedStyle(long callId, long nodeId)
+void InspectorDOMAgent::getComputedStyle(long nodeId, RefPtr<InspectorValue>* style)
{
Node* node = nodeForId(nodeId);
- if (!node || node->nodeType() != Node::ELEMENT_NODE) {
- m_frontend->didGetComputedStyle(callId, InspectorValue::null());
+ if (!node || node->nodeType() != Node::ELEMENT_NODE)
return;
- }
DOMWindow* defaultView = node->ownerDocument()->defaultView();
- if (!defaultView) {
- m_frontend->didGetComputedStyle(callId, InspectorValue::null());
+ if (!defaultView)
return;
- }
Element* element = static_cast<Element*>(node);
- RefPtr<CSSStyleDeclaration> computedStyle = defaultView->getComputedStyle(element, "");
- m_frontend->didGetComputedStyle(callId, buildObjectForStyle(computedStyle.get(), false));
+ *style = buildObjectForStyle(defaultView->getComputedStyle(element, "").get(), false);
}
PassRefPtr<InspectorObject> InspectorDOMAgent::buildObjectForAttributeStyles(Element* element)
@@ -1174,13 +1120,11 @@ PassRefPtr<InspectorArray> InspectorDOMAgent::buildArrayForPseudoElements(Elemen
return result.release();
}
-void InspectorDOMAgent::applyStyleText(long callId, long styleId, const String& styleText, const String& propertyName)
+void InspectorDOMAgent::applyStyleText(long styleId, const String& styleText, const String& propertyName, bool* success, RefPtr<InspectorValue>* styleObject, RefPtr<InspectorArray>* changedPropertiesArray)
{
CSSStyleDeclaration* style = cssStore()->styleForId(styleId);
- if (!style) {
- m_frontend->didApplyStyleText(callId, false, InspectorValue::null(), InspectorArray::create());
+ if (!style)
return;
- }
// Remove disabled property entry for property with given name.
DisabledStyleDeclaration* disabledStyle = cssStore()->disabledStyleForId(styleId, false);
@@ -1207,24 +1151,19 @@ void InspectorDOMAgent::applyStyleText(long callId, long styleId, const String&
if (!ec)
style->removeProperty(propertyName, ec);
- if (ec) {
- m_frontend->didApplyStyleText(callId, false, InspectorValue::null(), InspectorArray::create());
+ if (ec)
return;
- }
}
// Notify caller that the property was successfully deleted.
if (!styleTextLength) {
- RefPtr<InspectorArray> changedProperties = InspectorArray::create();
- changedProperties->pushString(propertyName);
- m_frontend->didApplyStyleText(callId, true, InspectorValue::null(), changedProperties.release());
+ (*changedPropertiesArray)->pushString(propertyName);
+ *success = true;
return;
}
- if (!tempStyle->length()) {
- m_frontend->didApplyStyleText(callId, false, InspectorValue::null(), InspectorArray::create());
+ if (!tempStyle->length())
return;
- }
// Iterate of the properties on the test element's style declaration and
// add them to the real style declaration. We take care to move shorthands.
@@ -1258,41 +1197,37 @@ void InspectorDOMAgent::applyStyleText(long callId, long styleId, const String&
disabledStyle->remove(name);
changedProperties.append(name);
}
- m_frontend->didApplyStyleText(callId, true, buildObjectForStyle(style, true), toArray(changedProperties));
+ *success = true;
+ *styleObject = buildObjectForStyle(style, true);
+ *changedPropertiesArray = toArray(changedProperties);
}
-void InspectorDOMAgent::setStyleText(long callId, long styleId, const String& cssText)
+void InspectorDOMAgent::setStyleText(long styleId, const String& cssText, bool* success)
{
CSSStyleDeclaration* style = cssStore()->styleForId(styleId);
- if (!style) {
- m_frontend->didSetStyleText(callId, false);
+ if (!style)
return;
- }
ExceptionCode ec = 0;
style->setCssText(cssText, ec);
- m_frontend->didSetStyleText(callId, !ec);
+ *success = !ec;
}
-void InspectorDOMAgent::setStyleProperty(long callId, long styleId, const String& name, const String& value)
+void InspectorDOMAgent::setStyleProperty(long styleId, const String& name, const String& value, bool* success)
{
CSSStyleDeclaration* style = cssStore()->styleForId(styleId);
- if (!style) {
- m_frontend->didSetStyleProperty(callId, false);
+ if (!style)
return;
- }
ExceptionCode ec = 0;
style->setProperty(name, value, ec);
- m_frontend->didSetStyleProperty(callId, !ec);
+ *success = !ec;
}
-void InspectorDOMAgent::toggleStyleEnabled(long callId, long styleId, const String& propertyName, bool disabled)
+void InspectorDOMAgent::toggleStyleEnabled(long styleId, const String& propertyName, bool disabled, RefPtr<InspectorValue>* styleObject)
{
CSSStyleDeclaration* style = cssStore()->styleForId(styleId);
- if (!style) {
- m_frontend->didToggleStyleEnabled(callId, InspectorValue::null());
+ if (!style)
return;
- }
DisabledStyleDeclaration* disabledStyle = cssStore()->disabledStyleForId(styleId, true);
@@ -1308,30 +1243,24 @@ void InspectorDOMAgent::toggleStyleEnabled(long callId, long styleId, const Stri
if (!ec)
disabledStyle->remove(propertyName);
}
- if (ec) {
- m_frontend->didToggleStyleEnabled(callId, InspectorValue::null());
+ if (ec)
return;
- }
- m_frontend->didToggleStyleEnabled(callId, buildObjectForStyle(style, true));
+ *styleObject = buildObjectForStyle(style, true);
}
-void InspectorDOMAgent::setRuleSelector(long callId, long ruleId, const String& selector, long selectedNodeId)
+void InspectorDOMAgent::setRuleSelector(long ruleId, const String& selector, long selectedNodeId, RefPtr<InspectorValue>* ruleObject, bool* selectorAffectsNode)
{
CSSStyleRule* rule = cssStore()->ruleForId(ruleId);
- if (!rule) {
- m_frontend->didSetRuleSelector(callId, InspectorValue::null(), false);
+ if (!rule)
return;
- }
Node* node = nodeForId(selectedNodeId);
CSSStyleSheet* styleSheet = rule->parentStyleSheet();
ExceptionCode ec = 0;
styleSheet->addRule(selector, rule->style()->cssText(), ec);
- if (ec) {
- m_frontend->didSetRuleSelector(callId, InspectorValue::null(), false);
+ if (ec)
return;
- }
CSSStyleRule* newRule = static_cast<CSSStyleRule*>(styleSheet->item(styleSheet->length() - 1));
for (unsigned i = 0; i < styleSheet->length(); ++i) {
@@ -1341,35 +1270,31 @@ void InspectorDOMAgent::setRuleSelector(long callId, long ruleId, const String&
}
}
- if (ec) {
- m_frontend->didSetRuleSelector(callId, InspectorValue::null(), false);
+ if (ec)
return;
- }
- m_frontend->didSetRuleSelector(callId, buildObjectForRule(node->ownerDocument(), newRule), ruleAffectsNode(newRule, node));
+ *selectorAffectsNode = ruleAffectsNode(newRule, node);
+ *ruleObject = buildObjectForRule(node->ownerDocument(), newRule);
}
-void InspectorDOMAgent::addRule(long callId, const String& selector, long selectedNodeId)
+void InspectorDOMAgent::addRule(const String& selector, long selectedNodeId, RefPtr<InspectorValue>* ruleObject, bool* selectorAffectsNode)
{
Node* node = nodeForId(selectedNodeId);
- if (!node) {
- m_frontend->didAddRule(callId, InspectorValue::null(), false);
+ if (!node)
return;
- }
- CSSStyleSheet* styleSheet = cssStore()->inspectorStyleSheet(node->ownerDocument(), true, callId);
+ CSSStyleSheet* styleSheet = cssStore()->inspectorStyleSheet(node->ownerDocument(), true);
if (!styleSheet)
return; // could not add a stylesheet to the ownerDocument
ExceptionCode ec = 0;
styleSheet->addRule(selector, "", ec);
- if (ec) {
- m_frontend->didAddRule(callId, InspectorValue::null(), false);
+ if (ec)
return;
- }
CSSStyleRule* newRule = static_cast<CSSStyleRule*>(styleSheet->item(styleSheet->length() - 1));
- m_frontend->didAddRule(callId, buildObjectForRule(node->ownerDocument(), newRule), ruleAffectsNode(newRule, node));
+ *selectorAffectsNode = ruleAffectsNode(newRule, node);
+ *ruleObject = buildObjectForRule(node->ownerDocument(), newRule);
}
PassRefPtr<InspectorObject> InspectorDOMAgent::buildObjectForStyle(CSSStyleDeclaration* style, bool bind)
@@ -1471,7 +1396,7 @@ PassRefPtr<InspectorObject> InspectorDOMAgent::buildObjectForRule(Document* owne
bool isUser = parentStyleSheet && parentStyleSheet->ownerNode() && parentStyleSheet->ownerNode()->nodeName() == "#document";
result->setBool("isUserAgent", isUserAgent);
result->setBool("isUser", isUser);
- result->setBool("isViaInspector", rule->parentStyleSheet() == cssStore()->inspectorStyleSheet(ownerDocument, false, -1));
+ result->setBool("isViaInspector", rule->parentStyleSheet() == cssStore()->inspectorStyleSheet(ownerDocument, false));
// Bind editable scripts only.
bool bind = !isUserAgent && !isUser;
@@ -1642,17 +1567,10 @@ void InspectorDOMAgent::copyNode(long nodeId)
Pasteboard::generalPasteboard()->writePlainText(markup);
}
-void InspectorDOMAgent::pushNodeByPathToFrontend(long callId, const String& path)
+void InspectorDOMAgent::pushNodeByPathToFrontend(const String& path, long* nodeId)
{
- if (!m_frontend)
- return;
-
- long id = 0;
- Node* node = nodeForPath(path);
- if (node)
- id = pushNodePathToFrontend(node);
-
- m_frontend->didPushNodeByPathToFrontend(callId, id);
+ if (Node* node = nodeForPath(path))
+ *nodeId = pushNodePathToFrontend(node);
}
} // namespace WebCore