1e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch/*
2e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * Copyright (C) 2013, Google Inc. All rights reserved.
3e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch *
4e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * Redistribution and use in source and binary forms, with or without
5e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * modification, are permitted provided that the following conditions are met:
6e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch *
7e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * 1. Redistributions of source code must retain the above copyright
8e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch *    notice, this list of conditions and the following disclaimer.
9e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * 2. Redistributions in binary form must reproduce the above copyright
10e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch *    notice, this list of conditions and the following disclaimer in the
11e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch *    documentation and/or other materials provided with the distribution.
12e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch *
13e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
14e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE
17e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
20e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
23e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * DAMAGE.
24e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch */
25e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
26e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch#ifndef DocumentXPathEvaluator_h
27e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch#define DocumentXPathEvaluator_h
28e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
291e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)#include "core/dom/DocumentSupplementable.h"
30e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch#include "core/xml/XPathEvaluator.h"
3151b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)#include "core/xml/XPathNSResolver.h"
32e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
33e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdochnamespace WebCore {
34e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
35df95704c49daea886ddad70775bda23618d6274dBen Murdochclass ExceptionState;
36e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdochclass XPathExpression;
37e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdochclass XPathResult;
38e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
391e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)class DocumentXPathEvaluator : public DocumentSupplement {
40e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdochpublic:
41e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    virtual ~DocumentXPathEvaluator();
42e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
431e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)    static DocumentXPathEvaluator* from(DocumentSupplementable*);
44e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
451e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)    static PassRefPtr<XPathExpression> createExpression(DocumentSupplementable*,
4651b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)        const String& expression, PassRefPtr<XPathNSResolver>, ExceptionState&);
471e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)    static PassRefPtr<XPathNSResolver> createNSResolver(DocumentSupplementable*, Node* nodeResolver);
481e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)    static PassRefPtr<XPathResult> evaluate(DocumentSupplementable*,
4951b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)        const String& expression, Node* contextNode, PassRefPtr<XPathNSResolver>,
50df95704c49daea886ddad70775bda23618d6274dBen Murdoch        unsigned short type, XPathResult*, ExceptionState&);
51e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
52e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdochprivate:
53e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    DocumentXPathEvaluator();
54e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
55e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static const char* supplementName() { return "DocumentXPathEvaluator"; }
56e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
57e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    RefPtr<XPathEvaluator> m_xpathEvaluator;
58e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch};
59e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
60e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch} // namespace WebCore
61e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
62e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch#endif // DocumentXPathEvaluator_h
63