2 * Copyright (C) 2009-2010 ProFUSION embedded systems
3 * Copyright (C) 2009-2016 Samsung Electronics. All rights reserved.
4 * Copyright (C) 2012 Intel Corporation
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public License
17 * along with this library; if not, write to the Free Software Foundation,
18 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 #include "ewk_view_product.h"
26 #include "authentication_challenge_popup.h"
27 #include "base/trace_event/ttrace.h"
28 #include "content/public/browser/navigation_controller.h"
29 #include "cookie_manager.h"
30 #include "eweb_view.h"
31 #include "geolocation_permission_popup.h"
32 #include "notification_permission_popup.h"
33 #include "private/ewk_back_forward_list_private.h"
34 #include "private/ewk_context_private.h"
35 #include "private/ewk_frame_private.h"
36 #include "private/ewk_history_private.h"
37 #include "private/ewk_hit_test_private.h"
38 #include "private/ewk_notification_private.h"
39 #include "private/ewk_private.h"
40 #include "private/ewk_quota_permission_request_private.h"
41 #include "private/ewk_view_private.h"
42 #include "public/ewk_back_forward_list.h"
43 #include "public/ewk_context.h"
44 #include "public/ewk_enums_internal.h"
45 #include "public/ewk_settings.h"
46 #include "third_party/blink/public/common/page/page_zoom.h"
47 #include "third_party/blink/public/common/web_preferences/web_preferences.h"
48 #include "ui/events/gesture_detection/gesture_configuration.h"
50 #include "usermedia_permission_popup.h"
51 #include "web_contents_delegate_efl.h"
53 #if defined(TIZEN_WEB_SPEECH_RECOGNITION)
54 #include "content/browser/speech/tts_platform_impl_tizen.h"
56 #if defined(TIZEN_VIDEO_HOLE)
57 #include "tizen_src/chromium_impl/media/base/tizen/video_plane_controller.h"
60 static Eina_Bool _ewk_view_default_user_media_permission(
61 Evas_Object*, Ewk_User_Media_Permission_Request*, void*);
63 static Eina_Bool _ewk_view_default_geolocation_permission(
64 Evas_Object*, Ewk_Geolocation_Permission_Request*, void*);
66 static Eina_Bool _ewk_view_default_notification_permission(
67 Evas_Object*, Ewk_Notification_Permission_Request*, void*);
69 static void _ewk_view_default_authentication(
70 Evas_Object*, Ewk_Auth_Challenge*, void*);
72 Eina_Bool ewk_view_smart_class_set(Ewk_View_Smart_Class* api)
74 EINA_SAFETY_ON_NULL_RETURN_VAL(api, false);
75 return InitSmartClassInterface(*api);
78 // TODO: Evas_Object *ewk_view_smart_add(Evas *e, Evas_Smart *smart, Ewk_Context *context, Ewk_Page_Group *pageGroup)
80 Evas_Object* ewk_view_add_with_session_data(Evas* canvas, const char* data, unsigned length)
82 EINA_SAFETY_ON_NULL_RETURN_VAL(canvas, NULL);
84 Evas_Object* ret = ewk_view_add(canvas);
86 EWebView* webView = GetEWebViewFromEwkView(ret);
88 if (!webView || !data || !length)
91 if (webView->RestoreFromSessionData(data, length))
99 Evas_Object* ewk_view_add_with_context(Evas* e, Ewk_Context* context)
101 EINA_SAFETY_ON_NULL_RETURN_VAL(context, 0);
102 Evas_Object* ewk_view = CreateWebViewAsEvasObject(context, e);
103 LOG(INFO) << "evas: " << e << ", context: " << context << ", ewk_view:" << ewk_view;
105 #if !BUILDFLAG(IS_TIZEN_TV)
106 ewk_view_user_media_permission_callback_set(ewk_view,
107 _ewk_view_default_user_media_permission, 0);
109 ewk_view_geolocation_permission_callback_set(ewk_view,
110 _ewk_view_default_geolocation_permission, 0);
111 ewk_view_notification_permission_callback_set(ewk_view,
112 _ewk_view_default_notification_permission, 0);
113 ewk_view_authentication_callback_set(ewk_view,
114 _ewk_view_default_authentication, nullptr);
120 Evas_Object* ewk_view_add(Evas* e)
122 EINA_SAFETY_ON_NULL_RETURN_VAL(e, NULL);
123 // TODO: shouldn't this function create new EWebContext for each new EWebView?
124 // when using default context like that it makes unclear who should release
125 // default web context. It won't be released by destroyed eweb_view because
126 // ewk_context_default_get does AddRef
127 Ewk_Context* context = ewk_context_default_get();
128 LOG(INFO) << "evas: " << e << ", context: " << context;
129 return ewk_view_add_with_context(e, context);
132 Evas_Object* ewk_view_add_in_incognito_mode(Evas* e)
134 EINA_SAFETY_ON_NULL_RETURN_VAL(e, nullptr);
135 Ewk_Context* context = Ewk_Context::IncognitoContext();
136 LOG(INFO) << "evas: " << e << ", context: " << context;
137 EINA_SAFETY_ON_NULL_RETURN_VAL(context, nullptr);
138 return ewk_view_add_with_context(e, context);
141 Ewk_Context *ewk_view_context_get(const Evas_Object *view)
143 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, 0);
144 return static_cast<Ewk_Context*>(impl->context());
147 Eina_Bool ewk_view_url_set(Evas_Object* view, const char* url_string)
149 TTRACE_WEB("ewk_view_url_set url: %s", url_string);
150 LOG(INFO) << "view: " << view << ", url: " << url_string;
151 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, false);
152 EINA_SAFETY_ON_NULL_RETURN_VAL(url_string, false);
153 GURL url(url_string);
154 impl->SetURL(url, true);
158 const char* ewk_view_url_get(const Evas_Object* view)
160 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, 0);
161 return impl->GetURL().possibly_invalid_spec().c_str();
164 const char* ewk_view_original_url_get(const Evas_Object* view)
166 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, 0);
167 return impl->GetOriginalURL().possibly_invalid_spec().c_str();
170 Eina_Bool ewk_view_reload(Evas_Object *view)
172 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, false);
173 LOG(INFO) << "view: " << view;
179 Eina_Bool ewk_view_reload_bypass_cache(Evas_Object *view)
181 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, false);
182 impl->ReloadBypassingCache();
186 Eina_Bool ewk_view_stop(Evas_Object* view)
188 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, false);
194 Ewk_Settings *ewk_view_settings_get(const Evas_Object *ewkView)
196 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl,0);
197 return impl->GetSettings();
200 const char* ewk_view_title_get(const Evas_Object* view)
202 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, 0);
203 return impl->GetTitle();
206 double ewk_view_load_progress_get(const Evas_Object* view)
208 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, -1);
209 return impl->GetProgressValue();
212 Eina_Bool ewk_view_scale_set(Evas_Object* view, double scale_factor, int x, int y)
214 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
215 impl->SetScale(scale_factor);
216 impl->SetScroll(x, y);
217 LOG(INFO) << "view: " << view << ", scale_factor: " << scale_factor << ", x:" << x << ", y:" << y;
221 void ewk_view_scale_changed_callback_set(
223 Ewk_View_Scale_Changed_Callback callback,
225 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl);
226 impl->SetScaleChangedCallback(callback, user_data);
229 double ewk_view_scale_get(const Evas_Object *view)
231 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, -1);
232 return impl->GetScale();
235 Eina_Bool ewk_view_back(Evas_Object *view)
237 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, false);
238 LOG(INFO) << "view: " << view;
239 return impl->GoBack();
242 Eina_Bool ewk_view_forward(Evas_Object *view)
244 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, false);
245 LOG(INFO) << "view: " << view;
246 return impl->GoForward();
249 Eina_Bool ewk_view_back_possible(Evas_Object *view)
251 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, false);
252 return impl->CanGoBack();
255 Eina_Bool ewk_view_forward_possible(Evas_Object *view)
257 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, false);
258 return impl->CanGoForward();
261 Eina_Bool ewk_view_web_login_request(Evas_Object* ewkView)
263 LOG_EWK_API_MOCKUP();
267 Eina_Bool ewk_view_html_string_load(Evas_Object* view, const char* html, const char* base_uri, const char* unreachable_uri)
269 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
270 EINA_SAFETY_ON_NULL_RETURN_VAL(html, EINA_FALSE);
271 LOG(INFO) << "view: " << view;
272 impl->LoadHTMLString(html, base_uri, unreachable_uri);
276 Eina_Bool ewk_view_mouse_events_enabled_set(Evas_Object *view, Eina_Bool enabled)
278 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, false);
280 impl->SetMouseEventsEnabled(!!enabled);
285 Eina_Bool ewk_view_mouse_events_enabled_get(const Evas_Object *view)
287 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, false);
289 return impl->MouseEventsEnabled();
292 Eina_Bool ewk_view_color_picker_color_set(Evas_Object* ewkView, int r, int g, int b, int a)
294 LOG_EWK_API_MOCKUP();
298 double ewk_view_text_zoom_get(const Evas_Object* view)
300 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, -1.0);
301 return impl->GetTextZoomFactor();
304 Eina_Bool ewk_view_text_zoom_set(Evas_Object* view, double text_zoom_level)
306 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, false);
307 if (ewk_settings_text_zoom_enabled_get(ewk_view_settings_get(view))) {
308 impl->SetTextZoomFactor(text_zoom_level);
314 void ewk_view_not_found_error_page_load(Evas_Object* ewkView, const char* errorUrl)
316 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
317 impl->LoadNotFoundErrorPage(std::string(errorUrl));
320 void ewk_view_scale_range_get(Evas_Object* view, double* min_scale, double* max_scale)
322 if (!min_scale && !max_scale)
325 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl);
326 impl->GetPageScaleRange(min_scale, max_scale);
329 void ewk_view_suspend(Evas_Object* ewkView)
331 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
332 LOG(INFO) << "view: " << ewkView;
336 void ewk_view_resume(Evas_Object* ewkView)
338 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
342 Eina_Bool ewk_view_url_request_set(Evas_Object* ewkView, const char* url, Ewk_Http_Method method, Eina_Hash* headers, const char* body)
344 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, EINA_FALSE);
345 EINA_SAFETY_ON_NULL_RETURN_VAL(url, EINA_FALSE);
346 content::NavigationController::LoadURLType loadtype;
348 case EWK_HTTP_METHOD_GET:
349 loadtype = content::NavigationController::LOAD_TYPE_DEFAULT;
351 case EWK_HTTP_METHOD_POST:
352 loadtype = content::NavigationController::LOAD_TYPE_HTTP_POST;
355 LOG(ERROR) << "Not supported HTTP Method.";
359 impl->UrlRequestSet(url, loadtype, headers, body);
363 Eina_Bool ewk_view_plain_text_set(Evas_Object* view, const char* plain_text)
365 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
366 EINA_SAFETY_ON_NULL_RETURN_VAL(plain_text, EINA_FALSE);
367 impl->LoadPlainTextString(plain_text);
371 Eina_Bool ewk_view_contents_set(Evas_Object* view, const char* contents, size_t contents_size, char* mime_type, char* encoding, char* base_uri)
373 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
374 EINA_SAFETY_ON_NULL_RETURN_VAL(contents, EINA_FALSE);
375 impl->LoadData(contents, contents_size, mime_type, encoding, base_uri);
379 Eina_Bool ewk_view_html_contents_set(Evas_Object* view, const char* html, const char* base_uri)
381 return ewk_view_html_string_load(view, html, base_uri, NULL);
384 Eina_Bool ewk_view_page_visibility_state_set(Evas_Object* ewkView, Ewk_Page_Visibility_State page_visibility_state, Eina_Bool initial_state)
386 // TODO: Should we send initial_state to |Page::setVisibilityState()|?.
387 // isInitialState parameter seems be true only in the constructor of WebViewImpl.
388 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, false);
390 return impl->SetPageVisibility(page_visibility_state);
393 Eina_Bool ewk_view_user_agent_set(Evas_Object* ewkView, const char* user_agent)
395 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, false);
396 LOG(INFO) << "view: " << ewkView << ", user_agent: " << user_agent;
397 return impl->SetUserAgent(user_agent);
400 const char* ewk_view_user_agent_get(const Evas_Object* ewkView)
402 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, 0);
403 return impl->GetUserAgent();
406 Eina_Bool ewk_view_application_name_for_user_agent_set(Evas_Object* ewkView, const char* application_name)
408 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, false);
409 return impl->SetUserAgentAppName(application_name);
412 const char* ewk_view_application_name_for_user_agent_get(const Evas_Object* ewkView)
414 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, 0);
415 return eina_stringshare_add(impl->GetUserAgentAppName());
418 Eina_Bool ewk_view_custom_header_add(const Evas_Object* ewkView, const char* name, const char* value)
420 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, EINA_FALSE);
421 EINA_SAFETY_ON_NULL_RETURN_VAL(name, EINA_FALSE);
422 EINA_SAFETY_ON_NULL_RETURN_VAL(value, EINA_FALSE);
423 EINA_SAFETY_ON_NULL_RETURN_VAL(impl->context(),EINA_FALSE);
424 return impl->context()->HTTPCustomHeaderAdd(name, value);
427 Eina_Bool ewk_view_custom_header_remove(const Evas_Object* ewkView, const char* name)
429 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, EINA_FALSE);
430 EINA_SAFETY_ON_NULL_RETURN_VAL(name, EINA_FALSE);
431 EINA_SAFETY_ON_NULL_RETURN_VAL(impl->context(),EINA_FALSE);
432 return impl->context()->HTTPCustomHeaderRemove(name);
436 Eina_Bool ewk_view_custom_header_clear(const Evas_Object* ewkView)
438 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, EINA_FALSE);
439 EINA_SAFETY_ON_NULL_RETURN_VAL(impl->context(),EINA_FALSE);
440 impl->context()->HTTPCustomHeaderClear();
445 Eina_Bool ewk_view_visibility_set(Evas_Object* view, Eina_Bool enable)
447 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
448 LOG(INFO) << "view: " << view << ", enable:" << (bool)enable;
449 return impl->SetVisibility(enable);
452 Evas_Object* ewk_view_screenshot_contents_get(const Evas_Object* view, Eina_Rectangle view_area, float scale_factor, Evas* canvas)
454 EINA_SAFETY_ON_NULL_RETURN_VAL(canvas, NULL);
455 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, NULL);
456 LOG(INFO) << "view: " << view;
457 return impl->GetSnapshot(view_area, scale_factor);
460 Eina_Bool ewk_view_screenshot_contents_get_async(const Evas_Object* view, Eina_Rectangle view_area,
461 float scale_factor, Evas* canvas, Ewk_Web_App_Screenshot_Captured_Callback callback, void* user_data)
463 EINA_SAFETY_ON_NULL_RETURN_VAL(callback, EINA_FALSE);
464 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
465 LOG(INFO) << "view: " << view;
466 return impl->GetSnapshotAsync(view_area, callback, user_data, scale_factor)
471 unsigned int ewk_view_inspector_server_start(Evas_Object* ewkView, unsigned int port)
473 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, false);
474 LOG(INFO) << "view: " << ewkView << ", port:" << port;
475 return impl->StartInspectorServer(port);
478 Eina_Bool ewk_view_inspector_server_stop(Evas_Object* ewkView)
480 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, false);
481 LOG(INFO) << "view: " << ewkView;
482 return impl->StopInspectorServer();
485 Eina_Bool ewk_view_cache_image_get(const Evas_Object* o, const char* image_url, Evas* canvas, Ewk_View_Cache_Image_Get_Callback callback, void* user_data)
487 LOG_EWK_API_MOCKUP();
491 void ewk_view_scroll_by(Evas_Object* ewkView, int deltaX, int deltaY)
494 LOG(INFO) << "view: " << ewkView << ", deltaX:" << deltaX << ", deltaY:" << deltaY;
495 if (EINA_TRUE == ewk_view_scroll_pos_get(ewkView, &x, &y)) {
496 ewk_view_scroll_set(ewkView, x + deltaX, y + deltaY);
500 Eina_Bool ewk_view_scroll_pos_get(Evas_Object* ewkView, int* x, int* y)
502 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, false);
503 return impl->GetScrollPosition(x, y);
506 Eina_Bool ewk_view_scroll_set(Evas_Object* view, int x, int y)
508 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
509 LOG(INFO) << "view: " << view << ", x:" << x << ", y:" << y;
510 impl->SetScroll(x, y);
515 Eina_Bool ewk_view_scroll_size_get(const Evas_Object* view, int* width, int* height)
521 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
522 impl->GetScrollSize(width,height);
526 void ewk_view_clear_tiles_on_hide_enabled_set(Evas_Object* ewkView, Eina_Bool enable)
528 LOG_EWK_API_MOCKUP();
531 void ewk_view_password_confirm_popup_callback_set(Evas_Object* view, Ewk_View_Password_Confirm_Popup_Callback callback, void* user_data)
533 LOG_EWK_API_MOCKUP();
536 void ewk_view_password_confirm_popup_reply(Evas_Object* ewkView, Ewk_Password_Popup_Option result)
538 LOG_EWK_API_MOCKUP();
541 void ewk_view_javascript_alert_callback_set(Evas_Object* view, Ewk_View_JavaScript_Alert_Callback callback, void* user_data)
543 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl);
544 LOG(INFO) << "view: " << view;
546 impl->SetJavaScriptAlertCallback(callback, user_data);
549 void ewk_view_javascript_alert_reply(Evas_Object* view)
551 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl);
552 LOG(INFO) << "view: " << view;
553 impl->JavaScriptAlertReply();
556 void ewk_view_javascript_confirm_callback_set(Evas_Object* view, Ewk_View_JavaScript_Confirm_Callback callback, void* user_data)
558 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl);
559 LOG(INFO) << "view: " << view;
561 impl->SetJavaScriptConfirmCallback(callback, user_data);
564 void ewk_view_javascript_confirm_reply(Evas_Object* view, Eina_Bool result)
566 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl);
567 LOG(INFO) << "view: " << view;
568 impl->JavaScriptConfirmReply(result);
571 void ewk_view_javascript_prompt_callback_set(Evas_Object* view, Ewk_View_JavaScript_Prompt_Callback callback, void* user_data)
573 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl);
574 LOG(INFO) << "view: " << view;
576 impl->SetJavaScriptPromptCallback(callback, user_data);
579 void ewk_view_javascript_prompt_reply(Evas_Object* view, const char* result)
581 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl);
582 LOG(INFO) << "view: " << view;
583 impl->JavaScriptPromptReply(result);
586 void ewk_view_before_unload_confirm_panel_callback_set(Evas_Object* ewkView, Ewk_View_Before_Unload_Confirm_Panel_Callback callback, void* userData)
588 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
589 EINA_SAFETY_ON_NULL_RETURN(callback);
590 impl->SetBeforeUnloadConfirmPanelCallback(callback, userData);
593 void ewk_view_before_unload_confirm_panel_reply(Evas_Object* ewkView, Eina_Bool result)
595 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
596 impl->ReplyBeforeUnloadConfirmPanel(result);
599 Eina_Bool ewk_view_web_application_capable_get(Evas_Object* ewkView, Ewk_Web_App_Capable_Get_Callback callback, void* userData)
601 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, EINA_FALSE);
602 EINA_SAFETY_ON_NULL_RETURN_VAL(callback, EINA_FALSE);
603 #if !defined(EWK_BRINGUP) // FIXME::M94 Bringup IPC to MOJO conversion in
605 return impl->WebAppCapableGet(callback, userData) ? EINA_TRUE : EINA_FALSE;
611 Eina_Bool ewk_view_web_application_icon_url_get(Evas_Object* ewkView, Ewk_Web_App_Icon_URL_Get_Callback callback, void* userData)
613 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, EINA_FALSE);
614 EINA_SAFETY_ON_NULL_RETURN_VAL(callback, EINA_FALSE);
615 #if !defined(EWK_BRINGUP) // FIXME::M94 Bringup IPC to MOJO conversion in
617 return impl->WebAppIconUrlGet(callback, userData) ? EINA_TRUE : EINA_FALSE;
623 Eina_Bool ewk_view_web_application_icon_urls_get(Evas_Object* ewkView, Ewk_Web_App_Icon_URLs_Get_Callback callback, void* userData)
625 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, EINA_FALSE);
626 EINA_SAFETY_ON_NULL_RETURN_VAL(callback, EINA_FALSE);
627 #if !defined(EWK_BRINGUP) // FIXME::M94 Bringup IPC to MOJO conversion in
629 return impl->WebAppIconUrlsGet(callback, userData) ? EINA_TRUE : EINA_FALSE;
635 Eina_Bool ewk_view_command_execute(Evas_Object* view, const char* command, const char* value)
637 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, false);
638 EINA_SAFETY_ON_NULL_RETURN_VAL(command, false);
639 impl->ExecuteEditCommand(command, value);
643 Eina_Bool ewk_view_contents_size_get(const Evas_Object* view, Evas_Coord* width, Evas_Coord* height)
650 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
651 Eina_Rectangle contents_size = impl->GetContentsSize();
654 *width = contents_size.w;
656 *height = contents_size.h;
661 Eina_Bool ewk_view_contents_pdf_get(Evas_Object* view, int width, int height, const char* fileName)
663 EINA_SAFETY_ON_NULL_RETURN_VAL(fileName, EINA_FALSE);
664 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
665 return impl->SaveAsPdf(width, height, fileName);
668 Eina_Bool ewk_view_script_execute(Evas_Object* ewkView, const char* script, Ewk_View_Script_Execute_Callback callback, void* user_data)
670 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, false);
671 EINA_SAFETY_ON_NULL_RETURN_VAL(script, false);
672 LOG(INFO) << "view: " << ewkView;
673 // callback can be null, so do not test it for null
674 if (0 != strcmp(script, "")) //check for empty string
675 return impl->ExecuteJavaScript(script, callback, user_data);
679 Eina_Bool ewk_view_plain_text_get(Evas_Object* view, Ewk_View_Plain_Text_Get_Callback callback, void* user_data)
681 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
682 EINA_SAFETY_ON_NULL_RETURN_VAL(callback, EINA_FALSE);
683 return (impl->PlainTextGet(callback, user_data));
686 Eina_Bool ewk_view_mhtml_data_get(Evas_Object *view, Ewk_View_MHTML_Data_Get_Callback callback, void *user_data)
688 EINA_SAFETY_ON_NULL_RETURN_VAL(callback, EINA_FALSE);
689 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
690 return impl->GetMHTMLData(callback, user_data);
693 Ewk_Hit_Test* ewk_view_hit_test_new(Evas_Object* ewkView, int x, int y, int hit_test_mode)
695 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, 0);
696 return impl->RequestHitTestDataAt(x, y,
697 static_cast<Ewk_Hit_Test_Mode>(hit_test_mode));
700 Eina_Bool ewk_view_hit_test_request(Evas_Object* o, int x, int y, int hit_test_mode, Ewk_View_Hit_Test_Request_Callback callback, void* user_data)
702 EWK_VIEW_IMPL_GET_OR_RETURN(o, impl, EINA_FALSE);
703 return impl->AsyncRequestHitTestDataAt(x, y, static_cast<Ewk_Hit_Test_Mode>(hit_test_mode), callback, user_data);
706 Ewk_History* ewk_view_history_get(Evas_Object* ewkView)
708 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, NULL);
709 return impl->GetBackForwardHistory();
712 Eina_Bool ewk_view_notification_closed(Evas_Object* ewkView, Eina_List* notification_list)
717 Eina_Bool ewk_view_popup_menu_select(Evas_Object* ewkView, unsigned int selectedIndex)
719 LOG_EWK_API_MOCKUP();
723 Eina_Bool ewk_view_popup_menu_multiple_select(Evas_Object* ewkView, Eina_Inarray* changeList)
725 LOG_EWK_API_MOCKUP();
729 void ewk_view_orientation_send(Evas_Object* ewkView, int orientation)
731 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
732 LOG(INFO) << "view: " << ewkView << ", orientation:" << orientation;
733 impl->SetOrientation(orientation);
736 void ewk_view_encoding_custom_set(Evas_Object* ewkView, const char* encoding)
738 // Chromium does not support this feature hence the comment
739 LOG_EWK_API_MOCKUP("Not Supported by chromium");
742 Eina_Bool ewk_view_text_selection_range_get(const Evas_Object* view, Eina_Rectangle* left_rect, Eina_Rectangle* right_rect)
744 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
745 if (left_rect && right_rect && impl->GetSelectionRange(left_rect, right_rect)) {
747 evas_object_geometry_get(view, &x, &y, 0, 0);
757 Eina_Bool ewk_view_text_selection_clear(Evas_Object *view)
759 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
760 return impl->ClearSelection();
763 const char* ewk_view_text_selection_text_get(Evas_Object* view)
765 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, NULL);
766 return impl->CacheSelectedText();
769 void ewk_view_focused_input_element_value_set(Evas_Object* ewkView, const char* value)
771 LOG_EWK_API_MOCKUP();
774 const char* ewk_view_focused_input_element_value_get(Evas_Object* ewkView)
776 LOG_EWK_API_MOCKUP();
780 Eina_Bool ewk_view_horizontal_panning_hold_get(Evas_Object* ewkView) {
781 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, EINA_FALSE);
782 return impl->GetHorizontalPanningHold();
785 void ewk_view_horizontal_panning_hold_set(Evas_Object* ewkView,
787 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
788 impl->SetHorizontalPanningHold(hold);
791 Eina_Bool ewk_view_vertical_panning_hold_get(Evas_Object* ewkView)
793 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, EINA_FALSE);
794 return impl->GetVerticalPanningHold();
797 void ewk_view_vertical_panning_hold_set(Evas_Object* view, Eina_Bool hold) {
798 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl);
799 impl->SetVerticalPanningHold(hold);
802 void ewk_view_orientation_lock_callback_set(Evas_Object* ewkView, Ewk_Orientation_Lock_Cb func, void* data)
804 LOG_EWK_API_MOCKUP("This API is deprecated, to use orientation lock/unlock "
805 "API please use functions lock_orientation/unlock_orientation provided "
806 "by Ewk_View_Smart_Class.");
810 void ewk_view_back_forward_list_clear(const Evas_Object *view)
812 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl);
813 impl->BackForwardListClear();
816 Eina_Bool ewk_view_feed_touch_event(Evas_Object *view, Ewk_Touch_Event_Type type, const Eina_List *points, const Evas_Modifier *modifiers)
818 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, false);
820 impl->HandleTouchEvents(type, points, modifiers);
825 Eina_Bool ewk_view_touch_events_enabled_set(Evas_Object *view, Eina_Bool enabled)
827 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, false);
829 impl->SetTouchEventsEnabled(!!enabled);
834 Eina_Bool ewk_view_touch_events_enabled_get(const Evas_Object *view)
836 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, false);
838 return impl->TouchEventsEnabled();
841 Ewk_Frame_Ref ewk_view_main_frame_get(Evas_Object* o)
843 EWK_VIEW_IMPL_GET_OR_RETURN(o, impl, NULL);
844 return static_cast<Ewk_Frame_Ref>(impl->GetMainFrame());
847 void ewk_view_content_security_policy_set(Evas_Object* ewkView, const char* policy, Ewk_CSP_Header_Type type)
849 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
850 EINA_SAFETY_ON_NULL_RETURN(policy);
851 impl->SetContentSecurityPolicy(policy, type);
854 void ewk_view_application_cache_permission_callback_set(Evas_Object* ewkView, Ewk_View_Applicacion_Cache_Permission_Callback callback, void* userData)
856 // Chromium does not support this feature hence the comment
857 LOG_EWK_API_MOCKUP("Not Supported by chromium");
860 void ewk_view_application_cache_permission_reply(Evas_Object* ewkView, Eina_Bool allow)
862 // Chromium does not support this feature hence the comment
863 LOG_EWK_API_MOCKUP("Not Supported by chromium");
866 void ewk_view_exceeded_indexed_database_quota_callback_set(Evas_Object* view, Ewk_View_Exceeded_Indexed_Database_Quota_Callback callback, void* user_data)
868 // Chromium does not support quota for Indexed DB only.
869 // IndexedDB uses temporary storage that is shared
870 // between other features.
871 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl);
872 impl->SetExceededIndexedDatabaseQuotaCallback(callback, user_data);
875 void ewk_view_exceeded_indexed_database_quota_reply(Evas_Object* view, Eina_Bool allow)
877 // Chromium does not support quota for Indexed DB only.
878 // IndexedDB uses temporary storage that is shared
879 // between other features.
880 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl);
881 impl->ExceededIndexedDatabaseQuotaReply(allow);
884 Eina_Bool ewk_view_text_find(Evas_Object *view, const char *text, Ewk_Find_Options options, unsigned int max_match_count)
886 // FIXME: We need to implement next options in Ewk_Find_Options struct. (refer to ewk_view.h)
887 // - EWK_FIND_OPTIONS_AT_WORD_STARTS
888 // - EWK_FIND_OPTIONS_TREAT_MEDIAL_CAPITAL_AS_WORD_START
889 // - EWK_FIND_OPTIONS_WRAP_AROUND
890 // - EWK_FIND_OPTIONS_SHOW_OVERLAY
891 // - EWK_FIND_OPTIONS_SHOW_FIND_INDICATOR
892 // - EWK_FIND_OPTIONS_SHOW_HIGHLIGHT (Currently there is no way to control this option. so it is always set)
894 // FIXME: Updating of max_match_count is not implemented.
896 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
897 EINA_SAFETY_ON_NULL_RETURN_VAL(text, EINA_FALSE);
898 impl->Find(text, options);
902 Eina_Bool ewk_view_text_find_highlight_clear(Evas_Object *view)
904 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
909 void ewk_view_exceeded_database_quota_callback_set(Evas_Object* ewkView, Ewk_View_Exceeded_Database_Quota_Callback callback, void* userData)
911 // According to chromium source code:
912 // src/third_party/WebKit/Source/modules/webdatabase/SQLTransactionClient.cpp line 67
913 // Chromium does not allow users to manually change the quota for an origin (for now, at least).
914 // This API is impossible to implement right now
915 LOG_EWK_API_MOCKUP("Not Supported by chromium");
918 void ewk_view_exceeded_database_quota_reply(Evas_Object* ewkView, Eina_Bool allow)
920 // According to chromium source code:
921 // src/third_party/WebKit/Source/modules/webdatabase/SQLTransactionClient.cpp line 67
922 // Chromium does not allow users to manually change the quota for an origin (for now, at least).
923 // This API is impossible to implement right now
924 LOG_EWK_API_MOCKUP("Not Supported by chromium");
927 void ewk_view_exceeded_local_file_system_quota_callback_set(Evas_Object* ewkView, Ewk_View_Exceeded_Indexed_Database_Quota_Callback callback, void* userData)
929 LOG_EWK_API_MOCKUP();
932 void ewk_view_exceeded_local_file_system_quota_reply(Evas_Object* ewkView, Eina_Bool allow)
934 LOG_EWK_API_MOCKUP();
937 void ewk_view_unfocus_allow_callback_set(Evas_Object* ewkView, Ewk_View_Unfocus_Allow_Callback callback, void* user_data)
939 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
940 impl->SetViewUnfocusAllowCallback(callback, user_data);
943 void ewk_view_smartrc_show_mic_notification_callback_set(Evas_Object* ewkView, Ewk_View_SmartRC_Mic_Notification_Callback callback, void* user_data)
945 #if BUILDFLAG(IS_TIZEN_TV)
946 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
947 impl->SetViewSmartrcMicNotificationCallback(callback, user_data);
949 LOG_EWK_API_MOCKUP("This API is only available in Tizen TV product.");
953 void ewk_view_geolocation_permission_callback_set(Evas_Object* ewk_view, Ewk_View_Geolocation_Permission_Callback callback, void* user_data)
955 EWK_VIEW_IMPL_GET_OR_RETURN(ewk_view, impl);
956 impl->SetViewGeolocationPermissionCallback(callback, user_data);
959 static Eina_Bool _ewk_view_default_geolocation_permission(
960 Evas_Object* ewk_view,
961 Ewk_Geolocation_Permission_Request* request,
964 EWK_VIEW_IMPL_GET_OR_RETURN(ewk_view, impl, EINA_FALSE);
966 std::string value = std::string(ewk_security_origin_host_get(
967 ewk_geolocation_permission_request_origin_get(request)));
968 std::string message = std::string(
969 "Web Page (%s) is requesting permission to access your location.");
970 std::string replace_str = std::string("(%s)");
972 size_t pos = message.find(replace_str.c_str());
973 if (pos != std::string::npos)
974 message.replace(pos, replace_str.length(), value.c_str());
976 // add for suspending
977 ewk_geolocation_permission_request_suspend(request);
979 GeolocationPermissionPopup* popup = new GeolocationPermissionPopup(request,
980 ewk_geolocation_permission_request_origin_get(request), message);
982 impl->GetPermissionPopupManager()->AddPermissionRequest(popup);
987 void ewk_view_user_media_permission_callback_set(Evas_Object* ewk_view,
988 Ewk_View_User_Media_Permission_Callback callback,
991 EWK_VIEW_IMPL_GET_OR_RETURN(ewk_view, impl);
992 impl->SetViewUserMediaPermissionCallback(callback, user_data);
995 void ewk_view_user_media_permission_query_callback_set(
996 Evas_Object* ewk_view,
997 Ewk_View_User_Media_Permission_Query_Callback callback,
999 EWK_VIEW_IMPL_GET_OR_RETURN(ewk_view, impl);
1000 impl->SetViewUserMediaPermissionQueryCallback(callback, user_data);
1003 static Eina_Bool _ewk_view_default_user_media_permission(
1004 Evas_Object* ewk_view,
1005 Ewk_User_Media_Permission_Request* user_media_permission_request,
1008 EWK_VIEW_IMPL_GET_OR_RETURN(ewk_view, impl, EINA_FALSE);
1010 std::string message =
1011 CreatePermissionMessageRequest(user_media_permission_request);
1013 // add for suspending
1014 ewk_user_media_permission_request_suspend(user_media_permission_request);
1016 UserMediaPermissionPopup* popup = new UserMediaPermissionPopup(
1017 user_media_permission_request,
1018 ewk_user_media_permission_request_origin_get(
1019 user_media_permission_request), message);
1021 impl->GetPermissionPopupManager()->AddPermissionRequest(popup);
1026 void ewk_view_use_settings_font(Evas_Object* ewkView)
1028 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
1029 impl->UseSettingsFont();
1032 char* ewk_view_get_cookies_for_url(Evas_Object* view, const char* url)
1034 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, 0);
1035 EINA_SAFETY_ON_NULL_RETURN_VAL(url, 0);
1036 EINA_SAFETY_ON_NULL_RETURN_VAL(impl->context(), 0);
1037 EINA_SAFETY_ON_NULL_RETURN_VAL(impl->context()->cookieManager(), 0);
1038 std::string cookiesForURL =
1039 impl->context()->cookieManager()->GetCookiesForURL(std::string(url));
1040 if (cookiesForURL.empty())
1042 return strndup(cookiesForURL.c_str(), cookiesForURL.length());
1045 Eina_Bool ewk_view_fullscreen_exit(Evas_Object* view)
1047 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
1048 LOG(INFO) << "view: " << view;
1049 impl->ExitFullscreen();
1053 Eina_Bool ewk_view_draws_transparent_background_set(Evas_Object *view, Eina_Bool enabled)
1055 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
1056 return impl->SetDrawsTransparentBackground(!!enabled);
1059 void ewk_view_browser_font_set(Evas_Object* ewkView)
1061 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
1062 impl->SetBrowserFont();
1065 void ewk_view_session_data_get(Evas_Object* ewkView, const char** data, unsigned* length)
1067 EINA_SAFETY_ON_NULL_RETURN(data);
1068 EINA_SAFETY_ON_NULL_RETURN(length);
1070 EWebView* impl = GetEWebViewFromEwkView(ewkView);
1077 impl->GetSessionData(data, length);
1080 Eina_Bool ewk_view_mode_set(Evas_Object* ewkView, Ewk_View_Mode view_mode)
1082 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, EINA_FALSE);
1084 if (view_mode == EWK_VIEW_MODE_WINDOWED) {
1085 #if !defined(EWK_BRINGUP) // FIXME: m67 bringup
1086 impl->SetViewMode(blink::WebViewModeWindowed);
1089 } else if (view_mode == EWK_VIEW_MODE_FULLSCREEN) {
1090 #if !defined(EWK_BRINGUP) // FIXME: m67 bringup
1091 impl->SetViewMode(blink::WebViewModeFullscreen);
1099 Eina_Bool ewk_view_split_scroll_overflow_enabled_set(Evas_Object* ewkView, const Eina_Bool enabled)
1101 LOG_EWK_API_MOCKUP("for browser");
1105 Ewk_Back_Forward_List* ewk_view_back_forward_list_get(const Evas_Object* ewkView)
1107 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, NULL);
1108 return impl->GetBackForwardList();
1111 void ewk_view_notification_permission_callback_set(Evas_Object *o, Ewk_View_Notification_Permission_Callback callback, void *user_data)
1113 EWK_VIEW_IMPL_GET_OR_RETURN(o, impl);
1114 impl->SetNotificationPermissionCallback(callback, user_data);
1117 static Eina_Bool _ewk_view_default_notification_permission(
1118 Evas_Object* ewk_view,
1119 Ewk_Notification_Permission_Request* request,
1122 EWK_VIEW_IMPL_GET_OR_RETURN(ewk_view, impl, EINA_FALSE);
1124 std::string value = std::string(ewk_security_origin_host_get(
1125 ewk_notification_permission_request_origin_get(request)));
1126 std::string message = std::string(
1127 "Web Page (%s) is requesting permission to show notifications.");
1128 std::string replace_str = std::string("(%s)");
1130 size_t pos = message.find(replace_str.c_str());
1131 if (pos != std::string::npos)
1132 message.replace(pos, replace_str.length(), value.c_str());
1134 // add for suspending
1135 ewk_notification_permission_request_suspend(request);
1137 NotificationPermissionPopup* popup = new NotificationPermissionPopup(request,
1138 ewk_notification_permission_request_origin_get(request), message);
1140 impl->GetPermissionPopupManager()->AddPermissionRequest(popup);
1145 void ewk_view_draw_focus_ring_enable_set(Evas_Object* ewkView, Eina_Bool enable)
1147 LOG_EWK_API_MOCKUP("This API is deprecated");
1150 double ewk_view_page_zoom_get(const Evas_Object* ewkView)
1152 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, -1.0);
1153 return impl->GetPageZoomFactor();
1156 Eina_Bool ewk_view_page_zoom_set(Evas_Object* ewkView, double zoomFactor)
1158 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, EINA_FALSE);
1159 impl->SetPageZoomFactor(zoomFactor);
1163 Evas_Object* ewk_view_smart_add(Evas* canvas, Evas_Smart* smart, Ewk_Context* context, Ewk_Page_Group* pageGroup)
1165 EINA_SAFETY_ON_NULL_RETURN_VAL(context, 0);
1166 LOG(INFO) << "evas: " << canvas << ", context:" << context;
1167 return CreateWebViewAsEvasObject(context, canvas, smart);
1170 void ewk_view_quota_permission_request_callback_set(Evas_Object* ewkView, Ewk_Quota_Permission_Request_Callback callback, void* user_data)
1172 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
1173 impl->SetQuotaPermissionRequestCallback(callback, user_data);
1176 void ewk_view_quota_permission_request_reply(const Ewk_Quota_Permission_Request* request, const Eina_Bool allow)
1178 EINA_SAFETY_ON_NULL_RETURN(request);
1179 Evas_Object* ewkView = request->getView();
1180 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
1181 #if !defined(EWK_BRINGUP) // FIXME: m114 bringup
1182 impl->QuotaRequestReply(request, allow == EINA_TRUE);
1186 void ewk_view_quota_permission_request_cancel(const Ewk_Quota_Permission_Request* request)
1188 EINA_SAFETY_ON_NULL_RETURN(request);
1189 Evas_Object* ewkView = request->getView();
1190 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
1191 #if !defined(EWK_BRINGUP) // FIXME: m114 bringup
1192 impl->QuotaRequestCancel(request);
1196 Eina_Bool ewk_view_focus_set(const Evas_Object* view, Eina_Bool focused)
1198 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
1199 LOG(INFO) << "view: " << view << ", focused:" << (bool)focused;
1200 impl->SetFocus(focused);
1204 Eina_Bool ewk_view_focus_get(const Evas_Object* view)
1206 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
1207 return impl->HasFocus();
1210 Eina_Bool ewk_view_page_close(Evas_Object* o)
1212 EWK_VIEW_IMPL_GET_OR_RETURN(o, impl, EINA_FALSE);
1218 void ewk_view_session_timeout_set(Evas_Object* o, unsigned long timeout)
1220 EWK_VIEW_IMPL_GET_OR_RETURN(o, impl);
1221 impl->SetSessionTimeout(timeout);
1224 Evas_Object* ewk_view_widget_get(Evas_Object* view)
1226 LOG_EWK_API_MOCKUP();
1230 Eina_Bool ewk_view_draws_transparent_background_get(Evas_Object* o)
1232 EWK_VIEW_IMPL_GET_OR_RETURN(o, impl, EINA_FALSE);
1233 return impl->GetDrawsTransparentBackground();
1236 Eina_Bool ewk_view_did_change_theme_color_callback_set(
1238 Ewk_View_Did_Change_Theme_Color_Callback callback,
1240 EWK_VIEW_IMPL_GET_OR_RETURN(o, impl, EINA_FALSE);
1241 impl->SetDidChangeThemeColorCallback(callback, user_data);
1245 Eina_Bool ewk_view_split_scroll_overflow_enabled_get(const Evas_Object* o) {
1246 LOG_EWK_API_MOCKUP();
1250 Eina_Bool ewk_view_save_page_as_mhtml(Evas_Object* o, const char* path, Ewk_View_Save_Page_Callback callback, void* user_data)
1252 EWK_VIEW_IMPL_GET_OR_RETURN(o, impl, EINA_FALSE);
1253 EINA_SAFETY_ON_NULL_RETURN_VAL(path, EINA_FALSE);
1254 EINA_SAFETY_ON_NULL_RETURN_VAL(callback, EINA_FALSE);
1255 return impl->SavePageAsMHTML(path, callback, user_data);
1258 void ewk_view_reader_mode_set(Evas_Object* ewk_view, Eina_Bool enable)
1260 LOG_EWK_API_MOCKUP();
1263 Eina_Bool ewk_view_top_controls_height_set(Evas_Object* ewk_view, size_t top_height, size_t bottom_height)
1265 LOG_EWK_API_MOCKUP();
1269 Eina_Bool ewk_view_top_controls_state_set(Evas_Object* ewk_view, Ewk_Top_Control_State constraint, Ewk_Top_Control_State current, Eina_Bool animation)
1271 LOG_EWK_API_MOCKUP();
1275 Eina_Bool ewk_view_main_frame_scrollbar_visible_set(Evas_Object* ewk_view,
1276 Eina_Bool visible) {
1277 EWK_VIEW_IMPL_GET_OR_RETURN(ewk_view, impl, EINA_FALSE);
1278 return impl->SetMainFrameScrollbarVisible(!!visible);
1281 Eina_Bool ewk_view_main_frame_scrollbar_visible_get(
1282 Evas_Object* ewk_view,
1283 Ewk_View_Main_Frame_Scrollbar_Visible_Get_Callback callback,
1285 EINA_SAFETY_ON_NULL_RETURN_VAL(callback, EINA_FALSE);
1286 EWK_VIEW_IMPL_GET_OR_RETURN(ewk_view, impl, EINA_FALSE);
1288 return impl->GetMainFrameScrollbarVisible(callback, user_data);
1291 Eina_Bool ewk_view_set_custom_device_pixel_ratio(Evas_Object* ewkView, Eina_Bool enabled)
1293 LOG_EWK_API_MOCKUP();
1297 Ewk_Board_Decoding_Capabilities ewk_view_board_decoding_capabilities_get(
1298 const Evas_Object* view)
1300 LOG_EWK_API_MOCKUP();
1301 return EWK_BOARD_DECODING_CAPABILITIES_UNKNOWN;
1304 void ewk_view_next_player_for_media_switch_set(
1308 LOG_EWK_API_MOCKUP();
1311 void ewk_view_sw_audio_decoding_set(
1313 Eina_Bool use_sw_audio_decoder)
1315 LOG_EWK_API_MOCKUP();
1318 void ewk_view_set_video_geometry(
1320 Eina_Rectangle v_area)
1322 LOG_EWK_API_MOCKUP();
1325 void ewk_view_release_players(
1328 LOG_EWK_API_MOCKUP();
1331 void ewk_view_player_set_visibility(
1336 LOG_EWK_API_MOCKUP();
1339 void ewk_view_broadcast_set_visibility(
1343 LOG_EWK_API_MOCKUP();
1346 void ewk_view_player_play(
1350 LOG_EWK_API_MOCKUP();
1353 void ewk_view_player_pause(
1357 LOG_EWK_API_MOCKUP();
1360 Eina_Bool ewk_media_translated_url_set(Evas_Object* ewkView, const char* url)
1362 #if BUILDFLAG(IS_TIZEN_TV)
1363 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, EINA_FALSE);
1364 EINA_SAFETY_ON_NULL_RETURN_VAL(url, EINA_FALSE);
1365 impl->SetTranslatedURL(url);
1368 LOG_EWK_API_MOCKUP("Only for Tizen TV.");
1373 #if BUILDFLAG(IS_TIZEN_TV)
1374 Eina_Bool ewk_view_app_preload_set(Evas_Object* ewkView, Eina_Bool is_preload)
1376 LOG_EWK_API_MOCKUP();
1381 Evas_Object* ewk_view_favicon_get(const Evas_Object* ewkView)
1383 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, nullptr);
1384 EINA_SAFETY_ON_NULL_RETURN_VAL(impl->context(), nullptr);
1385 const char* url = ewk_view_url_get(ewkView);
1386 return impl->context()->AddFaviconObject(url, impl->GetEvas());
1389 Eina_Bool ewk_view_html_string_override_current_entry_load(Evas_Object* view, const char* html, const char* base_uri, const char* unreachable_url)
1391 #if BUILDFLAG(IS_TIZEN_TV)
1392 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
1393 EINA_SAFETY_ON_NULL_RETURN_VAL(html, EINA_FALSE);
1394 impl->LoadHTMLStringOverridingCurrentEntry(html, base_uri, unreachable_url);
1397 LOG_EWK_API_MOCKUP("Only for Tizen TV.");
1402 Eina_Bool ewk_view_text_matches_count(Evas_Object* o, const char* text, Ewk_Find_Options options, unsigned max_match_count)
1404 LOG_EWK_API_MOCKUP();
1408 void ewk_view_mirrored_blur_set(Evas_Object* o, Eina_Bool state)
1410 LOG_EWK_API_MOCKUP();
1413 void ewk_view_add_dynamic_certificate_path(const Evas_Object *ewkView, const char* host, const char* cert_path)
1415 #if BUILDFLAG(IS_TIZEN_TV)
1416 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
1417 impl->AddDynamicCertificatePath(std::string(host), std::string(cert_path));
1419 LOG_EWK_API_MOCKUP();
1423 void ewk_view_atk_deactivation_by_app(Evas_Object* view, Eina_Bool enable)
1425 #if BUILDFLAG(IS_TIZEN_TV)
1426 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl);
1427 LOG(INFO)<< "ewk_view_atk_deactivation_by_app, enable: " << (bool)enable;
1428 impl->DeactivateAtk(enable == EINA_FALSE);
1430 LOG_EWK_API_MOCKUP();
1434 char* ewk_view_cookies_get(Evas_Object* o, const char* url)
1436 LOG_EWK_API_MOCKUP();
1440 void ewk_view_notification_show_callback_set(Evas_Object *o, Ewk_View_Notification_Show_Callback show_callback, void *user_data)
1442 LOG_EWK_API_MOCKUP();
1445 void ewk_view_notification_cancel_callback_set(Evas_Object *o, Ewk_View_Notification_Cancel_Callback cancel_callback, void *user_data)
1447 LOG_EWK_API_MOCKUP();
1450 const char* ewk_view_custom_encoding_get(const Evas_Object* o)
1452 LOG_EWK_API_MOCKUP();
1456 Eina_Bool ewk_view_custom_encoding_set(Evas_Object* o, const char* encoding)
1458 LOG_EWK_API_MOCKUP();
1462 void ewk_view_force_layout(const Evas_Object* o)
1464 LOG_EWK_API_MOCKUP();
1467 Eina_Bool ewk_view_send_key_event(Evas_Object* ewk_view, void* key_event, Eina_Bool is_press) {
1468 EWK_VIEW_IMPL_GET_OR_RETURN(ewk_view, impl, EINA_FALSE);
1469 EINA_SAFETY_ON_NULL_RETURN_VAL(key_event, EINA_FALSE);
1470 #if BUILDFLAG(IS_TIZEN_TV)
1471 LOG(INFO) << "view: " << ewk_view << ", is_press :" << (bool)is_press;
1473 impl->SendKeyEvent(ewk_view, key_event, !!is_press);
1477 Eina_Bool ewk_view_tts_mode_set(Evas_Object* view, ewk_tts_mode tts_mode) {
1478 #if defined(TIZEN_WEB_SPEECH_RECOGNITION)
1480 case EWK_TTS_MODE_DEFAULT:
1481 content::TtsPlatformImplTizen::SetTtsMode(TTS_MODE_DEFAULT);
1483 case EWK_TTS_MODE_NOTIFICATION:
1484 content::TtsPlatformImplTizen::SetTtsMode(TTS_MODE_NOTIFICATION);
1486 case EWK_TTS_MODE_SCREEN_READER:
1487 content::TtsPlatformImplTizen::SetTtsMode(TTS_MODE_SCREEN_READER);
1490 LOG(ERROR) << "Not supported TTS mode: " << static_cast<int>(tts_mode);
1495 LOG_EWK_API_MOCKUP("API unavailable.");
1500 Eina_Bool ewk_view_javascript_message_handler_add(
1502 Ewk_View_Script_Message_Cb callback,
1504 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
1505 EINA_SAFETY_ON_NULL_RETURN_VAL(name, EINA_FALSE);
1506 return impl->AddJavaScriptMessageHandler(view, callback, std::string(name));
1509 Eina_Bool ewk_view_evaluate_javascript(Evas_Object* view,
1511 const char* result) {
1512 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
1513 EINA_SAFETY_ON_NULL_RETURN_VAL(result, EINA_FALSE);
1514 EINA_SAFETY_ON_NULL_RETURN_VAL(name, EINA_FALSE);
1516 std::string function(name);
1517 std::string data(result);
1518 std::string pattern("\n");
1519 std::string replace("</br>");
1520 std::string::size_type pos = 0;
1521 std::string::size_type offset = 0;
1522 while ((pos = data.find(pattern, offset)) != std::string::npos) {
1523 data.replace(data.begin() + pos, data.begin() + pos + pattern.size(),
1525 offset = pos + replace.size();
1528 // For JSON Object or Array.
1529 if (result[0] == '{' || result[0] == '[') {
1530 data = "javascript:" + function + "(JSON.parse('" + data + "'))";
1532 data = "javascript:" + function + "('" + data + "')";
1535 return impl->ExecuteJavaScript(data.c_str(), NULL, 0);
1538 void ewk_view_authentication_callback_set(
1539 Evas_Object* ewk_view,
1540 Ewk_View_Authentication_Callback callback,
1543 EWK_VIEW_IMPL_GET_OR_RETURN(ewk_view, impl);
1544 impl->SetViewAuthCallback(callback, user_data);
1548 static void _ewk_view_default_authentication(Evas_Object* ewk_view,
1549 Ewk_Auth_Challenge* auth_challenge,
1552 AuthenticationChallengePopup::CreateAndShow(auth_challenge, ewk_view);
1555 void ewk_view_app_installation_request_callback_set(Evas_Object* o, Ewk_App_Installation_Request_Callback callback, void* user_data)
1557 LOG_EWK_API_MOCKUP();
1560 Eina_Bool ewk_view_bg_color_set(Evas_Object* o, int r, int g, int b, int a) {
1561 EWK_VIEW_IMPL_GET_OR_RETURN(o, impl, EINA_FALSE);
1562 if (r < 0 || r > 255 || g < 0 || g > 255 || b < 0 || b > 255 || a < 0 ||
1564 LOG(ERROR) << "Invalid background color";
1567 return impl->SetBackgroundColor(r, g, b, a);
1570 Eina_Bool ewk_view_key_events_enabled_set(Evas_Object* o, Eina_Bool enabled) {
1571 #if BUILDFLAG(IS_TIZEN_TV)
1572 EWK_VIEW_IMPL_GET_OR_RETURN(o, impl, EINA_FALSE);
1573 LOG(INFO)<< "ewk_view_key_events_enabled_set, enabled: " << (bool)enabled;
1574 return impl->SetKeyEventsEnabled(!!enabled);
1576 LOG_EWK_API_MOCKUP("This API is only available in Tizen TV product.");
1582 Eina_Bool ewk_view_bg_color_get(Evas_Object* view,
1583 Ewk_View_Background_Color_Get_Callback callback,
1585 EINA_SAFETY_ON_NULL_RETURN_VAL(callback, EINA_FALSE);
1586 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
1588 return impl->GetBackgroundColor(callback, user_data);
1591 void ewk_view_clear_all_tiles_resources(Evas_Object* ewkView) {
1592 #if BUILDFLAG(IS_TIZEN_TV)
1593 LOG(INFO) << "view: " << ewkView;
1595 LOG_EWK_API_MOCKUP();
1599 Eina_Bool ewk_view_edge_scroll_by(Evas_Object *ewkView, int dx, int dy)
1601 LOG_EWK_API_MOCKUP();
1602 #if BUILDFLAG(IS_TIZEN_TV)
1603 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, EINA_FALSE);
1604 LOG(INFO) << "view: " << ewkView << ", dx:" << dx << ", dy:" << dy;
1605 return impl->EdgeScrollBy(dx, dy);
1607 LOG_EWK_API_MOCKUP("edge_scroll_by feature is not enabled");
1612 Eina_Bool ewk_view_set_support_video_hole(Evas_Object* ewkView,
1615 Eina_Bool isVideoWindow) {
1616 LOG_EWK_API_MOCKUP();
1617 #if defined(TIZEN_VIDEO_HOLE)
1618 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, EINA_FALSE);
1619 LOG(INFO) << "view: " << ewkView << ", enable:" << (bool)enable;
1620 // Video hole is set false by default. So further calls are not needed
1621 // if |enable| is false.
1622 if (enable == EINA_FALSE)
1625 impl->EnableVideoHoleSupport();
1626 media::VideoPlaneController::SetSharedVideoWindowHandle(
1628 static_cast<media::VideoPlaneController::RenderingMode>(isVideoWindow));
1631 LOG_EWK_API_MOCKUP("Video Hole feature is not enabled");
1636 void ewk_view_set_cursor_by_client(Evas_Object* ewkView, Eina_Bool enable) {}
1638 void ewk_view_widget_pepper_extension_callback_set(Evas_Object* ewk_view, Generic_Sync_Call_Callback cb, void* user_data) {
1639 #if defined(TIZEN_PEPPER_EXTENSIONS) && BUILDFLAG(IS_TIZEN_TV)
1640 EWK_VIEW_IMPL_GET_OR_RETURN(ewk_view, impl);
1641 impl->SetPepperExtensionCallback(cb, user_data);
1643 NOTIMPLEMENTED() << "This API is only available with TIZEN_PEPPER_EXTENSIONS"
1644 << " macro on TIZEN_TV products.";
1648 void ewk_view_widget_pepper_extension_info_set(Evas_Object* ewk_view, Ewk_Value widget_pepper_ext_info) {
1649 #if defined(TIZEN_PEPPER_EXTENSIONS) && BUILDFLAG(IS_TIZEN_TV)
1650 EWK_VIEW_IMPL_GET_OR_RETURN(ewk_view, impl);
1651 impl->SetPepperExtensionWidgetInfo(widget_pepper_ext_info);
1653 NOTIMPLEMENTED() << "This API is only available with TIZEN_PEPPER_EXTENSIONS"
1654 << " macro on TIZEN_TV products.";
1658 void ewk_view_resume_network_loading(Evas_Object* ewk_view)
1660 #if BUILDFLAG(IS_TIZEN_TV)
1661 LOG(INFO) << "view : " << ewk_view;
1662 EWK_VIEW_IMPL_GET_OR_RETURN(ewk_view, impl);
1663 impl->ResumeNetworkLoading();
1665 LOG_EWK_API_MOCKUP("Only for Tizen TV Browser");
1669 void ewk_view_suspend_network_loading(Evas_Object* ewk_view)
1671 #if BUILDFLAG(IS_TIZEN_TV)
1672 LOG(INFO) << "view : " << ewk_view;
1673 EWK_VIEW_IMPL_GET_OR_RETURN(ewk_view, impl);
1674 impl->SuspendNetworkLoading();
1676 LOG_EWK_API_MOCKUP("Only for Tizen TV Browser");
1680 void ewk_view_offscreen_rendering_enabled_set(Evas_Object* o, Eina_Bool enabled)
1682 #if defined(TIZEN_TBM_SUPPORT)
1683 EWK_VIEW_IMPL_GET_OR_RETURN(o, impl);
1684 impl->SetOffscreenRendering(enabled);
1685 #if defined(TIZEN_VIDEO_HOLE)
1686 media::VideoPlaneController::set_use_wayland_window(true);
1689 LOG_EWK_API_MOCKUP();
1693 void ewk_view_ime_window_set(Evas_Object* o, void* window)
1695 LOG_EWK_API_MOCKUP();
1698 Eina_Bool ewk_view_set_support_canvas_hole(Evas_Object* ewkView, const char* url)
1700 LOG_EWK_API_MOCKUP();
1704 void ewk_view_tile_cover_area_multiplier_set(Evas_Object* ewkView,
1705 float cover_area_multiplier) {
1706 LOG_EWK_API_MOCKUP();
1709 Eina_Bool ewk_view_marlin_enable_set(Evas_Object* ewkView, Eina_Bool is_enable)
1711 LOG_EWK_API_MOCKUP();
1715 Eina_Bool ewk_view_key_system_whitelist_set(Evas_Object* ewkView, const char** list, unsigned list_size)
1717 LOG_EWK_API_MOCKUP();
1721 Eina_Bool ewk_view_is_video_playing(Evas_Object* o, Ewk_Is_Video_Playing_Callback callback, void* user_data)
1723 #if BUILDFLAG(IS_TIZEN_TV)
1724 EWK_VIEW_IMPL_GET_OR_RETURN(o, impl, EINA_FALSE);
1725 EINA_SAFETY_ON_NULL_RETURN_VAL(callback, EINA_FALSE);
1726 LOG(INFO) << __func__;
1727 return impl->IsVideoPlaying(callback, user_data) ? EINA_TRUE : EINA_FALSE;
1729 LOG_EWK_API_MOCKUP("Only for Tizen TV.");
1734 Eina_Bool ewk_view_stop_video(Evas_Object* o, Ewk_Stop_Video_Callback callback, void* user_data)
1736 LOG_EWK_API_MOCKUP();
1740 Eina_Bool ewk_view_active_drm_set(Evas_Object* view, const char* drm_system_id)
1742 LOG_EWK_API_MOCKUP();
1746 void ewk_view_broadcast_decoder_set(
1748 Ewk_Hardware_Decoders decoder)
1750 #if BUILDFLAG(IS_TIZEN_TV)
1751 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl);
1752 /* waiting for implement*/
1753 //impl->SetBroadcastDecoder(decoder);
1755 LOG_EWK_API_MOCKUP("Only for Tizen TV.");
1759 void ewk_media_set_subtitle_lang(Evas_Object* ewkView, const char* lang_list)
1761 #if BUILDFLAG(IS_TIZEN_TV)
1762 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
1763 impl->SetPreferSubtitleLang(lang_list);
1765 LOG_EWK_API_MOCKUP("Only for Tizen TV.");
1769 void ewk_media_set_parental_rating_result(Evas_Object* ewkView, const char* url, Eina_Bool is_pass)
1771 #if BUILDFLAG(IS_TIZEN_TV)
1772 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
1773 impl->SetParentalRatingResult(url, is_pass);
1775 LOG_EWK_API_MOCKUP("Only for Tizen TV.");
1779 void ewk_media_start_with_high_bit_rate(Evas_Object* ewkView, Eina_Bool high_bitrate)
1781 #if BUILDFLAG(IS_TIZEN_TV)
1782 EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
1783 impl->SetHighBitRate(high_bitrate);
1785 LOG_EWK_API_MOCKUP("Only for Tizen TV.");
1789 double ewk_view_media_current_time_get(const Evas_Object *o)
1791 #if BUILDFLAG(IS_TIZEN_TV)
1792 EWK_VIEW_IMPL_GET_OR_RETURN(o, impl, 0);
1793 return impl->GetCurrentTime();
1795 LOG_EWK_API_MOCKUP("Only for Tizen TV.");
1800 void ewk_view_request_canvas_fullscreen(Evas_Object* ewkView)
1802 LOG_EWK_API_MOCKUP();
1805 void ewk_view_360video_play(Evas_Object* ewkView)
1807 LOG_EWK_API_MOCKUP();
1810 void ewk_view_360video_pause(Evas_Object* ewkView)
1812 LOG_EWK_API_MOCKUP();
1815 void ewk_view_360video_duration(Evas_Object* ewkView, Ewk_360_Video_Duration_Callback callback, void* user_data)
1817 LOG_EWK_API_MOCKUP();
1820 void ewk_view_360video_current_time(Evas_Object* ewkView, Ewk_360_Video_CurrentTime_Callback callback, void* user_data)
1822 LOG_EWK_API_MOCKUP();
1825 void ewk_view_360video_set_current_time(Evas_Object* ewkView, double current_time)
1827 LOG_EWK_API_MOCKUP();
1830 Eina_Bool ewk_view_script_execute_all_frames(Evas_Object *o, const char *script, Ewk_View_Script_Execute_Cb callback, void *user_data)
1832 #if BUILDFLAG(IS_TIZEN_TV)
1833 LOG(INFO) << ", view: " << o;
1835 LOG_EWK_API_MOCKUP();
1840 void ewk_view_voicemanager_label_draw(Evas_Object* view,
1842 Eina_Rectangle rect) {
1843 #if BUILDFLAG(IS_TIZEN_TV)
1844 EINA_SAFETY_ON_NULL_RETURN(image);
1845 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl);
1846 impl->DrawLabel(image, rect);
1848 LOG_EWK_API_MOCKUP("Only for Tizen TV.");
1852 void ewk_view_voicemanager_labels_clear(Evas_Object* view) {
1853 #if BUILDFLAG(IS_TIZEN_TV)
1854 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl);
1855 impl->ClearLabels();
1857 LOG_EWK_API_MOCKUP("Only for Tizen TV.");
1861 void ewk_view_floating_window_state_changed(const Evas_Object *view, Eina_Bool status)
1863 #if BUILDFLAG(IS_TIZEN_TV)
1864 EWK_VIEW_IMPL_GET_OR_RETURN(view, impl);
1865 LOG(INFO) << __FUNCTION__ << ", view: "<< view << ", status: " << status;
1866 impl->SetFloatVideoWindowState(status);
1868 LOG_EWK_API_MOCKUP();
1872 void ewk_view_feed_mouse_down(Evas_Object* view,
1873 Ewk_Mouse_Button_Type button,
1876 LOG_EWK_API_MOCKUP("NUI feature is not enabled");
1879 void ewk_view_feed_mouse_up(Evas_Object* view,
1880 Ewk_Mouse_Button_Type button,
1883 LOG_EWK_API_MOCKUP("NUI feature is not enabled");
1886 void ewk_view_feed_mouse_move(Evas_Object* view, int x, int y) {
1887 LOG_EWK_API_MOCKUP("NUI feature is not enabled");
1890 void ewk_view_feed_mouse_wheel(Evas_Object* view,
1891 Eina_Bool y_direction,
1895 LOG_EWK_API_MOCKUP("NUI feature is not enabled");
1898 void ewk_view_auto_login(Evas_Object *view, const char* user_name, const char* password)
1900 LOG_EWK_API_MOCKUP("This API is not supported.");
1903 void ewk_view_request_manifest(Evas_Object* o,
1904 Ewk_View_Request_Manifest_Callback callback,
1906 EWK_VIEW_IMPL_GET_OR_RETURN(o, impl);
1907 impl->RequestManifest(callback, user_data);
1910 void ewk_view_media_device_list_get(Evas_Object* o, Ewk_Media_Device_List_Get_Callback callback, void* user_data) {
1911 #if BUILDFLAG(IS_TIZEN_TV)
1912 LOG(INFO) << "ewk_view_media_device_list_get called";
1913 EWK_VIEW_IMPL_GET_OR_RETURN(o, impl);
1914 EINA_SAFETY_ON_NULL_RETURN(callback);
1915 impl->GetMediaDeviceList(callback, user_data);
1917 LOG_EWK_API_MOCKUP("Only for Tizen TV.");
1921 void ewk_view_run_mixed_content_confirm_callback_set(
1922 Evas_Object* /* ewkView */,
1923 Ewk_View_Run_Mixed_Content_Confirm_Callback /* callback */,
1924 void* /* user_data */) {}
1926 void ewk_view_error_page_load_callback_set(Evas_Object* ewk_view, Ewk_View_Error_Page_Load_Callback callback, void* user_data)
1928 EWK_VIEW_IMPL_GET_OR_RETURN(ewk_view, impl);
1929 EINA_SAFETY_ON_NULL_RETURN(callback);
1930 impl->SetViewLoadErrorPageCallback(callback, user_data);
1933 Eina_Bool ewk_view_add_item_to_back_forward_list(Evas_Object* o, const Ewk_Back_Forward_List_Item* item)
1938 void ewk_view_poweroff_suspend(Evas_Object *item) {}