2 * Copyright (c) 2015 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 #ifndef WRT_RUNTIME_WEB_APPLICATION_H_
19 #define WRT_RUNTIME_WEB_APPLICATION_H_
26 #include "common/dbus_server.h"
27 #include "runtime/web_view.h"
34 class ApplicationData;
36 class ResourceManager;
38 class WebApplication : public WebView::EventListener {
40 WebApplication(NativeWindow* window,
41 std::unique_ptr<ApplicationData> app_data);
42 virtual ~WebApplication();
44 void AppControl(std::unique_ptr<wrt::AppControl> appcontrol);
45 void Launch(std::unique_ptr<wrt::AppControl> appcontrol);
49 std::string data_path() const { return app_data_path_; }
50 void set_terminator(std::function<void(void)> terminator)
51 { terminator_ = terminator; }
52 bool launched() const { return launched_; }
54 virtual void OnCreatedNewWebView(WebView* view, WebView* new_view);
55 virtual void OnClosedWebView(WebView * view);
56 virtual void OnReceivedWrtMessage(WebView* view,
57 Ewk_IPC_Wrt_Message_Data* msg);
58 virtual void OnOrientationLock(WebView* view,
60 int preferred_rotation);
61 virtual void OnHardwareKey(WebView* view, const std::string& keyname);
62 virtual void OnConsoleMessage(const std::string& msg, int level);
64 virtual void OnLoadStart(WebView* view);
65 virtual void OnLoadFinished(WebView* view);
66 virtual void OnRendered(WebView* view);
67 virtual void OnLanguageChanged();
68 virtual void OnLowMemory();
69 virtual bool OnContextMenuDisabled(WebView* view);
70 virtual bool OnDidNavigation(WebView* view, const std::string& url);
71 virtual void OnNotificationPermissionRequest(
73 const std::string& url,
74 std::function<void(bool)> result_handler);
75 virtual void OnGeolocationPermissionRequest(
77 const std::string& url,
78 std::function<void(bool)> result_handler);
79 virtual void OnQuotaExceed(
81 const std::string& url,
82 std::function<void(bool)> result_handler);
83 virtual void OnAuthenticationRequest(
85 const std::string& url,
86 const std::string& message,
87 std::function<void(bool submit,
88 const std::string& id,
89 const std::string& password)
91 virtual void OnCertificateAllowRequest(
93 const std::string& url,
94 const std::string& pem,
95 std::function<void(bool allow)> result_handler);
100 void ClearViewStack();
101 void SendAppControlEvent();
102 void LaunchInspector(wrt::AppControl* appcontrol);
103 void SetupWebView(WebView* view);
105 void HandleDBusMethod(GDBusConnection* connection,
106 const std::string& method_name,
107 GVariant* parameters,
108 GDBusMethodInvocation* invocation);
112 Ewk_Context* ewk_context_;
113 NativeWindow* window_;
114 DBusServer dbus_server_;
116 std::string app_data_path_;
117 std::string app_uuid_;
118 std::list<WebView*> view_stack_;
119 std::unique_ptr<LocaleManager> locale_manager_;
120 std::unique_ptr<ApplicationData> app_data_;
121 std::unique_ptr<ResourceManager> resource_manager_;
122 std::unique_ptr<wrt::AppControl> received_appcontrol_;
123 std::function<void(void)> terminator_;
128 #endif // WRT_RUNTIME_WEB_APPLICATION_H_