| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2011 Google Inc. All rights reserved. | 3 * Copyright (C) 2011 Google Inc. All rights reserved. |
| 4 * Copyright (C) 2009 Joseph Pecoraro | 4 * Copyright (C) 2009 Joseph Pecoraro |
| 5 * | 5 * |
| 6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
| 7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions |
| 8 * are met: | 8 * are met: |
| 9 * | 9 * |
| 10 * 1. Redistributions of source code must retain the above copyright | 10 * 1. Redistributions of source code must retain the above copyright |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 } | 148 } |
| 149 | 149 |
| 150 static Node* hoveredNodeForPoint(Frame* frame, const IntPoint& point, bool ignor
ePointerEventsNone) | 150 static Node* hoveredNodeForPoint(Frame* frame, const IntPoint& point, bool ignor
ePointerEventsNone) |
| 151 { | 151 { |
| 152 HitTestRequest::HitTestRequestType hitType = HitTestRequest::Move | HitTestR
equest::ReadOnly | HitTestRequest::AllowChildFrameContent; | 152 HitTestRequest::HitTestRequestType hitType = HitTestRequest::Move | HitTestR
equest::ReadOnly | HitTestRequest::AllowChildFrameContent; |
| 153 if (ignorePointerEventsNone) | 153 if (ignorePointerEventsNone) |
| 154 hitType |= HitTestRequest::IgnorePointerEventsNone; | 154 hitType |= HitTestRequest::IgnorePointerEventsNone; |
| 155 HitTestRequest request(hitType); | 155 HitTestRequest request(hitType); |
| 156 HitTestResult result(frame->view()->windowToContents(point)); | 156 HitTestResult result(frame->view()->windowToContents(point)); |
| 157 frame->contentRenderer()->hitTest(request, result); | 157 frame->contentRenderer()->hitTest(request, result); |
| 158 result.setToShadowHostIfInUserAgentShadowRoot(); | |
| 159 Node* node = result.innerNode(); | 158 Node* node = result.innerNode(); |
| 160 while (node && node->nodeType() == Node::TEXT_NODE) | 159 while (node && node->nodeType() == Node::TEXT_NODE) |
| 161 node = node->parentNode(); | 160 node = node->parentNode(); |
| 162 return node; | 161 return node; |
| 163 } | 162 } |
| 164 | 163 |
| 165 static Node* hoveredNodeForEvent(Frame* frame, const PlatformMouseEvent& event,
bool ignorePointerEventsNone) | 164 static Node* hoveredNodeForEvent(Frame* frame, const PlatformMouseEvent& event,
bool ignorePointerEventsNone) |
| 166 { | 165 { |
| 167 return hoveredNodeForPoint(frame, event.position(), ignorePointerEventsNone)
; | 166 return hoveredNodeForPoint(frame, event.position(), ignorePointerEventsNone)
; |
| 168 } | 167 } |
| (...skipping 1197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1366 break; | 1365 break; |
| 1367 } | 1366 } |
| 1368 | 1367 |
| 1369 RefPtr<TypeBuilder::DOM::Node> value = TypeBuilder::DOM::Node::create() | 1368 RefPtr<TypeBuilder::DOM::Node> value = TypeBuilder::DOM::Node::create() |
| 1370 .setNodeId(id) | 1369 .setNodeId(id) |
| 1371 .setNodeType(static_cast<int>(node->nodeType())) | 1370 .setNodeType(static_cast<int>(node->nodeType())) |
| 1372 .setNodeName(nodeName) | 1371 .setNodeName(nodeName) |
| 1373 .setLocalName(localName) | 1372 .setLocalName(localName) |
| 1374 .setNodeValue(nodeValue); | 1373 .setNodeValue(nodeValue); |
| 1375 | 1374 |
| 1376 if (node->isContainerNode()) { | 1375 bool forcePushChildren = false; |
| 1377 int nodeCount = innerChildNodeCount(node); | |
| 1378 value->setChildNodeCount(nodeCount); | |
| 1379 RefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node> > children = buildArra
yForContainerChildren(node, depth, nodesMap); | |
| 1380 if (children->length() > 0) | |
| 1381 value->setChildren(children.release()); | |
| 1382 } | |
| 1383 | |
| 1384 if (node->isElementNode()) { | 1376 if (node->isElementNode()) { |
| 1385 Element* element = toElement(node); | 1377 Element* element = toElement(node); |
| 1386 value->setAttributes(buildArrayForElementAttributes(element)); | 1378 value->setAttributes(buildArrayForElementAttributes(element)); |
| 1387 if (node->isFrameOwnerElement()) { | 1379 if (node->isFrameOwnerElement()) { |
| 1388 HTMLFrameOwnerElement* frameOwner = static_cast<HTMLFrameOwnerElemen
t*>(node); | 1380 HTMLFrameOwnerElement* frameOwner = static_cast<HTMLFrameOwnerElemen
t*>(node); |
| 1389 Frame* frame = frameOwner->contentFrame(); | 1381 Frame* frame = frameOwner->contentFrame(); |
| 1390 if (frame) | 1382 if (frame) |
| 1391 value->setFrameId(m_pageAgent->frameId(frame)); | 1383 value->setFrameId(m_pageAgent->frameId(frame)); |
| 1392 Document* doc = frameOwner->contentDocument(); | 1384 Document* doc = frameOwner->contentDocument(); |
| 1393 if (doc) | 1385 if (doc) |
| 1394 value->setContentDocument(buildObjectForNode(doc, 0, nodesMap)); | 1386 value->setContentDocument(buildObjectForNode(doc, 0, nodesMap)); |
| 1395 } | 1387 } |
| 1396 | 1388 |
| 1397 ElementShadow* shadow = element->shadow(); | 1389 ElementShadow* shadow = element->shadow(); |
| 1398 if (shadow) { | 1390 if (shadow) { |
| 1399 RefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node> > shadowRoots = Ty
peBuilder::Array<TypeBuilder::DOM::Node>::create(); | 1391 RefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node> > shadowRoots = Ty
peBuilder::Array<TypeBuilder::DOM::Node>::create(); |
| 1400 for (ShadowRoot* root = shadow->youngestShadowRoot(); root; root = r
oot->olderShadowRoot()) | 1392 for (ShadowRoot* root = shadow->youngestShadowRoot(); root; root = r
oot->olderShadowRoot()) |
| 1401 shadowRoots->addItem(buildObjectForNode(root, 0, nodesMap)); | 1393 shadowRoots->addItem(buildObjectForNode(root, 0, nodesMap)); |
| 1402 value->setShadowRoots(shadowRoots); | 1394 value->setShadowRoots(shadowRoots); |
| 1395 forcePushChildren = true; |
| 1403 } | 1396 } |
| 1404 | 1397 |
| 1405 if (element->hasTagName(templateTag)) | 1398 if (element->hasTagName(templateTag)) { |
| 1406 value->setTemplateContent(buildObjectForNode(static_cast<HTMLTemplat
eElement*>(element)->content(), 0, nodesMap)); | 1399 value->setTemplateContent(buildObjectForNode(static_cast<HTMLTemplat
eElement*>(element)->content(), 0, nodesMap)); |
| 1400 forcePushChildren = true; |
| 1401 } |
| 1407 } else if (node->isDocumentNode()) { | 1402 } else if (node->isDocumentNode()) { |
| 1408 Document* document = toDocument(node); | 1403 Document* document = toDocument(node); |
| 1409 value->setDocumentURL(documentURLString(document)); | 1404 value->setDocumentURL(documentURLString(document)); |
| 1410 value->setBaseURL(documentBaseURLString(document)); | 1405 value->setBaseURL(documentBaseURLString(document)); |
| 1411 value->setXmlVersion(document->xmlVersion()); | 1406 value->setXmlVersion(document->xmlVersion()); |
| 1412 } else if (node->nodeType() == Node::DOCUMENT_TYPE_NODE) { | 1407 } else if (node->nodeType() == Node::DOCUMENT_TYPE_NODE) { |
| 1413 DocumentType* docType = static_cast<DocumentType*>(node); | 1408 DocumentType* docType = static_cast<DocumentType*>(node); |
| 1414 value->setPublicId(docType->publicId()); | 1409 value->setPublicId(docType->publicId()); |
| 1415 value->setSystemId(docType->systemId()); | 1410 value->setSystemId(docType->systemId()); |
| 1416 value->setInternalSubset(docType->internalSubset()); | 1411 value->setInternalSubset(docType->internalSubset()); |
| 1417 } else if (node->isAttributeNode()) { | 1412 } else if (node->isAttributeNode()) { |
| 1418 Attr* attribute = static_cast<Attr*>(node); | 1413 Attr* attribute = static_cast<Attr*>(node); |
| 1419 value->setName(attribute->name()); | 1414 value->setName(attribute->name()); |
| 1420 value->setValue(attribute->value()); | 1415 value->setValue(attribute->value()); |
| 1421 } | 1416 } |
| 1417 |
| 1418 if (node->isContainerNode()) { |
| 1419 int nodeCount = innerChildNodeCount(node); |
| 1420 value->setChildNodeCount(nodeCount); |
| 1421 if (forcePushChildren && !depth) |
| 1422 depth = 1; |
| 1423 RefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node> > children = buildArra
yForContainerChildren(node, depth, nodesMap); |
| 1424 if (children->length() > 0 || depth) // Push children along with shadow
in any case. |
| 1425 value->setChildren(children.release()); |
| 1426 } |
| 1427 |
| 1422 return value.release(); | 1428 return value.release(); |
| 1423 } | 1429 } |
| 1424 | 1430 |
| 1425 PassRefPtr<TypeBuilder::Array<String> > InspectorDOMAgent::buildArrayForElementA
ttributes(Element* element) | 1431 PassRefPtr<TypeBuilder::Array<String> > InspectorDOMAgent::buildArrayForElementA
ttributes(Element* element) |
| 1426 { | 1432 { |
| 1427 RefPtr<TypeBuilder::Array<String> > attributesValue = TypeBuilder::Array<Str
ing>::create(); | 1433 RefPtr<TypeBuilder::Array<String> > attributesValue = TypeBuilder::Array<Str
ing>::create(); |
| 1428 // Go through all attributes and serialize them. | 1434 // Go through all attributes and serialize them. |
| 1429 if (!element->hasAttributes()) | 1435 if (!element->hasAttributes()) |
| 1430 return attributesValue.release(); | 1436 return attributesValue.release(); |
| 1431 unsigned numAttrs = element->attributeCount(); | 1437 unsigned numAttrs = element->attributeCount(); |
| (...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1822 | 1828 |
| 1823 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptFor(m
ainWorldScriptState(frame)); | 1829 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptFor(m
ainWorldScriptState(frame)); |
| 1824 if (injectedScript.hasNoValue()) | 1830 if (injectedScript.hasNoValue()) |
| 1825 return 0; | 1831 return 0; |
| 1826 | 1832 |
| 1827 return injectedScript.wrapNode(node, objectGroup); | 1833 return injectedScript.wrapNode(node, objectGroup); |
| 1828 } | 1834 } |
| 1829 | 1835 |
| 1830 } // namespace WebCore | 1836 } // namespace WebCore |
| 1831 | 1837 |
| OLD | NEW |