Rename Source/WebKit2 to Source/WebKit.
[WebKit-https.git] / Source / WebKit / WebProcess / InjectedBundle / API / gtk / DOM / WebKitDOMHTMLMarqueeElement.cpp
1 /*
2  *  This file is part of the WebKit open source project.
3  *
4  *  This library is free software; you can redistribute it and/or
5  *  modify it under the terms of the GNU Library 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  *  Library General Public License for more details.
13  *
14  *  You should have received a copy of the GNU Library General Public License
15  *  along with this library; see the file COPYING.LIB.  If not, write to
16  *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17  *  Boston, MA 02110-1301, USA.
18  */
19
20 #include "config.h"
21 #include "WebKitDOMHTMLMarqueeElement.h"
22
23 #include <WebCore/CSSImportRule.h>
24 #include "DOMObjectCache.h"
25 #include <WebCore/Document.h>
26 #include <WebCore/ExceptionCode.h>
27 #include <WebCore/ExceptionCodeDescription.h>
28 #include "GObjectEventListener.h"
29 #include <WebCore/HTMLNames.h>
30 #include <WebCore/JSMainThreadExecState.h>
31 #include "WebKitDOMEventPrivate.h"
32 #include "WebKitDOMEventTarget.h"
33 #include "WebKitDOMHTMLMarqueeElementPrivate.h"
34 #include "WebKitDOMNodePrivate.h"
35 #include "WebKitDOMPrivate.h"
36 #include "ConvertToUTF8String.h"
37 #include <wtf/GetPtr.h>
38 #include <wtf/RefPtr.h>
39
40 namespace WebKit {
41
42 WebKitDOMHTMLMarqueeElement* kit(WebCore::HTMLMarqueeElement* obj)
43 {
44     return WEBKIT_DOM_HTML_MARQUEE_ELEMENT(kit(static_cast<WebCore::Node*>(obj)));
45 }
46
47 WebCore::HTMLMarqueeElement* core(WebKitDOMHTMLMarqueeElement* request)
48 {
49     return request ? static_cast<WebCore::HTMLMarqueeElement*>(WEBKIT_DOM_OBJECT(request)->coreObject) : 0;
50 }
51
52 WebKitDOMHTMLMarqueeElement* wrapHTMLMarqueeElement(WebCore::HTMLMarqueeElement* coreObject)
53 {
54     ASSERT(coreObject);
55     return WEBKIT_DOM_HTML_MARQUEE_ELEMENT(g_object_new(WEBKIT_DOM_TYPE_HTML_MARQUEE_ELEMENT, "core-object", coreObject, nullptr));
56 }
57
58 } // namespace WebKit
59
60 static gboolean webkit_dom_html_marquee_element_dispatch_event(WebKitDOMEventTarget* target, WebKitDOMEvent* event, GError** error)
61 {
62     WebCore::Event* coreEvent = WebKit::core(event);
63     if (!coreEvent)
64         return false;
65     WebCore::HTMLMarqueeElement* coreTarget = static_cast<WebCore::HTMLMarqueeElement*>(WEBKIT_DOM_OBJECT(target)->coreObject);
66
67     auto result = coreTarget->dispatchEventForBindings(*coreEvent);
68     if (result.hasException()) {
69         WebCore::ExceptionCodeDescription description(result.releaseException().code());
70         g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), description.code, description.name);
71         return false;
72     }
73     return result.releaseReturnValue();
74 }
75
76 static gboolean webkit_dom_html_marquee_element_add_event_listener(WebKitDOMEventTarget* target, const char* eventName, GClosure* handler, gboolean useCapture)
77 {
78     WebCore::HTMLMarqueeElement* coreTarget = static_cast<WebCore::HTMLMarqueeElement*>(WEBKIT_DOM_OBJECT(target)->coreObject);
79     return WebKit::GObjectEventListener::addEventListener(G_OBJECT(target), coreTarget, eventName, handler, useCapture);
80 }
81
82 static gboolean webkit_dom_html_marquee_element_remove_event_listener(WebKitDOMEventTarget* target, const char* eventName, GClosure* handler, gboolean useCapture)
83 {
84     WebCore::HTMLMarqueeElement* coreTarget = static_cast<WebCore::HTMLMarqueeElement*>(WEBKIT_DOM_OBJECT(target)->coreObject);
85     return WebKit::GObjectEventListener::removeEventListener(G_OBJECT(target), coreTarget, eventName, handler, useCapture);
86 }
87
88 static void webkit_dom_event_target_init(WebKitDOMEventTargetIface* iface)
89 {
90     iface->dispatch_event = webkit_dom_html_marquee_element_dispatch_event;
91     iface->add_event_listener = webkit_dom_html_marquee_element_add_event_listener;
92     iface->remove_event_listener = webkit_dom_html_marquee_element_remove_event_listener;
93 }
94
95 G_DEFINE_TYPE_WITH_CODE(WebKitDOMHTMLMarqueeElement, webkit_dom_html_marquee_element, WEBKIT_DOM_TYPE_HTML_ELEMENT, G_IMPLEMENT_INTERFACE(WEBKIT_DOM_TYPE_EVENT_TARGET, webkit_dom_event_target_init))
96
97 static void webkit_dom_html_marquee_element_class_init(WebKitDOMHTMLMarqueeElementClass* requestClass)
98 {
99 }
100
101 static void webkit_dom_html_marquee_element_init(WebKitDOMHTMLMarqueeElement* request)
102 {
103     UNUSED_PARAM(request);
104 }
105
106 void webkit_dom_html_marquee_element_start(WebKitDOMHTMLMarqueeElement* self)
107 {
108     WebCore::JSMainThreadNullState state;
109     g_return_if_fail(WEBKIT_DOM_IS_HTML_MARQUEE_ELEMENT(self));
110     WebCore::HTMLMarqueeElement* item = WebKit::core(self);
111     item->start();
112 }
113
114 void webkit_dom_html_marquee_element_stop(WebKitDOMHTMLMarqueeElement* self)
115 {
116     WebCore::JSMainThreadNullState state;
117     g_return_if_fail(WEBKIT_DOM_IS_HTML_MARQUEE_ELEMENT(self));
118     WebCore::HTMLMarqueeElement* item = WebKit::core(self);
119     item->stop();
120 }