1 // Copyright 2013 Samsung Electronics. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "ewk_settings.h"
8 #include "ui/events/gesture_detection/gesture_configuration.h"
9 #include "text_encoding_map_efl.h"
10 #include "private/ewk_private.h"
11 #include "private/ewk_private.h"
12 #include "private/ewk_settings_private.h"
13 #include "private/ewk_view_private.h"
14 #include "tizen/system_info.h"
18 void ewkUpdateWebkitPreferences(Evas_Object *ewkView)
20 EWebView* impl = EWebView::FromEvasObject(ewkView);
23 bool autoSelectWord = ewk_settings_select_word_automatically_get(impl->GetSettings());
24 // TODO(sns.park) : remove dependency to chromium internals
26 #if !defined(EWK_BRINGUP) // FIXME: m67 bringup
27 ui::GestureConfiguration::set_double_tap_to_zoom_enabled(false);
31 #if !defined(EWK_BRINGUP) // FIXME: m67 bringup
32 ui::GestureConfiguration::set_double_tap_to_zoom_enabled(true);
35 impl->UpdateWebKitPreferences();
40 Eina_Bool ewk_settings_fullscreen_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
42 #if !defined(EWK_BRINGUP) // FIXME: m67 bringup
43 #pragma message "[M38] fullscreen_enabled flag has been deleted from webpreference.h"
44 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
45 settings->getPreferences().fullscreen_enabled = enable;
46 ewkUpdateWebkitPreferences(settings->getEvasObject());
53 Eina_Bool ewk_settings_fullscreen_enabled_get(const Ewk_Settings* settings)
55 #if !defined(EWK_BRINGUP) // FIXME: m67 bringup
56 #pragma message "[M38] fullscreen_enabled flag has been deleted from webpreference.h"
57 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
58 return settings->getPreferences().fullscreen_enabled;
64 Eina_Bool ewk_settings_javascript_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
66 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
67 settings->getPreferences().javascript_enabled = enable;
68 ewkUpdateWebkitPreferences(settings->getEvasObject());
72 Eina_Bool ewk_settings_javascript_enabled_get(const Ewk_Settings* settings)
74 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
75 return settings->getPreferences().javascript_enabled;
78 Eina_Bool ewk_settings_loads_images_automatically_set(Ewk_Settings* settings, Eina_Bool automatic)
80 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
81 settings->getPreferences().loads_images_automatically = automatic;
82 settings->getPreferences().images_enabled = automatic;
83 ewkUpdateWebkitPreferences(settings->getEvasObject());
87 Eina_Bool ewk_settings_loads_images_automatically_get(const Ewk_Settings* settings)
89 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
90 return settings->getPreferences().loads_images_automatically;
93 Eina_Bool ewk_settings_plugins_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
95 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
96 settings->getPreferences().plugins_enabled = enable;
97 ewkUpdateWebkitPreferences(settings->getEvasObject());
101 Eina_Bool ewk_settings_plugins_enabled_get(const Ewk_Settings* settings)
103 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
104 return settings->getPreferences().plugins_enabled;
107 Eina_Bool ewk_settings_auto_fitting_set(Ewk_Settings* settings, Eina_Bool enable)
109 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
110 settings->getPreferencesEfl().shrinks_viewport_content_to_fit = enable;
111 ewkUpdateWebkitPreferences(settings->getEvasObject());
115 Eina_Bool ewk_settings_auto_fitting_get(const Ewk_Settings* settings)
117 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
118 return settings->getPreferencesEfl().shrinks_viewport_content_to_fit;
121 Eina_Bool ewk_settings_force_zoom_set(Ewk_Settings* settings, Eina_Bool enable)
123 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
124 #if !defined(EWK_BRINGUP) // FIXME: m67 bringup
125 settings->getPreferences().force_enable_zoom = enable;
127 ewkUpdateWebkitPreferences(settings->getEvasObject());
131 Eina_Bool ewk_settings_force_zoom_get(const Ewk_Settings* settings)
133 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
134 #if !defined(EWK_BRINGUP) // FIXME: m67 bringup
135 return settings->getPreferences().force_enable_zoom;
141 Eina_Bool ewk_settings_font_default_size_set(Ewk_Settings* settings, int size)
143 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
144 settings->getPreferences().default_font_size = size;
145 ewkUpdateWebkitPreferences(settings->getEvasObject());
149 int ewk_settings_font_default_size_get(const Ewk_Settings* settings)
151 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
152 return settings->getPreferences().default_font_size;
155 Eina_Bool ewk_settings_scripts_window_open_set(Ewk_Settings* settings, Eina_Bool allow)
157 return ewk_settings_scripts_can_open_windows_set(settings, allow);
160 Eina_Bool ewk_settings_scripts_window_open_get(const Ewk_Settings* settings)
162 return ewk_settings_scripts_can_open_windows_get(settings);
165 Eina_Bool ewk_settings_compositing_borders_visible_set(Ewk_Settings* settings, Eina_Bool enable)
168 This API is impossible to implement in same manner as it was in webkit-efl
169 for few reasons: chromium made compositing-borders-visible setting global - it
170 is either enabled or disabled for whole process, it requires application restart
171 because it is controled by command line switch. It must be provided before
172 spawning any renderer/zygote processes
175 LOG_EWK_API_MOCKUP("Not implement by difference of webkit2 and chromium's behavior");
179 Eina_Bool ewk_settings_default_encoding_set(Ewk_Settings* settings, const char* encoding)
181 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
182 EINA_SAFETY_ON_NULL_RETURN_VAL(encoding, false);
183 settings->getPreferences().default_encoding = std::string(encoding);
184 ewkUpdateWebkitPreferences(settings->getEvasObject());
188 Eina_Bool ewk_settings_is_encoding_valid(const char* encoding)
190 return TextEncodingMapEfl::GetInstance()->isTextEncodingValid(encoding);
193 const char* ewk_settings_default_encoding_get(const Ewk_Settings* settings)
195 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, 0);
196 return settings->getPreferences().default_encoding.c_str();
199 Eina_Bool ewk_settings_private_browsing_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
201 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
202 EWebView* impl = EWebView::FromEvasObject(settings->getEvasObject());
203 return impl->SetPrivateBrowsing(enable);
206 Eina_Bool ewk_settings_private_browsing_enabled_get(const Ewk_Settings* settings)
208 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
209 EWK_VIEW_IMPL_GET_OR_RETURN(const_cast<Ewk_Settings *>(settings)->getEvasObject(), webview, EINA_FALSE);
210 return webview->GetPrivateBrowsing();
213 Eina_Bool ewk_settings_editable_link_behavior_set(Ewk_Settings* settings, Ewk_Editable_Link_Behavior behavior)
215 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
216 #if !defined(EWK_BRINGUP) // FIXME: m67 bringup
217 settings->getPreferences().editable_link_behavior = static_cast<webkit_glue::EditableLinkBehavior>(behavior);
219 ewkUpdateWebkitPreferences(settings->getEvasObject());
223 Eina_Bool ewk_settings_load_remote_images_set(Ewk_Settings* settings, Eina_Bool loadRemoteImages)
225 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
226 // FIXME: To be implemented when the functionality is required.
227 // To be added in WebkitPreferences -> WebSettings -> Settings
228 settings->setLoadRemoteImages(loadRemoteImages);
232 Eina_Bool ewk_settings_load_remote_images_get(const Ewk_Settings* settings)
234 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
235 // FIXME: To be implemented when the functionality is required.
236 // To be added in WebkitPreferences -> WebSettings -> Settings
237 return settings->loadRemoteImages();
240 Eina_Bool ewk_settings_scan_malware_enabled_set(Ewk_Settings* settings, Eina_Bool scanMalwareEnabled)
242 // API is postponed. Possibly chromium's mechanism may be reused.
243 LOG_EWK_API_MOCKUP("Not Supported yet");
247 Eina_Bool ewk_settings_spdy_enabled_set(Ewk_Settings* settings, Eina_Bool spdyEnabled)
249 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, EINA_FALSE);
250 settings->setSpdyEnabled(spdyEnabled);
255 Eina_Bool ewk_settings_performance_features_enabled_set(Ewk_Settings* settings, Eina_Bool spdyEnabled)
259 // This function was used to set some libsoup settings.
260 // Chromium doesn't use libsoup.
261 LOG_EWK_API_MOCKUP("Not Supported by chromium");
265 void ewk_settings_link_magnifier_enabled_set(Ewk_Settings* settings, Eina_Bool enabled)
267 EINA_SAFETY_ON_NULL_RETURN(settings);
268 EWK_VIEW_IMPL_GET_OR_RETURN(settings->getEvasObject(), webview);
270 webview->SetLinkMagnifierEnabled(enabled);
273 Eina_Bool ewk_settings_link_magnifier_enabled_get(const Ewk_Settings *settings)
275 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, EINA_FALSE);
276 EWK_VIEW_IMPL_GET_OR_RETURN(const_cast<Ewk_Settings *>(settings)->getEvasObject(), webview, EINA_FALSE);
278 return webview->GetLinkMagnifierEnabled();
281 Eina_Bool ewk_settings_link_effect_enabled_set(Ewk_Settings* settings, Eina_Bool linkEffectEnabled)
283 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
284 settings->setLinkEffectEnabled(linkEffectEnabled);
288 Eina_Bool ewk_settings_link_effect_enabled_get(const Ewk_Settings* settings)
290 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
291 return settings->getLinkEffectEnabled();
294 Eina_Bool ewk_settings_uses_encoding_detector_set(Ewk_Settings* settings, Eina_Bool use)
296 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
297 #if !defined(EWK_BRINGUP) // FIXME: m67 bringup
298 settings->getPreferences().uses_encoding_detector = use;
300 ewkUpdateWebkitPreferences(settings->getEvasObject());
304 Eina_Bool ewk_settings_uses_encoding_detector_get(const Ewk_Settings* settings)
306 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
307 #if !defined(EWK_BRINGUP) // FIXME: m67 bringup
308 return settings->getPreferences().uses_encoding_detector;
314 Eina_Bool ewk_settings_default_keypad_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
316 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
318 settings->setEnableDefaultKeypad(enable);
323 Eina_Bool ewk_settings_default_keypad_enabled_get(const Ewk_Settings* settings)
325 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
327 return settings->defaultKeypadEnabled();
330 Eina_Bool ewk_settings_uses_keypad_without_user_action_set(Ewk_Settings* settings, Eina_Bool use)
332 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
333 settings->setUseKeyPadWithoutUserAction(use);
337 Eina_Bool ewk_settings_uses_keypad_without_user_action_get(const Ewk_Settings* settings)
339 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
340 return settings->useKeyPadWithoutUserAction();
343 Eina_Bool ewk_settings_text_zoom_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
345 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
346 settings->setTextZoomEnabled(enable);
350 Eina_Bool ewk_settings_text_zoom_enabled_get(const Ewk_Settings* settings)
352 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
353 return settings->textZoomEnabled();
356 Eina_Bool ewk_settings_autofill_password_form_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
358 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
359 settings->setAutofillPasswordForm(enable);
360 ewkUpdateWebkitPreferences(settings->getEvasObject());
364 Eina_Bool ewk_settings_autofill_password_form_enabled_get(Ewk_Settings* settings)
366 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
367 return settings->autofillPasswordForm();
370 Eina_Bool ewk_settings_form_candidate_data_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
372 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
373 settings->setFormCandidateData(enable);
377 Eina_Bool ewk_settings_form_candidate_data_enabled_get(Ewk_Settings* settings)
379 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
380 return settings->formCandidateData();
383 Eina_Bool ewk_settings_form_profile_data_enabled_set(Ewk_Settings *settings, Eina_Bool enable)
385 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
386 settings->setAutofillProfileForm(enable);
387 ewkUpdateWebkitPreferences(settings->getEvasObject());
391 Eina_Bool ewk_settings_form_profile_data_enabled_get(const Ewk_Settings *settings)
393 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
394 return settings->autofillProfileForm();
397 Eina_Bool ewk_settings_current_legacy_font_size_mode_set(Ewk_Settings *settings, Ewk_Legacy_Font_Size_Mode mode)
399 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
401 settings->setCurrentLegacyFontSizeMode(mode);
402 ewkUpdateWebkitPreferences(settings->getEvasObject());
406 Ewk_Legacy_Font_Size_Mode ewk_settings_current_legacy_font_size_mode_get(const Ewk_Settings *settings)
408 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, EWK_LEGACY_FONT_SIZE_MODE_ONLY_IF_PIXEL_VALUES_MATCH);
409 return settings->currentLegacyFontSizeMode();
412 Eina_Bool ewk_settings_paste_image_uri_mode_set(Ewk_Settings *settings, Eina_Bool enable)
414 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
415 // FIXME: To be implemented when the functionality is required.
416 // To be added in WebkitPreferences -> WebSettings -> Settings
417 settings->setPasteImageUriEnabled(enable);
421 Eina_Bool ewk_settings_paste_image_uri_mode_get(const Ewk_Settings *settings)
423 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
424 // FIXME: To be implemented when the functionality is required.
425 // To be added in WebkitPreferences -> WebSettings -> Settings
426 return settings->pasteImageUriEnabled();
430 Eina_Bool ewk_settings_text_selection_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
432 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
433 settings->setTextSelectionEnabled(enable);
437 Eina_Bool ewk_settings_text_selection_enabled_get(const Ewk_Settings* settings)
439 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
440 return settings->textSelectionEnabled();
443 Eina_Bool ewk_settings_clear_text_selection_automatically_set(Ewk_Settings* settings, Eina_Bool enable)
445 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
446 settings->setAutoClearTextSelection(enable);
450 Eina_Bool ewk_settings_clear_text_selection_automatically_get(const Ewk_Settings* settings)
452 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
453 return settings->autoClearTextSelection();
456 Eina_Bool ewk_settings_text_autosizing_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
458 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
459 if (IsMobileProfile() || IsWearableProfile()) {
460 #if !defined(EWK_BRINGUP)
461 settings->getPreferences().text_autosizing_enabled = enable;
462 ewkUpdateWebkitPreferences(settings->getEvasObject());
468 LOG_EWK_API_MOCKUP("Only for Tizen Mobile Browser");
473 Eina_Bool ewk_settings_text_autosizing_enabled_get(const Ewk_Settings* settings)
475 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
476 if (IsMobileProfile() || IsWearableProfile()) {
477 #if !defined(EWK_BRINGUP)
478 return settings->getPreferences().text_autosizing_enabled;
483 LOG_EWK_API_MOCKUP("Only for Tizen Mobile Browser");
488 Eina_Bool ewk_settings_text_autosizing_font_scale_factor_set(Ewk_Settings* settings, double factor)
490 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
494 settings->getPreferences().font_scale_factor = factor;
495 ewkUpdateWebkitPreferences(settings->getEvasObject());
499 double ewk_settings_text_autosizing_font_scale_factor_get(const Ewk_Settings* settings)
501 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, -1.0);
502 return settings->getPreferences().font_scale_factor;
505 Eina_Bool ewk_settings_edge_effect_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
507 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
508 settings->setEdgeEffectEnabled(enable);
512 Eina_Bool ewk_settings_edge_effect_enabled_get(const Ewk_Settings* settings)
514 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
515 return settings->edgeEffectEnabled();
518 void ewk_settings_text_style_state_enabled_set(Ewk_Settings* settings, Eina_Bool enabled)
520 EINA_SAFETY_ON_NULL_RETURN(settings);
521 settings->setTextStyleStateState(enabled);
524 Eina_Bool ewk_settings_text_style_state_enabled_get(const Ewk_Settings* settings)
526 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
527 return settings->textStyleStateState();
530 Eina_Bool ewk_settings_select_word_automatically_set(Ewk_Settings* settings, Eina_Bool enable)
532 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
533 settings->setAutoSelectWord(enable);
534 ewkUpdateWebkitPreferences(settings->getEvasObject());
538 Eina_Bool ewk_settings_select_word_automatically_get(const Ewk_Settings* settings)
540 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
541 return settings->autoSelectWord();
544 Ewk_List_Style_Position ewk_settings_initial_list_style_position_get(const Ewk_Settings* settings)
546 #if !defined(EWK_BRINGUP) // FIXME: m67 bringup
547 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, EWK_LIST_STYLE_POSITION_OUTSIDE);
548 return static_cast<Ewk_List_Style_Position>(settings->getPreferences().initial_list_style_position);
550 return EWK_LIST_STYLE_POSITION_OUTSIDE;
554 Eina_Bool ewk_settings_initial_list_style_position_set(Ewk_Settings* settings, Ewk_List_Style_Position style)
556 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, EINA_FALSE);
557 #if !defined(EWK_BRINGUP) // FIXME: m67 bringup
558 settings->getPreferences().initial_list_style_position = static_cast<content::ListStylePosition>(style);
560 ewkUpdateWebkitPreferences(settings->getEvasObject());
564 Eina_Bool ewk_settings_webkit_text_size_adjust_enabled_set(Ewk_Settings* settings, Eina_Bool enabled)
566 // Chromium does not support CSS property "-webkit-text-size-adjust"
567 // and this API was created to disable this property.
568 // There is no need to implement this API.
569 LOG_EWK_API_MOCKUP("Not Supported by chromium");
573 // TODO: this API is gone in newer versions of webkit-efl
574 void ewk_settings_detect_contents_automatically_set(Ewk_Settings* settings, Eina_Bool enable)
576 EINA_SAFETY_ON_NULL_RETURN(settings);
577 #if !defined(EWK_BRINGUP) // FIXME: m67 bringup
578 settings->setDetectContentsEnabled(enable);
582 Eina_Bool ewk_settings_detect_contents_automatically_get(const Ewk_Settings* settings)
584 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
585 #if !defined(EWK_BRINGUP) // FIXME: m67 bringup
586 return settings->getDetectContentsEnabled();
592 void ewk_settings_cache_builder_enabled_set(Ewk_Settings *settings, Eina_Bool enabled)
595 EINA_SAFETY_ON_NULL_RETURN(settings);
596 settings->setCacheBuilderEnabled(enabled);
598 LOG_EWK_API_MOCKUP("Only for Tizen TV Browser");
602 int ewk_settings_default_font_size_get(const Ewk_Settings* settings)
604 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, 0);
605 return settings->getPreferences().default_font_size;
608 Eina_Bool ewk_settings_default_font_size_set(Ewk_Settings* settings, int size)
610 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
611 settings->getPreferences().default_font_size = size;
615 const char* ewk_settings_default_text_encoding_name_get(Ewk_Settings* settings)
617 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, NULL);
618 return settings->defaultTextEncoding();
621 Eina_Bool ewk_settings_default_text_encoding_name_set(Ewk_Settings* settings, const char* encoding)
623 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
624 EINA_SAFETY_ON_NULL_RETURN_VAL(encoding, false);
625 settings->setDefaultTextEncoding(encoding);
626 ewkUpdateWebkitPreferences(settings->getEvasObject());
630 Eina_Bool ewk_settings_scripts_can_open_windows_set(Ewk_Settings* settings, Eina_Bool enable)
632 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
633 settings->getPreferencesEfl().javascript_can_open_windows_automatically_ewk = enable;
634 ewkUpdateWebkitPreferences(settings->getEvasObject());
638 Eina_Bool ewk_settings_scripts_can_open_windows_get(const Ewk_Settings* settings)
640 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
641 return settings->getPreferencesEfl().javascript_can_open_windows_automatically_ewk;
644 Eina_Bool ewk_settings_encoding_detector_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
646 LOG_EWK_API_MOCKUP("for Tizen TV Browser");
651 #define EXTRA_FEATURE_FUNCTIONS(VALNAME) \
652 void Ewk_Extra_Feature_Set_ ## VALNAME(Ewk_Settings* settings, Eina_Bool value) \
654 EINA_SAFETY_ON_NULL_RETURN(settings); \
655 settings->set ## VALNAME ## Enabled(value == EINA_TRUE); \
657 Eina_Bool Ewk_Extra_Feature_Get_ ## VALNAME(const Ewk_Settings* settings) \
659 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, EINA_FALSE); \
660 return settings->get ## VALNAME ## Enabled() ? EINA_TRUE : EINA_FALSE; \
663 #define EWK_EXTRA_FEATURE(NAME, VALNAME) {NAME, Ewk_Extra_Feature_Set_## VALNAME, Ewk_Extra_Feature_Get_ ## VALNAME}
665 EXTRA_FEATURE_FUNCTIONS(LongPress)
666 EXTRA_FEATURE_FUNCTIONS(LinkMagnifier)
667 EXTRA_FEATURE_FUNCTIONS(DetectContents)
668 EXTRA_FEATURE_FUNCTIONS(WebLogin)
669 EXTRA_FEATURE_FUNCTIONS(DoubleTap)
670 EXTRA_FEATURE_FUNCTIONS(Zoom)
671 EXTRA_FEATURE_FUNCTIONS(OpenPanel)
672 EXTRA_FEATURE_FUNCTIONS(AllowRestrictedURL)
673 EXTRA_FEATURE_FUNCTIONS(URLBarHide)
675 void Ewk_Extra_Feature_Set_ViewportQuirk(Ewk_Settings* settings, Eina_Bool value)
677 EINA_SAFETY_ON_NULL_RETURN(settings);
678 #if !defined(EWK_BRINGUP) // FIXME: m67 bringup
679 settings->getPreferences().viewport_meta_non_user_scalable_quirk = value;
681 ewkUpdateWebkitPreferences(settings->getEvasObject());
684 Eina_Bool Ewk_Extra_Feature_Get_ViewportQuirk(const Ewk_Settings* settings)
686 #if !defined(EWK_BRINGUP) // FIXME: m67 bringup
687 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
688 return settings->getPreferences().viewport_meta_non_user_scalable_quirk;
696 void (*set)(Ewk_Settings*, Eina_Bool enable);
697 Eina_Bool (*get)(const Ewk_Settings*);
700 static Ewk_Extra_Feature extra_features[] = {
701 EWK_EXTRA_FEATURE("longpress,enable", LongPress),
702 EWK_EXTRA_FEATURE("link,magnifier", LinkMagnifier),
703 EWK_EXTRA_FEATURE("detect,contents", DetectContents),
704 EWK_EXTRA_FEATURE("web,login", WebLogin),
705 EWK_EXTRA_FEATURE("doubletap,enable", DoubleTap),
706 EWK_EXTRA_FEATURE("zoom,enable", Zoom),
707 EWK_EXTRA_FEATURE("openpanel,enable", OpenPanel),
708 EWK_EXTRA_FEATURE("allow,restrictedurl", AllowRestrictedURL),
709 EWK_EXTRA_FEATURE("urlbar,hide", URLBarHide),
710 EWK_EXTRA_FEATURE("wrt,viewport,quirk", ViewportQuirk),
714 Ewk_Extra_Feature* find_extra_feature(const char*feature)
716 for(Ewk_Extra_Feature *feat = extra_features; feat->name != NULL; feat++) {
717 if (strcasecmp(feat->name, feature) == 0) {
726 Eina_Bool ewk_settings_extra_feature_get(const Ewk_Settings* settings, const char* feature)
728 EINA_SAFETY_ON_NULL_RETURN_VAL(settings, EINA_FALSE);
729 EINA_SAFETY_ON_NULL_RETURN_VAL(feature, EINA_FALSE);
730 Ewk_Extra_Feature *feat = find_extra_feature(feature);
731 EINA_SAFETY_ON_NULL_RETURN_VAL(feat, EINA_FALSE);
732 return feat->get(settings);
735 void ewk_settings_extra_feature_set(Ewk_Settings* settings, const char* feature, Eina_Bool enable)
737 EINA_SAFETY_ON_NULL_RETURN(settings);
738 EINA_SAFETY_ON_NULL_RETURN(feature);
739 Ewk_Extra_Feature *feat = find_extra_feature(feature);
740 EINA_SAFETY_ON_NULL_RETURN(feat);
741 feat->set(settings, enable);