Merge "Cleanup code to remove warning messages at buildtime." into devel/wrt2
[platform/framework/web/nwrt.git] / src / runtime / web_view_impl.cc
index 870fc93..c3e2adc 100755 (executable)
@@ -94,6 +94,20 @@ void WebViewImpl::Initialize() {
   InitConsoleMessageCallback();
   InitCustomContextMenuCallback();
   InitRotationCallback();
+  InitWindowCreateCallback();
+
+  // TODO(sngn.lee): "request,certificate,confirm" certification popup
+  // TODO(sngn.lee): ewk_view_notification_permission_callback_set
+  // TODO(sngn.lee): "notification,show"
+  // TODO(sngn.lee): "notification,cancel"
+  // TODO(sngn.lee): "create,window"
+  // TODO(sngn.lee): "close,window"
+  // TODO(sngn.lee): "fullscreen,enterfullscreen"
+  // TODO(sngn.lee): "fullscreen,exitfullscreen"
+  // TODO(sngn.lee): "protocolhandler,registration,requested"
+  //                  custom protocol handler
+  // TODO(sngn.lee): ewk_view_geolocation_permission_callback_set
+  // TODO(sngn.lee): ewk_view_user_media_permission_callback_set
 
   // Show webview
   evas_object_show(ewk_view_);
@@ -260,6 +274,9 @@ void WebViewImpl::InitPolicyDecideCallback() {
 }
 
 void WebViewImpl::InitQuotaExceededCallback() {
+  // TODO(sngn.lee): Need callback interface - OnQutaExceed
+  // check http://tizen.org/privilege/unlimitedstorage
+
   // callback for database quota exceeded
   auto database_exceeded_callback = [](Evas_Object* view,
                                        Ewk_Security_Origin* origin,
@@ -432,6 +449,40 @@ void WebViewImpl::InitRotationCallback() {
                                   std::placeholders::_1));
 }
 
+void WebViewImpl::InitWindowCreateCallback() {
+  auto create_callback = [](void* user_data,
+                            Evas_Object*,
+                            void* event_info) {
+    WebViewImpl* self = static_cast<WebViewImpl*>(user_data);
+    if (!self->listener_) {
+      return;
+    }
+    WebView* new_view = new WebView(self->window_, self->context_);
+    self->listener_->OnCreatedNewWebView(self->view_, new_view);
+  };
+
+  auto close_callback = [](void* user_data,
+                            Evas_Object*,
+                            void*) {
+    WebViewImpl* self = static_cast<WebViewImpl*>(user_data);
+    if (!self->listener_) {
+      return;
+    }
+    self->listener_->OnClosedWebView(self->view_);
+  };
+  evas_object_smart_callback_add(ewk_view_,
+                                 "create,window",
+                                 create_callback,
+                                 this);
+  evas_object_smart_callback_add(ewk_view_,
+                                 "close,window",
+                                 close_callback,
+                                 this);
+
+  smart_callbacks_["create,window"] = create_callback;
+  smart_callbacks_["close,window"] = close_callback;
+}
+
 std::string WebViewImpl::GetUrl() {
   return std::string(ewk_view_url_get(ewk_view_));
 }