{
public:
WebViewContainerForDali( WebViewContainerClient& client, int width, int height )
- : mClient( client ),
- mWidth( width ),
- mHeight( height )
+ : mClient( client ),
+ mWidth( width ),
+ mHeight( height ),
+ mCookieAcceptancePolicy( EWK_COOKIE_ACCEPT_POLICY_NO_THIRD_PARTY )
{
InitWebView();
evas_object_smart_callback_add( mWebView, "load,finished",
&WebViewContainerForDali::OnLoadFinished,
&mClient );
+ evas_object_smart_callback_add( mWebView, "load,error",
+ &WebViewContainerForDali::OnLoadError,
+ &mClient );
evas_object_smart_callback_add( mWebView, "console,message",
&WebViewContainerForDali::OnConsoleMessage,
this );
ewk_view_stop( mWebView );
}
+ void Suspend()
+ {
+ ewk_view_suspend( mWebView );
+ }
+
+ void Resume()
+ {
+ ewk_view_resume( mWebView );
+ }
+
void GoBack()
{
ewk_view_back( mWebView );
return ewk_view_forward_possible( mWebView );
}
- void EvaluateJavaScript( const std::string& script )
+ void EvaluateJavaScript( uint32_t key, const std::string& script )
{
- ewk_view_script_execute( mWebView, script.c_str(), 0, 0 );
+ ewk_view_script_execute( mWebView, script.c_str(), OnEvaluateJavaScript, (void*)key );
}
void AddJavaScriptMessageHandler( const std::string& exposedObjectName )
ewk_context_cache_clear( ewk_view_context_get( mWebView ) );
}
+ void ClearCookies()
+ {
+ ewk_cookie_manager_cookies_clear( ewk_context_cookie_manager_get( ewk_view_context_get( mWebView ) ) );
+ }
+
+ Ewk_Cache_Model GetCacheModel()
+ {
+ return ewk_context_cache_model_get( ewk_view_context_get( mWebView ) );
+ }
+
+ void SetCacheModel( Ewk_Cache_Model cacheModel )
+ {
+ ewk_context_cache_model_set( ewk_view_context_get( mWebView ), cacheModel );
+ }
+
+ Ewk_Cookie_Accept_Policy GetCookieAcceptPolicy()
+ {
+ return mCookieAcceptancePolicy;
+ }
+
+ void SetCookieAcceptPolicy( Ewk_Cookie_Accept_Policy policy )
+ {
+ ewk_cookie_manager_accept_policy_set( ewk_context_cookie_manager_get( ewk_view_context_get( mWebView ) ), policy );
+ mCookieAcceptancePolicy = policy;
+ }
+
+ const std::string& GetUserAgent()
+ {
+ mUserAgent = std::string( ewk_view_user_agent_get( mWebView ) );
+ return mUserAgent;
+ }
+
+ void SetUserAgent( const std::string& userAgent )
+ {
+ ewk_view_user_agent_set( mWebView, userAgent.c_str() );
+ }
+
+ bool IsJavaScriptEnabled()
+ {
+ return ewk_settings_javascript_enabled_get( ewk_view_settings_get( mWebView ) );
+ }
+
+ void EnableJavaScript( bool enabled )
+ {
+ ewk_settings_javascript_enabled_set( ewk_view_settings_get( mWebView ), enabled );
+ }
+
+ bool AreImagesAutomaticallyLoaded()
+ {
+ return ewk_settings_loads_images_automatically_get( ewk_view_settings_get( mWebView ) );
+ }
+
+ void LoadImagesAutomatically( bool automatic )
+ {
+ ewk_settings_loads_images_automatically_set( ewk_view_settings_get( mWebView ), automatic );
+ }
+
+ const std::string& GetDefaultTextEncodingName()
+ {
+ mDefaultTextEncodingName = std::string( ewk_settings_default_text_encoding_name_get( ewk_view_settings_get( mWebView ) ) );
+ return mDefaultTextEncodingName;
+ }
+
+ void SetDefaultTextEncodingName( const std::string& defaultTextEncodingName )
+ {
+ ewk_settings_default_text_encoding_name_set( ewk_view_settings_get( mWebView ), defaultTextEncodingName.c_str() );
+ }
+
+ int GetDefaultFontSize()
+ {
+ return ewk_settings_default_font_size_get( ewk_view_settings_get( mWebView ) );
+ }
+
+ void SetDefaultFontSize( int defaultFontSize )
+ {
+ ewk_settings_default_font_size_set( ewk_view_settings_get( mWebView ), defaultFontSize );
+ }
+
void SetSize( int width, int height )
{
mWidth = width;
bool SendKeyEvent( const KeyEvent& keyEvent )
{
void* evasKeyEvent = 0;
- if ( keyEvent.state == KeyEvent::Down )
+ if( keyEvent.state == KeyEvent::Down )
{
Evas_Event_Key_Down downEvent;
memset( &downEvent, 0, sizeof(Evas_Event_Key_Down) );
client->LoadFinished();
}
+ static void OnLoadError( void* data, Evas_Object*, void* rawError )
+ {
+ auto client = static_cast<WebViewContainerClient*>(data);
+ Ewk_Error* error = static_cast< Ewk_Error* >( rawError );
+
+ client->LoadError( ewk_error_url_get( error ), ewk_error_code_get( error ) );
+ }
+
static void OnConsoleMessage( void*, Evas_Object*, void* eventInfo )
{
Ewk_Console_Message* message = (Ewk_Console_Message*)eventInfo;
ewk_console_message_text_get( message ) );
}
+ static void OnEvaluateJavaScript( Evas_Object* o, const char* result, void* data )
+ {
+ auto client = WebEngineManager::Get().FindContainerClient( o );
+ if( client )
+ {
+ client->RunJavaScriptEvaluationResultHandler( (int)data, result );
+ }
+ }
+
static void OnJavaScriptMessage( Evas_Object* o, Ewk_Script_Message message )
{
auto client = WebEngineManager::Get().FindContainerClient( o );
if( client )
{
- client->RunJavaScriptInterfaceCallback( message.name, static_cast<char*>( message.body ) );
+ client->RunJavaScriptMessageHandler( message.name, static_cast<char*>( message.body ) );
}
}
int mWidth;
int mHeight;
+
+ Ewk_Cookie_Accept_Policy mCookieAcceptancePolicy;
+ std::string mUserAgent;
+ std::string mDefaultTextEncodingName;
};
class TBMSurfaceSourceInitializer
int width, int height )
{
mSurface = tbm_surface_create( width, height, TBM_FORMAT_ARGB8888 );
- if ( !mSurface )
+ if( !mSurface )
{
DALI_LOG_ERROR( "Failed to create tbm surface." );
}
~TBMSurfaceSourceInitializer()
{
- if ( mSurface )
+ if( mSurface )
{
- if ( tbm_surface_destroy( mSurface ) != TBM_SURFACE_ERROR_NONE )
+ if( tbm_surface_destroy( mSurface ) != TBM_SURFACE_ERROR_NONE )
{
DALI_LOG_ERROR( "Failed to destroy tbm surface." );
}
};
TizenWebEngineChromium::TizenWebEngineChromium()
- : mWebViewContainer( 0 )
+ : mWebViewContainer( 0 )
+ , mJavaScriptEvaluationCount( 0 )
{
}
{
if (mWebViewContainer)
{
+ mJavaScriptEvaluationResultHandlers.clear();
+ mJavaScriptMessageHandlers.clear();
+
delete mWebViewContainer;
mWebViewContainer = 0;
}
void TizenWebEngineChromium::LoadUrl( const std::string& path )
{
- if ( mWebViewContainer )
+ if( mWebViewContainer )
{
mWebViewContainer->LoadUrl( path );
}
const std::string& TizenWebEngineChromium::GetUrl()
{
- if ( mWebViewContainer )
+ if( mWebViewContainer )
{
mUrl = mWebViewContainer->GetUrl();
}
void TizenWebEngineChromium::LoadHTMLString( const std::string& string )
{
- if ( mWebViewContainer )
+ if( mWebViewContainer )
{
mWebViewContainer->LoadHtml( string );
}
void TizenWebEngineChromium::Reload()
{
- if ( mWebViewContainer )
+ if( mWebViewContainer )
{
mWebViewContainer->Reload();
}
void TizenWebEngineChromium::StopLoading()
{
- if ( mWebViewContainer )
+ if( mWebViewContainer )
{
mWebViewContainer->StopLoading();
}
}
+void TizenWebEngineChromium::Suspend()
+{
+ if( mWebViewContainer )
+ {
+ mWebViewContainer->Suspend();
+ }
+}
+
+void TizenWebEngineChromium::Resume()
+{
+ if( mWebViewContainer )
+ {
+ mWebViewContainer->Resume();
+ }
+}
+
bool TizenWebEngineChromium::CanGoForward()
{
- if ( mWebViewContainer )
+ if( mWebViewContainer )
{
return mWebViewContainer->CanGoForward();
}
void TizenWebEngineChromium::GoForward()
{
- if ( mWebViewContainer )
+ if( mWebViewContainer )
{
mWebViewContainer->GoForward();
}
bool TizenWebEngineChromium::CanGoBack()
{
- if ( mWebViewContainer )
+ if( mWebViewContainer )
{
return mWebViewContainer->CanGoBack();
}
void TizenWebEngineChromium::GoBack()
{
- if ( mWebViewContainer )
+ if( mWebViewContainer )
{
mWebViewContainer->GoBack();
}
}
-void TizenWebEngineChromium::EvaluateJavaScript( const std::string& script )
+void TizenWebEngineChromium::EvaluateJavaScript( const std::string& script, std::function< void( const std::string& ) > resultHandler )
{
- if ( mWebViewContainer )
+ if( mWebViewContainer )
{
- mWebViewContainer->EvaluateJavaScript( script );
+ if( mJavaScriptEvaluationResultHandlers.emplace( mJavaScriptEvaluationCount, resultHandler ).second )
+ {
+ mWebViewContainer->EvaluateJavaScript( mJavaScriptEvaluationCount++, script );
+ }
+ else
+ {
+ DALI_LOG_ERROR( "Too many ongoing JavaScript evaluations." );
+ }
}
}
{
if( mWebViewContainer )
{
- for( auto& callback : mJsCallbacks )
+ if( mJavaScriptMessageHandlers.emplace( exposedObjectName, handler ).second )
{
- if( callback.mObjectName == exposedObjectName )
- {
- DALI_LOG_ERROR( "Callback for (%s) already exists.", exposedObjectName.c_str() );
- return;
- }
+ mWebViewContainer->AddJavaScriptMessageHandler( exposedObjectName );
+ }
+ else
+ {
+ DALI_LOG_ERROR( "Callback for (%s) already exists.", exposedObjectName.c_str() );
}
- mJsCallbacks.push_back( JsCallback( exposedObjectName, handler ) );
- mWebViewContainer->AddJavaScriptMessageHandler( exposedObjectName );
}
}
void TizenWebEngineChromium::ClearHistory()
{
- if ( mWebViewContainer )
+ if( mWebViewContainer )
{
mWebViewContainer->ClearHistory();
}
void TizenWebEngineChromium::ClearCache()
{
- if ( mWebViewContainer )
+ if( mWebViewContainer )
{
mWebViewContainer->ClearCache();
}
}
+void TizenWebEngineChromium::ClearCookies()
+{
+ if( mWebViewContainer )
+ {
+ mWebViewContainer->ClearCookies();
+ }
+}
+
+Dali::WebEnginePlugin::CacheModel TizenWebEngineChromium::GetCacheModel() const
+{
+ if( mWebViewContainer )
+ {
+ return static_cast< Dali::WebEnginePlugin::CacheModel >( mWebViewContainer->GetCacheModel() );
+ }
+ return Dali::WebEnginePlugin::CacheModel::DOCUMENT_VIEWER;
+}
+
+void TizenWebEngineChromium::SetCacheModel( Dali::WebEnginePlugin::CacheModel cacheModel )
+{
+ if( mWebViewContainer )
+ {
+ return mWebViewContainer->SetCacheModel( static_cast< Ewk_Cache_Model >( cacheModel ) );
+ }
+}
+
+Dali::WebEnginePlugin::CookieAcceptPolicy TizenWebEngineChromium::GetCookieAcceptPolicy() const
+{
+ if( mWebViewContainer )
+ {
+ return static_cast< Dali::WebEnginePlugin::CookieAcceptPolicy >( mWebViewContainer->GetCookieAcceptPolicy() );
+ }
+ return Dali::WebEnginePlugin::CookieAcceptPolicy::NO_THIRD_PARTY;
+}
+
+void TizenWebEngineChromium::SetCookieAcceptPolicy( Dali::WebEnginePlugin::CookieAcceptPolicy policy )
+{
+ if( mWebViewContainer )
+ {
+ mWebViewContainer->SetCookieAcceptPolicy( static_cast< Ewk_Cookie_Accept_Policy >( policy ) );
+ }
+}
+
+const std::string kEmpty;
+
+const std::string& TizenWebEngineChromium::GetUserAgent() const
+{
+ if( mWebViewContainer )
+ {
+ return mWebViewContainer->GetUserAgent();
+ }
+ return kEmpty;
+}
+
+void TizenWebEngineChromium::SetUserAgent( const std::string& userAgent )
+{
+ if( mWebViewContainer )
+ {
+ mWebViewContainer->SetUserAgent( userAgent );
+ }
+}
+
+bool TizenWebEngineChromium::IsJavaScriptEnabled() const
+{
+ if( mWebViewContainer )
+ {
+ return mWebViewContainer->IsJavaScriptEnabled();
+ }
+ return false;
+}
+
+void TizenWebEngineChromium::EnableJavaScript( bool enabled )
+{
+ if( mWebViewContainer )
+ {
+ mWebViewContainer->EnableJavaScript( enabled );
+ }
+}
+
+bool TizenWebEngineChromium::AreImagesAutomaticallyLoaded() const
+{
+ if( mWebViewContainer )
+ {
+ return mWebViewContainer->AreImagesAutomaticallyLoaded();
+ }
+ return false;
+}
+
+void TizenWebEngineChromium::LoadImagesAutomatically( bool automatic )
+{
+ if( mWebViewContainer )
+ {
+ mWebViewContainer->LoadImagesAutomatically( automatic );
+ }
+}
+
+const std::string& TizenWebEngineChromium::GetDefaultTextEncodingName() const
+{
+ if( mWebViewContainer )
+ {
+ return mWebViewContainer->GetDefaultTextEncodingName();
+ }
+ return kEmpty;
+}
+
+void TizenWebEngineChromium::SetDefaultTextEncodingName( const std::string& defaultTextEncodingName )
+{
+ if( mWebViewContainer )
+ {
+ mWebViewContainer->SetDefaultTextEncodingName( defaultTextEncodingName );
+ }
+}
+
+int TizenWebEngineChromium::GetDefaultFontSize() const
+{
+ if( mWebViewContainer )
+ {
+ return mWebViewContainer->AreImagesAutomaticallyLoaded();
+ }
+ return 0;
+}
+
+void TizenWebEngineChromium::SetDefaultFontSize( int defaultFontSize )
+{
+ if( mWebViewContainer )
+ {
+ mWebViewContainer->SetDefaultFontSize( defaultFontSize );
+ }
+}
+
void TizenWebEngineChromium::SetSize( int width, int height )
{
- if ( mWebViewContainer )
+ if( mWebViewContainer )
{
mWebViewContainer->SetSize( width, height );
}
bool TizenWebEngineChromium::SendTouchEvent( const Dali::TouchData& touch )
{
- if ( mWebViewContainer )
+ if( mWebViewContainer )
{
return mWebViewContainer->SendTouchEvent( touch );
}
bool TizenWebEngineChromium::SendKeyEvent( const Dali::KeyEvent& event )
{
- if ( mWebViewContainer )
+ if( mWebViewContainer )
{
return mWebViewContainer->SendKeyEvent( event );
}
return false;
}
-Dali::WebEnginePlugin::WebEngineSignalType& TizenWebEngineChromium::PageLoadStartedSignal()
+Dali::WebEnginePlugin::WebEnginePageLoadSignalType& TizenWebEngineChromium::PageLoadStartedSignal()
{
return mLoadStartedSignal;
}
-Dali::WebEnginePlugin::WebEngineSignalType& TizenWebEngineChromium::PageLoadFinishedSignal()
+Dali::WebEnginePlugin::WebEnginePageLoadSignalType& TizenWebEngineChromium::PageLoadFinishedSignal()
{
return mLoadFinishedSignal;
}
+Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType& TizenWebEngineChromium::PageLoadErrorSignal()
+{
+ return mLoadErrorSignal;
+}
+
// WebViewContainerClient Interface
void TizenWebEngineChromium::UpdateImage( tbm_surface_h buffer )
{
- if ( !buffer )
+ if( !buffer )
{
return;
}
mLoadFinishedSignal.Emit( GetUrl() );
}
-void TizenWebEngineChromium::RunJavaScriptInterfaceCallback( const std::string& objectName, const std::string& message )
+void TizenWebEngineChromium::LoadError( const char* url, int errorCode )
+{
+ std::string stdUrl( url );
+ mLoadErrorSignal.Emit( stdUrl, errorCode );
+}
+
+void TizenWebEngineChromium::RunJavaScriptEvaluationResultHandler( uint32_t key, const char* result )
{
- for( auto& callback : mJsCallbacks )
+ auto handler = mJavaScriptEvaluationResultHandlers.find( key );
+ if( handler == mJavaScriptEvaluationResultHandlers.end() )
{
- if( callback.mObjectName == objectName )
- {
- callback.mCallback( message );
- return;
- }
+ return;
}
+
+ std::string stored( result );
+ handler->second( stored );
+
+ mJavaScriptEvaluationResultHandlers.erase( handler );
+}
+
+void TizenWebEngineChromium::RunJavaScriptMessageHandler( const std::string& objectName, const std::string& message )
+{
+ auto handler = mJavaScriptMessageHandlers.find( objectName );
+ if( handler == mJavaScriptMessageHandlers.end() )
+ {
+ return;
+ }
+
+ handler->second( message );
}
} // namespace Plugin
} // namespace Dali
extern "C" DALI_EXPORT_API void DestroyWebEnginePlugin( Dali::WebEnginePlugin* plugin )
{
- if ( plugin )
+ if( plugin )
{
delete plugin;
}
* limitations under the License.
*
*/
+
+// EXTERNAL INCLUDES
#include <functional>
#include <dali-toolkit/dali-toolkit.h>
#include <dali/devel-api/adaptor-framework/web-engine-plugin.h>
#include <dali/public-api/images/native-image-interface.h>
#include <tbm_surface.h>
+#include <unordered_map>
namespace Dali
{
class WebViewContainerForDali;
+/**
+ * @brief The interface class to represent client of corresponding WebView container (WebViewContainerForDali).
+ */
class WebViewContainerClient
{
+
public:
+
+ /**
+ * @brief Callback function to be called by WebViewContainer when surface is updated.
+ * @param [in] buffer The surface
+ */
virtual void UpdateImage( tbm_surface_h buffer ) = 0;
+
+ /**
+ * @brief Callback function to be called by WebViewContainer when page loading is started.
+ */
virtual void LoadStarted() = 0;
+
+ /**
+ * @brief Callback function to be called by WebViewContainer when page loading is finished.
+ */
virtual void LoadFinished() = 0;
- virtual void RunJavaScriptInterfaceCallback( const std::string& objectName, const std::string& message ) = 0;
-};
-class JsCallback {
-public:
- JsCallback( std::string objectName, std::function< void(const std::string&) > callback )
- {
- mObjectName = objectName;
- mCallback = callback;
- }
-
- std::string mObjectName;
- std::function< void( const std::string& ) > mCallback;
+ /**
+ * @brief Callback function to be called by WebViewContainer when an error occurs in page loading.
+ * @param [in] url Failing URL for this error
+ * @param [in] errorCode The error code
+ */
+ virtual void LoadError( const char* url, int errorCode ) = 0;
+
+ /**
+ * @brief Callback function to be called by WebViewContainer when it gets JavaScript evalution result.
+ * @param [in] key An unsigned integer representing the result handler
+ * @param [in] result Result string from JavaScript runtime
+ * @see Dali::Plugin::TizenWebEngineChromium::EvaluateJavaScript
+ */
+ virtual void RunJavaScriptEvaluationResultHandler( uint32_t key, const char* result ) = 0;
+
+ /**
+ * @brief Callback function to be called by WebViewContainer when a message handler is called from JavaScript runtime.
+ * @param [in] objectName Exposed object name of the message handler
+ * @param [in] message Message from JavaScript runtime
+ * @see Dali::Plugin::TizenWebEngineChromium::AddJavaScriptMessageHandler
+ */
+ virtual void RunJavaScriptMessageHandler( const std::string& objectName, const std::string& message ) = 0;
};
-class TizenWebEngineChromium
- : public Dali::WebEnginePlugin,
- public WebViewContainerClient
+/**
+ * @brief A class implements WebViewContainerClient and Dali::WebEnginePlugin for tizen chromium.
+ */
+class TizenWebEngineChromium : public Dali::WebEnginePlugin, public WebViewContainerClient
{
+
public:
+
+ typedef std::function< void(const std::string&) > JavaScriptCallback;
+
+ /**
+ * @brief Constructor.
+ */
TizenWebEngineChromium();
+
+ /**
+ * @brief Destructor.
+ */
~TizenWebEngineChromium() override;
+
// WebEnginePlugin Interface
- void Create( int width, int height,
- const std::string& locale,
- const std::string& timezoneID ) override;
+
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::Create()
+ */
+ void Create( int width, int height, const std::string& locale, const std::string& timezoneID ) override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::Destroy()
+ */
void Destroy() override;
+ /**
+ * @copydoc Dali::WebEnginePlugin::LoadUrl()
+ */
void LoadUrl( const std::string& url ) override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::GetNativeImageSource()
+ */
NativeImageInterfacePtr GetNativeImageSource() override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::GetUrl()
+ */
const std::string& GetUrl() override;
+ /**
+ * @copydoc Dali::WebEnginePlugin::LoadHTMLString()
+ */
void LoadHTMLString( const std::string& string ) override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::Reload()
+ */
void Reload() override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::StopLoading()
+ */
void StopLoading() override;
+ /**
+ * @copydoc Dali::WebEnginePlugin::Suspend()
+ */
+ void Suspend() override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::Resume()
+ */
+ void Resume() override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::CanGoForward()
+ */
bool CanGoForward() override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::GoForward()
+ */
void GoForward() override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::CanGoBack()
+ */
bool CanGoBack() override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::GoBack()
+ */
void GoBack() override;
- void EvaluateJavaScript( const std::string& script ) override;
+ /**
+ * @copydoc Dali::WebEnginePlugin::EvaluateJavaScript()
+ */
+ void EvaluateJavaScript( const std::string& script, std::function< void( const std::string& ) > resultHandler ) override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::AddJavaScriptMessageHandler()
+ */
void AddJavaScriptMessageHandler( const std::string& exposedObjectName, std::function< void( const std::string& ) > handler ) override;
+ /**
+ * @copydoc Dali::WebEnginePlugin::ClearHistory()
+ */
void ClearHistory() override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::ClearCache()
+ */
void ClearCache() override;
+ /**
+ * @copydoc Dali::WebEnginePlugin::ClearCookies()
+ */
+ void ClearCookies() override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::GetCacheModel()
+ */
+ Dali::WebEnginePlugin::CacheModel GetCacheModel() const override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::SetCacheModel()
+ */
+ void SetCacheModel( Dali::WebEnginePlugin::CacheModel cacheModel ) override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::GetCookieAcceptPolicy()
+ */
+ Dali::WebEnginePlugin::CookieAcceptPolicy GetCookieAcceptPolicy() const override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::SetCookieAcceptPolicy()
+ */
+ void SetCookieAcceptPolicy( Dali::WebEnginePlugin::CookieAcceptPolicy policy ) override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::GetUserAgent()
+ */
+ const std::string& GetUserAgent() const override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::SetUserAgent()
+ */
+ void SetUserAgent( const std::string& userAgent ) override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::IsJavaScriptEnabled()
+ */
+ bool IsJavaScriptEnabled() const override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::EnableJavaScript()
+ */
+ void EnableJavaScript( bool enabled ) override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::AreImagesAutomaticallyLoaded()
+ */
+ bool AreImagesAutomaticallyLoaded() const override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::LoadImagesAutomatically()
+ */
+ void LoadImagesAutomatically( bool automatic ) override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::GetDefaultTextEncodingName()
+ */
+ const std::string& GetDefaultTextEncodingName() const override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::SetDefaultTextEncodingName()
+ */
+ void SetDefaultTextEncodingName( const std::string& defaultTextEncodingName ) override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::GetDefaultFontSize()
+ */
+ int GetDefaultFontSize() const override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::SetDefaultFontSize()
+ */
+ void SetDefaultFontSize( int defaultFontSize ) override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::SetSize()
+ */
void SetSize( int width, int height ) override;
+ /**
+ * @copydoc Dali::WebEnginePlugin::SendTouchEvent()
+ */
bool SendTouchEvent( const Dali::TouchData& touch ) override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::SendKeyEvent()
+ */
bool SendKeyEvent( const Dali::KeyEvent& event ) override;
- Dali::WebEnginePlugin::WebEngineSignalType& PageLoadStartedSignal() override;
- Dali::WebEnginePlugin::WebEngineSignalType& PageLoadFinishedSignal() override;
+ /**
+ * @copydoc Dali::WebEnginePlugin::PageLoadStartedSignal()
+ */
+ Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadStartedSignal() override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::PageLoadFinishedSignal()
+ */
+ Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadFinishedSignal() override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::PageLoadErrorSignal()
+ */
+ Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType& PageLoadErrorSignal() override;
+
// WebViewContainerClient Interface
+
+
+ /**
+ * @copydoc Dali::Plugin::WebViewContainerClient::UpdateImage()
+ */
void UpdateImage( tbm_surface_h buffer ) override;
+
+ /**
+ * @copydoc Dali::Plugin::WebViewContainerClient::LoadStarted()
+ */
void LoadStarted() override;
+
+ /**
+ * @copydoc Dali::Plugin::WebViewContainerClient::LoadFinished()
+ */
void LoadFinished() override;
- void RunJavaScriptInterfaceCallback( const std::string& objectName, const std::string& message ) override;
+
+ /**
+ * @copydoc Dali::Plugin::WebViewContainerClient::LoadError()
+ */
+ void LoadError( const char* url, int errorCode ) override;
+
+ /**
+ * @copydoc Dali::Plugin::WebViewContainerClient::RunJavaScriptEvaluationResultHandler()
+ */
+ void RunJavaScriptEvaluationResultHandler( uint32_t key, const char* result ) override;
+
+ /**
+ * @copydoc Dali::Plugin::WebViewContainerClient::RunJavaScriptMessageHandler()
+ */
+ void RunJavaScriptMessageHandler( const std::string& objectName, const std::string& message ) override;
private:
- WebViewContainerForDali* mWebViewContainer;
- Dali::NativeImageSourcePtr mDaliImageSrc;
- Dali::WebEnginePlugin::WebEngineSignalType mLoadStartedSignal;
- Dali::WebEnginePlugin::WebEngineSignalType mLoadFinishedSignal;
+ WebViewContainerForDali* mWebViewContainer;
+ Dali::NativeImageSourcePtr mDaliImageSrc;
+ std::string mUrl;
+ uint32_t mJavaScriptEvaluationCount;
- std::vector< JsCallback > mJsCallbacks;
+ Dali::WebEnginePlugin::WebEnginePageLoadSignalType mLoadStartedSignal;
+ Dali::WebEnginePlugin::WebEnginePageLoadSignalType mLoadFinishedSignal;
+ Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType mLoadErrorSignal;
- std::string mUrl;
+ std::unordered_map< uint32_t, JavaScriptCallback > mJavaScriptEvaluationResultHandlers;
+ std::unordered_map< std::string, JavaScriptCallback > mJavaScriptMessageHandlers;
};
} // namespace Plugin
} // namespace Dali
mWebContainer->StopLoading();
}
+void TizenWebEngineLWE::Suspend()
+{
+ // NOT IMPLEMENTED
+}
+
+void TizenWebEngineLWE::Resume()
+{
+ // NOT IMPLEMENTED
+}
+
void TizenWebEngineLWE::GoBack()
{
DALI_ASSERT_ALWAYS( mWebContainer );
return mCanGoForward;
}
-void TizenWebEngineLWE::EvaluateJavaScript( const std::string& script )
+void TizenWebEngineLWE::EvaluateJavaScript( const std::string& script, std::function< void(const std::string&) > resultHandler )
{
- DALI_ASSERT_ALWAYS( mWebContainer );
- mWebContainer->EvaluateJavaScript( script );
+ // NOT IMPLEMENTED
}
-void TizenWebEngineLWE::AddJavaScriptMessageHandler( const std::string& exposedObjectName, std::function< void(const std::string&) > callback )
+void TizenWebEngineLWE::AddJavaScriptMessageHandler( const std::string& exposedObjectName, std::function< void(const std::string&) > handler )
{
DALI_ASSERT_ALWAYS( mWebContainer );
- mWebContainer->AddJavaScriptInterface( exposedObjectName, "postMessage", [callback]( const std::string& data )->std::string {
- callback( data );
+ mWebContainer->AddJavaScriptInterface( exposedObjectName, "postMessage", [handler]( const std::string& data )->std::string {
+ handler( data );
return "";
} );
}
mWebContainer->ClearCache();
}
+void TizenWebEngineLWE::ClearCookies()
+{
+ // NOT IMPLEMENTED
+}
+
+Dali::WebEnginePlugin::CacheModel TizenWebEngineLWE::GetCacheModel() const
+{
+ // NOT IMPLEMENTED
+ return Dali::WebEnginePlugin::CacheModel::DOCUMENT_VIEWER;
+}
+
+void TizenWebEngineLWE::SetCacheModel( Dali::WebEnginePlugin::CacheModel cacheModel )
+{
+ // NOT IMPLEMENTED
+}
+
+Dali::WebEnginePlugin::CookieAcceptPolicy TizenWebEngineLWE::GetCookieAcceptPolicy() const
+{
+ // NOT IMPLEMENTED
+ return Dali::WebEnginePlugin::CookieAcceptPolicy::NO_THIRD_PARTY;
+}
+
+void TizenWebEngineLWE::SetCookieAcceptPolicy( Dali::WebEnginePlugin::CookieAcceptPolicy policy )
+{
+ // NOT IMPLEMENTED
+}
+
+const std::string& TizenWebEngineLWE::GetUserAgent() const
+{
+ // NOT IMPLEMENTED
+ static const std::string kEmpty;
+ return kEmpty;
+}
+
+void TizenWebEngineLWE::SetUserAgent( const std::string& userAgent )
+{
+ // NOT IMPLEMENTED
+}
+
+bool TizenWebEngineLWE::IsJavaScriptEnabled() const
+{
+ // NOT IMPLEMENTED
+ return 0;
+}
+
+void TizenWebEngineLWE::EnableJavaScript( bool enabled )
+{
+ // NOT IMPLEMENTED
+}
+
+bool TizenWebEngineLWE::AreImagesAutomaticallyLoaded() const
+{
+ // NOT IMPLEMENTED
+ return 0;
+}
+
+void TizenWebEngineLWE::LoadImagesAutomatically( bool automatic )
+{
+ // NOT IMPLEMENTED
+}
+
+const std::string& TizenWebEngineLWE::GetDefaultTextEncodingName() const
+{
+ // NOT IMPLEMENTED
+ static const std::string kEmpty;
+ return kEmpty;
+}
+
+void TizenWebEngineLWE::SetDefaultTextEncodingName( const std::string& defaultTextEncodingName )
+{
+ // NOT IMPLEMENTED
+}
+
+int TizenWebEngineLWE::GetDefaultFontSize() const
+{
+ // NOT IMPLEMENTED
+ return 0;
+}
+
+void TizenWebEngineLWE::SetDefaultFontSize( int defaultFontSize )
+{
+ // NOT IMPLEMENTED
+}
+
void TizenWebEngineLWE::SetSize( int width, int height )
{
DALI_ASSERT_ALWAYS( mWebContainer );
/**
* @copydoc Dali::WebEnginePlugin::Create()
*/
- virtual void Create( int width, int height, const std::string& locale, const std::string& timezoneId );
+ void Create( int width, int height, const std::string& locale, const std::string& timezoneId ) override;
/**
* @copydoc Dali::WebEnginePlugin::Destroy()
*/
- virtual void Destroy();
+ void Destroy() override;
/**
* @copydoc Dali::WebEnginePlugin::GetNativeImageSource()
*/
- virtual Dali::NativeImageInterfacePtr GetNativeImageSource();
+ Dali::NativeImageInterfacePtr GetNativeImageSource() override;
/**
* @copydoc Dali::WebEnginePlugin::LoadUrl()
*/
- virtual void LoadUrl( const std::string& url );
+ void LoadUrl( const std::string& url ) override;
/**
* @copydoc Dali::WebEnginePlugin::GetUrl()
*/
- virtual const std::string& GetUrl();
+ const std::string& GetUrl() override;
/**
* @copydoc Dali::WebEnginePlugin::LoadHTMLString()
*/
- virtual void LoadHTMLString( const std::string& string );
+ void LoadHTMLString( const std::string& string ) override;
/**
* @copydoc Dali::WebEnginePlugin::Reload()
*/
- virtual void Reload();
+ void Reload() override;
/**
* @copydoc Dali::WebEnginePlugin::StopLoading()
*/
- virtual void StopLoading();
+ void StopLoading() override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::Suspend()
+ */
+ void Suspend() override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::Resume()
+ */
+ void Resume() override;
/**
* @copydoc Dali::WebEnginePlugin::GoBack()
*/
- virtual void GoBack();
+ void GoBack() override;
/**
* @copydoc Dali::WebEnginePlugin::GoForward()
*/
- virtual void GoForward();
+ void GoForward() override;
/**
* @copydoc Dali::WebEnginePlugin::CanGoBack()
*/
- virtual bool CanGoBack();
+ bool CanGoBack() override;
/**
* @copydoc Dali::WebEnginePlugin::CanGoForward()
*/
- virtual bool CanGoForward();
+ bool CanGoForward() override;
/**
- * @copydoc Dali::WebEnginePlugin::AddJavaScriptMessageHandler()
+ * @copydoc Dali::WebEnginePlugin::EvaluateJavaScript()
*/
- virtual void AddJavaScriptMessageHandler( const std::string& exposedObjectName, std::function< void(const std::string&) > handler );
+ void EvaluateJavaScript( const std::string& script, std::function< void(const std::string&) > resultHandler ) override;
/**
- * @copydoc Dali::WebEnginePlugin::EvaluateJavaScript()
+ * @copydoc Dali::WebEnginePlugin::AddJavaScriptMessageHandler()
*/
- virtual void EvaluateJavaScript( const std::string& script );
+ void AddJavaScriptMessageHandler( const std::string& exposedObjectName, std::function< void(const std::string&) > handler ) override;
/**
* @copydoc Dali::WebEnginePlugin::ClearHistory()
*/
- virtual void ClearHistory();
+ void ClearHistory() override;
/**
* @copydoc Dali::WebEnginePlugin::ClearCache()
*/
- virtual void ClearCache();
+ void ClearCache() override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::ClearCookies()
+ */
+ void ClearCookies() override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::GetCacheModel()
+ */
+ Dali::WebEnginePlugin::CacheModel GetCacheModel() const override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::SetCacheModel()
+ */
+ void SetCacheModel( Dali::WebEnginePlugin::CacheModel cacheModel ) override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::GetCookieAcceptPolicy()
+ */
+ Dali::WebEnginePlugin::CookieAcceptPolicy GetCookieAcceptPolicy() const override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::SetCookieAcceptPolicy()
+ */
+ void SetCookieAcceptPolicy( Dali::WebEnginePlugin::CookieAcceptPolicy policy ) override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::GetUserAgent()
+ */
+ const std::string& GetUserAgent() const override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::SetUserAgent()
+ */
+ void SetUserAgent( const std::string& userAgent ) override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::IsJavaScriptEnabled()
+ */
+ bool IsJavaScriptEnabled() const override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::EnableJavaScript()
+ */
+ void EnableJavaScript( bool enabled ) override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::AreImagesAutomaticallyLoaded()
+ */
+ bool AreImagesAutomaticallyLoaded() const override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::LoadImagesAutomatically()
+ */
+ void LoadImagesAutomatically( bool automatic ) override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::GetDefaultTextEncodingName()
+ */
+ const std::string& GetDefaultTextEncodingName() const override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::SetDefaultTextEncodingName()
+ */
+ void SetDefaultTextEncodingName( const std::string& defaultTextEncodingName ) override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::GetDefaultFontSize()
+ */
+ int GetDefaultFontSize() const override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::SetDefaultFontSize()
+ */
+ void SetDefaultFontSize( int defaultFontSize ) override;
/**
* @copydoc Dali::WebEnginePlugin::SetSize()
*/
- virtual void SetSize( int width, int height );
+ void SetSize( int width, int height ) override;
/**
* @copydoc Dali::WebEnginePlugin::SendTouchEvent()
*/
- virtual bool SendTouchEvent( const Dali::TouchData& touch );
+ bool SendTouchEvent( const Dali::TouchData& touch ) override;
/**
* @copydoc Dali::WebEnginePlugin::SendKeyEvent()
*/
- virtual bool SendKeyEvent( const Dali::KeyEvent& event );
+ bool SendKeyEvent( const Dali::KeyEvent& event ) override;
/**
* @copydoc Dali::WebEnginePlugin::PageLoadStartedSignal()
*/
- virtual Dali::WebEnginePlugin::WebEngineSignalType& PageLoadStartedSignal()
+ Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadStartedSignal() override
{
return mPageLoadStartedSignal;
}
/**
* @copydoc Dali::WebEnginePlugin::PageLoadFinishedSignal()
*/
- virtual Dali::WebEnginePlugin::WebEngineSignalType& PageLoadFinishedSignal()
+ Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadFinishedSignal() override
{
return mPageLoadFinishedSignal;
}
+ /**
+ * @copydoc Dali::WebEnginePlugin::PageLoadErrorSignal()
+ */
+ Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType& PageLoadErrorSignal() override
+ {
+ return mPageLoadErrorSignal;
+ }
+
private:
void UpdateBuffer();
std::function<void(LWE::WebContainer*, const std::string&)> mOnPageStartedHandler;
std::function<void(LWE::WebContainer*, const std::string&)> mOnLoadResourceHandler;
- EventThreadCallback mUpdateBufferTrigger;
- Dali::WebEnginePlugin::WebEngineSignalType mPageLoadStartedSignal;
- Dali::WebEnginePlugin::WebEngineSignalType mPageLoadFinishedSignal;
+ EventThreadCallback mUpdateBufferTrigger;
+ Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadStartedSignal;
+ Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadFinishedSignal;
+ Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType mPageLoadErrorSignal;
};
} // namespace Plugin