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 fireJavascriptEvent(int event, void* data);
62 void setUserCallbacks(const WRT::UserDelegatesPtr& cbs);
64 // Ewk_Context operations
65 void initializeEwkContext(Ewk_Context* context);
66 void finalizeEwkContext();
69 void initializeSupport();
70 void initializePluginLoading();
73 void ewkClientInit(Evas_Object *wkView);
74 void ewkClientDeinit(Evas_Object *wkView);
77 void prepareEwkView(Evas_Object *wkView);
78 void removeEwkView(Evas_Object *wkView);
79 void resumeEwkView(Evas_Object *wkView);
80 void suspendEwkView(Evas_Object *wkView);
81 void resumeWebkit(Evas_Object *wkView);
82 void suspendWebkit(Evas_Object *wkView);
84 // message from injected bundle Callback
85 static void contextMessageFromInjectedBundleCallback(
91 // EWK Context Callback
92 static void didStartDownloadCallback(
93 const char* downloadUrl,
97 static void loadStartedCallback(
101 static void loadFinishedCallback(
105 static void titleChangedCallback(
109 static void loadProgressCallback(
113 static void loadProgressFinishedCallback(
117 static void processCrashedCallback(
123 static void createWindowCallback(
127 static void closeWindowCallback(
132 // EWK PolicyDecide Callback
133 static void policyNavigationDecideCallback(
137 static void policyNewWindowDecideCallback(
141 static void pageResponseDecideCallback(
146 // EWK ContextMenu Callback
147 static void contextmenuCustomizeCallback(
152 // EWK FormClient Callback
153 static void formSubmitCallback(
158 // EWK Geolocation Callback
159 static void geolocationPermissionRequestCallback(
164 // EWK Notification Callback
165 static void notificationShowCallback(
169 static void notificationCancelCallback(
173 static void notificationPermissionRequestCallback(
178 // EWK Vibration Callback
179 static void vibrationVibrateCallback(
183 static void vibrationCancelCallback(
188 // EWK Orientation Callback
189 static Eina_Bool orientationLockCallback(
195 // EWK Fullscreen API callbacks
196 static void enterFullscreenCallback(
200 static void exitFullscreenCallback(
205 // EWK IME Show/Hide Callback
206 static void imeOpenCallback(
210 static void imeCloseCallback(
215 // JS execute callback
216 static void didRunJavaScriptCallback(
222 static Eina_Bool windowCloseIdlerCallback(void *data);
224 // appcore event callback
225 static int appcoreLowMemoryCallback(void *data);
226 // database usage permission request callback
227 static void databaseUsagePermissionRequestCallback(
231 void databaseUsagePermissionRequest(
233 bool askUserForDatabaseExceedPermission(
234 Ewk_Context_Exceeded_Quota* exceededQuota);
236 // file System Permission Request Callback
237 static void fileSystemPermissionRequestCallback(
241 void fileSystemPermissionRequest(
243 bool askUserForFileSystemPermission(
244 Ewk_Context_File_System_Permission* fileSystemPermission);
247 void didRecieveMessageFromInjectedBundle(
250 void didReceiveSynchronousMessage(
256 void rememberBlockedURI(const DPL::String& str);
257 std::string requestUriChanged(const DPL::String& changedURL);
260 void windowClose(void);
263 Ewk_Context* m_ewkContext;
264 std::list<Evas_Object*> m_ewkViewList;
265 Evas_Object* m_currentEwkView;
266 Evas_Object* m_window;
267 WidgetModel* m_model;
268 std::string m_currentUri;
269 std::string m_blockedUri;
271 std::string m_startUrl;
272 WRT::UserDelegatesPtr m_cbs;
274 std::unique_ptr<SchemeSupport> m_schemeSupport;
275 std::unique_ptr<ViewModule::AppsSupport> m_appsSupport;
276 std::unique_ptr<ViewModule::VibrationSupport> m_vibrationSupport;
279 #endif //VIEW_LOGIC_H_