[Qt][WK2] Move non-api classes to WebKit namespace at WebKit2/UiProcess/qt
[WebKit-https.git] / Source / WebKit2 / UIProcess / qt / WebContextQt.cpp
1 /*
2  * Copyright (C) 2010 Apple Inc. All rights reserved.
3  * Copyright (C) 2010 University of Szeged
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS AS IS''
15  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
16  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
18  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
24  * THE POSSIBILITY OF SUCH DAMAGE.
25  */
26
27 #include "config.h"
28 #include "WebContext.h"
29
30 #include "ApplicationCacheStorage.h"
31 #include "FileSystem.h"
32 #include "WKSharedAPICast.h"
33 #if ENABLE(GEOLOCATION)
34 #include "WebGeolocationProviderQt.h"
35 #endif
36 #include "WebProcessCreationParameters.h"
37 #include <QCoreApplication>
38 #include <QStandardPaths>
39 #include <QDir>
40 #include <QProcess>
41
42 namespace WebKit {
43
44 static QString defaultDataLocation()
45 {
46     static QString s_dataLocation;
47
48     if (!s_dataLocation.isEmpty())
49         return s_dataLocation;
50
51     QString dataLocation = QStandardPaths::writableLocation(QStandardPaths::DataLocation);
52     if (dataLocation.isEmpty())
53         dataLocation = WebCore::pathByAppendingComponent(QDir::homePath(), QCoreApplication::applicationName());
54     s_dataLocation = WebCore::pathByAppendingComponent(dataLocation, ".QtWebKit/");
55     WebCore::makeAllDirectories(s_dataLocation);
56     return s_dataLocation;
57 }
58
59 static QString s_defaultDatabaseDirectory;
60 static QString s_defaultLocalStorageDirectory;
61
62 String WebContext::applicationCacheDirectory()
63 {
64     return WebCore::cacheStorage().cacheDirectory();
65 }
66
67 void WebContext::platformInitializeWebProcess(WebProcessCreationParameters& parameters)
68 {
69     qRegisterMetaType<QProcess::ExitStatus>("QProcess::ExitStatus");
70     parameters.cookieStorageDirectory = defaultDataLocation();
71 #if ENABLE(GEOLOCATION)
72     static WebGeolocationProviderQt* location = WebGeolocationProviderQt::create(toAPI(geolocationManagerProxy()));
73     WKGeolocationManagerSetProvider(toAPI(geolocationManagerProxy()), WebGeolocationProviderQt::provider(location));
74 #endif
75 }
76
77 void WebContext::platformInvalidateContext()
78 {
79 }
80
81 String WebContext::platformDefaultDatabaseDirectory() const
82 {
83     if (!s_defaultDatabaseDirectory.isEmpty())
84         return s_defaultDatabaseDirectory;
85
86     s_defaultDatabaseDirectory = defaultDataLocation() + QLatin1String("Databases");
87     QDir().mkpath(s_defaultDatabaseDirectory);
88     return s_defaultDatabaseDirectory;
89 }
90
91 String WebContext::platformDefaultIconDatabasePath() const
92 {
93     return defaultDataLocation() + QLatin1String("WebpageIcons.db");
94 }
95
96 String WebContext::platformDefaultLocalStorageDirectory() const
97 {
98     if (!s_defaultLocalStorageDirectory.isEmpty())
99         return s_defaultLocalStorageDirectory;
100
101     s_defaultLocalStorageDirectory = defaultDataLocation() + QLatin1String("LocalStorage");
102     QDir().mkpath(s_defaultLocalStorageDirectory);
103     return s_defaultLocalStorageDirectory;
104 }
105
106 } // namespace WebKit