#include "config.h"
#include "WebContext.h"
#include "ApplicationCacheStorage.h"
#include "FileSystem.h"
#include "WKSharedAPICast.h"
#if ENABLE(GEOLOCATION)
#include "WebGeolocationProviderQt.h"
#endif
#include "WebProcessCreationParameters.h"
#include <QCoreApplication>
#include <QStandardPaths>
#include <QDir>
#include <QProcess>
namespace WebKit {
static QString defaultDataLocation()
{
static QString s_dataLocation;
if (!s_dataLocation.isEmpty())
return s_dataLocation;
QString dataLocation = QStandardPaths::writableLocation(QStandardPaths::DataLocation);
if (dataLocation.isEmpty())
dataLocation = WebCore::pathByAppendingComponent(QDir::homePath(), QCoreApplication::applicationName());
s_dataLocation = WebCore::pathByAppendingComponent(dataLocation, ".QtWebKit/");
WebCore::makeAllDirectories(s_dataLocation);
return s_dataLocation;
}
static QString s_defaultDatabaseDirectory;
static QString s_defaultLocalStorageDirectory;
String WebContext::applicationCacheDirectory()
{
return WebCore::cacheStorage().cacheDirectory();
}
void WebContext::platformInitializeWebProcess(WebProcessCreationParameters& parameters)
{
qRegisterMetaType<QProcess::ExitStatus>("QProcess::ExitStatus");
parameters.cookieStorageDirectory = defaultDataLocation();
#if ENABLE(GEOLOCATION)
static WebGeolocationProviderQt* location = WebGeolocationProviderQt::create(toAPI(geolocationManagerProxy()));
WKGeolocationManagerSetProvider(toAPI(geolocationManagerProxy()), WebGeolocationProviderQt::provider(location));
#endif
}
void WebContext::platformInvalidateContext()
{
}
String WebContext::platformDefaultDatabaseDirectory() const
{
if (!s_defaultDatabaseDirectory.isEmpty())
return s_defaultDatabaseDirectory;
s_defaultDatabaseDirectory = defaultDataLocation() + QLatin1String("Databases");
QDir().mkpath(s_defaultDatabaseDirectory);
return s_defaultDatabaseDirectory;
}
String WebContext::platformDefaultIconDatabasePath() const
{
return defaultDataLocation() + QLatin1String("WebpageIcons.db");
}
String WebContext::platformDefaultLocalStorageDirectory() const
{
if (!s_defaultLocalStorageDirectory.isEmpty())
return s_defaultLocalStorageDirectory;
s_defaultLocalStorageDirectory = defaultDataLocation() + QLatin1String("LocalStorage");
QDir().mkpath(s_defaultLocalStorageDirectory);
return s_defaultLocalStorageDirectory;
}
}