f32ba48a0eb9f77c5b0c11721b4be729e01a5afd
[WebKit-https.git] / WebKit / gtk / webkit / webkitprivate.cpp
1 /*
2  * Copyright (C) 2007 Holger Hans Peter Freyther
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
22 #include "webkitprivate.h"
23 #include "ChromeClientGtk.h"
24 #include "FrameLoader.h"
25 #include "FrameLoaderClientGtk.h"
26 #include "Logging.h"
27 #include "NotImplemented.h"
28 #include "Pasteboard.h"
29 #include "PasteboardHelperGtk.h"
30 #include "Threading.h"
31
32 #if ENABLE(DATABASE)
33 #include "DatabaseTracker.h"
34 #endif
35
36 using namespace WebCore;
37
38 namespace WebKit {
39
40 WebKitWebView* getViewFromFrame(WebKitWebFrame* frame)
41 {
42     WebKitWebFramePrivate* priv = frame->priv;
43     return priv->webView;
44 }
45
46 WebCore::Frame* core(WebKitWebFrame* frame)
47 {
48     if (!frame)
49         return 0;
50
51     WebKitWebFramePrivate* priv = frame->priv;
52     return priv ? priv->coreFrame.get() : 0;
53 }
54
55 WebKitWebFrame* kit(WebCore::Frame* coreFrame)
56 {
57     if (!coreFrame)
58         return 0;
59
60     ASSERT(coreFrame->loader());
61     WebKit::FrameLoaderClient* client = static_cast<WebKit::FrameLoaderClient*>(coreFrame->loader()->client());
62     return client ? client->webFrame() : 0;
63 }
64
65 WebCore::Page* core(WebKitWebView* webView)
66 {
67     if (!webView)
68         return 0;
69
70     WebKitWebViewPrivate* priv = webView->priv;
71     return priv ? priv->corePage : 0;
72 }
73
74 WebKitWebView* kit(WebCore::Page* corePage)
75 {
76     if (!corePage)
77         return 0;
78
79     ASSERT(corePage->chrome());
80     WebKit::ChromeClient* client = static_cast<WebKit::ChromeClient*>(corePage->chrome()->client());
81     return client ? client->webView() : 0;
82 }
83
84 } /** end namespace WebCore */
85
86 void webkit_init()
87 {
88     static bool isInitialized = false;
89     if (isInitialized)
90         return;
91     isInitialized = true;
92
93     WebCore::initializeThreading();
94     WebCore::InitializeLoggingChannelsIfNecessary();
95
96 #if ENABLE(DATABASE)
97     // FIXME: It should be possible for client applications to override this default location
98     gchar* databaseDirectory = g_build_filename(g_get_user_data_dir(), "webkit", "databases", NULL);
99     WebCore::DatabaseTracker::tracker().setDatabaseDirectoryPath(databaseDirectory);
100     g_free(databaseDirectory);
101 #endif
102
103     Pasteboard::generalPasteboard()->setHelper(new WebKit::PasteboardHelperGtk());
104 }