Added:
trunk/gom/include/gom/dom/gomxmlhttprequest.h
trunk/gom/include/gom/gomeventtargetinternal.h
trunk/gom/include/gom/gomevttgt.h
trunk/gom/include/gom/gomjsxmlhttprequest.h
trunk/gom/include/gom/gomxhr.h
trunk/gom/src/libgom/gomevttgt.c
trunk/gom/src/libgom/gominterfaces.c
trunk/gom/src/libgom/gomjsxmlhttprequest.c
trunk/gom/src/libgom/gomxhr.c
Modified:
trunk/gom/ChangeLog
trunk/gom/include/gom/Makefile.inc
trunk/gom/include/gom/dom/Makefile.inc
trunk/gom/include/gom/dom/gomdomexception.h
trunk/gom/include/gom/gomelem.h
trunk/gom/include/gom/gomnodeinternal.h
trunk/gom/include/gom/gomnoodle.h
trunk/gom/src/libgom/Makefile.inc
trunk/gom/src/libgom/gomchardata.c
trunk/gom/src/libgom/gomdoc.c
trunk/gom/src/libgom/gomdom.c
trunk/gom/src/libgom/gomdominterfaces.c
trunk/gom/src/libgom/gomelem.c
trunk/gom/src/libgom/gomevt.c
trunk/gom/src/libgom/gomgcmanager.c
trunk/gom/src/libgom/gomglist.c
trunk/gom/src/libgom/gomjscontext.c
trunk/gom/src/libgom/gomjseventlistener.c
trunk/gom/src/libgom/gomjsuievent.c
trunk/gom/src/libgom/gomkeyboardevt.c
trunk/gom/src/libgom/gomlistenerlist.c
trunk/gom/src/libgom/gommouseevt.c
trunk/gom/src/libgom/gomnoodle.c
trunk/gom/src/libgom/gomtxt.c
trunk/gom/src/libgom/gomuievt.c
trunk/gom/src/libgom/gomwidget.c
Log:
2008-07-20 jacob berkman <ja...@ilovegom.org>
* src/libgom/gomgcmanager.c: remove GomGCManaged interface
definition
* src/libgom/gominterfaces.c: move internal interface
definitions here
* src/libgom/gomdominterfaces.c: define GomXMLHttpRequest
interface
* src/libgom/gomwidget.c (widget_get_parent_target): implement
GomEventTargetInternal
* src/libgom/gomlistenerlist.c (gom_listener_list_will_trigger)
(gom_listener_list_dispatch_event): use new
EventTargetInternal interface
* include/gom/gomeventtargetinternal.h: things our
EventTargets need to implement
* include/gom/gomnodeinternal.h: move dispatch_listeners to
GomEventTargetInternal
* src/libgom/gomxhr.c (gom_xhr_class_init):
* include/gom/gomxhr.h (GomXhr): implementation of
GomXMLHttpRequest
* include/gom/dom/gomxmlhttprequest.h (GomXMLHttpRequest): new
interface for XMLHttpRequest
* include/gom/dom/gomdomexception.h (GomExceptionCode): add
DOM Level 3 and XMLHttpRequest error codes
* src/libgom/gomnoodle.c:
* include/gom/gomnoodle.h: re-subclass under GomEvtTgt
* src/libgom/gomevttgt.c:
* include/gom/gomevttgt.h: new base class which implements
GomEventTarget
* src/libgom/gomjsxmlhttprequest.c:
* include/gom/gomjsxmlhttprequest.h: JS binding to GomXMLHttpRequest
Modified: trunk/gom/ChangeLog
==============================================================================
--- trunk/gom/ChangeLog (original)
+++ trunk/gom/ChangeLog Sun Jul 20 20:13:11 2008
@@ -1,5 +1,47 @@
2008-07-20 jacob berkman <ja...@ilovegom.org>
+ * src/libgom/gomgcmanager.c: remove GomGCManaged interface
+ definition
+
+ * src/libgom/gominterfaces.c: move internal interface
+ definitions here
+
+ * src/libgom/gomdominterfaces.c: define GomXMLHttpRequest
+ interface
+
+ * src/libgom/gomwidget.c (widget_get_parent_target): implement
+ GomEventTargetInternal
+
+ * src/libgom/gomlistenerlist.c (gom_listener_list_will_trigger)
+ (gom_listener_list_dispatch_event): use new
+ EventTargetInternal interface
+
+ * include/gom/gomeventtargetinternal.h: things our
+ EventTargets need to implement
+
+ * include/gom/gomnodeinternal.h: move dispatch_listeners to
+ GomEventTargetInternal
+
+ * src/libgom/gomxhr.c (gom_xhr_class_init):
+ * include/gom/gomxhr.h (GomXhr): implementation of
+ GomXMLHttpRequest
+
+ * include/gom/dom/gomxmlhttprequest.h (GomXMLHttpRequest): new
+ interface for XMLHttpRequest
+
+ * include/gom/dom/gomdomexception.h (GomExceptionCode): add
+ DOM Level 3 and XMLHttpRequest error codes
+
+ * src/libgom/gomnoodle.c:
+ * include/gom/gomnoodle.h: re-subclass under GomEvtTgt
+
+ * src/libgom/gomevttgt.c:
+ * include/gom/gomevttgt.h: new base class which implements
+ GomEventTarget
+
+ * src/libgom/gomjsxmlhttprequest.c:
+ * include/gom/gomjsxmlhttprequest.h: JS binding to GomXMLHttpRequest
+
* configure.ac: version 0.3
2008-07-19 jacob berkman <ja...@ilovegome.org>
Modified: trunk/gom/include/gom/Makefile.inc
==============================================================================
--- trunk/gom/include/gom/Makefile.inc (original)
+++ trunk/gom/include/gom/Makefile.inc Sun Jul 20 20:13:11 2008
@@ -7,7 +7,9 @@
include/gom/gomdoc.h \
include/gom/gomdom.h \
include/gom/gomelem.h \
+ include/gom/gomeventtargetinternal.h \
include/gom/gomevt.h \
+ include/gom/gomevttgt.h \
include/gom/gomgcmanaged.h \
include/gom/gomgcmanager.h \
include/gom/gomglist.h \
@@ -28,6 +30,7 @@
include/gom/gomjsobject.h \
include/gom/gomjsuievent.h \
include/gom/gomjswindow.h \
+ include/gom/gomjsxmlhttprequest.h \
include/gom/gomkeyboardevt.h \
include/gom/gomkeyidentifiers.h \
include/gom/gomlistenerlist.h \
@@ -38,4 +41,6 @@
include/gom/gomtxt.h \
include/gom/gomuievt.h \
include/gom/gomvalue.h \
- include/gom/gomwidget.h
+ include/gom/gomwidget.h \
+ include/gom/gomxhr.h
+
Modified: trunk/gom/include/gom/dom/Makefile.inc
==============================================================================
--- trunk/gom/include/gom/dom/Makefile.inc (original)
+++ trunk/gom/include/gom/dom/Makefile.inc Sun Jul 20 20:13:11 2008
@@ -32,14 +32,15 @@
include/gom/dom/gomprocessinginstruction.h \
include/gom/dom/gomtext.h \
include/gom/dom/gomtextevent.h \
- include/gom/dom/gomuievent.h
+ include/gom/dom/gomuievent.h \
+ include/gom/dom/gomxmlhttprequest.h
include/gom/dom/gomdombuiltins.h: include/gom/dom/stamp-gomdombuiltins.h
@true
include/gom/dom/stamp-gomdombuiltins.h: $(dominclude_HEADERS) Makefile
mkdir -p include/gom/dom && \
( cd $(srcdir) && $(GLIB_MKENUMS) \
- --fhead "#ifndef __GOM_DOM_BUILTINS_H__\n#define
__GOM_DOM_BUILTINS_H__\n\n#include
<gom/dom/gomdomexception.h>\n#include
<gom/dom/gomkeyboardevent.h>\n#include <gom/dom/gomevent.h>\n#include
<gom/dom/gomeventexception.h>\n#include
<gom/dom/gommutationevent.h>\n#include <gom/dom/gomnode.h>\n\n#include
<glib-object.h>\n\nG_BEGIN_DECLS\n" \
+ --fhead "#ifndef __GOM_DOM_BUILTINS_H__\n#define
__GOM_DOM_BUILTINS_H__\n\n#include
<gom/dom/gomdomexception.h>\n#include
<gom/dom/gomkeyboardevent.h>\n#include <gom/dom/gomevent.h>\n#include
<gom/dom/gomeventexception.h>\n#include
<gom/dom/gommutationevent.h>\n#include <gom/dom/gomnode.h>\n#include
<gom/dom/gomxmlhttprequest.h>\n\n#include
<glib-object.h>\n\nG_BEGIN_DECLS\n" \
--fprod "/* enumerations from \"@filename@\" */\n" \
--vhead "GType @enum_name@_get_type (void) G_GNUC_CONST;\n#define
GOM_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \
--ftail "G_END_DECLS\n\n#endif /* __GOM_DOM_BUILTINS_H__ */" \
Modified: trunk/gom/include/gom/dom/gomdomexception.h
==============================================================================
--- trunk/gom/include/gom/dom/gomdomexception.h (original)
+++ trunk/gom/include/gom/dom/gomdomexception.h Sun Jul 20 20:13:11 2008
@@ -31,26 +31,37 @@
#define GOM_DOM_EXCEPTION_ERROR (gom_dom_exception_error_quark ())
typedef enum {
- GOM_INDEX_SIZE_ERR = 1,
- GOM_DOMSTRING_SIZE_ERR,
- GOM_HIERCHY_REQUEST_ERR,
- GOM_WRONG_DOCUMENT_ERR,
- GOM_INVALID_CHARACTER_ERR,
- GOM_NO_DATA_ALLOWED_ERR,
- GOM_NO_MODIFICATION_ALLOWED_ERR,
- GOM_NOT_FOUND_ERR,
- GOM_NOT_SUPPORTED_ERR,
- GOM_INUSE_ATTRIBUTE_ERR,
- GOM_INVALID_STATE_ERR,
- GOM_SYNTAX_ERR,
- GOM_INVALID_MODIFICATION_ERR,
- GOM_NAMESPACE_ERR,
- GOM_INVALID_ACCESS_ERR,
+ GOM_INDEX_SIZE_ERR = 1,
+ GOM_DOMSTRING_SIZE_ERR = 2,
+ GOM_HIERCHY_REQUEST_ERR = 3,
+ GOM_WRONG_DOCUMENT_ERR = 4,
+ GOM_INVALID_CHARACTER_ERR = 5,
+ GOM_NO_DATA_ALLOWED_ERR = 6,
+ GOM_NO_MODIFICATION_ALLOWED_ERR = 7,
+ GOM_NOT_FOUND_ERR = 8,
+ GOM_NOT_SUPPORTED_ERR = 9,
+ GOM_INUSE_ATTRIBUTE_ERR = 10,
+
+ /* DOM Level 2 */
+ GOM_INVALID_STATE_ERR = 11,
+ GOM_SYNTAX_ERR = 12,
+ GOM_INVALID_MODIFICATION_ERR = 13,
+ GOM_NAMESPACE_ERR = 14,
+ GOM_INVALID_ACCESS_ERR = 15,
+ GOM_VALIDATION_ERR = 16,
+
+ /* DOM Level 3 */
+ GOM_TYPE_MISMATCH_ERR = 17,
+ GOM_SECURITY_ERR = 18,
+
+ /* XMLHttpRequest */
+ GOM_NETWORK_ERR = 101,
+ GOM_ABORT_ERR = 102,
/* Gom-specific exceptions */
- GOM_UNKNOWN_TAG_NAME_ERR = 101,
- GOM_INVALID_ATTRIBUTE_TYPE_ERR,
- GOM_NOT_IMPLEMENTED_ERR
+ GOM_UNKNOWN_TAG_NAME_ERR = 87001,
+ GOM_INVALID_ATTRIBUTE_TYPE_ERR = 87002,
+ GOM_NOT_IMPLEMENTED_ERR = 87003
} GomExceptionCode;
GQuark gom_dom_exception_error_quark (void);
Added: trunk/gom/include/gom/dom/gomxmlhttprequest.h
==============================================================================
--- (empty file)
+++ trunk/gom/include/gom/dom/gomxmlhttprequest.h Sun Jul 20 20:13:11 2008
@@ -0,0 +1,142 @@
+/*
+The MIT License
+
+Copyright (c) 2008 jacob berkman <ja...@ilovegom.org>
+
+Permission is hereby granted, free of charge, to any person obtaining
a copy
+of this software and associated documentation files (the "Software"),
to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+#ifndef GOM_XML_HTTP_REQUEST_H
+#define GOM_XML_HTTP_REQUEST_H
+
+#include <glib/gmacros.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GomXMLHttpRequest GomXMLHttpRequest; /* dummy
object */
+typedef struct _GomXMLHttpRequestInterface GomXMLHttpRequestInterface;
+
+typedef enum {
+ GOM_UNSENT = 0,
+ GOM_OPENED = 1,
+ GOM_HEADERS_RECEIVED = 2,
+ GOM_LOADING = 3,
+ GOM_DONE = 4
+} GomXmlHttpRequestState;
+
+typedef GomXmlHttpRequestState GomXMLHttpRequestState;
+
+#define GOM_XML_HTTP_REQUEST_OMITTED ((const char *)GINT_TO_POINTER(1))
+
+G_END_DECLS
+
+#include <gom/dom/gomdocument.h>
+
+G_BEGIN_DECLS
+
+#define GOM_TYPE_XML_HTTP_REQUEST
(gom_xml_http_request_get_type ())
+#define GOM_XML_HTTP_REQUEST(i)
(G_TYPE_CHECK_INSTANCE_CAST ((i), GOM_TYPE_XML_HTTP_REQUEST, GomXMLHttpRequest))
+#define GOM_IS_XML_HTTP_REQUEST(i)
(G_TYPE_CHECK_INSTANCE_TYPE ((i), GOM_TYPE_XML_HTTP_REQUEST))
+#define GOM_XML_HTTP_REQUEST_GET_INTERFACE(i)
(G_TYPE_INSTANCE_GET_INTERFACE ((i), GOM_TYPE_XML_HTTP_REQUEST, GomXMLHttpRequestInterface))
+
+#define _GOM_IMPLEMENT_XML_HTTP_REQUEST(i, p, f)
(((GomXMLHttpRequestInterface*)i)->f = p##_##f)
+#define GOM_IMPLEMENT_XML_HTTP_REQUEST(i, p)
\
+ G_STMT_START {
\
+ _GOM_IMPLEMENT_XML_HTTP_REQUEST (i, p, open);
\
+ _GOM_IMPLEMENT_XML_HTTP_REQUEST (i, p, set_request_header);
\
+ _GOM_IMPLEMENT_XML_HTTP_REQUEST (i, p, send);
\
+ _GOM_IMPLEMENT_XML_HTTP_REQUEST (i, p, send_string);
\
+ _GOM_IMPLEMENT_XML_HTTP_REQUEST (i, p, send_document);
\
+ _GOM_IMPLEMENT_XML_HTTP_REQUEST (i, p, abort);
\
+ _GOM_IMPLEMENT_XML_HTTP_REQUEST (i, p,
get_all_response_headers); \
+ _GOM_IMPLEMENT_XML_HTTP_REQUEST (i, p, get_response_header);
\
+ } G_STMT_END
+
+struct _GomXMLHttpRequestInterface {
+ GTypeInterface parent;
+
+ void (*open) (GomXMLHttpRequest *xml_http_request,
+ const char *method,
+ const char *url,
+ gboolean async,
+ const char *user,
+ const char *password,
+ GError **error);
+
+ void (*set_request_header) (GomXMLHttpRequest *xml_http_request,
+ const char *header,
+ const char *value,
+ GError **error);
+
+ void (*send) (GomXMLHttpRequest *xml_http_request,
+ GError **error);
+
+ void (*send_string) (GomXMLHttpRequest *xml_http_request,
+ const char *data,
+ GError **error);
+
+ void (*send_document) (GomXMLHttpRequest *xml_http_request,
+ const GomDocument *doc,
+ GError **error);
+
+ void (*abort) (GomXMLHttpRequest *xml_http_request);
+
+ char *(*get_all_response_headers) (const GomXMLHttpRequest *xml_http_request,
+ GError **error);
+
+ char *(*get_response_header) (const GomXMLHttpRequest *xml_http_request,
+ const char *header,
+ GError **error);
+};
+
+GType gom_xml_http_request_get_type (void);
+
+void gom_xml_http_request_open (GomXMLHttpRequest *xml_http_request,
+ const char *method,
+ const char *url,
+ gboolean async,
+ const char *user,
+ const char *password,
+ GError **error);
+
+void gom_xml_http_request_set_request_header (GomXMLHttpRequest *xml_http_request,
+ const char *header,
+ const char *value,
+ GError **error);
+
+void gom_xml_http_request_send (GomXMLHttpRequest *xml_http_request,
+ GError **error);
+
+void gom_xml_http_request_send_string (GomXMLHttpRequest *xml_http_request,
+ const char *data,
+ GError **error);
+
+void gom_xml_http_request_send_document (GomXMLHttpRequest *xml_http_request,
+ const GomDocument *doc,
+ GError **error);
+
+void gom_xml_http_request_abort (GomXMLHttpRequest *xml_http_request);
+
+char *gom_xml_http_request_get_all_response_headers (const
GomXMLHttpRequest *xml_http_request,
+ GError
**error);
+
+char *gom_xml_http_request_get_response_header (const
GomXMLHttpRequest *xml_http_request,
+ const char
*header,
+ GError **error);
+
+#endif /* GOM_XML_HTTP_REQUEST_H */
Modified: trunk/gom/include/gom/gomelem.h
==============================================================================
--- trunk/gom/include/gom/gomelem.h (original)
+++ trunk/gom/include/gom/gomelem.h Sun Jul 20 20:13:11 2008
@@ -33,7 +33,7 @@
G_END_DECLS
-#include <gom/gomnoodle.h>
+#include "gom/gomnoodle.h"
G_BEGIN_DECLS
Added: trunk/gom/include/gom/gomeventtargetinternal.h
==============================================================================
--- (empty file)
+++ trunk/gom/include/gom/gomeventtargetinternal.h Sun Jul 20 20:13:11 2008
@@ -0,0 +1,77 @@
+/*
+The MIT License
+
+Copyright (c) 2008 jacob berkman <ja...@ilovegom.org>
+
+Permission is hereby granted, free of charge, to any person obtaining
a copy
+of this software and associated documentation files (the "Software"),
to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+#ifndef GOM_EVENT_TARGET_INTERNAL_H
+#define GOM_EVENT_TARGET_INTERNAL_H
+
+#include <glib/gmacros.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GomEventTargetInternal
GomEventTargetInternal; /* dummy object */
+typedef struct _GomEventTargetInternalInterface GomEventTargetInternalInterface;
+
+G_END_DECLS
+
+#include <gom/dom/gomevent.h>
+#include <gom/dom/gomeventtarget.h>
+
+G_BEGIN_DECLS
+
+#define GOM_TYPE_EVENT_TARGET_INTERNAL
(gom_event_target_internal_get_type ())
+#define GOM_EVENT_TARGET_INTERNAL(i)
(G_TYPE_CHECK_INSTANCE_CAST ((i), GOM_TYPE_EVENT_TARGET_INTERNAL, GomEventTargetInternal))
+#define GOM_IS_EVENT_TARGET_INTERNAL(i)
(G_TYPE_CHECK_INSTANCE_TYPE ((i), GOM_TYPE_EVENT_TARGET_INTERNAL))
+#define GOM_EVENT_TARGET_INTERNAL_GET_INTERFACE(i)
(G_TYPE_INSTANCE_GET_INTERFACE ((i), GOM_TYPE_EVENT_TARGET_INTERNAL, GomEventTargetInternalInterface))
+
+#define _GOM_IMPLEMENT_EVENT_TARGET_INTERNAL(i, p, f)
(((GomEventTargetInternalInterface*)i)->f = p##_##f)
+#define GOM_IMPLEMENT_EVENT_TARGET_INTERNAL(i, p)
\
+ G_STMT_START {
\
+ _GOM_IMPLEMENT_EVENT_TARGET_INTERNAL (i, p,
get_parent_target); \
+ _GOM_IMPLEMENT_EVENT_TARGET_INTERNAL (i, p,
dispatch_listeners); \
+ } G_STMT_END
+
+struct _GomEventTargetInternalInterface {
+ GTypeInterface parent;
+
+ GomEventTarget *(*get_parent_target) (GomEventTargetInternal *target);
+
+ void (*dispatch_listeners) (GomEventTargetInternal *current_target,
+ GomEvent *evt,
+ const char *namespace_uri,
+ const char *type_name,
+ GomPhaseType phase);
+};
+
+GType gom_event_target_internal_get_type (void);
+
+GomEventTarget *gom_event_target_internal_get_parent_target
(GomEventTargetInternal *target);
+
+void gom_event_target_internal_dispatch_listeners
(GomEventTargetInternal *current_target,
+ GomEvent
*evt,
+ const
char *namespace_uri,
+ const
char *type_name,
+
GomPhaseType phase);
+
+G_END_DECLS
+
+#endif /* GOM_EVENT_TARGET_INTERNAL_H */
Added: trunk/gom/include/gom/gomevttgt.h
==============================================================================
--- (empty file)
+++ trunk/gom/include/gom/gomevttgt.h Sun Jul 20 20:13:11 2008
@@ -0,0 +1,65 @@
+/*
+The MIT License
+
+Copyright (c) 2008 jacob berkman <ja...@ilovegom.org>
+
+Permission is hereby granted, free of charge, to any person obtaining
a copy
+of this software and associated documentation files (the "Software"),
to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+#ifndef GOM_EVT_TGT_H
+#define GOM_EVT_TGT_H
+
+#include <glib/gmacros.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GomEvtTgt GomEvtTgt;
+typedef struct _GomEvtTgtClass GomEvtTgtClass;
+
+G_END_DECLS
+
+#include "gom/gomeventtargetinternal.h"
+
+G_BEGIN_DECLS
+
+#define GOM_TYPE_EVT_TGT (gom_evt_tgt_get_type ())
+#define GOM_EVT_TGT(i) (G_TYPE_CHECK_INSTANCE_CAST ((i),
GOM_TYPE_EVT_TGT, GomEvtTgt))
+#define GOM_EVT_TGT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k),
GOM_TYPE_EVT_TGT, GomEvtTgtClass))
+#define GOM_IS_EVT_TGT(i) (G_TYPE_CHECK_INSTANCE_TYPE ((i), GOM_TYPE_EVT_TGT))
+#define GOM_IS_EVT_TGT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GOM_TYPE_EVT_TGT))
+#define GOM_EVT_TGT_GET_CLASS(i) (G_TYPE_INSTANCE_GET_CLASS ((i),
GOM_TYPE_EVT_TGT, GomEvtTgtClass))
+
+struct _GomEvtTgt {
+ GObject parent;
+};
+
+struct _GomEvtTgtClass {
+ GObjectClass parent_class;
+};
+
+GType gom_evt_tgt_get_type (void);
+
+void gom_evt_tgt_dispatch_listeners (GomEventTargetInternal *current_target,
+ GomEvent *evt,
+ const char *namespace_uri,
+ const char *type_name,
+ GomPhaseType phase);
+
+G_END_DECLS
+
+#endif /* GOM_EVT_TGT_H */
Added: trunk/gom/include/gom/gomjsxmlhttprequest.h
==============================================================================
--- (empty file)
+++ trunk/gom/include/gom/gomjsxmlhttprequest.h Sun Jul 20 20:13:11 2008
@@ -0,0 +1,38 @@
+/*
+The MIT License
+
+Copyright (c) 2008 jacob berkman <ja...@ilovegom.org>
+
+Permission is hereby granted, free of charge, to any person obtaining
a copy
+of this software and associated documentation files (the "Software"),
to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+#ifndef GOM_JS_XML_HTTP_REQUEST_H
+#define GOM_JS_XML_HTTP_REQUEST_H
+
+#include <glib/gmacros.h>
+#include <jsapi.h>
+
+G_BEGIN_DECLS
+
+JSObject *gom_js_xml_http_request_init_class (JSContext *cx, JSObject *obj);
+
+extern JSClass GomJSXMLHttpRequestClass;
+
+G_END_DECLS
+
+#endif /* GOM_JS_XML_HTTP_REQUEST_H */
Modified: trunk/gom/include/gom/gomnodeinternal.h
==============================================================================
--- trunk/gom/include/gom/gomnodeinternal.h (original)
+++ trunk/gom/include/gom/gomnodeinternal.h Sun Jul 20 20:13:11 2008
@@ -50,7 +50,6 @@
_GOM_IMPLEMENT_NODE_INTERNAL (i, p, set_next_sibling); \
_GOM_IMPLEMENT_NODE_INTERNAL (i, p, set_prev_sibling); \
_GOM_IMPLEMENT_NODE_INTERNAL (i, p, sibling_requested); \
- _GOM_IMPLEMENT_NODE_INTERNAL (i, p, dispatch_listeners); \
} G_STMT_END
struct _GomNodeInternalInterface {
@@ -60,11 +59,6 @@
void (*set_next_sibling) (GomNodeInternal *child, GomNode *sibling);
void (*set_prev_sibling) (GomNodeInternal *child, GomNode *sibling);
void (*sibling_requested) (GomNodeInternal *parent, GomNode *child);
- void (*dispatch_listeners) (GomNodeInternal *current_target,
- GomEvent *evt,
- const char *namespace_uri,
- const char *type_name,
- GomPhaseType phase);
};
GType gom_node_internal_get_type (void);
@@ -74,11 +68,6 @@
void gom_node_internal_set_prev_sibling (GomNodeInternal *child,
GomNode *sibling);
void gom_node_internal_sibling_requested (GomNodeInternal *parent,
GomNode *child);
-void gom_node_internal_dispatch_listeners (GomNodeInternal *current_target,
- GomEvent *evt,
- const char *namespace_uri,
- const char *type_name,
- GomPhaseType phase);
G_END_DECLS
#endif /* GOM_NODE_INTERNAL_H */
Modified: trunk/gom/include/gom/gomnoodle.h
==============================================================================
--- trunk/gom/include/gom/gomnoodle.h (original)
+++ trunk/gom/include/gom/gomnoodle.h Sun Jul 20 20:13:11 2008
@@ -33,7 +33,7 @@
G_END_DECLS
-#include <glib-object.h>
+#include "gom/gomevttgt.h"
G_BEGIN_DECLS
@@ -45,11 +45,11 @@
#define GOM_NOODLE_GET_CLASS(i) (G_TYPE_INSTANCE_GET_CLASS ((i),
GOM_TYPE_NOODLE, GomNoodleClass))
struct _GomNoodle {
- GObject parent;
+ GomEvtTgt parent;
};
struct _GomNoodleClass {
- GObjectClass parent_class;
+ GomEvtTgtClass parent_class;
};
GType gom_noodle_get_type (void);
Added: trunk/gom/include/gom/gomxhr.h
==============================================================================
--- (empty file)
+++ trunk/gom/include/gom/gomxhr.h Sun Jul 20 20:13:11 2008
@@ -0,0 +1,60 @@
+/*
+The MIT License
+
+Copyright (c) 2008 jacob berkman <ja...@ilovegom.org>
+
+Permission is hereby granted, free of charge, to any person obtaining
a copy
+of this software and associated documentation files (the "Software"),
to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+#ifndef GOM_XHR_H
+#define GOM_XHR_H
+
+#include <glib/gmacros.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GomXhr GomXhr;
+typedef struct _GomXhrClass GomXhrClass;
+
+G_END_DECLS
+
+#include "gom/gomevttgt.h"
+
+G_BEGIN_DECLS
+
+#define GOM_TYPE_XHR (gom_xhr_get_type ())
+#define GOM_XHR(i) (G_TYPE_CHECK_INSTANCE_CAST ((i),
GOM_TYPE_XHR, GomXhr))
+#define GOM_XHR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k),
GOM_TYPE_XHR, GomXhrClass))
+#define GOM_IS_XHR(i) (G_TYPE_CHECK_INSTANCE_TYPE ((i), GOM_TYPE_XHR))
+#define GOM_IS_XHR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GOM_TYPE_XHR))
+#define GOM_XHR_GET_CLASS(i) (G_TYPE_INSTANCE_GET_CLASS ((i),
GOM_TYPE_XHR, GomXhrClass))
+
+struct _GomXhr {
+ GomEvtTgt parent;
+};
+
+struct _GomXhrClass {
+ GomEvtTgtClass parent_class;
+};
+
+GType gom_xhr_get_type (void);
+
+G_END_DECLS
+
+#endif /* GOM_XHR_H */
+
Modified: trunk/gom/src/libgom/Makefile.inc
==============================================================================
--- trunk/gom/src/libgom/Makefile.inc (original)
+++ trunk/gom/src/libgom/Makefile.inc Sun Jul 20 20:13:11 2008
@@ -12,8 +12,10 @@
src/libgom/gomdominterfaces.c \
src/libgom/gomelem.c \
src/libgom/gomevt.c \
+ src/libgom/gomevttgt.c \
src/libgom/gomgcmanager.c \
src/libgom/gomglist.c \
+ src/libgom/gominterfaces.c \
src/libgom/gomjscontext.c \
src/libgom/gomjsdocument.c \
src/libgom/gomjsdomexception.c \
@@ -31,6 +33,7 @@
src/libgom/gomjsobject.c \
src/libgom/gomjsuievent.c \
src/libgom/gomjswindow.c \
+ src/libgom/gomjsxmlhttprequest.c \
src/libgom/gomkeyboardevt.c \
src/libgom/gomlistenerlist.c \
src/libgom/gommouseevt.c \
@@ -39,7 +42,8 @@
src/libgom/gomtxt.c \
src/libgom/gomuievt.c \
src/libgom/gomvalue.c \
- src/libgom/gomwidget.c
+ src/libgom/gomwidget.c \
+ src/libgom/gomxhr.c
libgom_la_CFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include
$(GOM_CFLAGS) $(JS_CFLAGS)
libgom_la_LDFLAGS = $(GOM_LIBS)
Modified: trunk/gom/src/libgom/gomchardata.c
==============================================================================
--- trunk/gom/src/libgom/gomchardata.c (original)
+++ trunk/gom/src/libgom/gomchardata.c Sun Jul 20 20:13:11 2008
@@ -23,9 +23,10 @@
*/
#include "config.h"
+#include "gom/dom/gomcharacterdata.h"
+
#include "gom/gomchardata.h"
-#include "gom/dom/gomcharacterdata.h"
#include "gom/dom/gomdomexception.h"
#include "gommacros.h"
Modified: trunk/gom/src/libgom/gomdoc.c
==============================================================================
--- trunk/gom/src/libgom/gomdoc.c (original)
+++ trunk/gom/src/libgom/gomdoc.c Sun Jul 20 20:13:11 2008
@@ -23,6 +23,8 @@
*/
#include "config.h"
+#include "gom/dom/gomdocument.h"
+
#include "gom/gomdoc.h"
#include "gom/dom/gomdocumentevent.h"
Modified: trunk/gom/src/libgom/gomdom.c
==============================================================================
--- trunk/gom/src/libgom/gomdom.c (original)
+++ trunk/gom/src/libgom/gomdom.c Sun Jul 20 20:13:11 2008
@@ -23,9 +23,10 @@
*/
#include "config.h"
+#include "gom/dom/gomdomimplementation.h"
+
#include "gom/gomdom.h"
-#include "gom/dom/gomdomimplementation.h"
#include "gom/gomdoc.h"
#include "gommacros.h"
Modified: trunk/gom/src/libgom/gomdominterfaces.c
==============================================================================
--- trunk/gom/src/libgom/gomdominterfaces.c (original)
+++ trunk/gom/src/libgom/gomdominterfaces.c Sun Jul 20 20:13:11 2008
@@ -1169,3 +1169,101 @@
GomAbstractView *view_arg,
long detail_arg),
(gom_ui_event, namespace_uri, type_arg, can_bubble_arg,
cancelable_arg, view_arg, detail_arg));
+
+#include <gom/dom/gomxmlhttprequest.h>
+
+GOM_DEFINE_INTERFACE_WITH_PREREQUISITE (GomXMLHttpRequest, gom_xml_http_request,
+{
+ g_object_interface_install_property (
+ g_iface,
+ g_param_spec_object ("onreadystatechange", NULL,
+ "An event handler which is invoked
whenever a "
+ "readystatechange event is targeted at this "
+ "object.",
+ GOM_TYPE_EVENT_LISTENER,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+ g_object_interface_install_property (
+ g_iface,
+ g_param_spec_enum ("ready-state", NULL,
+ "The current state of this object.",
+ GOM_TYPE_XML_HTTP_REQUEST_STATE, GOM_UNSENT,
+ G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+
+ g_object_interface_install_property (
+ g_iface,
+ g_param_spec_string ("response-text", NULL,
+ "The text response entity body.",
+ NULL,
+ G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+
+ g_object_interface_install_property (
+ g_iface,
+ g_param_spec_object ("response-x-m-l", NULL,
+ "The XML response entity body.",
+ GOM_TYPE_DOCUMENT,
+ G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+
+ g_object_interface_install_property (
+ g_iface,
+ g_param_spec_uint ("status", NULL,
+ "The HTTP status code sent by the server.",
+ 0, G_MAXUINT, 0,
+ G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+
+ g_object_interface_install_property (
+ g_iface,
+ g_param_spec_string ("status-text", NULL,
+ "The HTTP status text sent by the server.",
+ NULL,
+ G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+}, GOM_TYPE_EVENT_TARGET);
+
+GOM_STUB_VOID (GOM_XML_HTTP_REQUEST, gom_xml_http_request, open,
+ (GomXMLHttpRequest *gom_xml_http_request,
+ const char *method,
+ const char *url,
+ gboolean async,
+ const char *user,
+ const char *password,
+ GError **error),
+ (gom_xml_http_request, method, url, async, user,
password, error));
+
+GOM_STUB_VOID (GOM_XML_HTTP_REQUEST, gom_xml_http_request, set_request_header,
+ (GomXMLHttpRequest *gom_xml_http_request,
+ const char *header,
+ const char *value,
+ GError **error),
+ (gom_xml_http_request, header, value, error));
+
+GOM_STUB_VOID (GOM_XML_HTTP_REQUEST, gom_xml_http_request, send,
+ (GomXMLHttpRequest *gom_xml_http_request,
+ GError **error),
+ (gom_xml_http_request, error));
+
+GOM_STUB_VOID (GOM_XML_HTTP_REQUEST, gom_xml_http_request, send_string,
+ (GomXMLHttpRequest *gom_xml_http_request,
+ const char *data,
+ GError **error),
+ (gom_xml_http_request, data, error));
+
+GOM_STUB_VOID (GOM_XML_HTTP_REQUEST, gom_xml_http_request, send_document,
+ (GomXMLHttpRequest *gom_xml_http_request,
+ const GomDocument *doc,
+ GError **error),
+ (gom_xml_http_request, doc, error));
+
+GOM_STUB_VOID (GOM_XML_HTTP_REQUEST, gom_xml_http_request, abort,
+ (GomXMLHttpRequest *gom_xml_http_request),
+ (gom_xml_http_request));
+
+GOM_STUB_FUNC (GOM_XML_HTTP_REQUEST, gom_xml_http_request, get_all_response_headers,
+ (const GomXMLHttpRequest *gom_xml_http_request,
+ GError **error),
+ (gom_xml_http_request, error), char *);
+
+GOM_STUB_FUNC (GOM_XML_HTTP_REQUEST, gom_xml_http_request, get_response_header,
+ (const GomXMLHttpRequest *gom_xml_http_request,
+ const char *header,
+ GError **error),
+ (gom_xml_http_request, header, error), char *);
Modified: trunk/gom/src/libgom/gomelem.c
==============================================================================
--- trunk/gom/src/libgom/gomelem.c (original)
+++ trunk/gom/src/libgom/gomelem.c Sun Jul 20 20:13:11 2008
@@ -23,10 +23,11 @@
*/
#include "config.h"
+#include "gom/dom/gomelement.h"
+
#include "gom/gomelem.h"
#include "gom/dom/gomdomexception.h"
-#include "gom/dom/gomelement.h"
#include "gom/gomobject.h"
#include "gommacros.h"
Modified: trunk/gom/src/libgom/gomevt.c
==============================================================================
--- trunk/gom/src/libgom/gomevt.c (original)
+++ trunk/gom/src/libgom/gomevt.c Sun Jul 20 20:13:11 2008
@@ -23,11 +23,11 @@
*/
#include "config.h"
-#include <gom/gomevt.h>
+#include "gom/dom/gomcustomevent.h"
-#include "gommacros.h"
+#include "gom/gomevt.h"
-#include <gom/dom/gomcustomevent.h>
+#include "gommacros.h"
#include <time.h>
@@ -223,7 +223,7 @@
gom_evt_dispose (GObject *object)
{
GomEvtPrivate *priv = PRIV (object);
-#if 1
+#if 0
g_print (G_STRLOC": %s %p\n",
g_type_name (G_TYPE_FROM_INSTANCE (object)), object);
#endif
Added: trunk/gom/src/libgom/gomevttgt.c
==============================================================================
--- (empty file)
+++ trunk/gom/src/libgom/gomevttgt.c Sun Jul 20 20:13:11 2008
@@ -0,0 +1,151 @@
+/*
+The MIT License
+
+Copyright (c) 2008 jacob berkman <ja...@ilovegom.org>
+
+Permission is hereby granted, free of charge, to any person obtaining
a copy
+of this software and associated documentation files (the "Software"),
to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+#include "config.h"
+
+#include "gom/gomeventtargetinternal.h"
+
+#include "gom/gomevttgt.h"
+
+#include "gom/gomlistenerlist.h"
+
+#include "gommacros.h"
+
+typedef struct {
+ GomListenerList *listeners;
+} GomEvtTgtPrivate;
+
+#define PRIV(i) G_TYPE_INSTANCE_GET_PRIVATE ((i), GOM_TYPE_EVT_TGT, GomEvtTgtPrivate)
+
+static void
+gom_evt_tgt_add_event_listener_ns (GomEventTarget *event_target,
+ const char *namespace_uri,
+ const char *type,
+ GomEventListener *listener,
+ gboolean use_capture,
+ GObject *evt_group)
+{
+ gom_listener_list_add_event_listener (
+ PRIV (event_target)->listeners, namespace_uri,
+ type, listener, use_capture, evt_group);
+}
+
+static void
+gom_evt_tgt_add_event_listener (GomEventTarget *event_target,
+ const char *type,
+ GomEventListener *listener,
+ gboolean use_capture)
+{
+ gom_listener_list_add_event_listener (
+ PRIV (event_target)->listeners, NULL,
+ type, listener, use_capture, NULL);
+}
+
+static void
+gom_evt_tgt_remove_event_listener_ns (GomEventTarget *target,
+ const char *namespace_uri,
+ const char *type,
+ GomEventListener *listener,
+ gboolean use_capture)
+{
+ gom_listener_list_remove_event_listener (
+ PRIV (target)->listeners, namespace_uri,
+ type, listener, use_capture);
+}
+
+static void
+gom_evt_tgt_remove_event_listener (GomEventTarget *target,
+ const char *type,
+ GomEventListener *listener,
+ gboolean use_capture)
+{
+ gom_listener_list_remove_event_listener (
+ PRIV (target)->listeners, NULL,
+ type, listener, use_capture);
+}
+
+static gboolean
+gom_evt_tgt_has_event_listener_ns (GomEventTarget *target,
+ const char *namespace_uri,
+ const char *type)
+{
+ return gom_listener_list_has_event_listener (PRIV
(target)->listeners, namespace_uri, type);
+}
+
+static gboolean
+gom_evt_tgt_will_trigger_ns (GomEventTarget *target,
+ const char *namespace_uri,
+ const char *type)
+{
+ return gom_listener_list_will_trigger (PRIV (target)->listeners,
target, namespace_uri, type);
+}
+
+#define gom_evt_tgt_dispatch_event gom_listener_list_dispatch_event
+
+void
+gom_evt_tgt_dispatch_listeners (GomEventTargetInternal *current_target,
+ GomEvent *evt,
+ const char *namespace_uri,
+ const char *type_name,
+ GomPhaseType phase)
+{
+ gom_listener_list_dispatch_listeners (
+ PRIV (current_target)->listeners,
+ GOM_EVENT_TARGET (current_target),
+ evt, namespace_uri, type_name, phase);
+}
+
+GOM_IMPLEMENT (EVENT_TARGET, event_target, gom_evt_tgt);
+
+G_DEFINE_TYPE_WITH_CODE (GomEvtTgt, gom_evt_tgt, G_TYPE_OBJECT,
+ GOM_IMPLEMENT_INTERFACE (EVENT_TARGET,
event_target, gom_evt_tgt));
+
+static void
+gom_evt_tgt_init (GomEvtTgt *event)
+{
+ GomEvtTgtPrivate *priv = PRIV (event);
+
+ priv->listeners = gom_listener_list_new ();
+}
+
+static void
+gom_evt_tgt_dispose (GObject *object)
+{
+ GomEvtTgtPrivate *priv = PRIV (object);
+
+ gom_listener_list_free (priv->listeners);
+ priv->listeners = NULL;
+
+ G_OBJECT_CLASS (gom_evt_tgt_parent_class)->dispose (object);
+}
+
+static void
+gom_evt_tgt_class_init (GomEvtTgtClass *klass)
+{
+ GObjectClass *oclass = G_OBJECT_CLASS (klass);
+
+ g_type_class_add_private (klass, sizeof (GomEvtTgtPrivate));
+
+ oclass->dispose = gom_evt_tgt_dispose;
+}
+
Modified: trunk/gom/src/libgom/gomgcmanager.c
==============================================================================
--- trunk/gom/src/libgom/gomgcmanager.c (original)
+++ trunk/gom/src/libgom/gomgcmanager.c Sun Jul 20 20:13:11 2008
@@ -90,8 +90,3 @@
g_object_weak_ref (G_OBJECT (obj), gom_gc_manager_unregister, cx);
}
-GOM_DEFINE_INTERFACE (GomGCManaged, gom_gc_managed, {});
-
-GOM_STUB_VOID(GOM_GC_MANAGED, gom_gc_managed, mark_live_objects,
- (GomGCManaged *gom_gc_managed, JSContext *cx, JSGCStatus status),
- (gom_gc_managed, cx, status));
Modified: trunk/gom/src/libgom/gomglist.c
==============================================================================
--- trunk/gom/src/libgom/gomglist.c (original)
+++ trunk/gom/src/libgom/gomglist.c Sun Jul 20 20:13:11 2008
@@ -23,9 +23,9 @@
*/
#include "config.h"
-#include <gom/gomglist.h>
+#include "gom/dom/gomnodelist.h"
-#include <gom/dom/gomnodelist.h>
+#include "gom/gomglist.h"
#include "gommacros.h"
Added: trunk/gom/src/libgom/gominterfaces.c
==============================================================================
--- (empty file)
+++ trunk/gom/src/libgom/gominterfaces.c Sun Jul 20 20:13:11 2008
@@ -0,0 +1,67 @@
+/*
+The MIT License
+
+Copyright (c) 2008 jacob berkman <ja...@ilovegom.org>
+
+Permission is hereby granted, free of charge, to any person obtaining
a copy
+of this software and associated documentation files (the "Software"),
to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+#include "config.h"
+
+#include "gommacros.h"
+
+#include "gom/gomeventtargetinternal.h"
+
+GOM_DEFINE_INTERFACE_WITH_PREREQUISITE (GomEventTargetInternal,
gom_event_target_internal, {}, GOM_TYPE_EVENT_TARGET);
+
+GOM_STUB_FUNC (GOM_EVENT_TARGET_INTERNAL, gom_event_target_internal, get_parent_target,
+ (GomEventTargetInternal *gom_event_target_internal),
+ (gom_event_target_internal), GomEventTarget *);
+
+GOM_STUB_VOID (GOM_EVENT_TARGET_INTERNAL, gom_event_target_internal, dispatch_listeners,
+ (GomEventTargetInternal *gom_event_target_internal,
+ GomEvent *evt,
+ const char *namespace_uri,
+ const char *type_name,
+ GomPhaseType phase),
+ (gom_event_target_internal, evt, namespace_uri,
type_name, phase));
+
+#include "gom/gomgcmanaged.h"
+
+GOM_DEFINE_INTERFACE (GomGCManaged, gom_gc_managed, {});
+
+GOM_STUB_VOID(GOM_GC_MANAGED, gom_gc_managed, mark_live_objects,
+ (GomGCManaged *gom_gc_managed, JSContext *cx, JSGCStatus status),
+ (gom_gc_managed, cx, status));
+
+#include "gom/gomnodeinternal.h"
+
+GOM_DEFINE_INTERFACE_WITH_PREREQUISITE (GomNodeInternal,
gom_node_internal, {}, GOM_TYPE_NODE);
+
+GOM_STUB_VOID (GOM_NODE_INTERNAL, gom_node_internal, set_parent,
+ (GomNodeInternal *gom_node_internal, GomNode *parent),
(gom_node_internal, parent));
+
+GOM_STUB_VOID (GOM_NODE_INTERNAL, gom_node_internal, set_next_sibling,
+ (GomNodeInternal *gom_node_internal, GomNode *sibling),
(gom_node_internal, sibling));
+
+GOM_STUB_VOID (GOM_NODE_INTERNAL, gom_node_internal, set_prev_sibling,
+ (GomNodeInternal *gom_node_internal, GomNode *sibling),
(gom_node_internal, sibling));
+
+GOM_STUB_VOID (GOM_NODE_INTERNAL, gom_node_internal, sibling_requested,
+ (GomNodeInternal *gom_node_internal, GomNode *child),
(gom_node_internal, child));
+
Modified: trunk/gom/src/libgom/gomjscontext.c
==============================================================================
--- trunk/gom/src/libgom/gomjscontext.c (original)
+++ trunk/gom/src/libgom/gomjscontext.c Sun Jul 20 20:13:11 2008
@@ -39,6 +39,7 @@
#include "gom/gomjsobject.h"
#include "gom/gomjsuievent.h"
#include "gom/gomjswindow.h"
+#include "gom/gomjsxmlhttprequest.h"
#include "gommacros.h"
@@ -66,6 +67,8 @@
gom_js_g_error_exception_init_class (cx, obj);
gom_js_dom_exception_init_class (cx, obj);
gom_js_event_exception_init_class (cx, obj);
+
+ gom_js_xml_http_request_init_class (cx, obj);
}
static gboolean
Modified: trunk/gom/src/libgom/gomjseventlistener.c
==============================================================================
--- trunk/gom/src/libgom/gomjseventlistener.c (original)
+++ trunk/gom/src/libgom/gomjseventlistener.c Sun Jul 20 20:13:11 2008
@@ -23,9 +23,10 @@
*/
#include "config.h"
+#include "gom/dom/gomeventlistener.h"
+
#include "gom/gomjseventlistener.h"
-#include "gom/dom/gomeventlistener.h"
#include "gom/dom/gomeventtarget.h"
#include "gom/gomgcmanaged.h"
#include "gom/gomjsobject.h"
Modified: trunk/gom/src/libgom/gomjsuievent.c
==============================================================================
--- trunk/gom/src/libgom/gomjsuievent.c (original)
+++ trunk/gom/src/libgom/gomjsuievent.c Sun Jul 20 20:13:11 2008
@@ -57,22 +57,22 @@
static JSPropertySpec gom_js_ui_event_props[] = { { NULL } };
static JSBool
-gom_js_event_init_ui_event (JSContext *cx, JSObject *obj, uintN argc,
jsval *argv, jsval *rval)
+gom_js_ui_event_init_ui_event (JSContext *cx, JSObject *obj, uintN
argc, jsval *argv, jsval *rval)
{
GOM_JS_NOT_IMPLEMENTED (cx);
return JS_FALSE;
}
static JSBool
-gom_js_event_init_ui_event_ns (JSContext *cx, JSObject *obj, uintN
argc, jsval *argv, jsval *rval)
+gom_js_ui_event_init_ui_event_ns (JSContext *cx, JSObject *obj, uintN
argc, jsval *argv, jsval *rval)
{
GOM_JS_NOT_IMPLEMENTED (cx);
return JS_FALSE;
}
static JSFunctionSpec gom_js_ui_event_funcs[] = {
- { "initUIEvent", gom_js_event_init_ui_event, 5 },
- { "initUIEventNS", gom_js_event_init_ui_event_ns, 6 },
+ { "initUIEvent", gom_js_ui_event_init_ui_event, 5 },
+ { "initUIEventNS", gom_js_ui_event_init_ui_event_ns, 6 },
{ NULL }
};
Added: trunk/gom/src/libgom/gomjsxmlhttprequest.c
==============================================================================
--- (empty file)
+++ trunk/gom/src/libgom/gomjsxmlhttprequest.c Sun Jul 20 20:13:11 2008
@@ -0,0 +1,129 @@
+/*
+The MIT License
+
+Copyright (c) 2008 jacob berkman <ja...@ilovegom.org>
+
+Permission is hereby granted, free of charge, to any person obtaining
a copy
+of this software and associated documentation files (the "Software"),
to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+#include "config.h"
+
+#include "gom/gomjsxmlhttprequest.h"
+
+#include "gom/dom/gomdomexception.h"
+#include "gom/dom/gomxmlhttprequest.h"
+#include "gom/gomjseventtarget.h"
+#include "gom/gomjsexception.h"
+#include "gom/gomjsobject.h"
+#include "gom/gomxhr.h"
+
+#include "gommacros.h"
+
+#include <glib.h>
+
+static void
+gom_js_xml_http_request_finalize (JSContext *cx, JSObject *obj)
+{
+ GomJSEventTargetClass.finalize (cx, obj);
+}
+
+JSClass GomJSGomXMLHttpRequestClass = {
+ "XMLHttpRequest", JSCLASS_NEW_ENUMERATE,
+
+ JS_PropertyStub,
+ JS_PropertyStub,
+ JS_PropertyStub,
+ JS_PropertyStub,
+ (JSEnumerateOp)gom_js_object_enumerate,
+ JS_ResolveStub,
+ JS_ConvertStub,
+ gom_js_xml_http_request_finalize
+};
+
+static JSPropertySpec gom_js_xml_http_request_props[] = { { NULL } };
+
+static JSBool
+gom_js_xml_http_request_open (JSContext *cx, JSObject *obj, uintN
argc, jsval *argv, jsval *rval)
+{
+ GOM_JS_NOT_IMPLEMENTED (cx);
+ return JS_FALSE;
+}
+
+static JSBool
+gom_js_xml_http_request_set_request_header (JSContext *cx, JSObject
*obj, uintN argc, jsval *argv, jsval *rval)
+{
+ GOM_JS_NOT_IMPLEMENTED (cx);
+ return JS_FALSE;
+}
+
+static JSBool
+gom_js_xml_http_request_send (JSContext *cx, JSObject *obj, uintN
argc, jsval *argv, jsval *rval)
+{
+ GOM_JS_NOT_IMPLEMENTED (cx);
+ return JS_FALSE;
+}
+
+static JSBool
+gom_js_xml_http_request_abort (JSContext *cx, JSObject *obj, uintN
argc, jsval *argv, jsval *rval)
+{
+ GOM_JS_NOT_IMPLEMENTED (cx);
+ return JS_FALSE;
+}
+
+static JSBool
+gom_js_xml_http_request_get_all_response_headers (JSContext *cx,
JSObject *obj, uintN argc, jsval *argv, jsval *rval)
+{
+ GOM_JS_NOT_IMPLEMENTED (cx);
+ return JS_FALSE;
+}
+
+static JSBool
+gom_js_xml_http_request_get_response_header (JSContext *cx, JSObject
*obj, uintN argc, jsval *argv, jsval *rval)
+{
+ GOM_JS_NOT_IMPLEMENTED (cx);
+ return JS_FALSE;
+}
+
+static JSFunctionSpec gom_js_xml_http_request_funcs[] = {
+ { "open", gom_js_xml_http_request_open,
2 },
+ { "setRequestHeader",
gom_js_xml_http_request_set_request_header, 2 },
+ { "send", gom_js_xml_http_request_send,
0 },
+ { "abort", gom_js_xml_http_request_abort,
0 },
+ { "getAllResponseHeaders",
gom_js_xml_http_request_get_all_response_headers, 0 },
+ { "getResponseHeader",
gom_js_xml_http_request_get_response_header, 1 },
+ { NULL }
+};
+
+static JSBool
+gom_js_xml_http_request_construct (JSContext *cx, JSObject *obj, uintN
argc, jsval *argv, jsval *rval)
+{
+ GObject *gobj = g_object_new (GOM_TYPE_XHR, NULL);
+ gom_js_object_set_g_object (cx, obj, gobj);
+ g_object_unref (gobj);
+ return JS_TRUE;
+}
+
+JSObject *
+gom_js_xml_http_request_init_class (JSContext *cx, JSObject *obj)
+{
+ gom_js_object_register_js_class (cx, GOM_TYPE_XML_HTTP_REQUEST, &GomJSGomXMLHttpRequestClass);
+ return JS_InitClass (cx, obj,
+ JS_ConstructObject (cx,
&GomJSEventTargetClass, NULL, NULL),
+ &GomJSGomXMLHttpRequestClass,
gom_js_xml_http_request_construct, 0,
+ gom_js_xml_http_request_props,
gom_js_xml_http_request_funcs, NULL, NULL);
+}
Modified: trunk/gom/src/libgom/gomkeyboardevt.c
==============================================================================
--- trunk/gom/src/libgom/gomkeyboardevt.c (original)
+++ trunk/gom/src/libgom/gomkeyboardevt.c Sun Jul 20 20:13:11 2008
@@ -23,9 +23,10 @@
*/
#include "config.h"
+#include "gom/dom/gomkeyboardevent.h"
+
#include "gom/gomkeyboardevt.h"
-#include "gom/dom/gomkeyboardevent.h"
#include "gom/dom/gomuievent.h"
#include "gom/gomkeyidentifiers.h"
Modified: trunk/gom/src/libgom/gomlistenerlist.c
==============================================================================
--- trunk/gom/src/libgom/gomlistenerlist.c (original)
+++ trunk/gom/src/libgom/gomlistenerlist.c Sun Jul 20 20:13:11 2008
@@ -25,9 +25,8 @@
#include "gom/gomlistenerlist.h"
#include "gom/dom/gomcustomevent.h"
-#include "gom/dom/gomnode.h"
#include "gom/gomevt.h"
-#include "gom/gomnodeinternal.h"
+#include "gom/gomeventtargetinternal.h"
#include "gommacros.h"
@@ -148,12 +147,14 @@
if (gom_listener_list_has_event_listener (list, namespace_uri,
type)) {
return TRUE;
}
- g_object_get (target, "parent-node", &parent, NULL);
+ if (!GOM_IS_EVENT_TARGET_INTERNAL (target)) {
+ return FALSE;
+ }
+ parent = gom_event_target_internal_get_parent_target
(GOM_EVENT_TARGET_INTERNAL (target));
if (!parent) {
return FALSE;
}
ret = gom_event_target_will_trigger_ns (parent, namespace_uri, type);
- g_object_unref (parent);
return ret;
}
@@ -192,10 +193,17 @@
char *namespace_uri, *type_name;
gboolean bubbles;
GList *parents, *li;
- GomNode *node;
+ GomEventTarget *parent;
if (!GOM_IS_EVT (evt) || !GOM_IS_CUSTOM_EVENT (evt)) {
- g_warning ("I cannot work with this Event.");
+ g_warning (G_STRLOC": I cannot work with a \"%s\" Event.",
+ g_type_name (G_TYPE_FROM_INSTANCE (evt)));
+ return TRUE;
+ }
+
+ if (!GOM_IS_EVENT_TARGET_INTERNAL (target)) {
+ g_warning (G_STRLOC": I cannot work with a \"%s\" EventTarget.",
+ g_type_name (G_TYPE_FROM_INSTANCE (target)));
return TRUE;
}
@@ -209,22 +217,17 @@
NULL);
parents = NULL;
- for (g_object_get (target, "parent-node", &node, NULL);
- node;
- g_object_get (node, "parent-node", &node, NULL)) {
- /* g_object_get() refs the object */
- parents = g_list_prepend (parents, node);
+ for (parent = gom_event_target_internal_get_parent_target
(GOM_EVENT_TARGET_INTERNAL (target));
+ GOM_IS_EVENT_TARGET_INTERNAL (parent);
+ parent = gom_event_target_internal_get_parent_target
(GOM_EVENT_TARGET_INTERNAL (parent))) {
+ parents = g_list_prepend (parents, g_object_ref (parent));
}
/* CAPTURING_PHASE */
for (li = parents; li; li = li->next) {
- if (!GOM_IS_NODE_INTERNAL (li->data)) {
- g_warning (G_STRLOC": cannot dispatch event to %s %p",
- g_type_name (G_TYPE_FROM_INSTANCE (li->data)), li->data);
- continue;
- }
- gom_node_internal_dispatch_listeners (GOM_NODE_INTERNAL (li->data),
- evt, namespace_uri,
type_name, GOM_CAPTURING_PHASE);
+ gom_event_target_internal_dispatch_listeners
(GOM_EVENT_TARGET_INTERNAL (li->data),
+ evt,
namespace_uri, type_name,
+ GOM_CAPTURING_PHASE);
if (gom_custom_event_is_propagation_stopped (GOM_CUSTOM_EVENT
(evt)) ||
gom_custom_event_is_immediate_propagation_stopped
(GOM_CUSTOM_EVENT (evt))) {
goto dispatch_out;
@@ -232,8 +235,9 @@
}
/* AT_TARGET */
- gom_node_internal_dispatch_listeners (GOM_NODE_INTERNAL (target),
- evt, namespace_uri,
type_name, GOM_AT_TARGET);
+ gom_event_target_internal_dispatch_listeners
(GOM_EVENT_TARGET_INTERNAL (target),
+ evt, namespace_uri, type_name,
+ GOM_AT_TARGET);
if (gom_custom_event_is_propagation_stopped (GOM_CUSTOM_EVENT
(evt)) ||
gom_custom_event_is_immediate_propagation_stopped
(GOM_CUSTOM_EVENT (evt))) {
goto dispatch_out;
@@ -242,13 +246,9 @@
/* BUBBLING_PHASE */
if (bubbles) {
for (li = g_list_last (parents); li; li = li->prev) {
- if (!GOM_IS_NODE_INTERNAL (li->data)) {
- g_warning (G_STRLOC": cannot dispatch event to %s %p",
- g_type_name (G_TYPE_FROM_INSTANCE
(li->data)), li->data);
- continue;
- }
- gom_node_internal_dispatch_listeners (GOM_NODE_INTERNAL (li->data),
- evt, namespace_uri,
type_name, GOM_BUBBLING_PHASE);
+ gom_event_target_internal_dispatch_listeners
(GOM_EVENT_TARGET_INTERNAL (li->data),
+ evt,
namespace_uri, type_name,
+ GOM_BUBBLING_PHASE);
if (gom_custom_event_is_propagation_stopped
(GOM_CUSTOM_EVENT (evt)) ||
gom_custom_event_is_immediate_propagation_stopped
(GOM_CUSTOM_EVENT (evt))) {
goto dispatch_out;
Modified: trunk/gom/src/libgom/gommouseevt.c
==============================================================================
--- trunk/gom/src/libgom/gommouseevt.c (original)
+++ trunk/gom/src/libgom/gommouseevt.c Sun Jul 20 20:13:11 2008
@@ -23,12 +23,13 @@
*/
#include "config.h"
-#include <gom/gommouseevt.h>
+#include "gom/dom/gommouseevent.h"
-#include "gommacros.h"
+#include "gom/gommouseevt.h"
+
+#include "gom/dom/gomuievent.h"
-#include <gom/dom/gommouseevent.h>
-#include <gom/dom/gomuievent.h>
+#include "gommacros.h"
#include <gdk/gdktypes.h>
Modified: trunk/gom/src/libgom/gomnoodle.c
==============================================================================
--- trunk/gom/src/libgom/gomnoodle.c (original)
+++ trunk/gom/src/libgom/gomnoodle.c Sun Jul 20 20:13:11 2008
@@ -23,14 +23,14 @@
*/
#include "config.h"
+#include "gom/dom/gomnode.h"
+
#include "gom/gomnoodle.h"
#include "gom/dom/gomdocumenttype.h"
#include "gom/dom/gomdombuiltins.h"
#include "gom/dom/gomeventtarget.h"
-#include "gom/dom/gomnode.h"
#include "gom/gomglist.h"
-#include "gom/gomlistenerlist.h"
#include "gom/gomnodeinternal.h"
#include "gommacros.h"
@@ -61,7 +61,6 @@
GomNode *parent_node;
GomNode *prev_sibling;
GomNode *next_sibling;
- GomListenerList *listeners;
guint constructed : 1;
guint dirty_children : 1;
} GomNoodlePrivate;
@@ -150,6 +149,16 @@
}
}
+static GomEventTarget *
+gom_noodle_get_parent_target (GomEventTargetInternal *target)
+{
+ GomNoodlePrivate *priv = PRIV (target);
+
+ return priv->parent_node ? GOM_EVENT_TARGET (priv->parent_node) : NULL;
+}
+
+#define gom_noodle_dispatch_listeners gom_evt_tgt_dispatch_listeners
+
static GList *
find_node (GomNode *node, GomNode *child, GError **error)
{
@@ -308,71 +317,6 @@
}
static void
-gom_noodle_add_event_listener_ns (GomEventTarget *event_target,
- const char *namespace_uri,
- const char *type,
- GomEventListener *listener,
- gboolean use_capture,
- GObject *evt_group)
-{
- gom_listener_list_add_event_listener (
- PRIV (event_target)->listeners, namespace_uri,
- type, listener, use_capture, evt_group);
-}
-
-static void
-gom_noodle_add_event_listener (GomEventTarget *event_target,
- const char *type,
- GomEventListener *listener,
- gboolean use_capture)
-{
- gom_listener_list_add_event_listener (
- PRIV (event_target)->listeners, NULL,
- type, listener, use_capture, NULL);
-}
-
-static void
-gom_noodle_remove_event_listener_ns (GomEventTarget *target,
- const char *namespace_uri,
- const char *type,
- GomEventListener *listener,
- gboolean use_capture)
-{
- gom_listener_list_remove_event_listener (
- PRIV (target)->listeners, namespace_uri,
- type, listener, use_capture);
-}
-
-static void
-gom_noodle_remove_event_listener (GomEventTarget *target,
- const char *type,
- GomEventListener *listener,
- gboolean use_capture)
-{
- gom_listener_list_remove_event_listener (
- PRIV (target)->listeners, NULL,
- type, listener, use_capture);
-}
-
-static gboolean
-gom_noodle_has_event_listener_ns (GomEventTarget *target,
- const char *namespace_uri,
- const char *type)
-{
- return gom_listener_list_has_event_listener (PRIV
(target)->listeners, namespace_uri, type);
-}
-
-static gboolean
-gom_noodle_will_trigger_ns (GomEventTarget *target,
- const char *namespace_uri,
- const char *type)
-{
- return gom_listener_list_will_trigger (PRIV (target)->listeners,
target, namespace_uri, type);
-}
-
-#define gom_noodle_dispatch_event gom_listener_list_dispatch_event
-
-static void
gom_noodle_set_parent (GomNodeInternal *child, GomNode *parent)
{
GomNoodlePrivate *priv = PRIV (child);
@@ -448,28 +392,15 @@
priv->dirty_children = 0;
}
-static void
-gom_noodle_dispatch_listeners (GomNodeInternal *current_target,
- GomEvent *evt,
- const char *namespace_uri,
- const char *type_name,
- GomPhaseType phase)
-{
- gom_listener_list_dispatch_listeners (
- PRIV (current_target)->listeners,
- GOM_EVENT_TARGET (current_target),
- evt, namespace_uri, type_name, phase);
-}
-
-GOM_IMPLEMENT (EVENT_TARGET, event_target, gom_noodle);
-GOM_IMPLEMENT (NODE, node, gom_noodle);
-GOM_IMPLEMENT (NODE_INTERNAL, node_internal, gom_noodle);
+GOM_IMPLEMENT (EVENT_TARGET_INTERNAL, event_target_internal, gom_noodle);
+GOM_IMPLEMENT (NODE, node, gom_noodle);
+GOM_IMPLEMENT (NODE_INTERNAL, node_internal, gom_noodle);
-G_DEFINE_TYPE_WITH_CODE (GomNoodle, gom_noodle, G_TYPE_OBJECT,
+G_DEFINE_TYPE_WITH_CODE (GomNoodle, gom_noodle, GOM_TYPE_EVT_TGT,
{
- GOM_IMPLEMENT_INTERFACE (EVENT_TARGET,
event_target, gom_noodle);
- GOM_IMPLEMENT_INTERFACE (NODE,
node, gom_noodle);
- GOM_IMPLEMENT_INTERFACE (NODE_INTERNAL,
node_internal, gom_noodle);
+ GOM_IMPLEMENT_INTERFACE (EVENT_TARGET,
event_target_internal, gom_noodle);
+ GOM_IMPLEMENT_INTERFACE (NODE,
node, gom_noodle);
+ GOM_IMPLEMENT_INTERFACE (NODE_INTERNAL,
node_internal, gom_noodle);
});
static void gom_noodle_init (GomNoodle *noodle) { }
@@ -490,7 +421,7 @@
{
GomNoodlePrivate *priv = PRIV (object);
-#if 1
+#if 0
g_print (G_STRLOC": %s %p\n",
g_type_name (G_TYPE_FROM_INSTANCE (object)), object);
#endif
@@ -498,9 +429,6 @@
g_list_free (priv->children);
priv->children = NULL;
- gom_listener_list_free (priv->listeners);
- priv->listeners = NULL;
-
GOM_UNSET_WEAK (priv->prev_sibling);
GOM_UNSET_WEAK (priv->next_sibling);
GOM_UNSET_WEAK (priv->parent_node);
@@ -524,8 +452,6 @@
object);
}
- priv->listeners = gom_listener_list_new ();
-
priv->constructed = 1;
}
@@ -558,24 +484,3 @@
g_object_class_override_property (oclass, PROP_LOCAL_NAME, "local-name");
}
-GOM_DEFINE_INTERFACE_WITH_PREREQUISITE (GomNodeInternal,
gom_node_internal, {}, GOM_TYPE_NODE);
-
-GOM_STUB_VOID (GOM_NODE_INTERNAL, gom_node_internal, set_parent,
- (GomNodeInternal *gom_node_internal, GomNode *parent),
(gom_node_internal, parent));
-
-GOM_STUB_VOID (GOM_NODE_INTERNAL, gom_node_internal, set_next_sibling,
- (GomNodeInternal *gom_node_internal, GomNode *sibling),
(gom_node_internal, sibling));
-
-GOM_STUB_VOID (GOM_NODE_INTERNAL, gom_node_internal, set_prev_sibling,
- (GomNodeInternal *gom_node_internal, GomNode *sibling),
(gom_node_internal, sibling));
-
-GOM_STUB_VOID (GOM_NODE_INTERNAL, gom_node_internal, sibling_requested,
- (GomNodeInternal *gom_node_internal, GomNode *child),
(gom_node_internal, child));
-
-GOM_STUB_VOID (GOM_NODE_INTERNAL, gom_node_internal, dispatch_listeners,
- (GomNodeInternal *gom_node_internal,
- GomEvent *evt,
- const char *namespace_uri,
- const char *type_name,
- GomPhaseType phase),
- (gom_node_internal, evt, namespace_uri, type_name, phase));
Modified: trunk/gom/src/libgom/gomtxt.c
==============================================================================
--- trunk/gom/src/libgom/gomtxt.c (original)
+++ trunk/gom/src/libgom/gomtxt.c Sun Jul 20 20:13:11 2008
@@ -23,9 +23,10 @@
*/
#include "config.h"
+#include "gom/dom/gomtext.h"
+
#include "gom/gomtxt.h"
-#include "gom/dom/gomtext.h"
#include "gom/dom/gomdomexception.h"
#include "gommacros.h"
Modified: trunk/gom/src/libgom/gomuievt.c
==============================================================================
--- trunk/gom/src/libgom/gomuievt.c (original)
+++ trunk/gom/src/libgom/gomuievt.c Sun Jul 20 20:13:11 2008
@@ -23,12 +23,13 @@
*/
#include "config.h"
-#include <gom/gomuievt.h>
+#include "gom/dom/gomuievent.h"
+
+#include "gom/gomuievt.h"
#include "gommacros.h"
-#include <gom/dom/gomabstractview.h>
-#include <gom/dom/gomuievent.h>
+#include "gom/dom/gomabstractview.h"
enum {
PROP_VIEW = 1,
Modified: trunk/gom/src/libgom/gomwidget.c
==============================================================================
--- trunk/gom/src/libgom/gomwidget.c (original)
+++ trunk/gom/src/libgom/gomwidget.c Sun Jul 20 20:13:11 2008
@@ -33,6 +33,7 @@
#include "gom/dom/gomkeyboardevent.h"
#include "gom/dom/gommouseevent.h"
#include "gom/dom/gomuievent.h"
+#include "gom/gomeventtargetinternal.h"
#include "gom/gomglist.h"
#include "gom/gomjselement.h"
#include "gom/gomjsobject.h"
@@ -1012,11 +1013,11 @@
}
static void
-widget_dispatch_listeners (GomNodeInternal *current_target,
- GomEvent *evt,
- const char *namespace_uri,
- const char *type_name,
- GomPhaseType phase)
+widget_dispatch_listeners (GomEventTargetInternal *current_target,
+ GomEvent *evt,
+ const char *namespace_uri,
+ const char *type_name,
+ GomPhaseType phase)
{
gom_listener_list_dispatch_listeners (
PRIV (current_target)->listeners,
@@ -1024,6 +1025,14 @@
evt, namespace_uri, type_name, phase);
}
+static GomEventTarget *
+widget_get_parent_target (GomEventTargetInternal *target)
+{
+ GomWidgetPrivate *priv = PRIV (target);
+
+ return priv->parent_node ? GOM_EVENT_TARGET (priv->parent_node) : NULL;
+}
+
static void
widget_dirty_children (GtkContainer *container, GtkWidget *widget,
gpointer data)
{
@@ -1171,10 +1180,11 @@
}
}
-GOM_IMPLEMENT (NODE, node, widget);
-GOM_IMPLEMENT (ELEMENT, element, widget);
-GOM_IMPLEMENT (EVENT_TARGET, event_target, widget);
-GOM_IMPLEMENT (NODE_INTERNAL, node_internal, widget);
+GOM_IMPLEMENT (NODE, node, widget);
+GOM_IMPLEMENT (ELEMENT, element, widget);
+GOM_IMPLEMENT (EVENT_TARGET, event_target, widget);
+GOM_IMPLEMENT (NODE_INTERNAL, node_internal, widget);
+GOM_IMPLEMENT (EVENT_TARGET_INTERNAL, event_target_internal, widget);
static void
gom_widget_constructed (GObject *object)
@@ -1251,6 +1261,11 @@
NULL,
NULL
};
+ static const GInterfaceInfo target_internal_info = {
+ widget_implement_event_target_internal,
+ NULL,
+ NULL
+ };
oclass = g_type_class_ref (GTK_TYPE_WIDGET);
@@ -1368,10 +1383,11 @@
NULL,
G_PARAM_CONSTRUCT_ONLY |
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- g_type_add_interface_static (GTK_TYPE_WIDGET,
GOM_TYPE_EVENT_TARGET, &target_info);
- g_type_add_interface_static (GTK_TYPE_WIDGET, GOM_TYPE_NODE,
&node_info);
- g_type_add_interface_static (GTK_TYPE_WIDGET, GOM_TYPE_ELEMENT,
&element_info);
- g_type_add_interface_static (GTK_TYPE_WIDGET,
GOM_TYPE_NODE_INTERNAL, &node_internal_info);
+ g_type_add_interface_static (GTK_TYPE_WIDGET,
GOM_TYPE_EVENT_TARGET, &target_info);
+ g_type_add_interface_static (GTK_TYPE_WIDGET,
GOM_TYPE_EVENT_TARGET_INTERNAL, &target_internal_info);
+ g_type_add_interface_static (GTK_TYPE_WIDGET, GOM_TYPE_NODE,
&node_info);
+ g_type_add_interface_static (GTK_TYPE_WIDGET, GOM_TYPE_ELEMENT,
&element_info);
+ g_type_add_interface_static (GTK_TYPE_WIDGET,
GOM_TYPE_NODE_INTERNAL, &node_internal_info);
#define WIDGET(w) type ^= w;
#include "gomwidgets.c"
Added: trunk/gom/src/libgom/gomxhr.c
==============================================================================
--- (empty file)
+++ trunk/gom/src/libgom/gomxhr.c Sun Jul 20 20:13:11 2008
@@ -0,0 +1,213 @@
+/*
+The MIT License
+
+Copyright (c) 2008 jacob berkman <ja...@ilovegom.org>
+
+Permission is hereby granted, free of charge, to any person obtaining
a copy
+of this software and associated documentation files (the "Software"),
to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+#include "config.h"
+
+#include "gom/dom/gomxmlhttprequest.h"
+
+#include "gom/gomxhr.h"
+
+#include "gom/dom/gomeventtarget.h"
+#include "gom/dom/gomdomexception.h"
+
+#include "gommacros.h"
+
+enum {
+ PROP_ONREADYSTATECHANGE = 1,
+ PROP_READY_STATE,
+ PROP_RESPONSE_TEXT,
+ PROP_RESPONSE_XML,
+ PROP_STATUS,
+ PROP_STATUS_TEXT
+};
+
+typedef struct {
+ char f;
+} GomXhrPrivate;
+
+#define PRIV(i) G_TYPE_INSTANCE_GET_PRIVATE ((i), GOM_TYPE_XHR, GomXhrPrivate)
+
+static void
+gom_xhr_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ GomXhrPrivate *priv = PRIV (object);
+
+ switch (property_id) {
+ case PROP_ONREADYSTATECHANGE:
+ break;
+ case PROP_READY_STATE:
+ break;
+ case PROP_RESPONSE_TEXT:
+ break;
+ case PROP_RESPONSE_XML:
+ break;
+ case PROP_STATUS:
+ break;
+ case PROP_STATUS_TEXT:
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+
+static void
+gom_xhr_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ GomXhrPrivate *priv = PRIV (object);
+
+ switch (property_id) {
+ case PROP_ONREADYSTATECHANGE:
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+
+static GomEventTarget *
+gom_xhr_get_parent_target (GomEventTargetInternal *target)
+{
+ return NULL;
+}
+
+#define gom_xhr_dispatch_listeners gom_evt_tgt_dispatch_listeners
+
+static void
+gom_xhr_open (GomXMLHttpRequest *xml_http_request,
+ const char *method,
+ const char *url,
+ gboolean async,
+ const char *user,
+ const char *password,
+ GError **error)
+{GomXhrPrivate *priv = PRIV (xml_http_request);
+ GOM_NOT_IMPLEMENTED_ERROR (error);
+}
+
+static void
+gom_xhr_set_request_header (GomXMLHttpRequest *xml_http_request,
+ const char *header,
+ const char *value,
+ GError **error)
+{
+ GomXhrPrivate *priv = PRIV (xml_http_request);
+ GOM_NOT_IMPLEMENTED_ERROR (error);
+}
+
+static void
+gom_xhr_send (GomXMLHttpRequest *xml_http_request,
+ GError **error)
+{
+ GomXhrPrivate *priv = PRIV (xml_http_request);
+ GOM_NOT_IMPLEMENTED_ERROR (error);
+}
+
+static void
+gom_xhr_send_string (GomXMLHttpRequest *xml_http_request,
+ const char *data,
+ GError **error)
+{
+ GomXhrPrivate *priv = PRIV (xml_http_request);
+ GOM_NOT_IMPLEMENTED_ERROR (error);
+}
+
+static void
+gom_xhr_send_document (GomXMLHttpRequest *xml_http_request,
+ const GomDocument *doc,
+ GError **error)
+{
+ GomXhrPrivate *priv = PRIV (xml_http_request);
+ GOM_NOT_IMPLEMENTED_ERROR (error);
+}
+
+static void
+gom_xhr_abort (GomXMLHttpRequest *xml_http_request)
+{
+ GomXhrPrivate *priv = PRIV (xml_http_request);
+ GOM_NOT_IMPLEMENTED;
+}
+
+static char *
+gom_xhr_get_all_response_headers (const GomXMLHttpRequest *xml_http_request,
+ GError **error)
+{
+ GomXhrPrivate *priv = PRIV (xml_http_request);
+ GOM_NOT_IMPLEMENTED_ERROR (error);
+ return NULL;
+}
+
+static char *
+gom_xhr_get_response_header (const GomXMLHttpRequest *xml_http_request,
+ const char *header,
+ GError **error)
+{
+ GomXhrPrivate *priv = PRIV (xml_http_request);
+ GOM_NOT_IMPLEMENTED_ERROR (error);
+ return NULL;
+}
+
+GOM_IMPLEMENT (EVENT_TARGET_INTERNAL, event_target_internal, gom_xhr);
+GOM_IMPLEMENT (XML_HTTP_REQUEST, xml_http_request, gom_xhr);
+
+G_DEFINE_TYPE_WITH_CODE (GomXhr, gom_xhr, GOM_TYPE_EVT_TGT,
+ {
+ GOM_IMPLEMENT_INTERFACE
(EVENT_TARGET_INTERNAL, event_target_internal, gom_xhr);
+ GOM_IMPLEMENT_INTERFACE
(XML_HTTP_REQUEST, xml_http_request, gom_xhr);
+ });
+
+static void gom_xhr_init (GomXhr *xhr) { }
+
+static void
+gom_xhr_dispose (GObject *object)
+{
+ GomXhrPrivate *priv = PRIV (object);
+
+ G_OBJECT_CLASS (gom_xhr_parent_class)->dispose (object);
+}
+
+static void
+gom_xhr_class_init (GomXhrClass *klass)
+{
+ GObjectClass *oclass = G_OBJECT_CLASS (klass);
+
+ g_type_class_add_private (klass, sizeof (GomXhrPrivate));
+
+ oclass->dispose = gom_xhr_dispose;
+ oclass->get_property = gom_xhr_get_property;
+ oclass->set_property = gom_xhr_set_property;
+
+ g_object_class_override_property (oclass, PROP_ONREADYSTATECHANGE, "onreadystatechange");
+ g_object_class_override_property (oclass, PROP_READY_STATE, "ready-state");
+ g_object_class_override_property (oclass, PROP_RESPONSE_TEXT, "response-text");
+ g_object_class_override_property (oclass, PROP_RESPONSE_XML, "response-x-m-l");
+ g_object_class_override_property (oclass, PROP_STATUS, "status");
+ g_object_class_override_property (oclass, PROP_STATUS_TEXT, "status-text");
+}
+