[M40 Merge][Tizen 3.0][WRT] Implements DynamicPluginStopSession
authoryh106.jung <yh106.jung@samsung.com>
Mon, 18 May 2015 07:55:14 +0000 (16:55 +0900)
committerYoungsoo Choi <kenshin.choi@samsung.com>
Tue, 10 Jul 2018 06:57:09 +0000 (06:57 +0000)
Implements DynamicPluginStopSession inteface like below.

extern "C" void DynamicPluginStopSession(
    const char* tizen_id, v8::Handle<v8::Context> context)

Bug: http://107.108.218.239/bugzilla/show_bug.cgi?id=12998
Reviewed by: Antonio Gomes, Hyunhak Kim, arno renevier

Change-Id: I4f98a152b062a63dcdf4826a53ec8867f1f85112
Signed-off-by: yh106.jung <yh106.jung@samsung.com>
tizen_src/ewk/efl_integration/wrt/dynamicplugin.cc
tizen_src/ewk/efl_integration/wrt/dynamicplugin.h
tizen_src/ewk/efl_integration/wrt/wrtwidget.cc

index 03047f8..2b50cba 100644 (file)
@@ -12,6 +12,7 @@
 
 namespace {
 const char* const START_SESSION_FUNCTION = "DynamicPluginStartSession";
+const char* const STOP_SESSION_FUNCTION = "DynamicPluginStopSession";
 const char* const URL_PARSING_FUNCTION = "DynamicUrlParsing";
 const char* const SET_WIDGET_INFO_FUNCTION = "DynamicSetWidgetInfo";
 const char* const DATABASE_ATTACH_FUNCTION = "DynamicDatabaseAttach";
@@ -20,6 +21,7 @@ const char* const DATABASE_ATTACH_FUNCTION = "DynamicDatabaseAttach";
 DynamicPlugin::DynamicPlugin()
   : m_handle(0),
     m_startSession(0),
+    m_stopSession(0),
     m_parseURL(0),
     m_setWidgetInfo(0),
     m_databaseAttach(0) {
@@ -38,6 +40,10 @@ DynamicPlugin::DynamicPlugin()
   if (!m_startSession) {
     LOG(ERROR) << "No " << START_SESSION_FUNCTION << " symbol found!\n";
   }
+  *reinterpret_cast<void **>(&m_stopSession) = dlsym(m_handle, STOP_SESSION_FUNCTION);
+  if (!m_stopSession) {
+    LOG(ERROR) << "No " << STOP_SESSION_FUNCTION << " symbol found!\n";
+  }
   *reinterpret_cast<void **>(&m_parseURL) = dlsym(m_handle, URL_PARSING_FUNCTION);
   if (!m_parseURL) {
     LOG(ERROR) << "No " << URL_PARSING_FUNCTION << " symbol found!\n";
@@ -72,6 +78,13 @@ void DynamicPlugin::startSession(const char* tizen_id,
                  theme, baseURL);
 }
 
+void DynamicPlugin::stopSession(const char* tizen_id,
+                                v8::Handle<v8::Context> context) {
+  if (!m_stopSession || !m_databaseAttach)
+    return;
+  m_stopSession(tizen_id, context);
+}
+
 void DynamicPlugin::parseURL(std::string* old_url, std::string* new_url, const char* tizen_id) {
   if (!m_parseURL || !m_databaseAttach)
     return;
index 29c9203..7f8d29d 100644 (file)
@@ -18,6 +18,8 @@ typedef void (*startSessionFun)(const char* tizen_id,
                                 const char* encodedBundle,
                                 const char* theme,
                                 const char* baseURL);
+typedef void (*stopSessionFun)(const char* tizen_id,
+                               v8::Handle<v8::Context> context);
 typedef void (*onIPCMessageFun)(
     const Ewk_Wrt_Message_Data& data);
 typedef void (*parseUrlFun)(std::string* old_url,
@@ -35,7 +37,8 @@ class DynamicPlugin {
                     const char* encodedBundle,
                     const char* theme,
                     const char* baseURL);
-
+  void stopSession(const char* tizen_id,
+                   v8::Handle<v8::Context> context);
   void parseURL(std::string* old_url, std::string* new_url, const char* tizen_id);
   void setWidgetInfo(const std::string& tizen_id);
   void messageReceived(const Ewk_Wrt_Message_Data& data);
@@ -51,6 +54,7 @@ class DynamicPlugin {
 
   void* m_handle;
   startSessionFun m_startSession;
+  stopSessionFun m_stopSession;
   parseUrlFun m_parseURL;
   setWidgetInfoFun m_setWidgetInfo;
   databaseAttachFun m_databaseAttach;
index f26a832..9e67252 100644 (file)
@@ -103,7 +103,9 @@ void WrtWidget::StartSession(v8::Handle<v8::Context> context,
 }
 
 void WrtWidget::StopSession(v8::Handle<v8::Context> context) {
-  //TODO: stop session
+  if (!tizen_id_.empty() && !context.IsEmpty()) {
+    DynamicPlugin::instance().stopSession(tizen_id_.c_str(), context);
+  }
 }
 
 void WrtWidget::MessageReceived(const Ewk_Wrt_Message_Data& data) {