1/*
2 * Copyright (C) 2018 Igalia S.L.
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18
19#include "config.h"
20#include "WebKitDOMPrivate.h"
21
22#include "WebKitDOMDocumentPrivate.h"
23#include "WebKitDOMElementPrivate.h"
24#include "WebKitDOMNodePrivate.h"
25#include <WebCore/HTMLFormElement.h>
26
27#if PLATFORM(GTK)
28#include "WebKitDOMPrivateGtk.h"
29#endif
30
31namespace WebKit {
32
33WebKitDOMNode* wrap(WebCore::Node* node)
34{
35 ASSERT(node);
36 ASSERT(node->nodeType());
37
38#if PLATFORM(GTK)
39 if (auto* wrapper = wrapNodeGtk(node))
40 return wrapper;
41#endif
42
43 switch (node->nodeType()) {
44 case WebCore::Node::ELEMENT_NODE:
45 return WEBKIT_DOM_NODE(wrapElement(downcast<WebCore::Element>(node)));
46 case WebCore::Node::DOCUMENT_NODE:
47 return WEBKIT_DOM_NODE(wrapDocument(downcast<WebCore::Document>(node)));
48 case WebCore::Node::ATTRIBUTE_NODE:
49 case WebCore::Node::TEXT_NODE:
50 case WebCore::Node::CDATA_SECTION_NODE:
51 case WebCore::Node::PROCESSING_INSTRUCTION_NODE:
52 case WebCore::Node::COMMENT_NODE:
53 case WebCore::Node::DOCUMENT_TYPE_NODE:
54 case WebCore::Node::DOCUMENT_FRAGMENT_NODE:
55 break;
56 }
57
58 return wrapNode(node);
59}
60
61} // namespace WebKit
62