summaryrefslogtreecommitdiff
path: root/Source/WebKit2/UIProcess/API/efl/ewk_settings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/UIProcess/API/efl/ewk_settings.cpp')
-rw-r--r--Source/WebKit2/UIProcess/API/efl/ewk_settings.cpp158
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;
+}