Prerender first frame of new view size before angle is changed.
[framework/web/webkit-efl.git] / Source / WebKit2 / UIProcess / API / efl / ewk_view_private.h
1 /*
2  * Copyright (C) 2012 Samsung Electronics
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public License
15  * along with this library; see the file COPYING.LIB.  If not, write to
16  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17  * Boston, MA 02110-1301, USA.
18  *
19  */
20
21 #ifndef ewk_view_private_h
22 #define ewk_view_private_h
23
24 #include <Evas.h>
25 #include <WebKit2/WKBase.h>
26
27 Evas_Object* ewk_view_base_add(Evas* canvas, WKContextRef, WKPageGroupRef);
28
29 #if OS(TIZEN)
30 #include "WKPage.h"
31 #include "WebEvent.h"
32 #include "ewk_auth_challenge.h"
33 #include "ewk_context_menu.h"
34 #include "ewk_form_data.h"
35 #include "ewk_policy_decision.h"
36 #include "ewk_view.h"
37 #include <JavaScriptCore/JSValueRef.h>
38 #include <WebCore/TextDirection.h>
39 #include <wtf/Vector.h>
40
41 #if ENABLE(TIZEN_REGISTER_PROTOCOL_HANDLER) || ENABLE(TIZEN_REGISTER_CONTENT_HANDLER)
42 #include "ewk_custom_handlers.h"
43 #endif
44
45 #if ENABLE(TIZEN_SEARCH_PROVIDER)
46 #include "ewk_search_provider.h"
47 #endif
48
49 #if ENABLE(TIZEN_GEOLOCATION)
50 #include "ewk_geolocation.h"
51 #endif
52
53 #if ENABLE(TIZEN_MEDIA_STREAM)
54 #include "ewk_user_media.h"
55 #endif
56
57 #if ENABLE(TIZEN_NOTIFICATIONS)
58 #include "ewk_notification.h"
59 #include "ewk_notification_private.h"
60 #endif
61
62 #if ENABLE(TIZEN_WEBKIT2_GET_TEXT_STYLE_FOR_SELECTION)
63 #include "ewk_text_style.h"
64 #endif
65
66 #if ENABLE(TIZEN_CERTIFICATE_HANDLING)
67 #include "ewk_certificate.h"
68 #endif
69
70 #if ENABLE(TOUCH_EVENTS)
71 #include "ewk_touch.h"
72 #endif
73
74 #if ENABLE(TIZEN_WEBKIT2_FOCUS_RING)
75 #include "FocusRing.h"
76 #endif
77
78 namespace WebCore {
79 class IntPoint;
80 }
81
82 namespace WebKit {
83 class WebPopupItem;
84 class WebPopupMenuProxyEfl;
85 #if ENABLE(TIZEN_INPUT_COLOR_PICKER)
86 class WebColorChooserProxyEfl;
87 #endif // ENABLE(TIZEN_INPUT_COLOR_PICKER)
88 class PageClientImpl;
89 }
90
91 typedef struct Ewk_Context Ewk_Context;
92
93 #if ENABLE(TIZEN_GEOLOCATION)
94 typedef struct _Ewk_Geolocation Ewk_Geolocation;
95 #endif
96
97 bool ewk_view_focused_node_adjust(Evas_Object* object, Eina_Bool adjustForExternalKeyboard = EINA_FALSE);
98 void ewk_view_touch_event_handler_result_set(Evas_Object* ewkView, WebKit::WebEvent::Type type, bool wasHandled);
99
100 #if ENABLE(TIZEN_WEBKIT2_TILED_AC)
101 bool ewk_view_image_native_surface_set(Evas_Object* ewkView, Evas_Native_Surface* nativeSurface);
102 void ewk_view_mark_for_sync(Evas_Object* ewkView);
103 #endif
104
105 #if (ENABLE_TIZEN_REGISTER_PROTOCOL_HANDLER) || (ENABLE_TIZEN_REGISTER_CONTENT_HANDLER) || (ENABLE_TIZEN_CUSTOM_SCHEME_HANDLER)
106 Ewk_Custom_Handlers_Data* ewkCustomHandlersCreateData(const char* target, const char* baseUrl, const char* url, const char* title);
107 Ewk_Custom_Handlers_Data* ewkCustomHandlersCreateData(const char* target, const char* baseUrl, const char* url);
108 Ewk_Custom_Handlers_State ewkGetCustomHandlersDataResult(Ewk_Custom_Handlers_Data* customHandlersData);
109 void ewkCustomHandlersDeleteData(Ewk_Custom_Handlers_Data* customHandlersData);
110 #endif
111 #if ENABLE(TIZEN_REGISTER_PROTOCOL_HANDLER)
112 void ewkViewRegisterProtocolHandlers(Evas_Object* ewkView, const char* scheme, const char* baseURL, const char* url, const char* title);
113 #endif
114 #if ENABLE(TIZEN_CUSTOM_SCHEME_HANDLER)
115 Ewk_Custom_Handlers_State ewkViewIsProtocolHandlerRegistered(Evas_Object* ewkView, const char* scheme, const char* baseURL, const char* url);
116 void ewkViewUnregisterProtocolHandlers(Evas_Object* ewkView, const char* scheme, const char* baseUrl, const char* url);
117 #endif
118 #if ENABLE(TIZEN_REGISTER_CONTENT_HANDLER)
119 void ewkViewRegisterContentHandlers(Evas_Object* ewkView, const char* mimeType, const char* baseURL, const char* url, const char* title);
120 Ewk_Custom_Handlers_State ewkViewIsContentHandlerRegistered(Evas_Object* ewkView, const char* mimeType, const char* baseURL, const char* url);
121 void ewkViewUnregisterContentHandlers(Evas_Object* ewkView, const char* mimeType, const char* baseUrl, const char* url);
122 #endif
123 #if ENABLE(TIZEN_SEARCH_PROVIDER)
124 Ewk_Search_Provider_Data* ewkSearchProviderCreateData(const char* baseURL, const char* engineURL);
125 void ewkSearchProviderDeleteData(Ewk_Search_Provider_Data* searchProviderData);
126 void ewkViewAddSearchProvider(Evas_Object* ewkView, const char* baseURL, const char* engineURL);
127 unsigned long ewkViewIsSearchProviderInstalled(Evas_Object* ewkView, const char* baseURL, const char* engineURL);
128 unsigned long ewkGetSearchProviderResult(Ewk_Search_Provider_Data* searchProviderData);
129 #endif
130 #if ENABLE(TIZEN_SUPPORT_WEBAPP_META_TAG)
131 bool ewkViewGetStandaloneStatus(Evas_Object* ewkView);
132 #endif
133
134 Evas_Object* ewk_view_touchscreen_add(Evas* canvas, WKContextRef, WKPageGroupRef);
135 WebKit::PageClientImpl* ewkViewGetPageClient(const Evas_Object* ewkView);
136
137 #if ENABLE(TIZEN_WEBKIT2_FOCUS_RING)
138 FocusRing* ewkViewGetFocusRing(Evas_Object*);
139 #endif // #if ENABLE(TIZEN_WEBKIT2_FOCUS_RING)
140
141 void ewkViewLoadCommitted(Evas_Object* ewkView);
142 #if ENABLE(TIZEN_WEBKIT2_LOCAL_IMPLEMENTATION_FOR_ERROR)
143 void ewkViewLoadError(Evas_Object* ewkView, WKErrorRef error);
144 #endif
145 void ewkViewDidFirstVisuallyNonEmptyLayout(Evas_Object* ewkView);
146 void ewkViewDidReceiveAuthenticationChallenge(Evas_Object* ewkView, Ewk_Auth_Challenge* authChallenge);
147 void ewk_view_process_crashed(Evas_Object* ewkView);
148 void ewkViewCustomizeContextMenu(Evas_Object* ewkView, Ewk_Context_Menu* menu);
149 void ewkViewCustomContextMenuItemSelected(Evas_Object* ewkView, Ewk_Context_Menu_Item* item);
150 uint64_t ewkContextGetDatabaseQuota(Ewk_Context* ewkContext);
151 bool ewkViewRunJavaScriptAlert(Evas_Object* ewkView, WKStringRef alertText);
152 bool ewkViewRunJavaScriptConfirm(Evas_Object* ewkView, WKStringRef message);
153 bool ewkViewRunJavaScriptPrompt(Evas_Object* ewkView, WKStringRef message, WKStringRef defaultValue);
154 #if ENABLE(TIZEN_SUPPORT_BEFORE_UNLOAD_CONFIRM_PANEL)
155 bool ewk_view_run_before_unload_confirm_panel(Evas_Object* ewkView, WKStringRef message);
156 #endif
157 bool ewkViewRunOpenPanel(Evas_Object* ewkView, WKOpenPanelParametersRef parameters, WKOpenPanelResultListenerRef listener);
158 void ewkViewClosePage(Evas_Object* ewkView);
159 WKPageRef ewkViewCreateNewPage(Evas_Object* ewkView);
160 JSGlobalContextRef ewkViewGetJavascriptGlobalContext(Evas_Object* ewkView);
161 void ewkViewFormSubmit(Evas_Object* ewkView, Ewk_Form_Data* formData);
162 Ewk_Form_Data* ewkFormDataCreate(WKFrameRef frame, WKDictionaryRef values);
163 void ewkFormDataDelete(Ewk_Form_Data* formData);
164 Ewk_Policy_Decision* ewkPolicyDecisionCreate(WKFramePolicyListenerRef listener, WKURLRequestRef request, WKFrameRef frame = 0, WKURLResponseRef response = 0, WKFrameNavigationType navigationType = kWKFrameNavigationTypeOther);
165 void ewkPolicyDecisionDelete(Ewk_Policy_Decision* policyDecision);
166 bool ewkPolicyDecisionDecided(Ewk_Policy_Decision* policyDecision);
167 bool ewkPolicyDecisionSuspended(Ewk_Policy_Decision* policyDecision);
168 void ewkViewPolicyNavigationDecide(Evas_Object* ewkView, Ewk_Policy_Decision* policyDecision);
169 void ewkViewPolicyNewWindowDecide(Evas_Object* ewkView, Ewk_Policy_Decision* policyDecision);
170 void ewkViewPolicyResponseDecide(Evas_Object* ewkView, Ewk_Policy_Decision* policyDecision);
171
172 void ewkViewSendScrollEvent(Evas_Object* ewkView, int deltaX, int deltaY);
173 void ewkViewSendEdgeEvent(Evas_Object* ewkView, const WebCore::IntPoint& scrollPosition, int deltaX, int deltaY);
174 void ewkViewClearEdges(Evas_Object* ewkView);
175
176 void ewkViewFrameRendered(Evas_Object* ewkView);
177
178 #if ENABLE(TIZEN_SQL_DATABASE)
179 bool ewkViewExceededDatabaseQuota(Evas_Object* ewkView, WKSecurityOriginRef origin, WKStringRef displayName, unsigned long long expectedUsage);
180 Ewk_Context_Exceeded_Quota* ewkContextCreateExceededQuota(WKSecurityOriginRef origin, WKStringRef databaseName, WKStringRef displayName, unsigned long long currentQuota, unsigned long long currentOriginUsage, unsigned long long currentDatabaseUsage, unsigned long long expectedUsage);
181 void ewkContextDeleteExceededQuota(Ewk_Context_Exceeded_Quota* exceededQuota);
182 unsigned long long ewkContextGetNewQuotaForExceededQuota(Ewk_Context* context, Ewk_Context_Exceeded_Quota* exceededQuota);
183 #endif
184
185 #if ENABLE(TIZEN_GEOLOCATION)
186 void ewkViewSetGeolocation(Evas_Object* ewkView, Ewk_Geolocation*);
187 Ewk_Geolocation* ewkViewGetGeolocation(Evas_Object* ewkView);
188 void ewkViewRequestGeolocationPermission(Evas_Object* ewkView, Ewk_Geolocation_Permission_Request*);
189 void ewkViewDeleteGeolocationPermission(Evas_Object* ewkView, Ewk_Geolocation_Permission_Request*);
190 bool ewkViewIsValidLocationService(Evas_Object* ewkView);
191 #endif
192
193 #if ENABLE(TIZEN_NOTIFICATIONS)
194 void ewkViewCancelNotification(Evas_Object* ewkView, uint64_t notificationID);
195 void ewkViewRequestNotificationPermission(Evas_Object* ewkView, Ewk_Notification_Permission_Request*);
196 void ewkViewShowNotification(Evas_Object* ewkView, Ewk_Notification*);
197 void ewkViewDeleteNotificationPermissionRequest(Evas_Object* ewkView, Ewk_Notification_Permission_Request*);
198 #endif
199
200 #if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE_BACKUP_IMAGE)
201 void ewk_view_backup_image_set(Evas_Object* ewkView);
202 bool ewk_view_backup_image_show(Evas_Object* ewkView);
203 bool ewk_view_backup_image_hide(Evas_Object* ewkView);
204 #endif
205
206 #if ENABLE(TIZEN_MEDIA_STREAM)
207 void ewkViewRequestUserMediaPermission(Evas_Object* ewkView, Ewk_User_Media_Permission_Request*);
208 void ewkViewDeleteUserMediaPermissionRequest(Evas_Object* ewkView, Ewk_User_Media_Permission_Request*);
209 #endif
210
211 #if ENABLE(TIZEN_JSBRIDGE_PLUGIN)
212 void ewkViewProcessJSBridgePlugin(Evas_Object* ewkView, WKStringRef request, WKStringRef message);
213 #endif
214
215 #if ENABLE(TIZEN_INPUT_TAG_EXTENSION)
216 void ewkViewInputPickerRequest(Evas_Object* ewkView, Ewk_Input_Type inputType, const String& inputValue);
217 #endif
218
219 #if ENABLE(TIZEN_VIEWPORT_META_TAG)
220 void ewkViewGetWindowFrame(Evas_Object* ewkView, int *x, int *y, int *w, int *h);
221 #endif
222
223 #if ENABLE(TIZEN_DATALIST_ELEMENT)
224 void ewkViewDataListShowRequest(Evas_Object* ewkView, Ewk_Input_Type inputType, Vector<String> optionList);
225 void ewkViewDataListHideRequest(Evas_Object* ewkView, Ewk_Input_Type inputType);
226 #endif
227
228 #if ENABLE(TIZEN_WEBKIT2_GET_TEXT_STYLE_FOR_SELECTION)
229 void  ewkViewDidGetTextStyleStateForSelection(Evas_Object* ewkView, int underlineState, int italicState, int boldState, const WebCore::IntPoint& startPoint, const WebCore::IntPoint& endPoint);
230 Ewk_Text_Style* ewkTextStyleCreate(int underlineState, int italicState, int boldState, const WebCore::IntPoint& startPoint, const WebCore::IntPoint& endPoint);
231 void ewkTextStyleDelete(Ewk_Text_Style* textStyle);
232 #endif
233
234 #if ENABLE(SCREEN_ORIENTATION_SUPPORT) && ENABLE(TIZEN_SCREEN_ORIENTATION_SUPPORT)
235 bool ewk_view_orientation_lock(Evas_Object* ewkView, int willLockOrientation);
236 void ewk_view_orientation_unlock(Evas_Object* ewkView);
237 #endif
238
239 void ewk_view_zoomable_area_set(Evas_Object*, const WebCore::IntPoint&, const WebCore::IntRect&);
240
241 #if ENABLE(TIZEN_ICON_DATABASE)
242 void ewkViewIconReceived(Evas_Object* ewkView);
243 #endif
244
245 #endif // #if OS(TIZEN)
246
247 #if ENABLE(TIZEN_CERTIFICATE_HANDLING)
248 void ewkViewRequestCertificateConfirm(Evas_Object* ewkView, Ewk_Certificate_Policy_Decision* certificatePolicyDecision);
249 Ewk_Certificate_Policy_Decision* ewkCertificatePolicyDecisionCreate(WKPageRef page, WKStringRef url, WKStringRef certificate, int error);
250 void ewkCertificatePolicyDecisionDelete(Ewk_Certificate_Policy_Decision* certificatePolicyDecision);
251 bool ewkCertificatePolicyDecisionSuspended(Ewk_Certificate_Policy_Decision* certificatePolicyDecision);
252 bool ewkCertificatePolicyDecisionDecided(Ewk_Certificate_Policy_Decision* certificatePolicyDecision);
253 #endif
254
255 void _ewk_view_suspend_painting(Evas_Object* ewkView);
256 void _ewk_view_resume_painting(Evas_Object* ewkView);
257
258 #if ENABLE(TIZEN_RUNTIME_BACKEND_SELECTION)
259 bool ewk_view_is_opengl_backend(Evas_Object* ewkView);
260 #endif
261
262 #if ENABLE(TIZEN_WEBKIT2_FOCUS_RING)
263 void ewkViewFocusRingHide(Evas_Object* ewkView);
264 #endif
265
266 #if ENABLE(TIZEN_SIGNAL_APP_BACK_FORWARD_LIST_CHANGED)
267 void ewkViewBackForwardListChanged(Evas_Object *ewkView);
268 #endif
269
270 #if ENABLE(TIZEN_APPLICATION_CACHE)
271 Eina_Bool ewkViewRequestApplicationCachePermission(Evas_Object* ewkView, WKSecurityOriginRef origin);
272 #endif
273
274 #if ENABLE(TIZEN_INDEXED_DATABASE)
275 bool ewkViewExceededIndexedDatabaseQuota(Evas_Object* ewkView, WKSecurityOriginRef origin, long long currentUsage);
276 #endif
277
278 #if ENABLE(TIZEN_WEBKIT2_POPUP_INTERNAL)
279 void ewk_view_popup_menu_update(Evas_Object* ewkView, WebCore::TextDirection textDirection, const Vector<WebKit::WebPopupItem>& items, int32_t selectedIndex);
280 #endif
281
282 #if ENABLE(TIZEN_WEBKIT2_FORM_DATABASE)
283 void ewk_view_form_password_data_fill(Evas_Object* ewkView);
284 void ewk_view_form_data_add(Evas_Object* ewkView, WKDictionaryRef& formData, bool isPasswordForm);
285 void ewk_view_form_candidate_data_get(Evas_Object* ewkView, const String& name, Vector<String>& candidates);
286 void ewk_view_text_change_in_textfield(Evas_Object* ewkView, const String& name, const String& value);
287 #endif
288
289 #if ENABLE(TIZEN_FILE_SYSTEM)
290 bool ewkViewExceededLocalFileSystemQuota(Evas_Object* ewkView, WKSecurityOriginRef origin, long long currentUsage);
291 #endif
292
293 #if ENABLE(TIZEN_PRERENDERING_FOR_ROTATION)
294 void ewkViewRotatePrepared(Evas_Object* ewkView);
295 #endif
296
297 #endif // ewk_view_private_h