qwkpreferences.cpp revision 65f03d4f644ce73618e5f4f50dd694b26f55ae12
165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch/*
265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    This library is free software; you can redistribute it and/or
565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    modify it under the terms of the GNU Library General Public
665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    License as published by the Free Software Foundation; either
765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    version 2 of the License, or (at your option) any later version.
865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    This library is distributed in the hope that it will be useful,
1065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    but WITHOUT ANY WARRANTY; without even the implied warranty of
1165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    Library General Public License for more details.
1365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
1465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    You should have received a copy of the GNU Library General Public License
1565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    along with this library; see the file COPYING.LIB.  If not, write to
1665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
1765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    Boston, MA 02110-1301, USA.
1865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch*/
1965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
2065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "qwkpreferences.h"
2165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
2265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WKPageGroup.h"
2365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WKPreferences.h"
2465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WKStringQt.h"
2565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WKRetainPtr.h"
2665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "qwkpreferences_p.h"
2765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
2865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
2965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochQWKPreferences* QWKPreferencesPrivate::createPreferences(WKPageGroupRef pageGroupRef)
3065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
3165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    QWKPreferences* prefs = new QWKPreferences;
3265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    prefs->d->ref = WKPageGroupGetPreferences(pageGroupRef);
3365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    return prefs;
3465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
3565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
3665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochQWKPreferences* QWKPreferencesPrivate::createSharedPreferences()
3765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
3865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    QWKPreferences* prefs = new QWKPreferences;
3965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    prefs->d->ref = WKPreferencesCreate();
4065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    return prefs;
4165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
4265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
4365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochQWKPreferences* QWKPreferences::sharedPreferences()
4465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
4565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    static QWKPreferences* instance = 0;
4665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
4765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    if (!instance)
4865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        instance = QWKPreferencesPrivate::createSharedPreferences();
4965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    return instance;
5065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
5165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
5265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochQWKPreferences::QWKPreferences()
5365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    : d(new QWKPreferencesPrivate)
5465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
5565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
5665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
5765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochQWKPreferences::~QWKPreferences()
5865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
5965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    delete d;
6065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
6165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
6265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid QWKPreferences::setFontFamily(FontFamily which, const QString& family)
6365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
6465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    switch (which) {
6565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case StandardFont:
6665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        WKPreferencesSetStandardFontFamily(d->ref, WKStringCreateWithQString(family));
6765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        break;
6865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case FixedFont:
6965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        WKPreferencesSetFixedFontFamily(d->ref, WKStringCreateWithQString(family));
7065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        break;
7165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case SerifFont:
7265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        WKPreferencesSetSerifFontFamily(d->ref, WKStringCreateWithQString(family));
7365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        break;
7465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case SansSerifFont:
7565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        WKPreferencesSetSansSerifFontFamily(d->ref, WKStringCreateWithQString(family));
7665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        break;
7765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case CursiveFont:
7865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        WKPreferencesSetCursiveFontFamily(d->ref, WKStringCreateWithQString(family));
7965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        break;
8065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case FantasyFont:
8165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        WKPreferencesSetFantasyFontFamily(d->ref, WKStringCreateWithQString(family));
8265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        break;
8365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    default:
8465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        break;
8565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    }
8665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
8765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
8865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochQString QWKPreferences::fontFamily(FontFamily which) const
8965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
9065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    switch (which) {
9165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case StandardFont: {
9265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopyStandardFontFamily(d->ref));
9365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return WKStringCopyQString(stringRef.get());
9465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    }
9565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case FixedFont: {
9665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopyFixedFontFamily(d->ref));
9765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return WKStringCopyQString(stringRef.get());
9865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    }
9965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case SerifFont: {
10065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopySerifFontFamily(d->ref));
10165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return WKStringCopyQString(stringRef.get());
10265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    }
10365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case SansSerifFont: {
10465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopySansSerifFontFamily(d->ref));
10565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return WKStringCopyQString(stringRef.get());
10665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    }
10765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case CursiveFont: {
10865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopyCursiveFontFamily(d->ref));
10965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return WKStringCopyQString(stringRef.get());
11065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    }
11165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case FantasyFont: {
11265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopyFantasyFontFamily(d->ref));
11365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return WKStringCopyQString(stringRef.get());
11465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    }
11565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    default:
11665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return QString();
11765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    }
11865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
11965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
12065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochbool QWKPreferences::testAttribute(WebAttribute attr) const
12165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
12265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    switch (attr) {
12365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case AutoLoadImages:
12465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return WKPreferencesGetLoadsImagesAutomatically(d->ref);
12565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case JavascriptEnabled:
12665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return WKPreferencesGetJavaScriptEnabled(d->ref);
12765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case PluginsEnabled:
12865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return WKPreferencesGetPluginsEnabled(d->ref);
12965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case OfflineWebApplicationCacheEnabled:
13065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return WKPreferencesGetOfflineWebApplicationCacheEnabled(d->ref);
13165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case LocalStorageEnabled:
13265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return WKPreferencesGetLocalStorageEnabled(d->ref);
13365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case XSSAuditingEnabled:
13465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return WKPreferencesGetXSSAuditorEnabled(d->ref);
13565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case FrameFlatteningEnabled:
13665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return WKPreferencesGetFrameFlatteningEnabled(d->ref);
13765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case PrivateBrowsingEnabled:
13865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return WKPreferencesGetPrivateBrowsingEnabled(d->ref);
13965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case DeveloperExtrasEnabled:
14065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return WKPreferencesGetDeveloperExtrasEnabled(d->ref);
14165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case DnsPrefetchEnabled:
14265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return WKPreferencesGetDNSPrefetchingEnabled(d->ref);
14365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    default:
14465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        ASSERT_NOT_REACHED();
14565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return false;
14665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    }
14765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
14865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
14965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid QWKPreferences::setAttribute(WebAttribute attr, bool on)
15065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
15165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    switch (attr) {
15265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case AutoLoadImages:
15365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        WKPreferencesSetLoadsImagesAutomatically(d->ref, on);
15465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        break;
15565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case JavascriptEnabled:
15665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        WKPreferencesSetJavaScriptEnabled(d->ref, on);
15765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        break;
15865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case PluginsEnabled:
15965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        WKPreferencesSetPluginsEnabled(d->ref, on);
16065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        break;
16165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case OfflineWebApplicationCacheEnabled:
16265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        WKPreferencesSetOfflineWebApplicationCacheEnabled(d->ref, on);
16365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        break;
16465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case LocalStorageEnabled:
16565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        WKPreferencesSetLocalStorageEnabled(d->ref, on);
16665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        break;
16765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case XSSAuditingEnabled:
16865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        WKPreferencesSetXSSAuditorEnabled(d->ref, on);
16965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        break;
17065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case FrameFlatteningEnabled:
17165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        WKPreferencesSetFrameFlatteningEnabled(d->ref, on);
17265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        break;
17365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case PrivateBrowsingEnabled:
17465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        WKPreferencesSetPrivateBrowsingEnabled(d->ref, on);
17565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        break;
17665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case DeveloperExtrasEnabled:
17765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        WKPreferencesSetDeveloperExtrasEnabled(d->ref, on);
17865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        break;
17965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case DnsPrefetchEnabled:
18065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        WKPreferencesSetDNSPrefetchingEnabled(d->ref, on);
18165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        break;
18265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    default:
18365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        ASSERT_NOT_REACHED();
18465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    }
18565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
186