summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@digia.com>2014-01-16 16:34:49 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-01-16 23:32:23 +0100
commitcf3e6a6af1bffc04a138cfa8b7adc8aed8f4e105 (patch)
tree4b9c04ee37b3f5517e4a9b34a4158f8cdc2619c3 /Source
parent1ca1ca150c8a362980bb11123d416ff136da155c (diff)
downloadqtwebkit-cf3e6a6af1bffc04a138cfa8b7adc8aed8f4e105.tar.gz
Make indexed database follow Qt web settings if enabled
Forwards the websettings for offline database storage which so far has been used for web SQL database to indexed database. Note that this does not add new API and does not make it possible to control web sql database and indexed database separately. The patch also adds a config test for leveldb which indexed db requires. Change-Id: I8808356c9910848c43c5f47e6279a1c632f17ad1 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'Source')
-rw-r--r--Source/WebCore/Target.pri1
-rw-r--r--Source/WebCore/platform/leveldb/LevelDBDatabase.cpp2
-rw-r--r--Source/WebKit/qt/Api/qwebsettings.cpp36
-rw-r--r--Source/WebKit/qt/Api/qwebsettings.h3
-rw-r--r--Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp2
5 files changed, 29 insertions, 15 deletions
diff --git a/Source/WebCore/Target.pri b/Source/WebCore/Target.pri
index bf34ea8fa..fc717b348 100644
--- a/Source/WebCore/Target.pri
+++ b/Source/WebCore/Target.pri
@@ -3087,6 +3087,7 @@ enable?(INDEXED_DATABASE) {
Modules/indexeddb/IDBKey.h \
Modules/indexeddb/IDBKeyPath.h \
Modules/indexeddb/IDBKeyRange.h \
+ Modules/indexeddb/IDBLevelDBCoding.h \
Modules/indexeddb/IDBObjectStore.h \
Modules/indexeddb/IDBObjectStoreBackendImpl.h \
Modules/indexeddb/IDBOpenDBRequest.h \
diff --git a/Source/WebCore/platform/leveldb/LevelDBDatabase.cpp b/Source/WebCore/platform/leveldb/LevelDBDatabase.cpp
index 33688e290..994d2c568 100644
--- a/Source/WebCore/platform/leveldb/LevelDBDatabase.cpp
+++ b/Source/WebCore/platform/leveldb/LevelDBDatabase.cpp
@@ -35,10 +35,10 @@
#include "LevelDBWriteBatch.h"
#include "Logging.h"
#include "NotImplemented.h"
-#include <helpers/memenv/memenv.h>
#include <leveldb/comparator.h>
#include <leveldb/db.h>
#include <leveldb/env.h>
+#include <leveldb/helpers/memenv.h>
#include <leveldb/slice.h>
#include <string>
#include <wtf/PassOwnPtr.h>
diff --git a/Source/WebKit/qt/Api/qwebsettings.cpp b/Source/WebKit/qt/Api/qwebsettings.cpp
index 242404055..f8e4d42ed 100644
--- a/Source/WebKit/qt/Api/qwebsettings.cpp
+++ b/Source/WebKit/qt/Api/qwebsettings.cpp
@@ -28,6 +28,7 @@
#include "FileSystem.h"
#include "FontCache.h"
#include "GCController.h"
+#include "GroupSettings.h"
#include "IconDatabase.h"
#include "Image.h"
#if ENABLE(ICONDATABASE)
@@ -67,8 +68,10 @@ QWEBKIT_EXPORT void qt_networkAccessAllowed(bool isAllowed)
class QWebSettingsPrivate {
public:
- QWebSettingsPrivate(WebCore::Settings* wcSettings = 0)
- : settings(wcSettings)
+ QWebSettingsPrivate(WebCore::Settings* wcSettings = 0, WebCore::GroupSettings* wcGroupSettings = 0)
+ : offlineStorageDefaultQuota(0)
+ , settings(wcSettings)
+ , groupSettings(wcGroupSettings)
{
}
@@ -79,11 +82,13 @@ public:
QString defaultTextEncoding;
QString localStoragePath;
QString offlineWebApplicationCachePath;
+ QString offlineDatabasePath;
QString mediaType;
qint64 offlineStorageDefaultQuota;
QWebSettings::ThirdPartyCookiePolicy thirdPartyCookiePolicy;
void apply();
WebCore::Settings* settings;
+ WebCore::GroupSettings* groupSettings;
};
Q_GLOBAL_STATIC(QList<QWebSettingsPrivate*>, allSettings);
@@ -237,12 +242,23 @@ void QWebSettingsPrivate::apply()
global->attributes.value(QWebSettings::PrintElementBackgrounds));
settings->setShouldPrintBackgrounds(value);
-#if ENABLE(SQL_DATABASE)
value = attributes.value(QWebSettings::OfflineStorageDatabaseEnabled,
global->attributes.value(QWebSettings::OfflineStorageDatabaseEnabled));
+#if ENABLE(SQL_DATABASE)
WebCore::DatabaseManager::manager().setIsAvailable(value);
#endif
+#if ENABLE(INDEXED_DATABASE)
+ QString path = !offlineDatabasePath.isEmpty() ? offlineDatabasePath : global->offlineDatabasePath;
+ Q_ASSERT(groupSettings);
+ // Setting the path to empty string disables persistent storage of the indexed database.
+ if (!value)
+ path = QString();
+ groupSettings->setIndexedDBDatabasePath(path);
+ qint64 quota = offlineStorageDefaultQuota ? offlineStorageDefaultQuota : global->offlineStorageDefaultQuota;
+ groupSettings->setIndexedDBQuotaBytes(quota);
+#endif
+
value = attributes.value(QWebSettings::OfflineWebApplicationCacheEnabled,
global->attributes.value(QWebSettings::OfflineWebApplicationCacheEnabled));
settings->setOfflineWebApplicationCacheEnabled(value);
@@ -564,10 +580,9 @@ QWebSettings::QWebSettings()
/*!
\internal
*/
-QWebSettings::QWebSettings(WebCore::Settings* settings)
- : d(new QWebSettingsPrivate(settings))
+QWebSettings::QWebSettings(WebCore::Settings* settings, WebCore::GroupSettings* groupSettings)
+ : d(new QWebSettingsPrivate(settings, groupSettings))
{
- d->settings = settings;
d->apply();
allSettings()->append(d);
}
@@ -1050,6 +1065,7 @@ void QWebSettings::resetAttribute(WebAttribute attr)
void QWebSettings::setOfflineStoragePath(const QString& path)
{
WebCore::initializeWebCoreQt();
+ QWebSettings::globalSettings()->d->offlineDatabasePath = path;
#if ENABLE(SQL_DATABASE)
WebCore::DatabaseManager::manager().setDatabaseDirectoryPath(path);
#endif
@@ -1066,11 +1082,7 @@ void QWebSettings::setOfflineStoragePath(const QString& path)
QString QWebSettings::offlineStoragePath()
{
WebCore::initializeWebCoreQt();
-#if ENABLE(SQL_DATABASE)
- return WebCore::DatabaseManager::manager().databaseDirectoryPath();
-#else
- return QString();
-#endif
+ return QWebSettings::globalSettings()->d->offlineDatabasePath;
}
/*!
@@ -1184,7 +1196,7 @@ void QWebSettings::setLocalStoragePath(const QString& path)
\since 4.6
Returns the path for HTML5 local storage.
-
+
\sa setLocalStoragePath()
*/
QString QWebSettings::localStoragePath() const
diff --git a/Source/WebKit/qt/Api/qwebsettings.h b/Source/WebKit/qt/Api/qwebsettings.h
index afffb2aec..cfc5bd542 100644
--- a/Source/WebKit/qt/Api/qwebsettings.h
+++ b/Source/WebKit/qt/Api/qwebsettings.h
@@ -28,6 +28,7 @@
#include <QtCore/qshareddata.h>
namespace WebCore {
+ class GroupSettings;
class Settings;
}
@@ -176,7 +177,7 @@ private:
Q_DISABLE_COPY(QWebSettings)
QWebSettings();
- QWebSettings(WebCore::Settings *settings);
+ QWebSettings(WebCore::Settings *settings, WebCore::GroupSettings *groupSettings);
~QWebSettings();
QWebSettingsPrivate *d;
diff --git a/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp b/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp
index 039c23218..96b1ac072 100644
--- a/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp
+++ b/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp
@@ -270,7 +270,7 @@ void QWebPageAdapter::initializeWebCorePage()
page->addLayoutMilestones(DidFirstVisuallyNonEmptyLayout);
- settings = new QWebSettings(page->settings());
+ settings = new QWebSettings(page->settings(), page->group().groupSettings());
#if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
WebCore::provideNotification(page, NotificationPresenterClientQt::notificationPresenter());