Do not redirect interceptor callback. 26/280826/2
authorhuayong.xu <huayong.xu@samsung.com>
Mon, 5 Sep 2022 11:38:56 +0000 (19:38 +0800)
committerhuayong.xu <huayong.xu@samsung.com>
Mon, 5 Sep 2022 11:47:35 +0000 (19:47 +0800)
Change-Id: Ic12e38d2bdd272b7eccd61d602d3928a4dac3c2f

dali-extension/web-engine-chromium/tizen-web-engine-context.cpp
dali-extension/web-engine-chromium/tizen-web-engine-context.h [changed mode: 0644->0755]
dali-extension/web-engine-chromium/tizen-web-engine-request-interceptor.cpp
dali-extension/web-engine-chromium/tizen-web-engine-request-interceptor.h

index 418decf..8a8c60b 100755 (executable)
@@ -37,8 +37,6 @@ TizenWebEngineContext::TizenWebEngineContext(Ewk_Context* context)
   , mWebRequestInterceptedCallback(nullptr)
   , mEwkContext(context)
 {
-  EventThreadCallback* callback = new Dali::EventThreadCallback(Dali::MakeCallback(this, &TizenWebEngineContext::OnRequestInterceptedEventCallback));
-  mRequestInterceptorEventTrigger = std::unique_ptr<Dali::EventThreadCallback>(callback);
 }
 
 TizenWebEngineContext::~TizenWebEngineContext()
@@ -236,7 +234,6 @@ void TizenWebEngineContext::RegisterUrlSchemesAsCorsEnabled(const std::vector<st
   {
     list = eina_list_append(list, (*it).c_str());
   }
-
   ewk_context_register_url_schemes_as_cors_enabled(mEwkContext, list);
 }
 
@@ -247,7 +244,6 @@ void TizenWebEngineContext::RegisterJsPluginMimeTypes(const std::vector<std::str
   {
     list = eina_list_append(list, (*it).c_str());
   }
-
   ewk_context_register_jsplugin_mime_types(mEwkContext, list);
 }
 
@@ -268,7 +264,6 @@ void TizenWebEngineContext::DeleteFormPasswordDataList(const std::vector<std::st
   {
     eList = eina_list_append(eList, (*it).c_str());
   }
-
   ewk_context_form_password_data_list_free(mEwkContext, eList);
 }
 
@@ -289,33 +284,10 @@ bool TizenWebEngineContext::FreeUnusedMemory()
 
 void TizenWebEngineContext::RequestIntercepted(Dali::WebEngineRequestInterceptorPtr interceptor)
 {
+  if (mWebRequestInterceptedCallback)
   {
-    Mutex::ScopedLock lock(mMutex);
-    mRequestInterceptorQueue.push(interceptor);
-    // Trigger an event on main thread.
-    mRequestInterceptorEventTrigger->Trigger();
+    mWebRequestInterceptedCallback(interceptor);
   }
-
-  // Wait for tasks from main thread and execute tasks.
-  TizenWebEngineRequestInterceptor* requestInterceptor = static_cast<TizenWebEngineRequestInterceptor*>(interceptor.Get());
-  requestInterceptor->WaitAndRunTasks();
-}
-
-void TizenWebEngineContext::OnRequestInterceptedEventCallback()
-{
-  Dali::WebEngineRequestInterceptorPtr interceptor;
-  {
-    Mutex::ScopedLock lock(mMutex);
-    interceptor = mRequestInterceptorQueue.front();
-    mRequestInterceptorQueue.pop();
-  }
-
-  // Execuate callback.
-  mWebRequestInterceptedCallback(interceptor);
-
-  // Notify io thread that tasks are ready on main thread.
-  TizenWebEngineRequestInterceptor* requestInterceptor = static_cast<TizenWebEngineRequestInterceptor*>(interceptor.Get());
-  requestInterceptor->NotifyTaskReady();
 }
 
 void TizenWebEngineContext::OnRequestIntercepted(Ewk_Context*, Ewk_Intercept_Request* request, void* userData)
