2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 * @author Lukasz Wrzosek (l.wrzosek@samsung.com)
19 * @brief Declaration file for view logic for Webkit2
25 #include <i_view_module.h>
27 #include <dpl/log/log.h>
28 #include <dpl/assert.h>
30 #include <widget_model.h>
31 #include <i_runnable_widget_object.h>
32 #include <common/view_logic_apps_support.h>
33 #include <common/view_logic_vibration_support.h>
39 class ViewLogic : public ViewModule::IViewModule
45 void createWebView(Ewk_Context* context,
47 void destroyWebView();
50 void prepareView(WidgetModel* m, const std::string &startUrl);
59 void reloadStartPage();
60 Evas_Object* getCurrentWebview();
61 void setUserCallbacks(const WRT::UserDelegatesPtr& cbs);
63 // Ewk_Context operations
64 void initializeEwkContext(Ewk_Context* context);
65 void finalizeEwkContext();
68 void initializeSupport();
69 void initializePluginLoading();
72 void ewkClientInit(Evas_Object *wkView);
73 void ewkClientDeinit(Evas_Object *wkView);
76 void prepareEwkView(Evas_Object *wkView);
77 void removeEwkView(Evas_Object *wkView);
78 void resumeEwkView(Evas_Object *wkView);
79 void suspendEwkView(Evas_Object *wkView);
80 void resumeWebkit(Evas_Object *wkView);
81 void suspendWebkit(Evas_Object *wkView);
83 // message from injected bundle Callback
84 static void contextMessageFromInjectedBundleCallback(
90 // EWK Context Callback
91 static void didStartDownloadCallback(
92 const char* downloadUrl,
96 static void loadStartedCallback(
100 static void loadFinishedCallback(
104 static void titleChangedCallback(
108 static void loadProgressCallback(
112 static void loadProgressFinishedCallback(
116 static void processCrashedCallback(
122 static void createWindowCallback(
126 static void closeWindowCallback(
131 // EWK PolicyDecide Callback
132 static void policyNavigationDecideCallback(
136 static void policyNewWindowDecideCallback(
140 static void pageResponseDecideCallback(
145 // EWK ContextMenu Callback
146 static void contextmenuCustomizeCallback(
151 // EWK FormClient Callback
152 static void formSubmitCallback(
157 // EWK Geolocation Callback
158 static void geolocationPermissionRequestCallback(
163 // EWK Notification Callback
164 static void notificationShowCallback(
168 static void notificationCancelCallback(
172 static void notificationPermissionRequestCallback(
177 // EWK Vibration Callback
178 static void vibrationVibrateCallback(
182 static void vibrationCancelCallback(
187 // EWK Orientation Callback
188 static Eina_Bool orientationLockCallback(
194 // EWK Fullscreen API callbacks
195 static void enterFullscreenCallback(
199 static void exitFullscreenCallback(
204 // JS execute callback
205 static void didRunJavaScriptCallback(
211 static Eina_Bool windowCloseIdlerCallback(void *data);
213 // appcore event callback
214 static int appcoreLowMemoryCallback(void *data);
215 // database usage permission request callback
216 static void databaseUsagePermissionRequestCallback(
220 void databaseUsagePermissionRequest(
222 bool askUserForDatabaseExceedPermission(
223 Ewk_Context_Exceeded_Quota* exceededQuota);
225 // file System Permission Request Callback
226 static void fileSystemPermissionRequestCallback(
230 void fileSystemPermissionRequest(
232 bool askUserForFileSystemPermission(
233 Ewk_Context_File_System_Permission* fileSystemPermission);
236 void didRecieveMessageFromInjectedBundle(
239 void didReceiveSynchronousMessage(
245 void rememberBlockedURI(const DPL::String& str);
246 std::string requestUriChanged(const DPL::String& changedURL);
247 void disconnectNetworkConnectionsFunction();
250 void windowClose(void);
253 Ewk_Context* m_ewkContext;
254 std::list<Evas_Object*> m_ewkViewList;
255 Evas_Object* m_currentEwkView;
256 Evas_Object* m_window;
257 WidgetModel* m_model;
258 std::string m_currentUri;
259 std::string m_blockedUri;
261 std::string m_startUrl;
262 WRT::UserDelegatesPtr m_cbs;
264 std::unique_ptr<SchemeSupport> m_schemeSupport;
265 std::unique_ptr<ViewModule::AppsSupport> m_appsSupport;
266 std::unique_ptr<ViewModule::VibrationSupport> m_vibrationSupport;
269 #endif //VIEW_LOGIC_H_