NavigatorContentUtilsClientEfl.cpp [plain text]
#include "config.h"
#include "NavigatorContentUtilsClientEfl.h"
#if ENABLE(NAVIGATOR_CONTENT_UTILS)
#include "ewk_custom_handler_private.h"
#include <wtf/text/CString.h>
namespace WebCore {
static Ewk_Custom_Handler_Data* customHandlerDataCreate(Evas_Object* ewkView, const char* scheme, const char* baseURL, const char* url)
{
Ewk_Custom_Handler_Data* data = new Ewk_Custom_Handler_Data;
data->ewkView = ewkView;
data->scheme = eina_stringshare_add(scheme);
data->base_url = eina_stringshare_add(baseURL);
data->url = eina_stringshare_add(url);
return data;
}
static void customHandlerDataDelete(Ewk_Custom_Handler_Data* data)
{
eina_stringshare_del(data->scheme);
eina_stringshare_del(data->base_url);
eina_stringshare_del(data->url);
delete data;
}
PassOwnPtr<NavigatorContentUtilsClientEfl> NavigatorContentUtilsClientEfl::create(Evas_Object* view)
{
return adoptPtr(new NavigatorContentUtilsClientEfl(view));
}
NavigatorContentUtilsClientEfl::NavigatorContentUtilsClientEfl(Evas_Object* view)
: m_view(view)
{
}
void NavigatorContentUtilsClientEfl::registerProtocolHandler(const String& scheme, const String& baseURL, const String& url, const String& title)
{
Ewk_Custom_Handler_Data* data = customHandlerDataCreate(m_view, scheme.utf8().data(), baseURL.utf8().data(), url.utf8().data());
data->title = eina_stringshare_add(title.utf8().data());
ewk_custom_handler_register_protocol_handler(data);
eina_stringshare_del(data->title);
customHandlerDataDelete(data);
}
#if ENABLE(CUSTOM_SCHEME_HANDLER)
NavigatorContentUtilsClient::CustomHandlersState NavigatorContentUtilsClientEfl::isProtocolHandlerRegistered(const String& scheme, const String& baseURL, const String& url)
{
Ewk_Custom_Handler_Data* data = customHandlerDataCreate(m_view, scheme.utf8().data(), baseURL.utf8().data(), url.utf8().data());
NavigatorContentUtilsClient::CustomHandlersState result = static_cast<CustomHandlersState>(ewk_custom_handler_register_protocol_handler(data));
customHandlerDataDelete(data);
return result;
}
void NavigatorContentUtilsClientEfl::unregisterProtocolHandler(const String& scheme, const String& baseURL, const String& url)
{
Ewk_Custom_Handler_Data* data = customHandlerDataCreate(m_view, scheme.utf8().data(), baseURL.utf8().data(), url.utf8().data());
ewk_custom_handler_register_protocol_handler(data);
customHandlerDataDelete(data);
}
#endif
}
#endif // ENABLE(NAVIGATOR_CONTENT_UTILS)