Rename Source/WebKit2 to Source/WebKit.
[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/ExceptionCodeDescription.h>
28 #include <WebCore/JSMainThreadExecState.h>
29 #include "WebKitDOMBlobPrivate.h"
30 #include "WebKitDOMFilePrivate.h"
31 #include "WebKitDOMPrivate.h"
32 #include "ConvertToUTF8String.h"
33 #include <wtf/GetPtr.h>
34 #include <wtf/RefPtr.h>
35
36 namespace WebKit {
37
38 WebKitDOMFile* kit(WebCore::File* obj)
39 {
40     return WEBKIT_DOM_FILE(kit(static_cast<WebCore::Blob*>(obj)));
41 }
42
43 WebCore::File* core(WebKitDOMFile* request)
44 {
45     return request ? static_cast<WebCore::File*>(WEBKIT_DOM_OBJECT(request)->coreObject) : 0;
46 }
47
48 WebKitDOMFile* wrapFile(WebCore::File* coreObject)
49 {
50     ASSERT(coreObject);
51     return WEBKIT_DOM_FILE(g_object_new(WEBKIT_DOM_TYPE_FILE, "core-object", coreObject, nullptr));
52 }
53
54 } // namespace WebKit
55
56 G_DEFINE_TYPE(WebKitDOMFile, webkit_dom_file, WEBKIT_DOM_TYPE_BLOB)
57
58 enum {
59     PROP_0,
60     PROP_NAME,
61 };
62
63 static void webkit_dom_file_get_property(GObject* object, guint propertyId, GValue* value, GParamSpec* pspec)
64 {
65     WebKitDOMFile* self = WEBKIT_DOM_FILE(object);
66
67     switch (propertyId) {
68     case PROP_NAME:
69         g_value_take_string(value, webkit_dom_file_get_name(self));
70         break;
71     default:
72         G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyId, pspec);
73         break;
74     }
75 }
76
77 static void webkit_dom_file_class_init(WebKitDOMFileClass* requestClass)
78 {
79     GObjectClass* gobjectClass = G_OBJECT_CLASS(requestClass);
80     gobjectClass->get_property = webkit_dom_file_get_property;
81
82     g_object_class_install_property(
83         gobjectClass,
84         PROP_NAME,
85         g_param_spec_string(
86             "name",
87             "File:name",
88             "read-only gchar* File:name",
89             "",
90             WEBKIT_PARAM_READABLE));
91 }
92
93 static void webkit_dom_file_init(WebKitDOMFile* request)
94 {
95     UNUSED_PARAM(request);
96 }
97
98 gchar* webkit_dom_file_get_name(WebKitDOMFile* self)
99 {
100     WebCore::JSMainThreadNullState state;
101     g_return_val_if_fail(WEBKIT_DOM_IS_FILE(self), 0);
102     WebCore::File* item = WebKit::core(self);
103     gchar* result = convertToUTF8String(item->name());
104     return result;
105 }