2891773e7530adee1e1202217303fb7c4660cd92
[platform/framework/web/chromium-efl.git] / tizen_src / ewk / efl_integration / public / ewk_settings.cc
1 /*
2  * Copyright (C) 2013-2016 Samsung Electronics. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY SAMSUNG ELECTRONICS. AND ITS CONTRIBUTORS
14  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
15  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SAMSUNG ELECTRONICS. OR ITS
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
20  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
21  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
22  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
23  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  */
25 #include "ewk_settings_product.h"
26
27 #include "base/strings/string_util.h"
28 #include "eweb_view.h"
29 #include "private/ewk_private.h"
30 #include "private/ewk_settings_private.h"
31 #include "private/ewk_view_private.h"
32 #include "text_encoding_map_efl.h"
33 #include "tizen/system_info.h"
34 #include "ui/events/gesture_detection/gesture_configuration.h"
35
36 namespace {
37
38 void ewkUpdateWebkitPreferences(Evas_Object *ewkView)
39 {
40   EWebView* impl = EWebView::FromEvasObject(ewkView);
41   assert(impl);
42
43   impl->UpdateWebKitPreferences();
44 }
45
46 }
47
48 Eina_Bool ewk_settings_fullscreen_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
49 {
50   LOG_EWK_API_MOCKUP("Not Supported by chromium");
51   return EINA_FALSE;
52 }
53
54 Eina_Bool ewk_settings_fullscreen_enabled_get(const Ewk_Settings* settings)
55 {
56   LOG_EWK_API_MOCKUP("Not Supported by chromium");
57   return EINA_FALSE;
58 }
59
60 Eina_Bool ewk_settings_javascript_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
61 {
62   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
63   settings->getPreferences().javascript_enabled = enable;
64   ewkUpdateWebkitPreferences(settings->getEvasObject());
65   return EINA_TRUE;
66 }
67
68 Eina_Bool ewk_settings_javascript_enabled_get(const Ewk_Settings* settings)
69 {
70   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
71   return settings->getPreferences().javascript_enabled;
72 }
73
74 Eina_Bool ewk_settings_loads_images_automatically_set(Ewk_Settings* settings, Eina_Bool automatic)
75 {
76   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
77   settings->getPreferences().loads_images_automatically = automatic;
78   settings->getPreferences().images_enabled = automatic;
79   ewkUpdateWebkitPreferences(settings->getEvasObject());
80   return EINA_TRUE;
81 }
82
83 Eina_Bool ewk_settings_loads_images_automatically_get(const Ewk_Settings* settings)
84 {
85   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
86   return settings->getPreferences().loads_images_automatically;
87 }
88
89 Eina_Bool ewk_settings_plugins_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
90 {
91   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
92   settings->getPreferences().plugins_enabled = enable;
93   ewkUpdateWebkitPreferences(settings->getEvasObject());
94   return EINA_TRUE;
95 }
96
97 Eina_Bool ewk_settings_plugins_enabled_get(const Ewk_Settings* settings)
98 {
99   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
100   return settings->getPreferences().plugins_enabled;
101 }
102
103 Eina_Bool ewk_settings_auto_fitting_set(Ewk_Settings* settings, Eina_Bool enable)
104 {
105   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
106   settings->getPreferences().shrinks_viewport_contents_to_fit = enable;
107   ewkUpdateWebkitPreferences(settings->getEvasObject());
108   return EINA_TRUE;
109 }
110
111 Eina_Bool ewk_settings_auto_fitting_get(const Ewk_Settings* settings)
112 {
113   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
114   return settings->getPreferences().shrinks_viewport_contents_to_fit;
115 }
116
117 Eina_Bool ewk_settings_force_zoom_set(Ewk_Settings* settings, Eina_Bool enable)
118 {
119   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
120   settings->getPreferences().force_enable_zoom = enable;
121   ewkUpdateWebkitPreferences(settings->getEvasObject());
122   return EINA_TRUE;
123 }
124
125 Eina_Bool ewk_settings_force_zoom_get(const Ewk_Settings* settings)
126 {
127   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
128   return settings->getPreferences().force_enable_zoom;
129 }
130
131 Eina_Bool ewk_settings_font_default_size_set(Ewk_Settings* settings, int size)
132 {
133   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
134   settings->getPreferences().default_font_size = size;
135   ewkUpdateWebkitPreferences(settings->getEvasObject());
136   return EINA_TRUE;
137 }
138
139 int ewk_settings_font_default_size_get(const Ewk_Settings* settings)
140 {
141   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
142   return settings->getPreferences().default_font_size;
143 }
144
145 Eina_Bool ewk_settings_scripts_window_open_set(Ewk_Settings* settings, Eina_Bool allow)
146 {
147   return ewk_settings_scripts_can_open_windows_set(settings, allow);
148 }
149
150 Eina_Bool ewk_settings_scripts_window_open_get(const Ewk_Settings* settings)
151 {
152   return ewk_settings_scripts_can_open_windows_get(settings);
153 }
154
155 Eina_Bool ewk_settings_compositing_borders_visible_set(Ewk_Settings* settings, Eina_Bool enable)
156 {
157   /*
158   This API is impossible to implement in same manner as it was in webkit-efl
159   for few reasons: chromium made compositing-borders-visible setting global - it
160   is either enabled or disabled for whole process, it requires application restart
161   because it is controled by command line switch. It must be provided before
162   spawning any renderer/zygote processes
163   */
164
165   LOG_EWK_API_MOCKUP("Not implement by difference of webkit2 and chromium's behavior");
166   return EINA_FALSE;
167 }
168
169 Eina_Bool ewk_settings_default_encoding_set(Ewk_Settings* settings, const char* encoding)
170 {
171   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
172   EINA_SAFETY_ON_NULL_RETURN_VAL(encoding, false);
173   settings->getPreferences().default_encoding = std::string(encoding);
174   ewkUpdateWebkitPreferences(settings->getEvasObject());
175   return EINA_TRUE;
176 }
177
178 Eina_Bool ewk_settings_is_encoding_valid(const char* encoding)
179 {
180   return TextEncodingMapEfl::GetInstance()->isTextEncodingValid(encoding);
181 }
182
183 const char* ewk_settings_default_encoding_get(const Ewk_Settings* settings)
184 {
185   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, 0);
186   return settings->getPreferences().default_encoding.c_str();
187 }
188
189 Eina_Bool ewk_settings_private_browsing_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
190 {
191 #if BUILDFLAG(IS_TIZEN_TV)
192   LOG_EWK_API_DEPRECATED("Use ewk_view_add_in_incognito_mode() instead.");
193 #elif BUILDFLAG(IS_TIZEN)
194   if (IsMobileProfile()) {
195     EINA_SAFETY_ON_NULL_RETURN_VAL(settings, EINA_FALSE);
196     EWebView* impl = EWebView::FromEvasObject(settings->getEvasObject());
197     return impl->SetPrivateBrowsing(enable);
198   }
199 #endif
200   return EINA_FALSE;
201 }
202
203 Eina_Bool ewk_settings_private_browsing_enabled_get(const Ewk_Settings* settings)
204 {
205 #if BUILDFLAG(IS_TIZEN_TV)
206   LOG_EWK_API_DEPRECATED("Use ewk_view_add_in_incognito_mode() instead.");
207 #elif BUILDFLAG(IS_TIZEN)
208   if (IsMobileProfile()) {
209     EINA_SAFETY_ON_NULL_RETURN_VAL(settings, EINA_FALSE);
210     EWK_VIEW_IMPL_GET_OR_RETURN(
211         const_cast<Ewk_Settings*>(settings)->getEvasObject(), webview,
212         EINA_FALSE);
213     return webview->GetPrivateBrowsing();
214   }
215 #endif
216   return EINA_FALSE;
217 }
218
219 Eina_Bool ewk_settings_editable_link_behavior_set(Ewk_Settings* settings, Ewk_Editable_Link_Behavior behavior)
220 {
221   LOG_EWK_API_MOCKUP("Not Supported by chromium");
222   return EINA_FALSE;
223 }
224
225 Eina_Bool ewk_settings_load_remote_images_set(Ewk_Settings* settings, Eina_Bool loadRemoteImages)
226 {
227   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
228   // FIXME: To be implemented when the functionality is required.
229   // To be added in WebkitPreferences -> WebSettings -> Settings
230   settings->setLoadRemoteImages(loadRemoteImages);
231   return EINA_TRUE;
232 }
233
234 Eina_Bool ewk_settings_load_remote_images_get(const Ewk_Settings* settings)
235 {
236   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
237   // FIXME: To be implemented when the functionality is required.
238   // To be added in WebkitPreferences -> WebSettings -> Settings
239   return settings->loadRemoteImages();
240 }
241
242 Eina_Bool ewk_settings_scan_malware_enabled_set(Ewk_Settings* settings, Eina_Bool scanMalwareEnabled)
243 {
244   // API is postponed. Possibly chromium's mechanism may be reused.
245   LOG_EWK_API_MOCKUP("Not Supported yet");
246   return EINA_FALSE;
247 }
248
249 Eina_Bool ewk_settings_spdy_enabled_set(Ewk_Settings* settings, Eina_Bool spdyEnabled)
250 {
251   LOG_EWK_API_DEPRECATED("This API is deprecated, not Supported by chromium. spdy is deprecated in m50 and replace with HTTP2 handling.");
252   return EINA_FALSE;
253 }
254
255 Eina_Bool ewk_settings_spdy_enabled_get(Ewk_Settings *settings)
256 {
257   LOG_EWK_API_DEPRECATED("This API is deprecated, not Supported by chromium. spdy is deprecated in m50 and replace with HTTP2 handling.");
258   return EINA_FALSE;
259 }
260
261 Eina_Bool ewk_settings_performance_features_enabled_set(Ewk_Settings* settings, Eina_Bool spdyEnabled)
262 {
263   (void) settings;
264   (void) spdyEnabled;
265   // This function was used to set some libsoup settings.
266   // Chromium doesn't use libsoup.
267   LOG_EWK_API_MOCKUP("Not Supported by chromium");
268   return EINA_FALSE;
269 }
270
271 Eina_Bool ewk_settings_performance_features_enabled_get(const Ewk_Settings* settings)
272 {
273   LOG_EWK_API_MOCKUP();
274   return EINA_FALSE;
275 }
276
277 void ewk_settings_link_magnifier_enabled_set(Ewk_Settings* settings, Eina_Bool enabled)
278 {
279   EINA_SAFETY_ON_NULL_RETURN(settings);
280   EWK_VIEW_IMPL_GET_OR_RETURN(settings->getEvasObject(), webview);
281
282   webview->SetLinkMagnifierEnabled(enabled);
283 }
284
285 Eina_Bool ewk_settings_link_magnifier_enabled_get(const Ewk_Settings *settings)
286 {
287   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, EINA_FALSE);
288   EWK_VIEW_IMPL_GET_OR_RETURN(const_cast<Ewk_Settings *>(settings)->getEvasObject(), webview, EINA_FALSE);
289
290   return webview->GetLinkMagnifierEnabled();
291 }
292
293 Eina_Bool ewk_settings_link_effect_enabled_set(Ewk_Settings* settings,
294                                                Eina_Bool enable) {
295   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
296   settings->getPreferences().link_effect_enabled = enable;
297   ewkUpdateWebkitPreferences(settings->getEvasObject());
298   return EINA_TRUE;
299 }
300
301 Eina_Bool ewk_settings_link_effect_enabled_get(const Ewk_Settings* settings)
302 {
303   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
304   return settings->getPreferences().link_effect_enabled;
305 }
306
307 Eina_Bool ewk_settings_uses_encoding_detector_set(Ewk_Settings* settings, Eina_Bool use)
308 {
309   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
310   settings->getPreferences().uses_encoding_detector = use;
311   ewkUpdateWebkitPreferences(settings->getEvasObject());
312   return EINA_TRUE;
313 }
314
315 Eina_Bool ewk_settings_uses_encoding_detector_get(const Ewk_Settings* settings)
316 {
317   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
318   return settings->getPreferences().uses_encoding_detector;
319 }
320
321 Eina_Bool ewk_settings_default_keypad_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
322 {
323     EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
324
325     settings->setEnableDefaultKeypad(enable);
326
327     return EINA_TRUE;
328 }
329
330 Eina_Bool ewk_settings_default_keypad_enabled_get(const Ewk_Settings* settings)
331 {
332     EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
333
334     return settings->defaultKeypadEnabled();
335 }
336
337 Eina_Bool ewk_settings_uses_keypad_without_user_action_set(Ewk_Settings* settings, Eina_Bool use)
338 {
339   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
340   settings->setUseKeyPadWithoutUserAction(use);
341   return EINA_TRUE;
342 }
343
344 Eina_Bool ewk_settings_uses_keypad_without_user_action_get(const Ewk_Settings* settings)
345 {
346   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
347   return settings->useKeyPadWithoutUserAction();
348 }
349
350 Eina_Bool ewk_settings_text_zoom_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
351 {
352   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
353   settings->setTextZoomEnabled(enable);
354   return EINA_TRUE;
355 }
356
357 Eina_Bool ewk_settings_text_zoom_enabled_get(const Ewk_Settings* settings)
358 {
359   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
360   return settings->textZoomEnabled();
361 }
362
363 Eina_Bool ewk_settings_autofill_password_form_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
364 {
365   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
366   settings->setAutofillPasswordForm(enable);
367   ewkUpdateWebkitPreferences(settings->getEvasObject());
368   return EINA_TRUE;
369 }
370
371 Eina_Bool ewk_settings_autofill_password_form_enabled_get(Ewk_Settings* settings)
372 {
373   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
374   return settings->autofillPasswordForm();
375 }
376
377 Eina_Bool ewk_settings_form_candidate_data_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
378 {
379   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
380   settings->setFormCandidateData(enable);
381   return EINA_TRUE;
382 }
383
384 Eina_Bool ewk_settings_form_candidate_data_enabled_get(Ewk_Settings* settings)
385 {
386   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
387   return settings->formCandidateData();
388 }
389
390 Eina_Bool ewk_settings_form_profile_data_enabled_set(Ewk_Settings *settings, Eina_Bool enable)
391 {
392   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
393   settings->setAutofillProfileForm(enable);
394   ewkUpdateWebkitPreferences(settings->getEvasObject());
395   return EINA_TRUE;
396 }
397
398 Eina_Bool ewk_settings_form_profile_data_enabled_get(const Ewk_Settings *settings)
399 {
400   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
401   return settings->autofillProfileForm();
402 }
403
404 Eina_Bool ewk_settings_current_legacy_font_size_mode_set(Ewk_Settings *settings, Ewk_Legacy_Font_Size_Mode mode)
405 {
406   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
407
408   settings->setCurrentLegacyFontSizeMode(mode);
409   ewkUpdateWebkitPreferences(settings->getEvasObject());
410   return EINA_TRUE;
411 }
412
413 Ewk_Legacy_Font_Size_Mode ewk_settings_current_legacy_font_size_mode_get(const Ewk_Settings *settings)
414 {
415   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, EWK_LEGACY_FONT_SIZE_MODE_ONLY_IF_PIXEL_VALUES_MATCH);
416   return settings->currentLegacyFontSizeMode();
417 }
418
419 Eina_Bool ewk_settings_paste_image_uri_mode_set(Ewk_Settings *settings, Eina_Bool enable)
420 {
421   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
422   // FIXME: To be implemented when the functionality is required.
423   // To be added in WebkitPreferences -> WebSettings -> Settings
424   settings->setPasteImageUriEnabled(enable);
425   return EINA_TRUE;
426 }
427
428 Eina_Bool ewk_settings_paste_image_uri_mode_get(const Ewk_Settings *settings)
429 {
430   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
431   // FIXME: To be implemented when the functionality is required.
432   // To be added in WebkitPreferences -> WebSettings -> Settings
433   return settings->pasteImageUriEnabled();
434 }
435
436
437 Eina_Bool ewk_settings_text_selection_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
438 {
439   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
440   settings->setTextSelectionEnabled(enable);
441   return EINA_TRUE;
442 }
443
444 Eina_Bool ewk_settings_text_selection_enabled_get(const Ewk_Settings* settings)
445 {
446   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
447   return settings->textSelectionEnabled();
448 }
449
450 Eina_Bool ewk_settings_clear_text_selection_automatically_set(Ewk_Settings* settings, Eina_Bool enable)
451 {
452   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
453   settings->setAutoClearTextSelection(enable);
454   return EINA_TRUE;
455 }
456
457 Eina_Bool ewk_settings_clear_text_selection_automatically_get(const Ewk_Settings* settings)
458 {
459   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
460   return settings->autoClearTextSelection();
461 }
462
463 Eina_Bool ewk_settings_text_autosizing_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
464 {
465   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
466   settings->getPreferences().text_autosizing_enabled = enable;
467   ewkUpdateWebkitPreferences(settings->getEvasObject());
468   return EINA_TRUE;
469 }
470
471 Eina_Bool ewk_settings_text_autosizing_enabled_get(const Ewk_Settings* settings)
472 {
473   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
474   return settings->getPreferences().text_autosizing_enabled;
475 }
476
477 Eina_Bool ewk_settings_text_autosizing_font_scale_factor_set(Ewk_Settings* settings, double factor)
478 {
479   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
480   if (factor <= 0.0)
481     return EINA_FALSE;
482
483   settings->getPreferences().font_scale_factor = factor;
484   ewkUpdateWebkitPreferences(settings->getEvasObject());
485   return EINA_TRUE;
486 }
487
488 double ewk_settings_text_autosizing_font_scale_factor_get(const Ewk_Settings* settings)
489 {
490   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, -1.0);
491   return settings->getPreferences().font_scale_factor;
492 }
493
494 Eina_Bool ewk_settings_edge_effect_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
495 {
496   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
497   settings->setEdgeEffectEnabled(enable);
498   return EINA_TRUE;
499 }
500
501 Eina_Bool ewk_settings_edge_effect_enabled_get(const Ewk_Settings* settings)
502 {
503   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
504   return settings->edgeEffectEnabled();
505 }
506
507 void ewk_settings_text_style_state_enabled_set(Ewk_Settings* settings, Eina_Bool enabled)
508 {
509   EINA_SAFETY_ON_NULL_RETURN(settings);
510   settings->setTextStyleStateState(enabled);
511 }
512
513 Eina_Bool ewk_settings_text_style_state_enabled_get(const Ewk_Settings* settings)
514 {
515   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
516   return settings->textStyleStateState();
517 }
518
519 Eina_Bool ewk_settings_select_word_automatically_set(Ewk_Settings* settings, Eina_Bool enable)
520 {
521   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
522   settings->setAutoSelectWord(enable);
523   ewkUpdateWebkitPreferences(settings->getEvasObject());
524   return EINA_TRUE;
525 }
526
527 Eina_Bool ewk_settings_select_word_automatically_get(const Ewk_Settings* settings)
528 {
529   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
530   return settings->autoSelectWord();
531 }
532
533 Ewk_List_Style_Position ewk_settings_initial_list_style_position_get(const Ewk_Settings* settings)
534 {
535   LOG_EWK_API_MOCKUP("Not Supported by chromium");
536   return EWK_LIST_STYLE_POSITION_OUTSIDE;
537 }
538
539 Eina_Bool ewk_settings_initial_list_style_position_set(Ewk_Settings* settings, Ewk_List_Style_Position style)
540 {
541   LOG_EWK_API_MOCKUP("Not Supported by chromium");
542   return EINA_FALSE;
543 }
544
545 Eina_Bool ewk_settings_webkit_text_size_adjust_enabled_set(Ewk_Settings* settings, Eina_Bool enabled)
546 {
547   // Chromium does not support CSS property "-webkit-text-size-adjust"
548   // and this API was created to disable this property.
549   // There is no need to implement this API.
550   LOG_EWK_API_MOCKUP("Not Supported by chromium");
551   return EINA_FALSE;
552 }
553
554 // TODO: this API is gone in newer versions of webkit-efl
555 void ewk_settings_detect_contents_automatically_set(Ewk_Settings* settings, Eina_Bool enable)
556 {
557   LOG_EWK_API_MOCKUP("Not Supported by chromium");
558 }
559
560 Eina_Bool ewk_settings_detect_contents_automatically_get(const Ewk_Settings* settings)
561 {
562   LOG_EWK_API_MOCKUP("Not Supported by chromium");
563   return EINA_FALSE;
564 }
565
566 void ewk_settings_cache_builder_enabled_set(Ewk_Settings *settings, Eina_Bool enabled)
567 {
568   if (IsTvProfile()) {
569     EINA_SAFETY_ON_NULL_RETURN(settings);
570     settings->setCacheBuilderEnabled(enabled);
571   } else {
572     LOG_EWK_API_MOCKUP("Only for Tizen TV Browser");
573   }
574 }
575
576 int ewk_settings_default_font_size_get(const Ewk_Settings* settings)
577 {
578   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, 0);
579   return settings->getPreferences().default_font_size;
580 }
581
582 Eina_Bool ewk_settings_default_font_size_set(Ewk_Settings* settings, int size)
583 {
584   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
585   settings->getPreferences().default_font_size = size;
586   ewkUpdateWebkitPreferences(settings->getEvasObject());
587   return EINA_TRUE;
588 }
589
590 const char* ewk_settings_default_text_encoding_name_get(const Ewk_Settings* settings)
591 {
592   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, NULL);
593   return settings->defaultTextEncoding();
594 }
595
596 Eina_Bool ewk_settings_default_text_encoding_name_set(Ewk_Settings* settings, const char* encoding)
597 {
598   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
599   EINA_SAFETY_ON_NULL_RETURN_VAL(encoding, false);
600   settings->setDefaultTextEncoding(encoding);
601   ewkUpdateWebkitPreferences(settings->getEvasObject());
602   return EINA_TRUE;
603 }
604
605 Eina_Bool ewk_settings_scripts_can_open_windows_set(Ewk_Settings* settings, Eina_Bool enable)
606 {
607   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
608   settings->getPreferencesEfl().javascript_can_open_windows_automatically_ewk = enable;
609   ewkUpdateWebkitPreferences(settings->getEvasObject());
610   return EINA_TRUE;
611 }
612
613 Eina_Bool ewk_settings_scripts_can_open_windows_get(const Ewk_Settings* settings)
614 {
615   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
616   return settings->getPreferencesEfl().javascript_can_open_windows_automatically_ewk;
617 }
618
619 Eina_Bool ewk_settings_encoding_detector_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
620 {
621   LOG_EWK_API_MOCKUP("for Tizen TV Browser");
622   return EINA_FALSE;
623 }
624
625 Eina_Bool ewk_settings_extra_feature_get(const Ewk_Settings* settings, const char* feature)
626 {
627   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, EINA_FALSE);
628   EINA_SAFETY_ON_NULL_RETURN_VAL(feature, EINA_FALSE);
629
630   std::string feature_name(feature);
631   if (base::EqualsCaseInsensitiveASCII(feature_name, "edge,enable"))
632     return settings->edgeEffectEnabled();
633   else if (base::EqualsCaseInsensitiveASCII(feature_name, "zoom,enable"))
634     return settings->textZoomEnabled();
635   else if (base::EqualsCaseInsensitiveASCII(feature_name,
636                                             "selection,magnifier"))
637     return settings->getPreferences().selection_magnifier_enabled;
638   else if (base::EqualsCaseInsensitiveASCII(feature_name, "longpress,enable"))
639     return settings->getPreferences().long_press_enabled;
640   else if (base::EqualsCaseInsensitiveASCII(feature_name, "doubletap,enable"))
641     return settings->getPreferences().double_tap_to_zoom_enabled;
642   else if (base::EqualsCaseInsensitiveASCII(feature_name, "touch,focus"))
643     return settings->touchFocusEnabled();
644
645   return EINA_FALSE;
646 }
647
648 void ewk_settings_extra_feature_set(Ewk_Settings* settings, const char* feature, Eina_Bool enable)
649 {
650   EINA_SAFETY_ON_NULL_RETURN(settings);
651   EINA_SAFETY_ON_NULL_RETURN(feature);
652
653   std::string feature_name(feature);
654   if (base::EqualsCaseInsensitiveASCII(feature_name, "edge,enable"))
655     settings->setEdgeEffectEnabled(enable);
656   else if (base::EqualsCaseInsensitiveASCII(feature_name, "zoom,enable"))
657     settings->setTextZoomEnabled(enable);
658   else if (base::EqualsCaseInsensitiveASCII(feature_name,
659                                             "selection,magnifier"))
660     settings->getPreferences().selection_magnifier_enabled = enable;
661   else if (base::EqualsCaseInsensitiveASCII(feature_name, "longpress,enable"))
662     settings->getPreferences().long_press_enabled = enable;
663   else if (base::EqualsCaseInsensitiveASCII(feature_name, "doubletap,enable"))
664     settings->getPreferences().double_tap_to_zoom_enabled = enable;
665   else if (base::EqualsCaseInsensitiveASCII(feature_name, "touch,focus"))
666     settings->setTouchFocusEnabled(enable);
667 }
668
669 Eina_Bool ewk_settings_tizen_compatibility_mode_set(Ewk_Settings* settings, unsigned major, unsigned minor, unsigned release)
670 {
671   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
672   settings->getPreferences().tizen_version_major = major;
673   settings->getPreferences().tizen_version_minor = minor;
674   settings->getPreferences().tizen_version_release = release;
675   ewkUpdateWebkitPreferences(settings->getEvasObject());
676   return EINA_TRUE;
677 }
678
679 Eina_Bool ewk_settings_webkit_text_size_adjust_enabled_get(const Ewk_Settings* settings)
680 {
681   LOG_EWK_API_MOCKUP();
682   return EINA_FALSE;
683 }
684
685 Eina_Bool ewk_settings_scan_malware_enabled_get(const Ewk_Settings* settings)
686 {
687   LOG_EWK_API_MOCKUP();
688   return EINA_FALSE;
689 }
690
691 void ewk_settings_default_mixed_contents_policy_set(Ewk_Settings* settings, Eina_Bool enable)
692 {
693   LOG_EWK_API_MOCKUP();
694 }
695
696 void ewk_settings_disable_webgl_set(Ewk_Settings* settings, Eina_Bool disable)
697 {
698   LOG_EWK_API_MOCKUP();
699 }
700
701 Eina_Bool ewk_settings_uses_arrow_scroll_set(Ewk_Settings* settings, Eina_Bool enabled)
702 {
703   LOG_EWK_API_MOCKUP();
704   return EINA_FALSE;
705 }
706
707 Eina_Bool ewk_settings_uses_arrow_scroll_get(Ewk_Settings* settings)
708 {
709   LOG_EWK_API_MOCKUP();
710   return EINA_FALSE;
711 }
712
713 Eina_Bool ewk_settings_uses_scrollbar_thumb_focus_notifications_set(Ewk_Settings* settings, Eina_Bool use)
714 {
715   LOG_EWK_API_MOCKUP();
716   return EINA_FALSE;
717 }
718
719 void ewk_settings_media_playback_notification_set(Ewk_Settings* settings, Eina_Bool enabled)
720 {
721   LOG_EWK_API_MOCKUP();
722 }
723
724 Eina_Bool ewk_settings_media_playback_notification_get(const Ewk_Settings* settings)
725 {
726   LOG_EWK_API_MOCKUP();
727   return EINA_FALSE;
728 }
729
730 void ewk_settings_media_subtitle_notification_set(Ewk_Settings *settings, Eina_Bool enabled)
731 {
732   LOG_EWK_API_MOCKUP();
733 }
734
735 Eina_Bool ewk_settings_media_subtitle_notification_get(const Ewk_Settings *settings)
736 {
737   LOG_EWK_API_MOCKUP();
738   return EINA_FALSE;
739 }
740
741 Eina_Bool ewk_settings_text_autosizing_scale_factor_set(Ewk_Settings* settings, double factor)
742 {
743   LOG_EWK_API_MOCKUP();
744   return EINA_FALSE;
745 }
746
747 double ewk_settings_text_autosizing_scale_factor_get(const Ewk_Settings* settings)
748 {
749   LOG_EWK_API_MOCKUP();
750   return 0;
751 }
752
753 Eina_Bool ewk_settings_legacy_font_size_enabled_set(Ewk_Settings* settings, Eina_Bool enabled)
754 {
755   LOG_EWK_API_MOCKUP();
756   return EINA_FALSE;
757 }
758
759 Eina_Bool ewk_settings_legacy_font_size_enabled_get(Ewk_Settings* settings)
760 {
761   LOG_EWK_API_MOCKUP();
762   return EINA_FALSE;
763 }
764
765 Eina_Bool ewk_settings_use_system_font_set(Ewk_Settings* settings, Eina_Bool use)
766 {
767   if (IsMobileProfile()) {
768     EWebView* impl = EWebView::FromEvasObject(settings->getEvasObject());
769     if (impl) {
770       if (use)
771         impl->UseSettingsFont();
772       else
773         impl->SetBrowserFont();
774       return EINA_TRUE;
775     }
776   }
777   return EINA_FALSE;
778 }
779
780 Eina_Bool ewk_settings_use_system_font_get(Ewk_Settings* settings)
781 {
782   LOG_EWK_API_MOCKUP();
783   return EINA_FALSE;
784 }
785
786 void ewk_settings_selection_handle_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
787 {
788   LOG_EWK_API_MOCKUP();
789 }
790
791 Eina_Bool ewk_settings_selection_handle_enabled_get(const Ewk_Settings* settings)
792 {
793   LOG_EWK_API_MOCKUP();
794   return EINA_FALSE;
795 }
796
797 void ewk_settings_disclose_set_cookie_headers_enabled(Ewk_Settings* settings, Eina_Bool Enabled)
798 {
799   LOG_EWK_API_MOCKUP();
800 }
801
802 Eina_Bool ewk_settings_viewport_meta_tag_set(Ewk_Settings* settings, Eina_Bool enable)
803 {
804   LOG_EWK_API_MOCKUP();
805   return EINA_FALSE;
806 }
807
808 Eina_Bool ewk_settings_viewport_meta_tag_get(const Ewk_Settings *settings)
809 {
810   LOG_EWK_API_MOCKUP();
811   return EINA_FALSE;
812 }
813
814 void ewk_settings_spatial_navigation_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
815 {
816 #if defined(OS_TIZEN_TV_PRODUCT)
817   EINA_SAFETY_ON_NULL_RETURN(settings);
818   LOG(INFO)<<"ewk_settings_spatial_navigation_enabled_set, enabled: " <<(bool)enable;
819   settings->getPreferences().spatial_navigation_enabled = !!enable;
820   ewkUpdateWebkitPreferences(settings->getEvasObject());
821 #else
822   LOG_EWK_API_MOCKUP();
823 #endif
824 }
825
826 void ewk_settings_ime_panel_enabled_set(Ewk_Settings* settings, Eina_Bool Enabled)
827 {
828   LOG_EWK_API_MOCKUP();
829 }
830
831 Eina_Bool ewk_settings_ime_panel_enabled_get(const Ewk_Settings *settings)
832 {
833   LOG_EWK_API_MOCKUP();
834   return EINA_FALSE;
835 }
836
837 Eina_Bool ewk_settings_allow_file_access_from_external_url_set(Ewk_Settings* settings, Eina_Bool allow)
838 {
839   LOG_EWK_API_MOCKUP();
840   return EINA_FALSE;
841 }
842
843 Eina_Bool ewk_settings_swipe_to_refresh_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
844 {
845   LOG_EWK_API_MOCKUP();
846   return EINA_FALSE;
847 }
848
849 Eina_Bool ewk_settings_swipe_to_refresh_enabled_get(const Ewk_Settings *settings)
850 {
851   LOG_EWK_API_MOCKUP();
852   return EINA_FALSE;
853 }
854
855 void ewk_settings_drag_drop_enabled_set(Ewk_Settings* settings, Eina_Bool enabled)
856 {
857   LOG_EWK_API_MOCKUP();
858 }
859
860 Eina_Bool ewk_settings_drag_drop_enabled_get(const Ewk_Settings* settings)
861 {
862   LOG_EWK_API_MOCKUP();
863   return EINA_FALSE;
864 }
865
866 void ewk_settings_clipboard_enabled_set(Ewk_Settings* settings, Eina_Bool enabled)
867 {
868 #if BUILDFLAG(IS_TIZEN_TV)
869   EINA_SAFETY_ON_NULL_RETURN(settings);
870   settings->setClipboardEnabled(!!enabled);
871 #else
872   LOG_EWK_API_MOCKUP("Only for Tizen TV");
873 #endif
874 }
875
876 Eina_Bool ewk_settings_clipboard_enabled_get(const Ewk_Settings* settings)
877 {
878 #if BUILDFLAG(IS_TIZEN_TV)
879   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, EINA_FALSE);
880   return settings->getClipboardEnabled();
881 #else
882   LOG_EWK_API_MOCKUP("Only for Tizen TV");
883   return EINA_FALSE;
884 #endif
885 }
886
887 Eina_Bool ewk_settings_javascript_can_access_clipboard_set(Ewk_Settings* settings, Eina_Bool enable)
888 {
889   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, EINA_FALSE);
890   settings->getPreferences().javascript_can_access_clipboard = enable;
891   ewkUpdateWebkitPreferences(settings->getEvasObject());
892   return EINA_TRUE;
893 }
894
895 Eina_Bool ewk_settings_javascript_can_access_clipboard_get(const Ewk_Settings* settings)
896 {
897   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, EINA_FALSE);
898   return settings->getPreferences().javascript_can_access_clipboard;
899 }
900
901 Eina_Bool ewk_settings_dom_paste_allowed_set(Ewk_Settings* settings, Eina_Bool enable)
902 {
903   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, EINA_FALSE);
904   settings->getPreferences().dom_paste_enabled = enable;
905   ewkUpdateWebkitPreferences(settings->getEvasObject());
906   return EINA_TRUE;
907 }
908
909 Eina_Bool ewk_settings_dom_paste_allowed_get(const Ewk_Settings* settings)
910 {
911   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, EINA_FALSE);
912   return settings->getPreferences().dom_paste_enabled;
913 }
914
915 void ewk_settings_multiple_windows_support_set(Ewk_Settings* settings,
916                                                Eina_Bool support) {
917   EINA_SAFETY_ON_NULL_RETURN(settings);
918   settings->getPreferences().supports_multiple_windows = support;
919   ewkUpdateWebkitPreferences(settings->getEvasObject());
920 }
921
922 Eina_Bool ewk_settings_multiple_windows_support_get(Ewk_Settings* settings) {
923   EINA_SAFETY_ON_NULL_RETURN_VAL(settings, EINA_FALSE);
924   return settings->getPreferences().supports_multiple_windows;
925 }