Implement WebEngine::GetPlainTextAsynchronously 90/261690/2
authorJiyun Yang <ji.yang@samsung.com>
Thu, 22 Jul 2021 13:13:37 +0000 (22:13 +0900)
committerJiyun Yang <ji.yang@samsung.com>
Fri, 23 Jul 2021 06:05:26 +0000 (15:05 +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 7124e0f..5cc555c 100755 (executable)
@@ -816,6 +816,11 @@ public:
     ecore_wl2_window_alpha_set(win, !enabled);
   }
 
+  void GetPlainTextAsynchronously()
+  {
+    ewk_view_plain_text_get(mWebView, &WebViewContainerForDali::OnPlainTextReceived, &mClient);
+  }
+
 private:
   static Dali::PixelData ConvertImageColorSpace(Evas_Object *image)
   {
@@ -889,6 +894,19 @@ private:
     client->ConsoleMessageReceived(std::move(webConsoleMessage));
   }
 
+  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);
+  }
+
   static void OnEdgeLeft(void* data, Evas_Object*, void*)
   {
     auto client = static_cast<WebViewContainerClient*>(data);
@@ -1875,6 +1893,15 @@ void TizenWebEngineChromium::RegisterContextMenuHiddenCallback(WebEngineContextM
   mContextMenuHiddenCallback = callback;
 }
 
+void TizenWebEngineChromium::GetPlainTextAsynchronously(PlainTextReceivedCallback callback)
+{
+  if (mWebViewContainer)
+  {
+    mPlainTextReceivedCallback = callback;
+    mWebViewContainer->GetPlainTextAsynchronously();
+  }
+}
+
 // WebViewContainerClient Interface
 void TizenWebEngineChromium::UpdateImage(tbm_surface_h buffer)
 {
@@ -2038,6 +2065,11 @@ bool TizenWebEngineChromium::HitTestCreated(std::unique_ptr<Dali::WebEngineHitTe
   return ExecuteCallbackReturn<bool>(mHitTestCreatedCallback, std::move(hitTest));
 }
 
+void TizenWebEngineChromium::PlainTextRecieved(const std::string& plainText)
+{
+  ExecuteCallback(mPlainTextReceivedCallback, plainText);
+}
+
 } // namespace Plugin
 } // namespace Dali
 
index 1996ffa..359bf92 100755 (executable)
@@ -215,6 +215,12 @@ public:
    * @brief Callback function to be called by WebViewContainer after hit test is created.
    */
   virtual bool HitTestCreated(std::unique_ptr<Dali::WebEngineHitTest> hitTest) = 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;
 };
 
 /**
@@ -718,6 +724,11 @@ public:
    */
   void RegisterContextMenuHiddenCallback(WebEngineContextMenuHiddenCallback callback) override;
 
+  /**
+   * @copydoc Dali::WebEnginePlugin::GetPlainTextAsynchronously()
+   */
+  void GetPlainTextAsynchronously(PlainTextReceivedCallback callback) override;
+
   // WebViewContainerClient Interface
 
   /**
@@ -842,6 +853,11 @@ public:
    */
   bool HitTestCreated(std::unique_ptr<Dali::WebEngineHitTest> hitTest) override;
 
+  /**
+   * @copydoc Dali::Plugin::WebViewContainerClient::PlainTextRecieved()
+   */
+  void PlainTextRecieved(const std::string& plainText) override;
+
 private:
   WebViewContainerForDali*   mWebViewContainer;
   Dali::NativeImageSourcePtr mDaliImageSrc;
@@ -871,6 +887,7 @@ private:
   ScreenshotCapturedCallback              mScreenshotCapturedCallback;
   VideoPlayingCallback                    mVideoPlayingCallback;
   GeolocationPermissionCallback           mGeolocationPermissionCallback;
+  PlainTextReceivedCallback               mPlainTextReceivedCallback;
 
   std::unordered_map<size_t, JavaScriptMessageHandlerCallback>      mJavaScriptEvaluationResultHandlers;
   std::unordered_map<std::string, JavaScriptMessageHandlerCallback> mJavaScriptMessageHandlers;
index 482b1b6..d4538a6 100755 (executable)
@@ -1299,5 +1299,10 @@ void TizenWebEngineLWE::RegisterContextMenuHiddenCallback(WebEngineContextMenuHi
   // NOT IMPLEMENTED
 }
 
+void TizenWebEngineLWE::GetPlainTextAsynchronously(PlainTextReceivedCallback callback)
+{
+  // NOT IMPLEMENTED
+}
+
 } // namespace Plugin
 } // namespace Dali
index 66cf702..9554850 100755 (executable)
@@ -548,6 +548,11 @@ public:
    */
   void RegisterContextMenuHiddenCallback(WebEngineContextMenuHiddenCallback callback) override;
 
+  /**
+   * @copydoc Dali::WebEnginePlugin::GetPlainTextAsynchronously()
+   */
+  void GetPlainTextAsynchronously(PlainTextReceivedCallback callback) override;
+
 private:
   void UpdateBuffer();