9d9874de384e8b011ab929f0f21a2c74a9c65926
[WebKit-https.git] / Source / WebKit / WebProcess / InjectedBundle / API / gtk / DOM / WebKitDOMFile.cpp
1 /*
2  *  This file is part of the WebKit open source project.
3  *
4  *  This library is free software; you can redistribute it and/or
5  *  modify it under the terms of the GNU Library General Public
6  *  License as published by the Free Software Foundation; either
7  *  version 2 of the License, or (at your option) any later version.
8  *
9  *  This library is distributed in the hope that it will be useful,
10  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  *  Library General Public License for more details.
13  *
14  *  You should have received a copy of the GNU Library General Public License
15  *  along with this library; see the file COPYING.LIB.  If not, write to
16  *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17  *  Boston, MA 02110-1301, USA.
18  */
19
20 #include "config.h"
21 #include "WebKitDOMFile.h"
22
23 #include <WebCore/CSSImportRule.h>
24 #include "DOMObjectCache.h"
25 #include <WebCore/Document.h>
26 #include <WebCore/ExceptionCode.h>
27 #include <WebCore/JSMainThreadExecState.h>
28 #include "WebKitDOMBlobPrivate.h"
29 #include "WebKitDOMFilePrivate.h"
30 #include "WebKitDOMPrivate.h"
31 #include "ConvertToUTF8String.h"
32 #include <wtf/GetPtr.h>
33 #include <wtf/RefPtr.h>
34
35 namespace WebKit {
36
37 WebKitDOMFile* kit(WebCore::File* obj)
38 {
39     return WEBKIT_DOM_FILE(kit(static_cast<WebCore::Blob*>(obj)));
40 }
41
42 WebCore::File* core(WebKitDOMFile* request)
43 {
44     return request ? static_cast<WebCore::File*>(WEBKIT_DOM_OBJECT(request)->coreObject) : 0;
45 }
46
47 WebKitDOMFile* wrapFile(WebCore::File* coreObject)
48 {
49     ASSERT(coreObject);
50     return WEBKIT_DOM_FILE(g_object_new(WEBKIT_DOM_TYPE_FILE, "core-object", coreObject, nullptr));
51 }
52
53 } // namespace WebKit
54
55 G_DEFINE_TYPE(WebKitDOMFile, webkit_dom_file, WEBKIT_DOM_TYPE_BLOB)
56
57 enum {
58     PROP_0,
59     PROP_NAME,
60 };
61
62 static void webkit_dom_file_get_property(GObject* object, guint propertyId, GValue* value, GParamSpec* pspec)
63 {
64     WebKitDOMFile* self = WEBKIT_DOM_FILE(object);
65
66     switch (propertyId) {
67     case PROP_NAME:
68         g_value_take_string(value, webkit_dom_file_get_name(self));
69         break;
70     default:
71         G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyId, pspec);
72         break;
73     }
74 }
75
76 static void webkit_dom_file_class_init(WebKitDOMFileClass* requestClass)
77 {
78     GObjectClass* gobjectClass = G_OBJECT_CLASS(requestClass);
79     gobjectClass->get_property = webkit_dom_file_get_property;
80
81     g_object_class_install_property(
82         gobjectClass,
83         PROP_NAME,
84         g_param_spec_string(
85             "name",
86             "File:name",
87             "read-only gchar* File:name",
88             "",
89             WEBKIT_PARAM_READABLE));
90 }
91
92 static void webkit_dom_file_init(WebKitDOMFile* request)
93 {
94     UNUSED_PARAM(request);
95 }
96
97 gchar* webkit_dom_file_get_name(WebKitDOMFile* self)
98 {
99     WebCore::JSMainThreadNullState state;
100     g_return_val_if_fail(WEBKIT_DOM_IS_FILE(self), 0);
101     WebCore::File* item = WebKit::core(self);
102     gchar* result = convertToUTF8String(item->name());
103     return result;
104 }