1dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block/*
2dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Copyright (C) 2008 Luke Kenneth Casson Leighton <lkcl@lkcl.net>
3dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Copyright (C) 2008 Martin Soto <soto@freedesktop.org>
4dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Copyright (C) 2008 Alp Toker <alp@atoker.com>
5dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Copyright (C) 2008 Apple Inc.
6dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Copyright (C) 2009 Igalia S.L.
7dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block */
8dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include "config.h"
9dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include "WebKitDOMObject.h"
10dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
11dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include "glib-object.h"
12dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include "WebKitDOMBinding.h"
13dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
14ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Blockenum {
15ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    PROP_0,
16ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    PROP_CORE_OBJECT
17ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block};
18ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
19dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockG_DEFINE_TYPE(WebKitDOMObject, webkit_dom_object, G_TYPE_OBJECT);
20dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
21dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockstatic void webkit_dom_object_init(WebKitDOMObject* object)
22dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{
23dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block}
24dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
25ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Blockstatic void webkit_dom_object_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec)
26ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block{
27ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    switch (prop_id) {
28ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    default:
29ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
30ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block        break;
31ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    }
32ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block}
33ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
34ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Blockstatic void webkit_dom_object_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec)
35ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block{
36ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    switch (prop_id) {
37ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    case PROP_CORE_OBJECT:
38ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block        WEBKIT_DOM_OBJECT(object)->coreObject = g_value_get_pointer(value);
39ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block        break;
40ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    default:
41ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
42ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block        break;
43ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    }
44ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block}
45ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
46dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockstatic void webkit_dom_object_class_init(WebKitDOMObjectClass* klass)
47dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{
48ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    GObjectClass* gobjectClass = G_OBJECT_CLASS(klass);
49ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    gobjectClass->set_property = webkit_dom_object_set_property;
50ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    gobjectClass->get_property = webkit_dom_object_get_property;
51ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
52ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    g_object_class_install_property(gobjectClass,
53ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block                                    PROP_CORE_OBJECT,
54ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block                                    g_param_spec_pointer("core-object",
55ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block                                                         "Core Object",
56ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block                                                         "The WebCore object the WebKitDOMObject wraps",
57ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block                                                         static_cast<GParamFlags>(G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)));
58dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block}
59dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
60