| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2008, 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2008, 2011 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies) | 3 * Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies) |
| 4 * | 4 * |
| 5 * This library is free software; you can redistribute it and/or | 5 * This library is free software; you can redistribute it and/or |
| 6 * modify it under the terms of the GNU Library General Public | 6 * modify it under the terms of the GNU Library General Public |
| 7 * License as published by the Free Software Foundation; either | 7 * License as published by the Free Software Foundation; either |
| 8 * version 2 of the License, or (at your option) any later version. | 8 * version 2 of the License, or (at your option) any later version. |
| 9 * | 9 * |
| 10 * This library is distributed in the hope that it will be useful, | 10 * This library is distributed in the hope that it will be useful, |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 185 shadowHost = &containingShadowRoot->host(); | 185 shadowHost = &containingShadowRoot->host(); |
| 186 containingShadowRoot = shadowHost->containingShadowRoot(); | 186 containingShadowRoot = shadowHost->containingShadowRoot(); |
| 187 setInnerNode(node->ownerShadowHost()); | 187 setInnerNode(node->ownerShadowHost()); |
| 188 } | 188 } |
| 189 | 189 |
| 190 if (shadowHost) | 190 if (shadowHost) |
| 191 setInnerNode(shadowHost); | 191 setInnerNode(shadowHost); |
| 192 } | 192 } |
| 193 | 193 |
| 194 HTMLAreaElement* HitTestResult::imageAreaForImage() const { | 194 HTMLAreaElement* HitTestResult::imageAreaForImage() const { |
| 195 ASSERT(m_innerNode); | 195 DCHECK(m_innerNode); |
| 196 HTMLImageElement* imageElement = nullptr; | 196 HTMLImageElement* imageElement = nullptr; |
| 197 if (isHTMLImageElement(m_innerNode)) { | 197 if (isHTMLImageElement(m_innerNode)) { |
| 198 imageElement = toHTMLImageElement(m_innerNode); | 198 imageElement = toHTMLImageElement(m_innerNode); |
| 199 } else if (m_innerNode->isInShadowTree()) { | 199 } else if (m_innerNode->isInShadowTree()) { |
| 200 if (m_innerNode->containingShadowRoot()->type() == | 200 if (m_innerNode->containingShadowRoot()->type() == |
| 201 ShadowRootType::UserAgent) { | 201 ShadowRootType::UserAgent) { |
| 202 if (isHTMLImageElement(m_innerNode->ownerShadowHost())) | 202 if (isHTMLImageElement(m_innerNode->ownerShadowHost())) |
| 203 imageElement = toHTMLImageElement(m_innerNode->ownerShadowHost()); | 203 imageElement = toHTMLImageElement(m_innerNode->ownerShadowHost()); |
| 204 } | 204 } |
| 205 } | 205 } |
| (...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 433 mutableListBasedTestResult().insert(node); | 433 mutableListBasedTestResult().insert(node); |
| 434 | 434 |
| 435 if (hitTestRequest().penetratingList()) | 435 if (hitTestRequest().penetratingList()) |
| 436 return ContinueHitTesting; | 436 return ContinueHitTesting; |
| 437 | 437 |
| 438 return region.contains(location.boundingBox()) ? StopHitTesting | 438 return region.contains(location.boundingBox()) ? StopHitTesting |
| 439 : ContinueHitTesting; | 439 : ContinueHitTesting; |
| 440 } | 440 } |
| 441 | 441 |
| 442 void HitTestResult::append(const HitTestResult& other) { | 442 void HitTestResult::append(const HitTestResult& other) { |
| 443 ASSERT(hitTestRequest().listBased()); | 443 DCHECK(hitTestRequest().listBased()); |
| 444 | 444 |
| 445 if (!m_scrollbar && other.scrollbar()) { | 445 if (!m_scrollbar && other.scrollbar()) { |
| 446 setScrollbar(other.scrollbar()); | 446 setScrollbar(other.scrollbar()); |
| 447 } | 447 } |
| 448 | 448 |
| 449 if (!m_innerNode && other.innerNode()) { | 449 if (!m_innerNode && other.innerNode()) { |
| 450 m_innerNode = other.innerNode(); | 450 m_innerNode = other.innerNode(); |
| 451 m_innerPossiblyPseudoNode = other.innerPossiblyPseudoNode(); | 451 m_innerPossiblyPseudoNode = other.innerPossiblyPseudoNode(); |
| 452 m_localPoint = other.localPoint(); | 452 m_localPoint = other.localPoint(); |
| 453 m_pointInInnerNodeFrame = other.m_pointInInnerNodeFrame; | 453 m_pointInInnerNodeFrame = other.m_pointInInnerNodeFrame; |
| (...skipping 19 matching lines...) Expand all Loading... |
| 473 | 473 |
| 474 HitTestResult::NodeSet& HitTestResult::mutableListBasedTestResult() { | 474 HitTestResult::NodeSet& HitTestResult::mutableListBasedTestResult() { |
| 475 if (!m_listBasedTestResult) | 475 if (!m_listBasedTestResult) |
| 476 m_listBasedTestResult = new NodeSet; | 476 m_listBasedTestResult = new NodeSet; |
| 477 return *m_listBasedTestResult; | 477 return *m_listBasedTestResult; |
| 478 } | 478 } |
| 479 | 479 |
| 480 void HitTestResult::resolveRectBasedTest( | 480 void HitTestResult::resolveRectBasedTest( |
| 481 Node* resolvedInnerNode, | 481 Node* resolvedInnerNode, |
| 482 const LayoutPoint& resolvedPointInMainFrame) { | 482 const LayoutPoint& resolvedPointInMainFrame) { |
| 483 ASSERT(isRectBasedTest()); | 483 DCHECK(isRectBasedTest()); |
| 484 ASSERT(m_hitTestLocation.containsPoint(FloatPoint(resolvedPointInMainFrame))); | 484 DCHECK(m_hitTestLocation.containsPoint(FloatPoint(resolvedPointInMainFrame))); |
| 485 m_hitTestLocation = HitTestLocation(resolvedPointInMainFrame); | 485 m_hitTestLocation = HitTestLocation(resolvedPointInMainFrame); |
| 486 m_pointInInnerNodeFrame = resolvedPointInMainFrame; | 486 m_pointInInnerNodeFrame = resolvedPointInMainFrame; |
| 487 m_innerNode = nullptr; | 487 m_innerNode = nullptr; |
| 488 m_innerPossiblyPseudoNode = nullptr; | 488 m_innerPossiblyPseudoNode = nullptr; |
| 489 m_listBasedTestResult = nullptr; | 489 m_listBasedTestResult = nullptr; |
| 490 | 490 |
| 491 // Update the HitTestResult as if the supplied node had been hit in normal | 491 // Update the HitTestResult as if the supplied node had been hit in normal |
| 492 // point-based hit-test. | 492 // point-based hit-test. |
| 493 // Note that we don't know the local point after a rect-based hit-test, but we | 493 // Note that we don't know the local point after a rect-based hit-test, but we |
| 494 // never use it so shouldn't bother with the cost of computing it. | 494 // never use it so shouldn't bother with the cost of computing it. |
| 495 resolvedInnerNode->layoutObject()->updateHitTestResult(*this, LayoutPoint()); | 495 resolvedInnerNode->layoutObject()->updateHitTestResult(*this, LayoutPoint()); |
| 496 ASSERT(!isRectBasedTest()); | 496 DCHECK(!isRectBasedTest()); |
| 497 } | 497 } |
| 498 | 498 |
| 499 Element* HitTestResult::innerElement() const { | 499 Element* HitTestResult::innerElement() const { |
| 500 for (Node* node = m_innerNode.get(); node; | 500 for (Node* node = m_innerNode.get(); node; |
| 501 node = FlatTreeTraversal::parent(*node)) { | 501 node = FlatTreeTraversal::parent(*node)) { |
| 502 if (node->isElementNode()) | 502 if (node->isElementNode()) |
| 503 return toElement(node); | 503 return toElement(node); |
| 504 } | 504 } |
| 505 | 505 |
| 506 return nullptr; | 506 return nullptr; |
| 507 } | 507 } |
| 508 | 508 |
| 509 Node* HitTestResult::innerNodeOrImageMapImage() const { | 509 Node* HitTestResult::innerNodeOrImageMapImage() const { |
| 510 if (!m_innerNode) | 510 if (!m_innerNode) |
| 511 return nullptr; | 511 return nullptr; |
| 512 | 512 |
| 513 HTMLImageElement* imageMapImageElement = nullptr; | 513 HTMLImageElement* imageMapImageElement = nullptr; |
| 514 if (isHTMLAreaElement(m_innerNode)) | 514 if (isHTMLAreaElement(m_innerNode)) |
| 515 imageMapImageElement = toHTMLAreaElement(m_innerNode)->imageElement(); | 515 imageMapImageElement = toHTMLAreaElement(m_innerNode)->imageElement(); |
| 516 else if (isHTMLMapElement(m_innerNode)) | 516 else if (isHTMLMapElement(m_innerNode)) |
| 517 imageMapImageElement = toHTMLMapElement(m_innerNode)->imageElement(); | 517 imageMapImageElement = toHTMLMapElement(m_innerNode)->imageElement(); |
| 518 | 518 |
| 519 if (!imageMapImageElement) | 519 if (!imageMapImageElement) |
| 520 return m_innerNode.get(); | 520 return m_innerNode.get(); |
| 521 | 521 |
| 522 return imageMapImageElement; | 522 return imageMapImageElement; |
| 523 } | 523 } |
| 524 | 524 |
| 525 } // namespace blink | 525 } // namespace blink |
| OLD | NEW |