summaryrefslogtreecommitdiff
path: root/chromium/third_party/WebKit/public/web/WebDocument.h
blob: d0eba00d1ee690df9616502ce21b25b8f359ea68 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
/*
 * Copyright (C) 2009 Google Inc. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 *
 *     * Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above
 * copyright notice, this list of conditions and the following disclaimer
 * in the documentation and/or other materials provided with the
 * distribution.
 *     * Neither the name of Google Inc. nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef WebDocument_h
#define WebDocument_h

#include "../platform/WebReferrerPolicy.h"
#include "../platform/WebVector.h"
#include "WebDraggableRegion.h"
#include "WebExceptionCode.h"
#include "WebNode.h"
#include "WebSecurityOrigin.h"

#if BLINK_IMPLEMENTATION
namespace WebCore {
class Document;
class DocumentType;
}
namespace WTF { template <typename T> class PassRefPtr; }
#endif

namespace v8 {
class Value;
template <class T> class Handle;
}

namespace blink {
class WebAXObject;
class WebDocumentType;
class WebElement;
class WebFormElement;
class WebFrame;
class WebNodeCollection;
class WebNodeList;
class WebString;
class WebURL;

// Provides readonly access to some properties of a DOM document.
class WebDocument : public WebNode {
public:
    // FIXME: Stop using this from Chromium code and get rid of this enum.
    enum UserStyleLevel {
        UserStyleAuthorLevel
    };

    WebDocument() { }
    WebDocument(const WebDocument& e) : WebNode(e) { }

    WebDocument& operator=(const WebDocument& e)
    {
        WebNode::assign(e);
        return *this;
    }
    void assign(const WebDocument& e) { WebNode::assign(e); }

    BLINK_EXPORT WebURL url() const;
    // Note: Security checks should use the securityOrigin(), not url().
    BLINK_EXPORT WebSecurityOrigin securityOrigin() const;

    BLINK_EXPORT WebString encoding() const;
    BLINK_EXPORT WebString contentLanguage() const;
    BLINK_EXPORT WebString referrer() const;

    // The url of the OpenSearch Desription Document (if any).
    BLINK_EXPORT WebURL openSearchDescriptionURL() const;

    // Returns the frame the document belongs to or 0 if the document is frameless.
    BLINK_EXPORT WebFrame* frame() const;
    BLINK_EXPORT bool isHTMLDocument() const;
    BLINK_EXPORT bool isXHTMLDocument() const;
    BLINK_EXPORT bool isPluginDocument() const;
    BLINK_EXPORT WebURL baseURL() const;

    // The firstPartyForCookies is used to compute whether this document
    // appears in a "third-party" context for the purpose of third-party
    // cookie blocking.
    BLINK_EXPORT WebURL firstPartyForCookies() const;

    BLINK_EXPORT WebElement documentElement() const;
    BLINK_EXPORT WebElement body() const;
    BLINK_EXPORT WebElement head();
    BLINK_EXPORT WebString title() const;
    BLINK_EXPORT WebNodeCollection all();
    BLINK_EXPORT void forms(WebVector<WebFormElement>&) const;
    BLINK_EXPORT void images(WebVector<WebElement>&);
    BLINK_EXPORT WebURL completeURL(const WebString&) const;
    BLINK_EXPORT WebElement getElementById(const WebString&) const;
    BLINK_EXPORT WebNode focusedNode() const;
    BLINK_EXPORT WebDocumentType doctype() const;
    BLINK_EXPORT void cancelFullScreen();
    BLINK_EXPORT WebElement fullScreenElement() const;
    BLINK_EXPORT WebDOMEvent createEvent(const WebString& eventType);
    BLINK_EXPORT WebReferrerPolicy referrerPolicy() const;
    BLINK_EXPORT WebElement createElement(const WebString& tagName);

    // Accessibility support. These methods should only be called on the
    // top-level document, because one accessibility cache spans all of
    // the documents on the page.

    // Gets the accessibility object for this document.
    BLINK_EXPORT WebAXObject accessibilityObject() const;

    // Gets the accessibility object for an object on this page by ID.
    BLINK_EXPORT WebAXObject accessibilityObjectFromID(int axID) const;
    // Inserts the given CSS source code as a stylesheet in the document.
    // FIXME: Delete insertUserStyleSheet once Chromium code stops calling it.
    BLINK_EXPORT void insertUserStyleSheet(const WebString& sourceCode, UserStyleLevel);
    BLINK_EXPORT void insertStyleSheet(const WebString& sourceCode);

    // Arranges to call WebFrameClient::didMatchCSS(frame(), ...) when one of
    // the selectors matches or stops matching an element in this document.
    // Each call to this method overrides any previous calls.
    BLINK_EXPORT void watchCSSSelectors(const WebVector<WebString>& selectors);

    BLINK_EXPORT WebVector<WebDraggableRegion> draggableRegions() const;

    BLINK_EXPORT v8::Handle<v8::Value> registerEmbedderCustomElement(const WebString& name, v8::Handle<v8::Value> options, WebExceptionCode&);

#if BLINK_IMPLEMENTATION
    WebDocument(const WTF::PassRefPtr<WebCore::Document>&);
    WebDocument& operator=(const WTF::PassRefPtr<WebCore::Document>&);
    operator WTF::PassRefPtr<WebCore::Document>() const;
#endif
};

} // namespace blink

#endif