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_
 |