1 /* 2 * Copyright (C) 2012 Google Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 14 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 16 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 17 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 18 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 19 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 20 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 21 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 26 #ifndef WebHitTestResult_h 27 #define WebHitTestResult_h 28 29 #include "../platform/WebPrivatePtr.h" 30 31 namespace blink { 32 33 class HitTestResult; 34 class WebElement; 35 class WebHitTestResultPrivate; 36 class WebNode; 37 class WebURL; 38 struct WebPoint; 39 40 // Properties of a hit test result, i.e. properties of the nodes at a given point 41 // (the hit point) on the page. Both urls may be populated at the same time, for 42 // example in the instance of an <img> inside an <a>. 43 class WebHitTestResult { 44 public: 45 WebHitTestResult() { } 46 WebHitTestResult(const WebHitTestResult& info) { assign(info); } 47 ~WebHitTestResult() { reset(); } 48 49 BLINK_EXPORT void assign(const WebHitTestResult&); 50 BLINK_EXPORT void reset(); 51 BLINK_EXPORT bool isNull() const; 52 53 // The node that was hit (only one for point-based tests). 54 BLINK_EXPORT WebNode node() const; 55 56 // Coordinates of the point that was hit. Relative to the node. 57 BLINK_EXPORT WebPoint localPoint() const; 58 59 // If a link (eg. anchor or area tag) is hit, return the element. 60 // Return null otheriwse. 61 BLINK_EXPORT WebElement urlElement() const; 62 63 // If an image is hit, return the image source. Return empty otherwise. 64 BLINK_EXPORT WebURL absoluteImageURL() const; 65 66 // If an link is hit, return the link url source. Return empty otherwise. 67 BLINK_EXPORT WebURL absoluteLinkURL() const; 68 69 // Return whether an editable input element was hit. 70 BLINK_EXPORT bool isContentEditable() const; 71 72 #if BLINK_IMPLEMENTATION 73 WebHitTestResult(const HitTestResult&); 74 WebHitTestResult& operator=(const HitTestResult&); 75 #endif 76 77 protected: 78 WebPrivatePtr<WebHitTestResultPrivate> m_private; 79 }; 80 81 } // namespace blink 82 83 #endif 84