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 // JS execute callback
206 static void didRunJavaScriptCallback(
212 static Eina_Bool windowCloseIdlerCallback(void *data);
214 // appcore event callback
215 static int appcoreLowMemoryCallback(void *data);
216 // database usage permission request callback
217 static void databaseUsagePermissionRequestCallback(
221 void databaseUsagePermissionRequest(
223 bool askUserForDatabaseExceedPermission(
224 Ewk_Context_Exceeded_Quota* exceededQuota);
226 // file System Permission Request Callback
227 static void fileSystemPermissionRequestCallback(
231 void fileSystemPermissionRequest(
233 bool askUserForFileSystemPermission(
234 Ewk_Context_File_System_Permission* fileSystemPermission);
237 void didRecieveMessageFromInjectedBundle(
240 void didReceiveSynchronousMessage(
246 void rememberBlockedURI(const DPL::String& str);
247 std::string requestUriChanged(const DPL::String& changedURL);
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_