15267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)/* 25267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)* Copyright (C) 2012 Google Inc. All rights reserved. 35267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)* 45267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)* Redistribution and use in source and binary forms, with or without 55267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)* modification, are permitted provided that the following conditions 65267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)* are met: 75267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)* 85267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)* 1. Redistributions of source code must retain the above copyright 95267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)* notice, this list of conditions and the following disclaimer. 105267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * 2. Redistributions in binary form must reproduce the above copyright 115267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * notice, this list of conditions and the following disclaimer in the 125267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * documentation and/or other materials provided with the distribution. 135267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * 145267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 155267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 165267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 175267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 185267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 195267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 205267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 215267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 225267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 235267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 245267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) */ 255267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 265267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#ifndef WebHitTestResult_h 275267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#define WebHitTestResult_h 285267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 29c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)#include "../platform/WebPrivatePtr.h" 305267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 31c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 325267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 33e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)class HitTestResult; 345267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)class WebElement; 355d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)class WebHitTestResultPrivate; 365267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)class WebNode; 375267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)class WebURL; 385267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)struct WebPoint; 395267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 405267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)// Properties of a hit test result, i.e. properties of the nodes at a given point 415267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)// (the hit point) on the page. Both urls may be populated at the same time, for 425267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)// example in the instance of an <img> inside an <a>. 435267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)class WebHitTestResult { 445267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)public: 455267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) WebHitTestResult() { } 465267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) WebHitTestResult(const WebHitTestResult& info) { assign(info); } 475267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) ~WebHitTestResult() { reset(); } 485267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 4906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) BLINK_EXPORT void assign(const WebHitTestResult&); 5006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) BLINK_EXPORT void reset(); 5106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) BLINK_EXPORT bool isNull() const; 525267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 535267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // The node that was hit (only one for point-based tests). 5406f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) BLINK_EXPORT WebNode node() const; 555267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 565267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // Coordinates of the point that was hit. Relative to the node. 5706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) BLINK_EXPORT WebPoint localPoint() const; 585267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 595267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // If a link (eg. anchor or area tag) is hit, return the element. 605267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // Return null otheriwse. 6106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) BLINK_EXPORT WebElement urlElement() const; 625267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 635267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // If an image is hit, return the image source. Return empty otherwise. 6406f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) BLINK_EXPORT WebURL absoluteImageURL() const; 655267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 665267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // If an link is hit, return the link url source. Return empty otherwise. 6706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) BLINK_EXPORT WebURL absoluteLinkURL() const; 685267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 695267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // Return whether an editable input element was hit. 7006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) BLINK_EXPORT bool isContentEditable() const; 715267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 7206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)#if BLINK_IMPLEMENTATION 73e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) WebHitTestResult(const HitTestResult&); 74e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) WebHitTestResult& operator=(const HitTestResult&); 755267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#endif 765267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 775267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)protected: 78c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) WebPrivatePtr<WebHitTestResultPrivate> m_private; 795267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)}; 805267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 8151b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)} // namespace blink 825267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 835267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#endif 84