bea13d68c0
We need to unref the result wrapped by this object in its dtor.
72 lines
2.0 KiB
C++
72 lines
2.0 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/gtk/private/webkit.h
|
|
// Purpose: wxWebKitGtk RAII wrappers declaration
|
|
// Author: Jose Lorenzo
|
|
// Created: 2017-08-21
|
|
// Copyright: (c) 2017 Jose Lorenzo <josee.loren@gmail.com>
|
|
// Licence: wxWindows licence
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_GTK_PRIVATE_WEBKIT_H_
|
|
#define _WX_GTK_PRIVATE_WEBKIT_H_
|
|
|
|
#include "wx/buffer.h"
|
|
|
|
#include <webkit2/webkit2.h>
|
|
#include <JavaScriptCore/JSStringRef.h>
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// RAII wrapper of WebKitJavascriptResult taking care of freeing it
|
|
// ----------------------------------------------------------------------------
|
|
|
|
class wxWebKitJavascriptResult
|
|
{
|
|
public:
|
|
explicit wxWebKitJavascriptResult(WebKitJavascriptResult *r)
|
|
: m_jsresult(r)
|
|
{
|
|
}
|
|
|
|
~wxWebKitJavascriptResult()
|
|
{
|
|
if ( m_jsresult != NULL )
|
|
webkit_javascript_result_unref(m_jsresult);
|
|
}
|
|
|
|
operator WebKitJavascriptResult *() const { return m_jsresult; }
|
|
|
|
private:
|
|
WebKitJavascriptResult *m_jsresult;
|
|
|
|
wxDECLARE_NO_COPY_CLASS(wxWebKitJavascriptResult);
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// RAII wrapper of JSStringRef, also providing conversion to wxString
|
|
// ----------------------------------------------------------------------------
|
|
|
|
class wxJSStringRef
|
|
{
|
|
public:
|
|
explicit wxJSStringRef(JSStringRef r) : m_jssref(r) { }
|
|
~wxJSStringRef() { JSStringRelease(m_jssref); }
|
|
|
|
wxString ToWxString() const
|
|
{
|
|
const size_t length = JSStringGetMaximumUTF8CStringSize(m_jssref);
|
|
|
|
wxCharBuffer str(length);
|
|
|
|
JSStringGetUTF8CString(m_jssref, str.data(), length);
|
|
|
|
return wxString::FromUTF8(str);
|
|
}
|
|
|
|
private:
|
|
JSStringRef m_jssref;
|
|
|
|
wxDECLARE_NO_COPY_CLASS(wxJSStringRef);
|
|
};
|
|
|
|
#endif // _WX_GTK_PRIVATE_WEBKIT_H_
|