qwebpreferences.cpp [plain text]
#include "config.h"
#include "qwebpreferences_p.h"
#include "WKPageGroup.h"
#include "WKPreferences.h"
#include "WKPreferencesPrivate.h"
#include "WKRetainPtr.h"
#include "WKStringQt.h"
#include "qquickwebview_p_p.h"
#include "qwebpreferences_p_p.h"
QWebPreferences* QWebPreferencesPrivate::createPreferences(QQuickWebViewPrivate* webViewPrivate)
{
QWebPreferences* prefs = new QWebPreferences;
prefs->d->webViewPrivate = webViewPrivate;
prefs->d->initializeDefaultFontSettings();
return prefs;
}
bool QWebPreferencesPrivate::testAttribute(QWebPreferencesPrivate::WebAttribute attr) const
{
switch (attr) {
case AutoLoadImages:
return WKPreferencesGetLoadsImagesAutomatically(preferencesRef());
#if ENABLE(FULLSCREEN_API)
case FullScreenEnabled:
return WKPreferencesGetFullScreenEnabled(preferencesRef());
#endif
case JavascriptEnabled:
return WKPreferencesGetJavaScriptEnabled(preferencesRef());
case PluginsEnabled:
return WKPreferencesGetPluginsEnabled(preferencesRef());
case OfflineWebApplicationCacheEnabled:
return WKPreferencesGetOfflineWebApplicationCacheEnabled(preferencesRef());
case LocalStorageEnabled:
return WKPreferencesGetLocalStorageEnabled(preferencesRef());
case XSSAuditingEnabled:
return WKPreferencesGetXSSAuditorEnabled(preferencesRef());
case PrivateBrowsingEnabled:
return WKPreferencesGetPrivateBrowsingEnabled(preferencesRef());
case DnsPrefetchEnabled:
return WKPreferencesGetDNSPrefetchingEnabled(preferencesRef());
case FrameFlatteningEnabled:
return WKPreferencesGetFrameFlatteningEnabled(preferencesRef());
case DeveloperExtrasEnabled:
return WKPreferencesGetDeveloperExtrasEnabled(preferencesRef());
default:
ASSERT_NOT_REACHED();
return false;
}
}
void QWebPreferencesPrivate::setAttribute(QWebPreferencesPrivate::WebAttribute attr, bool enable)
{
switch (attr) {
case AutoLoadImages:
WKPreferencesSetLoadsImagesAutomatically(preferencesRef(), enable);
break;
#if ENABLE(FULLSCREEN_API)
case FullScreenEnabled:
WKPreferencesSetFullScreenEnabled(preferencesRef(), enable);
break;
#endif
case JavascriptEnabled:
WKPreferencesSetJavaScriptEnabled(preferencesRef(), enable);
break;
case PluginsEnabled:
WKPreferencesSetPluginsEnabled(preferencesRef(), enable);
break;
case OfflineWebApplicationCacheEnabled:
WKPreferencesSetOfflineWebApplicationCacheEnabled(preferencesRef(), enable);
break;
case LocalStorageEnabled:
WKPreferencesSetLocalStorageEnabled(preferencesRef(), enable);
break;
case XSSAuditingEnabled:
WKPreferencesSetXSSAuditorEnabled(preferencesRef(), enable);
break;
case PrivateBrowsingEnabled:
WKPreferencesSetPrivateBrowsingEnabled(preferencesRef(), enable);
break;
case DnsPrefetchEnabled:
WKPreferencesSetDNSPrefetchingEnabled(preferencesRef(), enable);
break;
case FrameFlatteningEnabled:
WKPreferencesSetFrameFlatteningEnabled(preferencesRef(), enable);
case DeveloperExtrasEnabled:
WKPreferencesSetDeveloperExtrasEnabled(preferencesRef(), enable);
break;
default:
ASSERT_NOT_REACHED();
}
}
void QWebPreferencesPrivate::initializeDefaultFontSettings()
{
setFontSize(MinimumFontSize, 0);
setFontSize(DefaultFontSize, 16);
setFontSize(DefaultFixedFontSize, 13);
QFont defaultFont;
defaultFont.setStyleHint(QFont::Serif);
setFontFamily(StandardFont, defaultFont.defaultFamily());
setFontFamily(SerifFont, defaultFont.defaultFamily());
defaultFont.setStyleHint(QFont::Fantasy);
setFontFamily(FantasyFont, defaultFont.defaultFamily());
defaultFont.setStyleHint(QFont::Cursive);
setFontFamily(CursiveFont, defaultFont.defaultFamily());
defaultFont.setStyleHint(QFont::SansSerif);
setFontFamily(SansSerifFont, defaultFont.defaultFamily());
defaultFont.setStyleHint(QFont::Monospace);
setFontFamily(FixedFont, defaultFont.defaultFamily());
}
void QWebPreferencesPrivate::setFontFamily(QWebPreferencesPrivate::FontFamily which, const QString& family)
{
switch (which) {
case StandardFont:
WKPreferencesSetStandardFontFamily(preferencesRef(), WKStringCreateWithQString(family));
break;
case FixedFont:
WKPreferencesSetFixedFontFamily(preferencesRef(), WKStringCreateWithQString(family));
break;
case SerifFont:
WKPreferencesSetSerifFontFamily(preferencesRef(), WKStringCreateWithQString(family));
break;
case SansSerifFont:
WKPreferencesSetSansSerifFontFamily(preferencesRef(), WKStringCreateWithQString(family));
break;
case CursiveFont:
WKPreferencesSetCursiveFontFamily(preferencesRef(), WKStringCreateWithQString(family));
break;
case FantasyFont:
WKPreferencesSetFantasyFontFamily(preferencesRef(), WKStringCreateWithQString(family));
break;
default:
break;
}
}
QString QWebPreferencesPrivate::fontFamily(QWebPreferencesPrivate::FontFamily which) const
{
switch (which) {
case StandardFont: {
WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopyStandardFontFamily(preferencesRef()));
return WKStringCopyQString(stringRef.get());
}
case FixedFont: {
WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopyFixedFontFamily(preferencesRef()));
return WKStringCopyQString(stringRef.get());
}
case SerifFont: {
WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopySerifFontFamily(preferencesRef()));
return WKStringCopyQString(stringRef.get());
}
case SansSerifFont: {
WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopySansSerifFontFamily(preferencesRef()));
return WKStringCopyQString(stringRef.get());
}
case CursiveFont: {
WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopyCursiveFontFamily(preferencesRef()));
return WKStringCopyQString(stringRef.get());
}
case FantasyFont: {
WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopyFantasyFontFamily(preferencesRef()));
return WKStringCopyQString(stringRef.get());
}
default:
return QString();
}
}
void QWebPreferencesPrivate::setFontSize(QWebPreferencesPrivate::FontSizeType type, unsigned size)
{
switch (type) {
case MinimumFontSize:
WKPreferencesSetMinimumFontSize(preferencesRef(), size);
break;
case DefaultFontSize:
WKPreferencesSetDefaultFontSize(preferencesRef(), size);
break;
case DefaultFixedFontSize:
WKPreferencesSetDefaultFixedFontSize(preferencesRef(), size);
break;
default:
ASSERT_NOT_REACHED();
}
}
unsigned QWebPreferencesPrivate::fontSize(QWebPreferencesPrivate::FontSizeType type) const
{
switch (type) {
case MinimumFontSize:
return WKPreferencesGetMinimumFontSize(preferencesRef());
case DefaultFontSize:
return WKPreferencesGetDefaultFontSize(preferencesRef());
case DefaultFixedFontSize:
return WKPreferencesGetDefaultFixedFontSize(preferencesRef());
default:
ASSERT_NOT_REACHED();
return false;
}
}
QWebPreferences::QWebPreferences()
: d(new QWebPreferencesPrivate)
{
}
QWebPreferences::~QWebPreferences()
{
delete d;
}
bool QWebPreferences::autoLoadImages() const
{
return d->testAttribute(QWebPreferencesPrivate::AutoLoadImages);
}
void QWebPreferences::setAutoLoadImages(bool enable)
{
d->setAttribute(QWebPreferencesPrivate::AutoLoadImages, enable);
emit autoLoadImagesChanged();
}
bool QWebPreferences::fullScreenEnabled() const
{
#if ENABLE(FULLSCREEN_API)
return d->testAttribute(QWebPreferencesPrivate::FullScreenEnabled);
#else
return false;
#endif
}
void QWebPreferences::setFullScreenEnabled(bool enable)
{
#if ENABLE(FULLSCREEN_API)
d->setAttribute(QWebPreferencesPrivate::FullScreenEnabled, enable);
emit fullScreenEnabledChanged();
#else
UNUSED_PARAM(enable);
#endif
}
bool QWebPreferences::javascriptEnabled() const
{
return d->testAttribute(QWebPreferencesPrivate::JavascriptEnabled);
}
void QWebPreferences::setJavascriptEnabled(bool enable)
{
d->setAttribute(QWebPreferencesPrivate::JavascriptEnabled, enable);
emit javascriptEnabledChanged();
}
bool QWebPreferences::pluginsEnabled() const
{
return d->testAttribute(QWebPreferencesPrivate::PluginsEnabled);
}
void QWebPreferences::setPluginsEnabled(bool enable)
{
d->setAttribute(QWebPreferencesPrivate::PluginsEnabled, enable);
emit pluginsEnabledChanged();
}
bool QWebPreferences::offlineWebApplicationCacheEnabled() const
{
return d->testAttribute(QWebPreferencesPrivate::OfflineWebApplicationCacheEnabled);
}
void QWebPreferences::setOfflineWebApplicationCacheEnabled(bool enable)
{
d->setAttribute(QWebPreferencesPrivate::OfflineWebApplicationCacheEnabled, enable);
emit offlineWebApplicationCacheEnabledChanged();
}
bool QWebPreferences::localStorageEnabled() const
{
return d->testAttribute(QWebPreferencesPrivate::LocalStorageEnabled);
}
void QWebPreferences::setLocalStorageEnabled(bool enable)
{
d->setAttribute(QWebPreferencesPrivate::LocalStorageEnabled, enable);
emit localStorageEnabledChanged();
}
bool QWebPreferences::xssAuditingEnabled() const
{
return d->testAttribute(QWebPreferencesPrivate::XSSAuditingEnabled);
}
void QWebPreferences::setXssAuditingEnabled(bool enable)
{
d->setAttribute(QWebPreferencesPrivate::XSSAuditingEnabled, enable);
emit xssAuditingEnabledChanged();
}
bool QWebPreferences::privateBrowsingEnabled() const
{
return d->testAttribute(QWebPreferencesPrivate::PrivateBrowsingEnabled);
}
void QWebPreferences::setPrivateBrowsingEnabled(bool enable)
{
d->setAttribute(QWebPreferencesPrivate::PrivateBrowsingEnabled, enable);
emit privateBrowsingEnabledChanged();
}
bool QWebPreferences::dnsPrefetchEnabled() const
{
return d->testAttribute(QWebPreferencesPrivate::DnsPrefetchEnabled);
}
void QWebPreferences::setDnsPrefetchEnabled(bool enable)
{
d->setAttribute(QWebPreferencesPrivate::DnsPrefetchEnabled, enable);
emit dnsPrefetchEnabledChanged();
}
bool QWebPreferences::developerExtrasEnabled() const
{
return d->testAttribute(QWebPreferencesPrivate::DeveloperExtrasEnabled);
}
void QWebPreferences::setDeveloperExtrasEnabled(bool enable)
{
d->setAttribute(QWebPreferencesPrivate::DeveloperExtrasEnabled, enable);
emit developerExtrasEnabledChanged();
}
bool QWebPreferences::navigatorQtObjectEnabled() const
{
return d->webViewPrivate->navigatorQtObjectEnabled();
}
void QWebPreferences::setNavigatorQtObjectEnabled(bool enable)
{
if (enable == navigatorQtObjectEnabled())
return;
d->webViewPrivate->setNavigatorQtObjectEnabled(enable);
emit navigatorQtObjectEnabledChanged();
}
bool QWebPreferences::frameFlatteningEnabled() const
{
return d->testAttribute(QWebPreferencesPrivate::FrameFlatteningEnabled);
}
void QWebPreferences::setFrameFlatteningEnabled(bool enable)
{
d->setAttribute(QWebPreferencesPrivate::FrameFlatteningEnabled, enable);
emit frameFlatteningEnabledChanged();
}
QString QWebPreferences::standardFontFamily() const
{
return d->fontFamily(QWebPreferencesPrivate::StandardFont);
}
void QWebPreferences::setStandardFontFamily(const QString& family)
{
d->setFontFamily(QWebPreferencesPrivate::StandardFont, family);
emit standardFontFamilyChanged();
}
QString QWebPreferences::fixedFontFamily() const
{
return d->fontFamily(QWebPreferencesPrivate::FixedFont);
}
void QWebPreferences::setFixedFontFamily(const QString& family)
{
d->setFontFamily(QWebPreferencesPrivate::FixedFont, family);
emit fixedFontFamilyChanged();
}
QString QWebPreferences::serifFontFamily() const
{
return d->fontFamily(QWebPreferencesPrivate::SerifFont);
}
void QWebPreferences::setSerifFontFamily(const QString& family)
{
d->setFontFamily(QWebPreferencesPrivate::SerifFont, family);
emit serifFontFamilyChanged();
}
QString QWebPreferences::sansSerifFontFamily() const
{
return d->fontFamily(QWebPreferencesPrivate::SansSerifFont);
}
void QWebPreferences::setSansSerifFontFamily(const QString& family)
{
d->setFontFamily(QWebPreferencesPrivate::SansSerifFont, family);
emit sansSerifFontFamilyChanged();
}
QString QWebPreferences::cursiveFontFamily() const
{
return d->fontFamily(QWebPreferencesPrivate::CursiveFont);
}
void QWebPreferences::setCursiveFontFamily(const QString& family)
{
d->setFontFamily(QWebPreferencesPrivate::CursiveFont, family);
emit cursiveFontFamilyChanged();
}
QString QWebPreferences::fantasyFontFamily() const
{
return d->fontFamily(QWebPreferencesPrivate::FantasyFont);
}
void QWebPreferences::setFantasyFontFamily(const QString& family)
{
d->setFontFamily(QWebPreferencesPrivate::FantasyFont, family);
emit fantasyFontFamilyChanged();
}
unsigned QWebPreferences::minimumFontSize() const
{
return d->fontSize(QWebPreferencesPrivate::MinimumFontSize);
}
void QWebPreferences::setMinimumFontSize(unsigned size)
{
d->setFontSize(QWebPreferencesPrivate::MinimumFontSize, size);
emit minimumFontSizeChanged();
}
unsigned QWebPreferences::defaultFontSize() const
{
return d->fontSize(QWebPreferencesPrivate::DefaultFontSize);
}
void QWebPreferences::setDefaultFontSize(unsigned size)
{
d->setFontSize(QWebPreferencesPrivate::DefaultFontSize, size);
emit defaultFontSizeChanged();
}
unsigned QWebPreferences::defaultFixedFontSize() const
{
return d->fontSize(QWebPreferencesPrivate::DefaultFixedFontSize);
}
void QWebPreferences::setDefaultFixedFontSize(unsigned size)
{
d->setFontSize(QWebPreferencesPrivate::DefaultFixedFontSize, size);
emit defaultFixedFontSizeChanged();
}
WKPreferencesRef QWebPreferencesPrivate::preferencesRef() const
{
WKPageGroupRef pageGroupRef = toAPI(webViewPrivate->webPageProxy->pageGroup());
return WKPageGroupGetPreferences(pageGroupRef);
}
QWebPreferencesPrivate* QWebPreferencesPrivate::get(QWebPreferences* preferences)
{
return preferences->d;
}