diff options
Diffstat (limited to 'Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.cpp')
-rw-r--r-- | Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.cpp | 1060 |
1 files changed, 1060 insertions, 0 deletions
diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.cpp b/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.cpp new file mode 100644 index 000000000..538de50da --- /dev/null +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.cpp @@ -0,0 +1,1060 @@ +/* + * This file is part of the WebKit open source project. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" +#include "WebKitDOMDOMWindow.h" + +#include <WebCore/CSSImportRule.h> +#include "DOMObjectCache.h" +#include <WebCore/Document.h> +#include <WebCore/ExceptionCode.h> +#include <WebCore/ExceptionCodeDescription.h> +#include "GObjectEventListener.h" +#include <WebCore/JSMainThreadExecState.h> +#include <WebCore/SerializedScriptValue.h> +#include <WebCore/UserMessageHandlersNamespace.h> +#include <WebCore/WebKitNamespace.h> +#include "WebKitDOMCSSStyleDeclarationPrivate.h" +#include "WebKitDOMDOMSelectionPrivate.h" +#include "WebKitDOMDOMWindowPrivate.h" +#include "WebKitDOMDocumentPrivate.h" +#include "WebKitDOMElementPrivate.h" +#include "WebKitDOMEventPrivate.h" +#include "WebKitDOMEventTarget.h" +#include "WebKitDOMNodePrivate.h" +#include "WebKitDOMPrivate.h" +#include "ConvertToUTF8String.h" +#include <wtf/GetPtr.h> +#include <wtf/RefPtr.h> + +#define WEBKIT_DOM_DOM_WINDOW_GET_PRIVATE(obj) G_TYPE_INSTANCE_GET_PRIVATE(obj, WEBKIT_DOM_TYPE_DOM_WINDOW, WebKitDOMDOMWindowPrivate) + +typedef struct _WebKitDOMDOMWindowPrivate { + RefPtr<WebCore::DOMWindow> coreObject; +} WebKitDOMDOMWindowPrivate; + +namespace WebKit { + +WebKitDOMDOMWindow* kit(WebCore::DOMWindow* obj) +{ + if (!obj) + return 0; + + if (gpointer ret = DOMObjectCache::get(obj)) + return WEBKIT_DOM_DOM_WINDOW(ret); + + return wrapDOMWindow(obj); +} + +WebCore::DOMWindow* core(WebKitDOMDOMWindow* request) +{ + return request ? static_cast<WebCore::DOMWindow*>(WEBKIT_DOM_OBJECT(request)->coreObject) : 0; +} + +WebKitDOMDOMWindow* wrapDOMWindow(WebCore::DOMWindow* coreObject) +{ + ASSERT(coreObject); + return WEBKIT_DOM_DOM_WINDOW(g_object_new(WEBKIT_DOM_TYPE_DOM_WINDOW, "core-object", coreObject, nullptr)); +} + +} // namespace WebKit + +static gboolean webkit_dom_dom_window_dispatch_event(WebKitDOMEventTarget* target, WebKitDOMEvent* event, GError** error) +{ + WebCore::Event* coreEvent = WebKit::core(event); + if (!coreEvent) + return false; + WebCore::DOMWindow* coreTarget = static_cast<WebCore::DOMWindow*>(WEBKIT_DOM_OBJECT(target)->coreObject); + + auto result = coreTarget->dispatchEventForBindings(*coreEvent); + if (result.hasException()) { + WebCore::ExceptionCodeDescription description(result.releaseException().code()); + g_set_error_literal(error, g_quark_from_string("WEBKIT_DOM"), description.code, description.name); + return false; + } + return result.releaseReturnValue(); +} + +static gboolean webkit_dom_dom_window_add_event_listener(WebKitDOMEventTarget* target, const char* eventName, GClosure* handler, gboolean useCapture) +{ + WebCore::DOMWindow* coreTarget = static_cast<WebCore::DOMWindow*>(WEBKIT_DOM_OBJECT(target)->coreObject); + return WebKit::GObjectEventListener::addEventListener(G_OBJECT(target), coreTarget, eventName, handler, useCapture); +} + +static gboolean webkit_dom_dom_window_remove_event_listener(WebKitDOMEventTarget* target, const char* eventName, GClosure* handler, gboolean useCapture) +{ + WebCore::DOMWindow* coreTarget = static_cast<WebCore::DOMWindow*>(WEBKIT_DOM_OBJECT(target)->coreObject); + return WebKit::GObjectEventListener::removeEventListener(G_OBJECT(target), coreTarget, eventName, handler, useCapture); +} + +static void webkit_dom_event_target_init(WebKitDOMEventTargetIface* iface) +{ + iface->dispatch_event = webkit_dom_dom_window_dispatch_event; + iface->add_event_listener = webkit_dom_dom_window_add_event_listener; + iface->remove_event_listener = webkit_dom_dom_window_remove_event_listener; +} + +G_DEFINE_TYPE_WITH_CODE(WebKitDOMDOMWindow, webkit_dom_dom_window, WEBKIT_DOM_TYPE_OBJECT, G_IMPLEMENT_INTERFACE(WEBKIT_DOM_TYPE_EVENT_TARGET, webkit_dom_event_target_init)) + +enum { + PROP_0, + PROP_FRAME_ELEMENT, + PROP_OFFSCREEN_BUFFERING, + PROP_OUTER_HEIGHT, + PROP_OUTER_WIDTH, + PROP_INNER_HEIGHT, + PROP_INNER_WIDTH, + PROP_SCREEN_X, + PROP_SCREEN_Y, + PROP_SCREEN_LEFT, + PROP_SCREEN_TOP, + PROP_SCROLL_X, + PROP_SCROLL_Y, + PROP_PAGE_X_OFFSET, + PROP_PAGE_Y_OFFSET, + PROP_CLOSED, + PROP_LENGTH, + PROP_NAME, + PROP_STATUS, + PROP_DEFAULT_STATUS, + PROP_SELF, + PROP_WINDOW, + PROP_FRAMES, + PROP_OPENER, + PROP_PARENT, + PROP_TOP, + PROP_DOCUMENT, + PROP_DEVICE_PIXEL_RATIO, + PROP_ORIENTATION, +}; + +static void webkit_dom_dom_window_finalize(GObject* object) +{ + WebKitDOMDOMWindowPrivate* priv = WEBKIT_DOM_DOM_WINDOW_GET_PRIVATE(object); + + WebKit::DOMObjectCache::forget(priv->coreObject.get()); + + priv->~WebKitDOMDOMWindowPrivate(); + G_OBJECT_CLASS(webkit_dom_dom_window_parent_class)->finalize(object); +} + +static void webkit_dom_dom_window_set_property(GObject* object, guint propertyId, const GValue* value, GParamSpec* pspec) +{ + WebKitDOMDOMWindow* self = WEBKIT_DOM_DOM_WINDOW(object); + + switch (propertyId) { + case PROP_NAME: + webkit_dom_dom_window_set_name(self, g_value_get_string(value)); + break; + case PROP_STATUS: + webkit_dom_dom_window_set_status(self, g_value_get_string(value)); + break; + case PROP_DEFAULT_STATUS: + webkit_dom_dom_window_set_default_status(self, g_value_get_string(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyId, pspec); + break; + } +} + +static void webkit_dom_dom_window_get_property(GObject* object, guint propertyId, GValue* value, GParamSpec* pspec) +{ + WebKitDOMDOMWindow* self = WEBKIT_DOM_DOM_WINDOW(object); + + switch (propertyId) { + case PROP_FRAME_ELEMENT: + g_value_set_object(value, webkit_dom_dom_window_get_frame_element(self)); + break; + case PROP_OFFSCREEN_BUFFERING: + g_value_set_boolean(value, webkit_dom_dom_window_get_offscreen_buffering(self)); + break; + case PROP_OUTER_HEIGHT: + g_value_set_long(value, webkit_dom_dom_window_get_outer_height(self)); + break; + case PROP_OUTER_WIDTH: + g_value_set_long(value, webkit_dom_dom_window_get_outer_width(self)); + break; + case PROP_INNER_HEIGHT: + g_value_set_long(value, webkit_dom_dom_window_get_inner_height(self)); + break; + case PROP_INNER_WIDTH: + g_value_set_long(value, webkit_dom_dom_window_get_inner_width(self)); + break; + case PROP_SCREEN_X: + g_value_set_long(value, webkit_dom_dom_window_get_screen_x(self)); + break; + case PROP_SCREEN_Y: + g_value_set_long(value, webkit_dom_dom_window_get_screen_y(self)); + break; + case PROP_SCREEN_LEFT: + g_value_set_long(value, webkit_dom_dom_window_get_screen_left(self)); + break; + case PROP_SCREEN_TOP: + g_value_set_long(value, webkit_dom_dom_window_get_screen_top(self)); + break; + case PROP_SCROLL_X: + g_value_set_long(value, webkit_dom_dom_window_get_scroll_x(self)); + break; + case PROP_SCROLL_Y: + g_value_set_long(value, webkit_dom_dom_window_get_scroll_y(self)); + break; + case PROP_PAGE_X_OFFSET: + g_value_set_long(value, webkit_dom_dom_window_get_page_x_offset(self)); + break; + case PROP_PAGE_Y_OFFSET: + g_value_set_long(value, webkit_dom_dom_window_get_page_y_offset(self)); + break; + case PROP_CLOSED: + g_value_set_boolean(value, webkit_dom_dom_window_get_closed(self)); + break; + case PROP_LENGTH: + g_value_set_ulong(value, webkit_dom_dom_window_get_length(self)); + break; + case PROP_NAME: + g_value_take_string(value, webkit_dom_dom_window_get_name(self)); + break; + case PROP_STATUS: + g_value_take_string(value, webkit_dom_dom_window_get_status(self)); + break; + case PROP_DEFAULT_STATUS: + g_value_take_string(value, webkit_dom_dom_window_get_default_status(self)); + break; + case PROP_SELF: + g_value_set_object(value, webkit_dom_dom_window_get_self(self)); + break; + case PROP_WINDOW: + g_value_set_object(value, webkit_dom_dom_window_get_window(self)); + break; + case PROP_FRAMES: + g_value_set_object(value, webkit_dom_dom_window_get_frames(self)); + break; + case PROP_OPENER: + g_value_set_object(value, webkit_dom_dom_window_get_opener(self)); + break; + case PROP_PARENT: + g_value_set_object(value, webkit_dom_dom_window_get_parent(self)); + break; + case PROP_TOP: + g_value_set_object(value, webkit_dom_dom_window_get_top(self)); + break; + case PROP_DOCUMENT: + g_value_set_object(value, webkit_dom_dom_window_get_document(self)); + break; + case PROP_DEVICE_PIXEL_RATIO: + g_value_set_double(value, webkit_dom_dom_window_get_device_pixel_ratio(self)); + break; + case PROP_ORIENTATION: + g_value_set_long(value, webkit_dom_dom_window_get_orientation(self)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyId, pspec); + break; + } +} + +static GObject* webkit_dom_dom_window_constructor(GType type, guint constructPropertiesCount, GObjectConstructParam* constructProperties) +{ + GObject* object = G_OBJECT_CLASS(webkit_dom_dom_window_parent_class)->constructor(type, constructPropertiesCount, constructProperties); + + WebKitDOMDOMWindowPrivate* priv = WEBKIT_DOM_DOM_WINDOW_GET_PRIVATE(object); + priv->coreObject = static_cast<WebCore::DOMWindow*>(WEBKIT_DOM_OBJECT(object)->coreObject); + WebKit::DOMObjectCache::put(priv->coreObject.get(), object); + + return object; +} + +static void webkit_dom_dom_window_class_init(WebKitDOMDOMWindowClass* requestClass) +{ + GObjectClass* gobjectClass = G_OBJECT_CLASS(requestClass); + g_type_class_add_private(gobjectClass, sizeof(WebKitDOMDOMWindowPrivate)); + gobjectClass->constructor = webkit_dom_dom_window_constructor; + gobjectClass->finalize = webkit_dom_dom_window_finalize; + gobjectClass->set_property = webkit_dom_dom_window_set_property; + gobjectClass->get_property = webkit_dom_dom_window_get_property; + + g_object_class_install_property( + gobjectClass, + PROP_FRAME_ELEMENT, + g_param_spec_object( + "frame-element", + "DOMWindow:frame-element", + "read-only WebKitDOMElement* DOMWindow:frame-element", + WEBKIT_DOM_TYPE_ELEMENT, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property( + gobjectClass, + PROP_OFFSCREEN_BUFFERING, + g_param_spec_boolean( + "offscreen-buffering", + "DOMWindow:offscreen-buffering", + "read-only gboolean DOMWindow:offscreen-buffering", + FALSE, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property( + gobjectClass, + PROP_OUTER_HEIGHT, + g_param_spec_long( + "outer-height", + "DOMWindow:outer-height", + "read-only glong DOMWindow:outer-height", + G_MINLONG, G_MAXLONG, 0, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property( + gobjectClass, + PROP_OUTER_WIDTH, + g_param_spec_long( + "outer-width", + "DOMWindow:outer-width", + "read-only glong DOMWindow:outer-width", + G_MINLONG, G_MAXLONG, 0, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property( + gobjectClass, + PROP_INNER_HEIGHT, + g_param_spec_long( + "inner-height", + "DOMWindow:inner-height", + "read-only glong DOMWindow:inner-height", + G_MINLONG, G_MAXLONG, 0, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property( + gobjectClass, + PROP_INNER_WIDTH, + g_param_spec_long( + "inner-width", + "DOMWindow:inner-width", + "read-only glong DOMWindow:inner-width", + G_MINLONG, G_MAXLONG, 0, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property( + gobjectClass, + PROP_SCREEN_X, + g_param_spec_long( + "screen-x", + "DOMWindow:screen-x", + "read-only glong DOMWindow:screen-x", + G_MINLONG, G_MAXLONG, 0, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property( + gobjectClass, + PROP_SCREEN_Y, + g_param_spec_long( + "screen-y", + "DOMWindow:screen-y", + "read-only glong DOMWindow:screen-y", + G_MINLONG, G_MAXLONG, 0, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property( + gobjectClass, + PROP_SCREEN_LEFT, + g_param_spec_long( + "screen-left", + "DOMWindow:screen-left", + "read-only glong DOMWindow:screen-left", + G_MINLONG, G_MAXLONG, 0, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property( + gobjectClass, + PROP_SCREEN_TOP, + g_param_spec_long( + "screen-top", + "DOMWindow:screen-top", + "read-only glong DOMWindow:screen-top", + G_MINLONG, G_MAXLONG, 0, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property( + gobjectClass, + PROP_SCROLL_X, + g_param_spec_long( + "scroll-x", + "DOMWindow:scroll-x", + "read-only glong DOMWindow:scroll-x", + G_MINLONG, G_MAXLONG, 0, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property( + gobjectClass, + PROP_SCROLL_Y, + g_param_spec_long( + "scroll-y", + "DOMWindow:scroll-y", + "read-only glong DOMWindow:scroll-y", + G_MINLONG, G_MAXLONG, 0, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property( + gobjectClass, + PROP_PAGE_X_OFFSET, + g_param_spec_long( + "page-x-offset", + "DOMWindow:page-x-offset", + "read-only glong DOMWindow:page-x-offset", + G_MINLONG, G_MAXLONG, 0, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property( + gobjectClass, + PROP_PAGE_Y_OFFSET, + g_param_spec_long( + "page-y-offset", + "DOMWindow:page-y-offset", + "read-only glong DOMWindow:page-y-offset", + G_MINLONG, G_MAXLONG, 0, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property( + gobjectClass, + PROP_CLOSED, + g_param_spec_boolean( + "closed", + "DOMWindow:closed", + "read-only gboolean DOMWindow:closed", + FALSE, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property( + gobjectClass, + PROP_LENGTH, + g_param_spec_ulong( + "length", + "DOMWindow:length", + "read-only gulong DOMWindow:length", + 0, G_MAXULONG, 0, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property( + gobjectClass, + PROP_NAME, + g_param_spec_string( + "name", + "DOMWindow:name", + "read-write gchar* DOMWindow:name", + "", + WEBKIT_PARAM_READWRITE)); + + g_object_class_install_property( + gobjectClass, + PROP_STATUS, + g_param_spec_string( + "status", + "DOMWindow:status", + "read-write gchar* DOMWindow:status", + "", + WEBKIT_PARAM_READWRITE)); + + g_object_class_install_property( + gobjectClass, + PROP_DEFAULT_STATUS, + g_param_spec_string( + "default-status", + "DOMWindow:default-status", + "read-write gchar* DOMWindow:default-status", + "", + WEBKIT_PARAM_READWRITE)); + + g_object_class_install_property( + gobjectClass, + PROP_SELF, + g_param_spec_object( + "self", + "DOMWindow:self", + "read-only WebKitDOMDOMWindow* DOMWindow:self", + WEBKIT_DOM_TYPE_DOM_WINDOW, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property( + gobjectClass, + PROP_WINDOW, + g_param_spec_object( + "window", + "DOMWindow:window", + "read-only WebKitDOMDOMWindow* DOMWindow:window", + WEBKIT_DOM_TYPE_DOM_WINDOW, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property( + gobjectClass, + PROP_FRAMES, + g_param_spec_object( + "frames", + "DOMWindow:frames", + "read-only WebKitDOMDOMWindow* DOMWindow:frames", + WEBKIT_DOM_TYPE_DOM_WINDOW, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property( + gobjectClass, + PROP_OPENER, + g_param_spec_object( + "opener", + "DOMWindow:opener", + "read-only WebKitDOMDOMWindow* DOMWindow:opener", + WEBKIT_DOM_TYPE_DOM_WINDOW, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property( + gobjectClass, + PROP_PARENT, + g_param_spec_object( + "parent", + "DOMWindow:parent", + "read-only WebKitDOMDOMWindow* DOMWindow:parent", + WEBKIT_DOM_TYPE_DOM_WINDOW, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property( + gobjectClass, + PROP_TOP, + g_param_spec_object( + "top", + "DOMWindow:top", + "read-only WebKitDOMDOMWindow* DOMWindow:top", + WEBKIT_DOM_TYPE_DOM_WINDOW, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property( + gobjectClass, + PROP_DOCUMENT, + g_param_spec_object( + "document", + "DOMWindow:document", + "read-only WebKitDOMDocument* DOMWindow:document", + WEBKIT_DOM_TYPE_DOCUMENT, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property( + gobjectClass, + PROP_DEVICE_PIXEL_RATIO, + g_param_spec_double( + "device-pixel-ratio", + "DOMWindow:device-pixel-ratio", + "read-only gdouble DOMWindow:device-pixel-ratio", + -G_MAXDOUBLE, G_MAXDOUBLE, 0, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property( + gobjectClass, + PROP_ORIENTATION, + g_param_spec_long( + "orientation", + "DOMWindow:orientation", + "read-only glong DOMWindow:orientation", + G_MINLONG, G_MAXLONG, 0, + WEBKIT_PARAM_READABLE)); +} + +static void webkit_dom_dom_window_init(WebKitDOMDOMWindow* request) +{ + WebKitDOMDOMWindowPrivate* priv = WEBKIT_DOM_DOM_WINDOW_GET_PRIVATE(request); + new (priv) WebKitDOMDOMWindowPrivate(); +} + +WebKitDOMDOMSelection* webkit_dom_dom_window_get_selection(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + RefPtr<WebCore::DOMSelection> gobjectResult = WTF::getPtr(item->getSelection()); + return WebKit::kit(gobjectResult.get()); +} + +void webkit_dom_dom_window_focus(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self)); + WebCore::DOMWindow* item = WebKit::core(self); + item->focus(); +} + +void webkit_dom_dom_window_blur(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self)); + WebCore::DOMWindow* item = WebKit::core(self); + item->blur(); +} + +void webkit_dom_dom_window_close(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self)); + WebCore::DOMWindow* item = WebKit::core(self); + item->close(); +} + +void webkit_dom_dom_window_print(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self)); + WebCore::DOMWindow* item = WebKit::core(self); + item->print(); +} + +void webkit_dom_dom_window_stop(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self)); + WebCore::DOMWindow* item = WebKit::core(self); + item->stop(); +} + +void webkit_dom_dom_window_alert(WebKitDOMDOMWindow* self, const gchar* message) +{ + WebCore::JSMainThreadNullState state; + g_return_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self)); + g_return_if_fail(message); + WebCore::DOMWindow* item = WebKit::core(self); + WTF::String convertedMessage = WTF::String::fromUTF8(message); + item->alert(convertedMessage); +} + +gboolean webkit_dom_dom_window_confirm(WebKitDOMDOMWindow* self, const gchar* message) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), FALSE); + g_return_val_if_fail(message, FALSE); + WebCore::DOMWindow* item = WebKit::core(self); + WTF::String convertedMessage = WTF::String::fromUTF8(message); + gboolean result = item->confirm(convertedMessage); + return result; +} + +gchar* webkit_dom_dom_window_prompt(WebKitDOMDOMWindow* self, const gchar* message, const gchar* defaultValue) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + g_return_val_if_fail(message, 0); + g_return_val_if_fail(defaultValue, 0); + WebCore::DOMWindow* item = WebKit::core(self); + WTF::String convertedMessage = WTF::String::fromUTF8(message); + WTF::String convertedDefaultValue = WTF::String::fromUTF8(defaultValue); + gchar* result = convertToUTF8String(item->prompt(convertedMessage, convertedDefaultValue)); + return result; +} + +gboolean webkit_dom_dom_window_find(WebKitDOMDOMWindow* self, const gchar* string, gboolean caseSensitive, gboolean backwards, gboolean wrap, gboolean wholeWord, gboolean searchInFrames, gboolean showDialog) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), FALSE); + g_return_val_if_fail(string, FALSE); + WebCore::DOMWindow* item = WebKit::core(self); + WTF::String convertedString = WTF::String::fromUTF8(string); + gboolean result = item->find(convertedString, caseSensitive, backwards, wrap, wholeWord, searchInFrames, showDialog); + return result; +} + +void webkit_dom_dom_window_scroll_by(WebKitDOMDOMWindow* self, gdouble x, gdouble y) +{ + WebCore::JSMainThreadNullState state; + g_return_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self)); + WebCore::DOMWindow* item = WebKit::core(self); + item->scrollBy(x, y); +} + +void webkit_dom_dom_window_scroll_to(WebKitDOMDOMWindow* self, gdouble x, gdouble y) +{ + WebCore::JSMainThreadNullState state; + g_return_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self)); + WebCore::DOMWindow* item = WebKit::core(self); + item->scrollTo(x, y); +} + +void webkit_dom_dom_window_move_by(WebKitDOMDOMWindow* self, gfloat x, gfloat y) +{ + WebCore::JSMainThreadNullState state; + g_return_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self)); + WebCore::DOMWindow* item = WebKit::core(self); + item->moveBy(x, y); +} + +void webkit_dom_dom_window_move_to(WebKitDOMDOMWindow* self, gfloat x, gfloat y) +{ + WebCore::JSMainThreadNullState state; + g_return_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self)); + WebCore::DOMWindow* item = WebKit::core(self); + item->moveTo(x, y); +} + +void webkit_dom_dom_window_resize_by(WebKitDOMDOMWindow* self, gfloat x, gfloat y) +{ + WebCore::JSMainThreadNullState state; + g_return_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self)); + WebCore::DOMWindow* item = WebKit::core(self); + item->resizeBy(x, y); +} + +void webkit_dom_dom_window_resize_to(WebKitDOMDOMWindow* self, gfloat width, gfloat height) +{ + WebCore::JSMainThreadNullState state; + g_return_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self)); + WebCore::DOMWindow* item = WebKit::core(self); + item->resizeTo(width, height); +} + +WebKitDOMCSSStyleDeclaration* webkit_dom_dom_window_get_computed_style(WebKitDOMDOMWindow* self, WebKitDOMElement* element, const gchar* pseudoElement) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + g_return_val_if_fail(WEBKIT_DOM_IS_ELEMENT(element), 0); + WebCore::DOMWindow* item = WebKit::core(self); + WebCore::Element* convertedElement = WebKit::core(element); + WTF::String convertedPseudoElement = WTF::String::fromUTF8(pseudoElement); + RefPtr<WebCore::CSSStyleDeclaration> gobjectResult = WTF::getPtr(item->getComputedStyle(*convertedElement, convertedPseudoElement)); + return WebKit::kit(gobjectResult.get()); +} + +void webkit_dom_dom_window_capture_events(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self)); + WebCore::DOMWindow* item = WebKit::core(self); + item->captureEvents(); +} + +void webkit_dom_dom_window_release_events(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self)); + WebCore::DOMWindow* item = WebKit::core(self); + item->releaseEvents(); +} + +WebKitDOMElement* webkit_dom_dom_window_get_frame_element(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + RefPtr<WebCore::Element> gobjectResult = WTF::getPtr(item->frameElement()); + return WebKit::kit(gobjectResult.get()); +} + +gboolean webkit_dom_dom_window_get_offscreen_buffering(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), FALSE); + WebCore::DOMWindow* item = WebKit::core(self); + gboolean result = item->offscreenBuffering(); + return result; +} + +glong webkit_dom_dom_window_get_outer_height(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + glong result = item->outerHeight(); + return result; +} + +glong webkit_dom_dom_window_get_outer_width(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + glong result = item->outerWidth(); + return result; +} + +glong webkit_dom_dom_window_get_inner_height(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + glong result = item->innerHeight(); + return result; +} + +glong webkit_dom_dom_window_get_inner_width(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + glong result = item->innerWidth(); + return result; +} + +glong webkit_dom_dom_window_get_screen_x(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + glong result = item->screenX(); + return result; +} + +glong webkit_dom_dom_window_get_screen_y(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + glong result = item->screenY(); + return result; +} + +glong webkit_dom_dom_window_get_screen_left(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + glong result = item->screenLeft(); + return result; +} + +glong webkit_dom_dom_window_get_screen_top(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + glong result = item->screenTop(); + return result; +} + +glong webkit_dom_dom_window_get_scroll_x(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + glong result = item->scrollX(); + return result; +} + +glong webkit_dom_dom_window_get_scroll_y(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + glong result = item->scrollY(); + return result; +} + +glong webkit_dom_dom_window_get_page_x_offset(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + glong result = item->scrollX(); + return result; +} + +glong webkit_dom_dom_window_get_page_y_offset(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + glong result = item->scrollY(); + return result; +} + +gboolean webkit_dom_dom_window_get_closed(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), FALSE); + WebCore::DOMWindow* item = WebKit::core(self); + gboolean result = item->closed(); + return result; +} + +gulong webkit_dom_dom_window_get_length(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + gulong result = item->length(); + return result; +} + +gchar* webkit_dom_dom_window_get_name(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + gchar* result = convertToUTF8String(item->name()); + return result; +} + +void webkit_dom_dom_window_set_name(WebKitDOMDOMWindow* self, const gchar* value) +{ + WebCore::JSMainThreadNullState state; + g_return_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self)); + g_return_if_fail(value); + WebCore::DOMWindow* item = WebKit::core(self); + WTF::String convertedValue = WTF::String::fromUTF8(value); + item->setName(convertedValue); +} + +gchar* webkit_dom_dom_window_get_status(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + gchar* result = convertToUTF8String(item->status()); + return result; +} + +void webkit_dom_dom_window_set_status(WebKitDOMDOMWindow* self, const gchar* value) +{ + WebCore::JSMainThreadNullState state; + g_return_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self)); + g_return_if_fail(value); + WebCore::DOMWindow* item = WebKit::core(self); + WTF::String convertedValue = WTF::String::fromUTF8(value); + item->setStatus(convertedValue); +} + +gchar* webkit_dom_dom_window_get_default_status(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + gchar* result = convertToUTF8String(item->defaultStatus()); + return result; +} + +void webkit_dom_dom_window_set_default_status(WebKitDOMDOMWindow* self, const gchar* value) +{ + WebCore::JSMainThreadNullState state; + g_return_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self)); + g_return_if_fail(value); + WebCore::DOMWindow* item = WebKit::core(self); + WTF::String convertedValue = WTF::String::fromUTF8(value); + item->setDefaultStatus(convertedValue); +} + +WebKitDOMDOMWindow* webkit_dom_dom_window_get_self(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + RefPtr<WebCore::DOMWindow> gobjectResult = WTF::getPtr(item->self()); + return WebKit::kit(gobjectResult.get()); +} + +WebKitDOMDOMWindow* webkit_dom_dom_window_get_window(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + RefPtr<WebCore::DOMWindow> gobjectResult = WTF::getPtr(item->window()); + return WebKit::kit(gobjectResult.get()); +} + +WebKitDOMDOMWindow* webkit_dom_dom_window_get_frames(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + RefPtr<WebCore::DOMWindow> gobjectResult = WTF::getPtr(item->frames()); + return WebKit::kit(gobjectResult.get()); +} + +WebKitDOMDOMWindow* webkit_dom_dom_window_get_opener(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + RefPtr<WebCore::DOMWindow> gobjectResult = WTF::getPtr(item->opener()); + return WebKit::kit(gobjectResult.get()); +} + +WebKitDOMDOMWindow* webkit_dom_dom_window_get_parent(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + RefPtr<WebCore::DOMWindow> gobjectResult = WTF::getPtr(item->parent()); + return WebKit::kit(gobjectResult.get()); +} + +WebKitDOMDOMWindow* webkit_dom_dom_window_get_top(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + RefPtr<WebCore::DOMWindow> gobjectResult = WTF::getPtr(item->top()); + return WebKit::kit(gobjectResult.get()); +} + +WebKitDOMDocument* webkit_dom_dom_window_get_document(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + RefPtr<WebCore::Document> gobjectResult = WTF::getPtr(item->document()); + return WebKit::kit(gobjectResult.get()); +} + +gdouble webkit_dom_dom_window_get_device_pixel_ratio(WebKitDOMDOMWindow* self) +{ + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + gdouble result = item->devicePixelRatio(); + return result; +} + +glong webkit_dom_dom_window_get_orientation(WebKitDOMDOMWindow* self) +{ +#if ENABLE(ORIENTATION_EVENTS) + WebCore::JSMainThreadNullState state; + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(self), 0); + WebCore::DOMWindow* item = WebKit::core(self); + glong result = item->orientation(); + return result; +#else + UNUSED_PARAM(self); + WEBKIT_WARN_FEATURE_NOT_PRESENT("Orientation Events") + return static_cast<glong>(0); +#endif /* ENABLE(ORIENTATION_EVENTS) */ +} + +gboolean webkit_dom_dom_window_webkit_message_handlers_post_message(WebKitDOMDOMWindow* window, const gchar* handlerName, const gchar* message) +{ + g_return_val_if_fail(WEBKIT_DOM_IS_DOM_WINDOW(window), FALSE); + g_return_val_if_fail(handlerName, FALSE); + g_return_val_if_fail(message, FALSE); + + WebCore::DOMWindow* domWindow = WebKit::core(window); + if (!domWindow->shouldHaveWebKitNamespaceForWorld(WebCore::mainThreadNormalWorld())) + return FALSE; + + auto webkitNamespace = domWindow->webkitNamespace(); + if (!webkitNamespace) + return FALSE; + + auto handler = webkitNamespace->messageHandlers()->handler(String::fromUTF8(handlerName), WebCore::mainThreadNormalWorld()); + if (!handler) + return FALSE; + + auto result = handler->postMessage(WebCore::SerializedScriptValue::create(String::fromUTF8(message))); + if (result.hasException()) + return FALSE; + + return TRUE; +} |