diff options
Diffstat (limited to 'Source/WebKit2/UIProcess/API/efl/ewk_settings.cpp')
-rw-r--r-- | Source/WebKit2/UIProcess/API/efl/ewk_settings.cpp | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_settings.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_settings.cpp index a1f51b8bc..803761168 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_settings.cpp +++ b/Source/WebKit2/UIProcess/API/efl/ewk_settings.cpp @@ -28,9 +28,47 @@ #include "ewk_settings_private.h" #include <WebKit2/WKPreferences.h> +#include <WebKit2/WKPreferencesPrivate.h> + +#if ENABLE(SPELLCHECK) +#include "WKTextChecker.h" +#include "WebKitTextChecker.h" +#include <Ecore.h> +#include <wtf/Vector.h> +#include <wtf/text/CString.h> +#endif using namespace WebKit; +#if ENABLE(SPELLCHECK) +static struct { + bool isContinuousSpellCheckingEnabled : 1; + Vector<String> spellCheckingLanguages; + Ewk_Settings_Continuous_Spell_Checking_Change_Cb onContinuousSpellChecking; +} ewkTextCheckerSettings = { false, Vector<String>(), 0 }; + +static Eina_Bool onContinuousSpellCheckingIdler(void*) +{ + if (ewkTextCheckerSettings.onContinuousSpellChecking) + ewkTextCheckerSettings.onContinuousSpellChecking(ewkTextCheckerSettings.isContinuousSpellCheckingEnabled); + + return ECORE_CALLBACK_CANCEL; +} + +static Eina_Bool spellCheckingLanguagesSetUpdate(void*) +{ + // FIXME: Consider to delegate calling of this method in WebProcess to do not delay/block UIProcess. + updateSpellCheckingLanguages(ewkTextCheckerSettings.spellCheckingLanguages); + return ECORE_CALLBACK_CANCEL; +} + +static void spellCheckingLanguagesSet(const Vector<String>& newLanguages) +{ + ewkTextCheckerSettings.spellCheckingLanguages = newLanguages; + ecore_idler_add(spellCheckingLanguagesSetUpdate, 0); +} +#endif // ENABLE(SPELLCHECK) + Eina_Bool ewk_settings_fullscreen_enabled_set(Ewk_Settings* settings, Eina_Bool enable) { #if ENABLE(FULLSCREEN_API) @@ -99,3 +137,123 @@ Eina_Bool ewk_settings_developer_extras_enabled_get(const Ewk_Settings* settings return WKPreferencesGetDeveloperExtrasEnabled(settings->preferences.get()); } + +Eina_Bool ewk_settings_file_access_from_file_urls_allowed_set(Ewk_Settings* settings, Eina_Bool enable) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false); + + WKPreferencesSetFileAccessFromFileURLsAllowed(settings->preferences.get(), enable); + + return true; +} + +Eina_Bool ewk_settings_file_access_from_file_urls_allowed_get(const Ewk_Settings* settings) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false); + + return WKPreferencesGetFileAccessFromFileURLsAllowed(settings->preferences.get()); +} + +Eina_Bool ewk_settings_frame_flattening_enabled_set(Ewk_Settings* settings, Eina_Bool enable) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false); + + WKPreferencesSetFrameFlatteningEnabled(settings->preferences.get(), enable); + + return true; +} + +Eina_Bool ewk_settings_frame_flattening_enabled_get(const Ewk_Settings* settings) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false); + + return WKPreferencesGetFrameFlatteningEnabled(settings->preferences.get()); +} + +Eina_Bool ewk_settings_dns_prefetching_enabled_set(Ewk_Settings* settings, Eina_Bool enable) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false); + + WKPreferencesSetDNSPrefetchingEnabled(settings->preferences.get(), enable); + + return true; +} + +Eina_Bool ewk_settings_dns_prefetching_enabled_get(const Ewk_Settings* settings) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false); + + return WKPreferencesGetDNSPrefetchingEnabled(settings->preferences.get()); +} + +void ewk_settings_continuous_spell_checking_change_cb_set(Ewk_Settings_Continuous_Spell_Checking_Change_Cb callback) +{ +#if ENABLE(SPELLCHECK) + ewkTextCheckerSettings.onContinuousSpellChecking = callback; +#endif +} + +Eina_Bool ewk_settings_continuous_spell_checking_enabled_get() +{ +#if ENABLE(SPELLCHECK) + return ewkTextCheckerSettings.isContinuousSpellCheckingEnabled; +#else + return false; +#endif +} + +void ewk_settings_continuous_spell_checking_enabled_set(Eina_Bool enable) +{ +#if ENABLE(SPELLCHECK) + enable = !!enable; + if (ewkTextCheckerSettings.isContinuousSpellCheckingEnabled != enable) { + ewkTextCheckerSettings.isContinuousSpellCheckingEnabled = enable; + + WKTextCheckerContinuousSpellCheckingEnabledStateChanged(enable); + + // Sets the default language if user didn't specify any. + if (enable && loadedSpellCheckingLanguages().isEmpty()) + spellCheckingLanguagesSet(Vector<String>()); + + if (ewkTextCheckerSettings.onContinuousSpellChecking) + ecore_idler_add(onContinuousSpellCheckingIdler, 0); + } +#endif +} + +Eina_List* ewk_settings_spell_checking_available_languages_get() +{ + Eina_List* listOflanguages = 0; +#if ENABLE(SPELLCHECK) + Vector<String> languages = availableSpellCheckingLanguages(); + size_t numberOfLanuages = languages.size(); + + for (size_t i = 0; i < numberOfLanuages; ++i) + listOflanguages = eina_list_append(listOflanguages, eina_stringshare_add(languages[i].utf8().data())); +#endif + return listOflanguages; +} + +void ewk_settings_spell_checking_languages_set(const char* languages) +{ +#if ENABLE(SPELLCHECK) + Vector<String> newLanguages; + String::fromUTF8(languages).split(',', newLanguages); + + spellCheckingLanguagesSet(newLanguages); +#endif +} + +Eina_List* ewk_settings_spell_checking_languages_get() +{ + Eina_List* listOflanguages = 0; +#if ENABLE(SPELLCHECK) + Vector<String> languages = loadedSpellCheckingLanguages(); + size_t numberOfLanuages = languages.size(); + + for (size_t i = 0; i < numberOfLanuages; ++i) + listOflanguages = eina_list_append(listOflanguages, eina_stringshare_add(languages[i].utf8().data())); + +#endif + return listOflanguages; +} |