[Tizen] Implement WebEngine::GetPlainTextAsynchronously 29/261929/1
authorJiyun Yang <ji.yang@samsung.com>
Thu, 22 Jul 2021 13:13:37 +0000 (22:13 +0900)
committerJiyun Yang <ji.yang@samsung.com>
Thu, 29 Jul 2021 04:59:50 +0000 (13:59 +0900)
Change-Id: Ieb9131ff7b6f3b454e8be3b3abc1d2e01e7d2d85
Signed-off-by: Jiyun Yang <ji.yang@samsung.com>
dali-extension/web-engine-chromium/tizen-web-engine-chromium.cpp
dali-extension/web-engine-chromium/tizen-web-engine-chromium.h
dali-extension/web-engine-lwe/tizen-web-engine-lwe.cpp
dali-extension/web-engine-lwe/tizen-web-engine-lwe.h

index fc44100..d496d36 100755 (executable)
@@ -493,6 +493,11 @@ public:
     ecore_wl2_window_alpha_set( win, !enabled );
   }
 
+  void GetPlainTextAsynchronously()
+  {
+    ewk_view_plain_text_get(mWebView, &WebViewContainerForDali::OnPlainTextReceived, &mClient);
+  }
+
 private:
   static void OnFrameRendered( void* data, Evas_Object*, void* buffer )
   {
@@ -572,6 +577,19 @@ private:
     }
   }
 
+  static void OnPlainTextReceived(Evas_Object* o, const char* plainText, void* data)
+  {
+    auto client = static_cast<WebViewContainerClient*>(data);
+    std::string resultText;
+
+    if (plainText != nullptr)
+    {
+      resultText = std::string(plainText);
+    }
+
+    client->PlainTextRecieved(resultText);
+  }
+
 private:
   Evas_Object* mWebView;
   WebViewContainerClient& mClient;
@@ -617,6 +635,7 @@ public:
       }
     }
   }
+
 private:
   tbm_surface_h mSurface;
 };
@@ -998,6 +1017,15 @@ Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType& TizenWebEngineChrom
   return mScrollEdgeReachedSignal;
 }
 
+void TizenWebEngineChromium::GetPlainTextAsynchronously(PlainTextReceivedCallback callback)
+{
+  if (mWebViewContainer)
+  {
+    mPlainTextReceivedCallback = callback;
+    mWebViewContainer->GetPlainTextAsynchronously();
+  }
+}
+
 // WebViewContainerClient Interface
 void TizenWebEngineChromium::UpdateImage( tbm_surface_h buffer )
 {
@@ -1062,6 +1090,15 @@ void TizenWebEngineChromium::RunJavaScriptMessageHandler( const std::string& obj
 
   handler->second( message );
 }
+
+void TizenWebEngineChromium::PlainTextRecieved(const std::string& plainText)
+{
+  if (mPlainTextReceivedCallback)
+  {
+    mPlainTextReceivedCallback(plainText);
+  }
+}
+
 } // namespace Plugin
 } // namespace Dali
 
index c1ff147..13af3c3 100755 (executable)
@@ -89,6 +89,12 @@ public:
    * @see Dali::Plugin::TizenWebEngineChromium::AddJavaScriptMessageHandler
    */
   virtual void RunJavaScriptMessageHandler( const std::string& objectName, const std::string& message ) = 0;
+
+  /**
+   * @brief Callback function to be called by WebViewContainer as a result of getting plain text.
+   * @param [in] plainText The obtained plain text.
+   */
+  virtual void PlainTextRecieved(const std::string& plainText) = 0;
 };
 
 /**
@@ -328,6 +334,10 @@ public:
    */
   Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType& ScrollEdgeReachedSignal() override;
 
+  /**
+   * @copydoc Dali::WebEnginePlugin::GetPlainTextAsynchronously()
+   */
+  void GetPlainTextAsynchronously(PlainTextReceivedCallback callback) override;
 
   // WebViewContainerClient Interface
 
@@ -367,6 +377,11 @@ public:
    */
   void RunJavaScriptMessageHandler( const std::string& objectName, const std::string& message ) override;
 
+  /**
+   * @copydoc Dali::Plugin::WebViewContainerClient::PlainTextRecieved()
+   */
+  void PlainTextRecieved(const std::string& plainText) override;
+
 private:
 
   WebViewContainerForDali*                                mWebViewContainer;
@@ -382,6 +397,8 @@ private:
 
   std::unordered_map< size_t, JavaScriptCallback >        mJavaScriptEvaluationResultHandlers;
   std::unordered_map< std::string, JavaScriptCallback >   mJavaScriptMessageHandlers;
+  
+  PlainTextReceivedCallback                               mPlainTextReceivedCallback;
 };
 } // namespace Plugin
 } // namespace Dali
index 80e9071..2e20df1 100755 (executable)
@@ -894,6 +894,11 @@ void TizenWebEngineLWE::EnableVideoHole( bool enabled )
   // NOT IMPLEMENTED
 }
 
+void TizenWebEngineLWE::GetPlainTextAsynchronously(PlainTextReceivedCallback callback)
+{
+  // NOT IMPLEMENTED
+}
+
 } // namespace Plugin
 } // namespace Dali
 
index 37650f2..3115382 100755 (executable)
@@ -288,6 +288,11 @@ public:
     return mScrollEdgeReachedSignal;
   }
 
+  /**
+   * @copydoc Dali::WebEnginePlugin::GetPlainTextAsynchronously()
+   */
+  void GetPlainTextAsynchronously(PlainTextReceivedCallback callback) override;
+
 private:
 
   void UpdateBuffer();