void QtWebKitWebBackend::optionChanged(const QString &option)
{
	if (option == QLatin1String("Cache/PagesInMemoryLimit"))
	{
		QWebSettings::setMaximumPagesInCache(SettingsManager::getValue(QLatin1String("Cache/PagesInMemoryLimit")).toInt());
	}

	if (!(option.startsWith(QLatin1String("Browser/")) || option.startsWith(QLatin1String("Content/"))))
	{
		return;
	}

	QWebSettings *globalSettings = QWebSettings::globalSettings();
	globalSettings->setAttribute(QWebSettings::DnsPrefetchEnabled, true);
	globalSettings->setAttribute(QWebSettings::DeveloperExtrasEnabled, true);
	globalSettings->setAttribute(QWebSettings::AutoLoadImages, SettingsManager::getValue(QLatin1String("Browser/EnableImages")).toBool());
	globalSettings->setAttribute(QWebSettings::PluginsEnabled, SettingsManager::getValue(QLatin1String("Browser/EnablePlugins")).toString() != QLatin1String("disabled"));
	globalSettings->setAttribute(QWebSettings::JavaEnabled, SettingsManager::getValue(QLatin1String("Browser/EnableJava")).toBool());
	globalSettings->setAttribute(QWebSettings::JavascriptEnabled, SettingsManager::getValue(QLatin1String("Browser/EnableJavaScript")).toBool());
	globalSettings->setAttribute(QWebSettings::JavascriptCanAccessClipboard, SettingsManager::getValue(QLatin1String("Browser/JavaScriptCanAccessClipboard")).toBool());
	globalSettings->setAttribute(QWebSettings::JavascriptCanCloseWindows, true);
	globalSettings->setAttribute(QWebSettings::JavascriptCanOpenWindows, SettingsManager::getValue(QLatin1String("Browser/JavaScriptCanOpenWindows")).toBool());
	globalSettings->setAttribute(QWebSettings::LocalStorageEnabled, SettingsManager::getValue(QLatin1String("Browser/EnableLocalStorage")).toBool());
	globalSettings->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, SettingsManager::getValue(QLatin1String("Browser/EnableOfflineStorageDatabase")).toBool());
	globalSettings->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled, SettingsManager::getValue(QLatin1String("Browser/EnableOfflineWebApplicationCache")).toBool());
	globalSettings->setAttribute(QWebSettings::ZoomTextOnly, SettingsManager::getValue(QLatin1String("Content/ZoomTextOnly")).toBool());
	globalSettings->setFontSize(QWebSettings::DefaultFontSize, SettingsManager::getValue(QLatin1String("Content/DefaultFontSize")).toInt());
	globalSettings->setFontSize(QWebSettings::DefaultFixedFontSize, SettingsManager::getValue(QLatin1String("Content/DefaultFixedFontSize")).toInt());
	globalSettings->setFontSize(QWebSettings::MinimumFontSize, SettingsManager::getValue(QLatin1String("Content/MinimumFontSize")).toInt());
	globalSettings->setFontFamily(QWebSettings::StandardFont, SettingsManager::getValue(QLatin1String("Content/StandardFont")).toString());
	globalSettings->setFontFamily(QWebSettings::FixedFont, SettingsManager::getValue(QLatin1String("Content/FixedFont")).toString());
	globalSettings->setFontFamily(QWebSettings::SerifFont, SettingsManager::getValue(QLatin1String("Content/SerifFont")).toString());
	globalSettings->setFontFamily(QWebSettings::SansSerifFont, SettingsManager::getValue(QLatin1String("Content/SansSerifFont")).toString());
	globalSettings->setFontFamily(QWebSettings::CursiveFont, SettingsManager::getValue(QLatin1String("Content/CursiveFont")).toString());
	globalSettings->setFontFamily(QWebSettings::FantasyFont, SettingsManager::getValue(QLatin1String("Content/FantasyFont")).toString());
	globalSettings->setOfflineStorageDefaultQuota(SettingsManager::getValue(QLatin1String("Browser/OfflineStorageLimit")).toInt() * 1024);
	globalSettings->setOfflineWebApplicationCacheQuota(SettingsManager::getValue(QLatin1String("Content/OfflineWebApplicationCacheLimit")).toInt() * 1024);
}
Esempio n. 2
0
static void configureHtml5OfflineStorage()
{
    BEDROCK_PROVISIONING::BedrockProvisioning * provisioning =
        BEDROCK_PROVISIONING::BedrockProvisioning::createBedrockProvisioning();

    QWebSettings * globalSettings = QWebSettings::globalSettings();

    // Enable all kinds of persistent storage, then fine-tune using
    // bedrock provisioning attributes.

    QWebSettings::enablePersistentStorage();

    // Local and database storage (using the global javascript localStorage
    // and openDatabase items) is shared across pages and browser invocations,
    // but it tied to the domain of the page in which the javascript code is
    // running.  This allows webpages hosted at, say, cnn.com to store data
    // using the same keys as webpages hosted at bbc.co.uk without conflict.
    //
    // Note that local and database storage is persisted in directories
    // beneath the application's private directory, so it is not shared
    // with other browsers.

    bool localStorageEnabled =
        provisioning->valueAsInt("Html5LocalStorage") != 0;

    bool databaseStorageEnabled =
        provisioning->valueAsInt("Html5DatabaseStorage") != 0;

    globalSettings->setAttribute(
                QWebSettings::LocalStorageEnabled,
                localStorageEnabled);

    globalSettings->setAttribute(
                QWebSettings::OfflineStorageDatabaseEnabled,
                databaseStorageEnabled);

    // There is no separate QWebSettings method to configure
    // the default quota for local storage databases.
    // It appears that both local storage and database storage
    // use the same default quota.

    if (localStorageEnabled || databaseStorageEnabled) {
        globalSettings->setOfflineStorageDefaultQuota(
                provisioning->valueAsInt64("Html5DatabaseStorageMaxSize"));
    }

    // The application cache allows websites to specify a manifest file in
    // the outermost <html> element.  The manifest file defines which files
    // may be stored at the client and used when the network is inaccessible.
    //
    // Webkit stores the application cache in a single SQLite database
    // named ApplicationCache.db.  By default this database is located
    // in the application's private directory, so it is not shared with
    // other browsers.

    bool applicationCacheEnabled =
        provisioning->valueAsInt("Html5ApplicationCache") != 0;

    globalSettings->setAttribute(
                QWebSettings::OfflineWebApplicationCacheEnabled,
                applicationCacheEnabled);

    if (applicationCacheEnabled) {
        globalSettings->setOfflineWebApplicationCacheQuota(
                provisioning->valueAsInt64("Html5ApplicationCacheMaxSize"));
    }
}