old mode 100644 (file)
new mode 100755 (executable)
index ba8f0fd..85c5a37
@@ -261,11 +261,6 @@ private:
   void RequestIntercepted(Dali::WebEngineRequestInterceptorPtr interceptor);
 
   /**
-   * @brief Event callback for request interceptor is called on main thread.
-   */
-  void OnRequestInterceptedEventCallback();
-
-  /**
    * @brief Callback for intercepting http request.
    *
    * @param[in] context context of web engine
@@ -326,11 +321,7 @@ private:
   WebEngineDownloadStartedCallback        mWebDownloadStartedCallback;
   WebEngineMimeOverriddenCallback         mWebMimeOverriddenCallback;
   WebEngineRequestInterceptedCallback     mWebRequestInterceptedCallback;
-
-  Ewk_Context*                               mEwkContext;
-  Dali::Mutex                                mMutex;
-  std::unique_ptr<Dali::EventThreadCallback> mRequestInterceptorEventTrigger;
-  std::queue<WebEngineRequestInterceptorPtr> mRequestInterceptorQueue;
+  Ewk_Context*                            mEwkContext;
 };
 
 } // namespace Plugin
index 9e631b4..e1e1f5f 100755 (executable)
@@ -47,8 +47,6 @@ TizenWebEngineRequestInterceptor::TizenWebEngineRequestInterceptor(Ewk_Intercept
   {
     eina_hash_foreach(hash, &TizenWebEngineRequestInterceptor::IterateRequestHeaders, this);
   }
-
-  mIsThreadWaiting = true;
 }
 
 TizenWebEngineRequestInterceptor::~TizenWebEngineRequestInterceptor()
@@ -77,13 +75,6 @@ std::string TizenWebEngineRequestInterceptor::GetMethod() const
 
 bool TizenWebEngineRequestInterceptor::Ignore()
 {
-  std::unique_lock<std::mutex> lock(mMutex);
-  mTaskQueue.push_back(std::bind(&TizenWebEngineRequestInterceptor::IgnoreIo, this));
-  return true;
-}
-
-bool TizenWebEngineRequestInterceptor::IgnoreIo()
-{
   return ewk_intercept_request_ignore(ewkRequestInterceptor);
 }
 
@@ -133,33 +124,6 @@ bool TizenWebEngineRequestInterceptor::WriteResponseChunk(const int8_t* chunk, u
   return ewk_intercept_request_response_write_chunk(ewkRequestInterceptor, (const char*)chunk, length);
 }
 
-void TizenWebEngineRequestInterceptor::WaitAndRunTasks()
-{
-  // wait for tasks from main thread.
-  std::unique_lock<std::mutex> lock(mMutex);
-  while(mIsThreadWaiting)
-  {
-    mCondition.wait(lock);
-  }
-  mIsThreadWaiting = true;
-
-  // execute tasks on io thread.
-  for(std::vector<TaskCallback>::iterator iter = mTaskQueue.begin(); iter != mTaskQueue.end(); iter++)
-  {
-    (*iter)();
-  }
-  mTaskQueue.clear();
-}
-
-void TizenWebEngineRequestInterceptor::NotifyTaskReady()
-{
-  std::unique_lock<std::mutex> lock(mMutex);
-  mIsThreadWaiting = false;
-
-  // wake up the io thread
-  mCondition.notify_all();
-}
-
 Eina_Bool TizenWebEngineRequestInterceptor::IterateRequestHeaders(const Eina_Hash*, const void* key, void* data, void* fdata)
 {
   TizenWebEngineRequestInterceptor* pThis = static_cast<TizenWebEngineRequestInterceptor*>(fdata);
index d9ef678..9492a1e 100755 (executable)
@@ -108,29 +108,8 @@ public:
    */
   bool WriteResponseChunk(const int8_t* chunk, uint32_t length) override;
 
-  /**
-   * @brief Wait for and run tasks on io-thread.
-   */
-  void WaitAndRunTasks();
-
-  /**
-   * @brief Notify task ready on main thread.
-   */
-  void NotifyTaskReady();
-
 private:
   /**
-   * @brief Task callback.
-   */
-  using TaskCallback = std::function<bool(void)>;
-
-  /**
-   * @copydoc Dali::WebEngineRequestInterceptor::Ignore()
-   * @note It is run on IO thread
-   */
-  bool IgnoreIo();
-
-  /**
    * @brief Iterator attributes.
    *
    * @param[in] hash Hash map that need be iterated
@@ -148,11 +127,6 @@ private:
   std::string            requestUrl;
   std::string            requestMethod;
   Dali::Property::Map    requestHeaders;
-
-  bool                      mIsThreadWaiting;
-  std::vector<TaskCallback> mTaskQueue;
-  std::mutex                mMutex;
-  std::condition_variable   mCondition;
 };
 
 } // namespace Plugin