From 9f64bbd794cdde82b6bd7da5214971f12cfbb177 Mon Sep 17 00:00:00 2001 From: "huayong.xu" Date: Mon, 5 Sep 2022 19:38:56 +0800 Subject: [PATCH] Do not redirect interceptor callback. Change-Id: Ic12e38d2bdd272b7eccd61d602d3928a4dac3c2f --- .../tizen-web-engine-context.cpp | 32 ++----------------- .../web-engine-chromium/tizen-web-engine-context.h | 11 +------ .../tizen-web-engine-request-interceptor.cpp | 36 ---------------------- .../tizen-web-engine-request-interceptor.h | 26 ---------------- 4 files changed, 3 insertions(+), 102 deletions(-) mode change 100644 => 100755 dali-extension/web-engine-chromium/tizen-web-engine-context.h diff --git a/dali-extension/web-engine-chromium/tizen-web-engine-context.cpp b/dali-extension/web-engine-chromium/tizen-web-engine-context.cpp index 418decf..8a8c60b 100755 --- a/dali-extension/web-engine-chromium/tizen-web-engine-context.cpp +++ b/dali-extension/web-engine-chromium/tizen-web-engine-context.cpp @@ -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(callback); } TizenWebEngineContext::~TizenWebEngineContext() @@ -236,7 +234,6 @@ void TizenWebEngineContext::RegisterUrlSchemesAsCorsEnabled(const std::vectorTrigger(); + mWebRequestInterceptedCallback(interceptor); } - - // Wait for tasks from main thread and execute tasks. - TizenWebEngineRequestInterceptor* requestInterceptor = static_cast(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(interceptor.Get()); - requestInterceptor->NotifyTaskReady(); } void TizenWebEngineContext::OnRequestIntercepted(Ewk_Context*, Ewk_Intercept_Request* request, void* userData) diff --git a/dali-extension/web-engine-chromium/tizen-web-engine-context.h b/dali-extension/web-engine-chromium/tizen-web-engine-context.h old mode 100644 new mode 100755 index ba8f0fd..85c5a37 --- a/dali-extension/web-engine-chromium/tizen-web-engine-context.h +++ b/dali-extension/web-engine-chromium/tizen-web-engine-context.h @@ -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 mRequestInterceptorEventTrigger; - std::queue mRequestInterceptorQueue; + Ewk_Context* mEwkContext; }; } // namespace Plugin diff --git a/dali-extension/web-engine-chromium/tizen-web-engine-request-interceptor.cpp b/dali-extension/web-engine-chromium/tizen-web-engine-request-interceptor.cpp index 9e631b4..e1e1f5f 100755 --- a/dali-extension/web-engine-chromium/tizen-web-engine-request-interceptor.cpp +++ b/dali-extension/web-engine-chromium/tizen-web-engine-request-interceptor.cpp @@ -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 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 lock(mMutex); - while(mIsThreadWaiting) - { - mCondition.wait(lock); - } - mIsThreadWaiting = true; - - // execute tasks on io thread. - for(std::vector::iterator iter = mTaskQueue.begin(); iter != mTaskQueue.end(); iter++) - { - (*iter)(); - } - mTaskQueue.clear(); -} - -void TizenWebEngineRequestInterceptor::NotifyTaskReady() -{ - std::unique_lock 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(fdata); diff --git a/dali-extension/web-engine-chromium/tizen-web-engine-request-interceptor.h b/dali-extension/web-engine-chromium/tizen-web-engine-request-interceptor.h index d9ef678..9492a1e 100755 --- a/dali-extension/web-engine-chromium/tizen-web-engine-request-interceptor.h +++ b/dali-extension/web-engine-chromium/tizen-web-engine-request-interceptor.h @@ -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; - - /** - * @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 mTaskQueue; - std::mutex mMutex; - std::condition_variable mCondition; }; } // namespace Plugin -- 2.7.4