BuildRequires: pkgconfig(uuid)
BuildRequires: pkgconfig(gio-2.0)
BuildRequires: pkgconfig(aul)
+BuildRequires: pkgconfig(ecore)
BuildRequires: boost-devel
%if %{with x}
BuildRequires: pkgconfig(ecore-x)
#include "runtime/web_application.h"
#include <app.h>
+#include <Ecore.h>
#include <ewk_chromium.h>
#include <algorithm>
#include <memory>
window_->SetContent(view_stack_.front()->evas_object());
}
- delete view;
+ // Delete after the callback context(for ewk view) was not used
+ ecore_idler_add([](void* view) {
+ WebView* obj = static_cast<WebView*>(view);
+ delete view;
+ return EINA_FALSE;
+ }, view);
}
void WebApplication::OnReceivedWrtMessage(
// TODO(sngn.lee): set CSP
}
-bool OnDidNavigation(WebView* view, const std::string& url) {
+bool WebApplication::OnDidNavigation(WebView* view, const std::string& url) {
// TODO(sngn.lee): scheme handling
// except(file , http, https, app) pass to appcontrol and return false
return true;
InitConsoleMessageCallback();
InitCustomContextMenuCallback();
InitRotationCallback();
+ InitWindowCreateCallback();
// TODO(sngn.lee): "request,certificate,confirm" certification popup
// TODO(sngn.lee): ewk_view_notification_permission_callback_set
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_));
}