$(extension_src_dir)/web-engine-chromium/tizen-web-engine-chromium.cpp \
$(extension_src_dir)/web-engine-chromium/tizen-web-engine-console-message.cpp \
$(extension_src_dir)/web-engine-chromium/tizen-web-engine-context.cpp \
+ $(extension_src_dir)/web-engine-chromium/tizen-web-engine-context-menu.cpp \
+ $(extension_src_dir)/web-engine-chromium/tizen-web-engine-context-menu-item.cpp \
$(extension_src_dir)/web-engine-chromium/tizen-web-engine-cookie-manager.cpp \
$(extension_src_dir)/web-engine-chromium/tizen-web-engine-form-repost-decision.cpp \
$(extension_src_dir)/web-engine-chromium/tizen-web-engine-frame.cpp \
#include "tizen-web-engine-certificate.h"
#include "tizen-web-engine-console-message.h"
#include "tizen-web-engine-context.h"
+#include "tizen-web-engine-context-menu.h"
+#include "tizen-web-engine-context-menu-item.h"
#include "tizen-web-engine-cookie-manager.h"
#include "tizen-web-engine-form-repost-decision.h"
#include "tizen-web-engine-http-auth-handler.h"
{
public:
WebViewContainerForDali(WebViewContainerClient& client, int width, int height)
- : mClient(client)
- , mWidth(width)
- , mHeight(height)
- , mCookieAcceptancePolicy(EWK_COOKIE_ACCEPT_POLICY_NO_THIRD_PARTY)
- , mWebEngineSettings(0)
- , mWebEngineContext(0)
- , mWebEngineCookieManager(0)
- , mWebEngineBackForwardList(0)
+ : mClient(client)
+ , mWidth(width)
+ , mHeight(height)
+ , mCookieAcceptancePolicy(EWK_COOKIE_ACCEPT_POLICY_NO_THIRD_PARTY)
+ , mWebEngineSettings(0)
+ , mWebEngineContext(0)
+ , mWebEngineCookieManager(0)
+ , mWebEngineBackForwardList(0)
{
InitWebView(0, 0);
}
WebViewContainerForDali(WebViewContainerClient& client, int width, int height, int argc, char** argv)
- : mClient(client)
- , mWidth(width)
- , mHeight(height)
- , mCookieAcceptancePolicy(EWK_COOKIE_ACCEPT_POLICY_NO_THIRD_PARTY)
- , mWebEngineSettings(0)
- , mWebEngineContext(0)
- , mWebEngineCookieManager(0)
- , mWebEngineBackForwardList(0)
+ : mClient(client)
+ , mWidth(width)
+ , mHeight(height)
+ , mCookieAcceptancePolicy(EWK_COOKIE_ACCEPT_POLICY_NO_THIRD_PARTY)
+ , mWebEngineSettings(0)
+ , mWebEngineContext(0)
+ , mWebEngineCookieManager(0)
+ , mWebEngineBackForwardList(0)
{
InitWebView(argc, argv);
evas_object_smart_callback_add(mWebView, "ssl,certificate,changed",
&WebViewContainerForDali::OnSslCertificateChanged,
&mClient);
+ evas_object_smart_callback_add(mWebView, "contextmenu,customize",
+ &WebViewContainerForDali::OnContextMenuCustomized,
+ &mClient);
+ evas_object_smart_callback_add(mWebView, "contextmenu,selected",
+ &WebViewContainerForDali::OnContextMenuItemSelected,
+ &mClient);
ewk_view_authentication_callback_set(mWebView, &WebViewContainerForDali::OnAuthenticationChallenge, &mClient);
auto client = static_cast<WebViewContainerClient*>(data);
Ewk_Form_Repost_Decision_Request* decisionRequest = static_cast<Ewk_Form_Repost_Decision_Request*>(eventInfo);
std::shared_ptr<Dali::WebEngineFormRepostDecision> webDecisionRequest(new TizenWebEngineFormRepostDecision(decisionRequest));
- client->RequestFormRepostDecision(webDecisionRequest);
+ client->RequestFormRepostDecision(std::move(webDecisionRequest));
}
static void OnScreenshotCaptured(Evas_Object* image, void* data)
auto client = static_cast<WebViewContainerClient*>(data);
Ewk_Policy_Decision* policyDecision = static_cast<Ewk_Policy_Decision*>(policy);
std::shared_ptr<Dali::WebEnginePolicyDecision> webPolicyDecision(new TizenWebEnginePolicyDecision(policyDecision));
- client->NewWindowPolicyDecided(webPolicyDecision);
+ client->NewWindowPolicyDecided(std::move(webPolicyDecision));
}
static void OnCertificateConfirmRequest(void* data, Evas_Object*, void* eventInfo)
client->AuthenticationChallenge(std::move(authHandler));
}
+ static void OnContextMenuCustomized(void* data, Evas_Object*, void* eventInfo)
+ {
+ auto client = static_cast<WebViewContainerClient *>(data);
+ Ewk_Context_Menu* menu = (Ewk_Context_Menu *)eventInfo;
+ std::shared_ptr<Dali::WebEngineContextMenu> contextMenu(new TizenWebEngineContextMenu(menu));
+ client->ContextMenuCustomized(std::move(contextMenu));
+ }
+
+ static void OnContextMenuItemSelected(void* data, Evas_Object*, void* eventInfo)
+ {
+ auto client = static_cast<WebViewContainerClient*>(data);
+ Ewk_Context_Menu_Item* item = (Ewk_Context_Menu_Item*)eventInfo;
+ std::shared_ptr<Dali::WebEngineContextMenuItem> contextMenuItem(new TizenWebEngineContextMenuItem(item));
+ client->ContextMenuItemSelected(std::move(contextMenuItem));
+ }
+
static void OnEvaluateJavaScript(Evas_Object* o, const char* result, void* data)
{
auto client = WebEngineManager::Get().FindContainerClient(o);
};
TizenWebEngineChromium::TizenWebEngineChromium()
- : mWebViewContainer(0)
- , mJavaScriptEvaluationCount(0)
-{\r
+ : mWebViewContainer(0)
+ , mJavaScriptEvaluationCount(0)
+{
}
TizenWebEngineChromium::~TizenWebEngineChromium()
return mHttpAuthHandlerSignal;
}
+Dali::WebEnginePlugin::WebEngineContextMenuCustomizedSignalType& TizenWebEngineChromium::ContextMenuCustomizedSignal()
+{
+ return mContextMenuCustomizedSignal;
+}
+
+Dali::WebEnginePlugin::WebEngineContextMenuItemSelectedSignalType& TizenWebEngineChromium::ContextMenuItemSelectedSignal()
+{
+ return mContextMenuItemSelectedSignal;
+}
+
// WebViewContainerClient Interface
void TizenWebEngineChromium::UpdateImage(tbm_surface_h buffer)
{
}
}
+void TizenWebEngineChromium::ContextMenuCustomized(std::shared_ptr<Dali::WebEngineContextMenu> menu)
+{
+ DALI_LOG_RELEASE_INFO("#ContextMenuCustomized.\n");
+ if (!mContextMenuCustomizedSignal.Empty())
+ {
+ mContextMenuCustomizedSignal.Emit(std::move(menu));
+ }
+}
+
+void TizenWebEngineChromium::ContextMenuItemSelected(std::shared_ptr<Dali::WebEngineContextMenuItem> item)
+{
+ DALI_LOG_RELEASE_INFO("#ContextMenuItemSelected.\n");
+ if (!mContextMenuItemSelectedSignal.Empty())
+ {
+ mContextMenuItemSelectedSignal.Emit(std::move(item));
+ }
+}
+
void TizenWebEngineChromium::RunJavaScriptEvaluationResultHandler(size_t key, const char* result)
{
auto handler = mJavaScriptEvaluationResultHandlers.find(key);
virtual void AuthenticationChallenge(std::shared_ptr<Dali::WebEngineHttpAuthHandler> handler) = 0;
/**
+ * @brief Callback function to be called by WebViewContainer when context menu
+ * would be customized.
+ * @param [in] url New url after url is changed.
+ */
+ virtual void ContextMenuCustomized(std::shared_ptr<Dali::WebEngineContextMenu> menu) = 0;
+
+ /**
+ * @brief Callback function to be called by WebViewContainer when context menu
+ * item is selected.
+ * @param [in] url New url after url is changed.
+ */
+ virtual void ContextMenuItemSelected(std::shared_ptr<Dali::WebEngineContextMenuItem> item) = 0;
+
+ /**
* @brief Callback function to be called by WebViewContainer when it gets
* JavaScript evalution result.
* @param [in] key An unsigned integer representing the result handler
*/
Dali::WebEnginePlugin::WebEngineHttpAuthHandlerSignalType& HttpAuthHandlerSignal() override;
+ /**
+ * @copydoc Dali::WebEnginePlugin::ContextMenuCustomizedSignal()
+ */
+ Dali::WebEnginePlugin::WebEngineContextMenuCustomizedSignalType& ContextMenuCustomizedSignal() override;
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::ContextMenuItemSelectedSignal()
+ */
+ Dali::WebEnginePlugin::WebEngineContextMenuItemSelectedSignalType& ContextMenuItemSelectedSignal() override;
+
// WebViewContainerClient Interface
/**
void AuthenticationChallenge(std::shared_ptr<Dali::WebEngineHttpAuthHandler> handler) override;
/**
+ * @copydoc Dali::Plugin::WebViewContainerClient::ContextMenuCustomized()
+ */
+ void ContextMenuCustomized(std::shared_ptr<Dali::WebEngineContextMenu> menu) override;
+
+ /**
+ * @copydoc Dali::Plugin::WebViewContainerClient::ContextMenuItemSelected()
+ */
+ void ContextMenuItemSelected(std::shared_ptr<Dali::WebEngineContextMenuItem> item) override;
+
+ /**
* @copydoc
* Dali::Plugin::WebViewContainerClient::RunJavaScriptEvaluationResultHandler()
*/
std::string mUrl;
size_t mJavaScriptEvaluationCount;
- Dali::WebEnginePlugin::WebEnginePageLoadSignalType mLoadStartedSignal;
- Dali::WebEnginePlugin::WebEnginePageLoadSignalType mLoadInProgressSignal;
- Dali::WebEnginePlugin::WebEnginePageLoadSignalType mLoadFinishedSignal;
- Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType mLoadErrorSignal;
- Dali::WebEnginePlugin::WebEngineUrlChangedSignalType mUrlChangedSignal;
- Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType mScrollEdgeReachedSignal;
- Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType mFormRepostDecisionSignal;
- Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType mFrameRenderedSignal;
- Dali::WebEnginePlugin::WebEngineRequestInterceptorSignalType mRequestInterceptorSignal;
- Dali::WebEnginePlugin::WebEngineConsoleMessageSignalType mConsoleMessageSignal;
- Dali::WebEnginePlugin::WebEnginePolicyDecisionSignalType mPolicyDecisionSignal;
- Dali::WebEnginePlugin::WebEngineCertificateSignalType mCertificateConfirmSignal;
- Dali::WebEnginePlugin::WebEngineCertificateSignalType mSslCertificateChangedSignal;
- Dali::WebEnginePlugin::WebEngineHttpAuthHandlerSignalType mHttpAuthHandlerSignal;
-
- std::unordered_map<size_t, JavaScriptCallback> mJavaScriptEvaluationResultHandlers;
- std::unordered_map<std::string, JavaScriptCallback> mJavaScriptMessageHandlers;
+ Dali::WebEnginePlugin::WebEnginePageLoadSignalType mLoadStartedSignal;
+ Dali::WebEnginePlugin::WebEnginePageLoadSignalType mLoadInProgressSignal;
+ Dali::WebEnginePlugin::WebEnginePageLoadSignalType mLoadFinishedSignal;
+ Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType mLoadErrorSignal;
+ Dali::WebEnginePlugin::WebEngineUrlChangedSignalType mUrlChangedSignal;
+ Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType mScrollEdgeReachedSignal;
+ Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType mFormRepostDecisionSignal;
+ Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType mFrameRenderedSignal;
+ Dali::WebEnginePlugin::WebEngineRequestInterceptorSignalType mRequestInterceptorSignal;
+ Dali::WebEnginePlugin::WebEngineConsoleMessageSignalType mConsoleMessageSignal;
+ Dali::WebEnginePlugin::WebEnginePolicyDecisionSignalType mPolicyDecisionSignal;
+ Dali::WebEnginePlugin::WebEngineCertificateSignalType mCertificateConfirmSignal;
+ Dali::WebEnginePlugin::WebEngineCertificateSignalType mSslCertificateChangedSignal;
+ Dali::WebEnginePlugin::WebEngineHttpAuthHandlerSignalType mHttpAuthHandlerSignal;
+ Dali::WebEnginePlugin::WebEngineContextMenuCustomizedSignalType mContextMenuCustomizedSignal;
+ Dali::WebEnginePlugin::WebEngineContextMenuItemSelectedSignalType mContextMenuItemSelectedSignal;
+
+ std::unordered_map<size_t, JavaScriptCallback> mJavaScriptEvaluationResultHandlers;
+ std::unordered_map<std::string, JavaScriptCallback> mJavaScriptMessageHandlers;
Dali::WebEnginePlugin::JavaScriptAlertCallback mJavaScriptAlertCallback;
Dali::WebEnginePlugin::JavaScriptConfirmCallback mJavaScriptConfirmCallback;
--- /dev/null
+/*
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "tizen-web-engine-context-menu-item.h"
+#include "tizen-web-engine-context-menu.h"
+
+#include <ewk_context_menu_internal.h>
+#include <ewk_context_menu_product.h>
+
+namespace Dali
+{
+namespace Plugin
+{
+
+TizenWebEngineContextMenuItem::TizenWebEngineContextMenuItem(Ewk_Context_Menu_Item* item)
+ : ewkContextMenuItem(item)
+{
+}
+
+TizenWebEngineContextMenuItem::~TizenWebEngineContextMenuItem()
+{
+}
+
+Dali::WebEngineContextMenuItem::ItemTag TizenWebEngineContextMenuItem::GetTag() const
+{
+ return static_cast<Dali::WebEngineContextMenuItem::ItemTag>(ewk_context_menu_item_tag_get(ewkContextMenuItem));
+}
+
+Dali::WebEngineContextMenuItem::ItemType TizenWebEngineContextMenuItem::GetType() const
+{
+ return static_cast<Dali::WebEngineContextMenuItem::ItemType>(ewk_context_menu_item_type_get(ewkContextMenuItem));
+}
+
+bool TizenWebEngineContextMenuItem::IsEnabled() const
+{
+ return ewk_context_menu_item_enabled_get(ewkContextMenuItem);
+}
+
+std::string TizenWebEngineContextMenuItem::GetLinkUrl() const
+{
+ return ewk_context_menu_item_link_url_get(ewkContextMenuItem);
+}
+
+std::string TizenWebEngineContextMenuItem::GetImageUrl() const
+{
+ return ewk_context_menu_item_image_url_get(ewkContextMenuItem);
+}
+
+std::string TizenWebEngineContextMenuItem::GetTitle() const
+{
+ return ewk_context_menu_item_title_get(ewkContextMenuItem);
+}
+
+std::unique_ptr<Dali::WebEngineContextMenu> TizenWebEngineContextMenuItem::GetParentMenu() const
+{
+ Ewk_Context_Menu* menu = ewk_context_menu_item_parent_menu_get(ewkContextMenuItem);
+ std::unique_ptr<Dali::WebEngineContextMenu> webEngineContextMenu(new TizenWebEngineContextMenu(menu));
+ return webEngineContextMenu;
+}
+
+Ewk_Context_Menu_Item* TizenWebEngineContextMenuItem::GetMenuItem() const
+{
+ return ewkContextMenuItem;
+}
+
+} // namespace Plugin
+} // namespace Dali
--- /dev/null
+#ifndef DALI_PLUGIN_TIZEN_WEB_ENGINE_CONTEXT_MENU_ITEM_H
+#define DALI_PLUGIN_TIZEN_WEB_ENGINE_CONTEXT_MENU_ITEM_H
+
+/*
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// EXTERNAL INCLUDES
+#include <dali/devel-api/adaptor-framework/web-engine-context-menu.h>
+#include <dali/devel-api/adaptor-framework/web-engine-context-menu-item.h>
+#include <ewk_context_menu.h>
+
+namespace Dali
+{
+// forward declaration.
+class WebEngineContextMenu;
+
+namespace Plugin
+{
+/**
+ * @brief A class TizenWebEngineContextMenuItem for item of context menu.
+ */
+class TizenWebEngineContextMenuItem : public Dali::WebEngineContextMenuItem
+{
+public:
+ /**
+ * @brief Constructor.
+ */
+ TizenWebEngineContextMenuItem(Ewk_Context_Menu_Item*);
+
+ /**
+ * @brief Destructor.
+ */
+ ~TizenWebEngineContextMenuItem();
+
+ /**
+ * @copydoc Dali::WebEngineContextMenuItem::GetTag()
+ */
+ ItemTag GetTag() const override;
+
+ /**
+ * @copydoc Dali::WebEngineContextMenuItem::GetType()
+ */
+ ItemType GetType() const override;
+
+ /**
+ * @copydoc Dali::WebEngineContextMenuItem::IsEnabled()
+ */
+ bool IsEnabled() const override;
+
+ /**
+ * @copydoc Dali::WebEngineContextMenuItem::GetLinkUrl()
+ */
+ std::string GetLinkUrl() const override;
+
+ /**
+ * @copydoc Dali::WebEngineContextMenuItem::GetImageUrl()
+ */
+ std::string GetImageUrl() const override;
+
+ /**
+ * @copydoc Dali::WebEngineContextMenuItem::GetTitle()
+ */
+ std::string GetTitle() const override;
+
+ /**
+ * @copydoc Dali::WebEngineContextMenuItem::GetParentMenu()
+ */
+ std::unique_ptr<Dali::WebEngineContextMenu> GetParentMenu() const override;
+
+ /**
+ * @brief Gets menu item of web engine.
+ *
+ * @return menu item of web engine
+ */
+ Ewk_Context_Menu_Item* GetMenuItem() const;
+
+private:
+ Ewk_Context_Menu_Item* ewkContextMenuItem;
+};
+
+} // namespace Plugin
+} // namespace Dali
+
+#endif // DALI_PLUGIN_TIZEN_WEB_ENGINE_CONTEXT_MENU_ITEM_H
--- /dev/null
+/*
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "tizen-web-engine-context-menu.h"
+#include "tizen-web-engine-context-menu-item.h"
+
+#include <ewk_context_menu_product.h>
+
+namespace Dali
+{
+namespace Plugin
+{
+
+TizenWebEngineContextMenu::TizenWebEngineContextMenu(Ewk_Context_Menu* menu)
+ : ewkContextMenu(menu)
+{
+}
+
+TizenWebEngineContextMenu::~TizenWebEngineContextMenu()
+{
+}
+
+uint32_t TizenWebEngineContextMenu::GetItemCount() const
+{
+ return ewk_context_menu_item_count(ewkContextMenu);
+}
+
+std::unique_ptr<Dali::WebEngineContextMenuItem> TizenWebEngineContextMenu::GetItemAt(uint32_t index) const
+{
+ Ewk_Context_Menu_Item* item = ewk_context_menu_nth_item_get(ewkContextMenu, index);
+ std::unique_ptr<Dali::WebEngineContextMenuItem> contextMenuItem(new TizenWebEngineContextMenuItem(item));
+ return contextMenuItem;
+}
+
+std::vector<std::unique_ptr<Dali::WebEngineContextMenuItem>> TizenWebEngineContextMenu::GetItemList() const
+{
+ std::vector<std::unique_ptr<Dali::WebEngineContextMenuItem>> contextMenuItemList;
+ Eina_List* itemList = const_cast<Eina_List*>(ewk_context_menu_items_get(ewkContextMenu));
+ Eina_List* list = nullptr;
+ void* item = nullptr;
+ EINA_LIST_FOREACH(itemList, list, item)
+ {
+ if (item)
+ {
+ Ewk_Context_Menu_Item* menuItem = static_cast<Ewk_Context_Menu_Item*>(item);
+ std::unique_ptr<Dali::WebEngineContextMenuItem> webitem(new TizenWebEngineContextMenuItem(menuItem));
+ contextMenuItemList.push_back(std::move(webitem));
+ }
+ }
+ return contextMenuItemList;
+}
+
+bool TizenWebEngineContextMenu::RemoveItem(Dali::WebEngineContextMenuItem& item)
+{
+ TizenWebEngineContextMenuItem* menuItem = static_cast<TizenWebEngineContextMenuItem*>(&item);
+ return ewk_context_menu_item_remove(ewkContextMenu, menuItem->GetMenuItem());
+}
+
+bool TizenWebEngineContextMenu::AppendItemAsAction(Dali::WebEngineContextMenuItem::ItemTag tag, const std::string& title, bool enabled)
+{
+ return ewk_context_menu_item_append_as_action(ewkContextMenu, (Ewk_Context_Menu_Item_Tag)tag, title.c_str(), enabled);
+}
+
+bool TizenWebEngineContextMenu::AppendItem(Dali::WebEngineContextMenuItem::ItemTag tag, const std::string& title, const std::string& iconFile, bool enabled)
+{
+ return ewk_context_menu_item_append(ewkContextMenu, (Ewk_Context_Menu_Item_Tag)tag, title.c_str(), iconFile.c_str(), enabled);
+}
+
+bool TizenWebEngineContextMenu::SelectItem(Dali::WebEngineContextMenuItem& item)
+{
+ TizenWebEngineContextMenuItem* menuItem = static_cast<TizenWebEngineContextMenuItem*>(&item);
+ return ewk_context_menu_item_select(ewkContextMenu, menuItem->GetMenuItem());
+}
+
+Dali::Vector2 TizenWebEngineContextMenu::GetPosition() const
+{
+ int x = 0, y = 0;
+#if defined(OS_TIZEN_TV)
+ x = ewk_context_menu_pos_x_get(ewkContextMenu);
+ y = ewk_context_menu_pos_y_get(ewkContextMenu);
+#endif
+ return Dali::Vector2(x, y);
+}
+
+bool TizenWebEngineContextMenu::Hide()
+{
+ return ewk_context_menu_hide(ewkContextMenu);
+}
+
+} // namespace Plugin
+} // namespace Dali
--- /dev/null
+#ifndef DALI_PLUGIN_TIZEN_WEB_ENGINE_CONTEXT_MENU_H
+#define DALI_PLUGIN_TIZEN_WEB_ENGINE_CONTEXT_MENU_H
+
+/*
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// EXTERNAL INCLUDES
+#include <dali/devel-api/adaptor-framework/web-engine-context-menu.h>
+#include <dali/devel-api/adaptor-framework/web-engine-context-menu-item.h>
+#include <dali/public-api/math/vector2.h>
+#include <ewk_context_menu.h>
+#include <memory>
+#include <string>
+#include <vector>
+
+namespace Dali
+{
+namespace Plugin
+{
+
+/**
+ * @brief A class TizenWebEngineContextMenu for context menu.
+ */
+class TizenWebEngineContextMenu : public Dali::WebEngineContextMenu
+{
+public:
+ /**
+ * @brief Constructor.
+ */
+ TizenWebEngineContextMenu(Ewk_Context_Menu*);
+
+ /**
+ * @brief Destructor.
+ */
+ ~TizenWebEngineContextMenu();
+
+ /**
+ * @copydoc Dali::WebEngineContextMenu::GetItemCount()
+ */
+ uint32_t GetItemCount() const override;
+
+ /**
+ * @copydoc Dali::WebEngineContextMenu::GetItemAt()
+ */
+ std::unique_ptr<Dali::WebEngineContextMenuItem> GetItemAt(uint32_t index) const override;
+
+ /**
+ * @copydoc Dali::WebEngineContextMenu::GetItemList()
+ */
+ std::vector<std::unique_ptr<Dali::WebEngineContextMenuItem>> GetItemList() const override;
+
+ /**
+ * @copydoc Dali::WebEngineContextMenu::GetPosition()
+ */
+ Dali::Vector2 GetPosition() const override;
+
+ /**
+ * @copydoc Dali::WebEngineContextMenu::RemoveItem()
+ */
+ bool RemoveItem(Dali::WebEngineContextMenuItem& item) override;
+
+ /**
+ * @copydoc Dali::WebEngineContextMenu::AppendItemAsAction()
+ */
+ bool AppendItemAsAction(Dali::WebEngineContextMenuItem::ItemTag tag, const std::string& title, bool enabled) override;
+
+ /**
+ * @copydoc Dali::WebEngineContextMenu::AppendItem()
+ */
+ bool AppendItem(Dali::WebEngineContextMenuItem::ItemTag tag, const std::string& title, const std::string& iconFile, bool enabled) override;
+
+ /**
+ * @copydoc Dali::WebEngineContextMenu::SelectItem()
+ */
+ bool SelectItem(Dali::WebEngineContextMenuItem& item) override;
+
+ /**
+ * @copydoc Dali::WebEngineContextMenu::Hide()
+ */
+ bool Hide() override;
+
+private:
+ Ewk_Context_Menu* ewkContextMenu;
+};
+
+} // namespace Plugin
+} // namespace Dali
+
+#endif // DALI_PLUGIN_TIZEN_WEB_ENGINE_CONTEXT_MENU_H
return mHttpAuthHandlerSignal;
}
+ /**
+ * @copydoc Dali::WebEnginePlugin::ContextMenuCustomizedSignal()
+ */
+ Dali::WebEnginePlugin::WebEngineContextMenuCustomizedSignalType& ContextMenuCustomizedSignal() override
+ {
+ return mContextMenuCustomizedSignal;
+ }
+
+ /**
+ * @copydoc Dali::WebEnginePlugin::ContextMenuItemSelectedSignal()
+ */
+ Dali::WebEnginePlugin::WebEngineContextMenuItemSelectedSignalType& ContextMenuItemSelectedSignal() override
+ {
+ return mContextMenuItemSelectedSignal;
+ }
+
private:
void UpdateBuffer();
EventThreadCallback mUpdateBufferTrigger;
- Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadStartedSignal;
- Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadInProgressSignal;
- Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadFinishedSignal;
- Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType mPageLoadErrorSignal;
- Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType mScrollEdgeReachedSignal;
- Dali::WebEnginePlugin::WebEngineUrlChangedSignalType mUrlChangedSignal;
- Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType mFormRepostDecisionSignal;
- Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType mFrameRenderedSignal;
- Dali::WebEnginePlugin::WebEngineRequestInterceptorSignalType mRequestInterceptorSignal;
- Dali::WebEnginePlugin::WebEngineConsoleMessageSignalType mConsoleMessageSignal;
- Dali::WebEnginePlugin::WebEnginePolicyDecisionSignalType mPolicyDecisionSignal;
- Dali::WebEnginePlugin::WebEngineCertificateSignalType mCertificateConfirmSignal;
- Dali::WebEnginePlugin::WebEngineCertificateSignalType mSslCertificateChangedSignal;
- Dali::WebEnginePlugin::WebEngineHttpAuthHandlerSignalType mHttpAuthHandlerSignal;
+ Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadStartedSignal;
+ Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadInProgressSignal;
+ Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadFinishedSignal;
+ Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType mPageLoadErrorSignal;
+ Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType mScrollEdgeReachedSignal;
+ Dali::WebEnginePlugin::WebEngineUrlChangedSignalType mUrlChangedSignal;
+ Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType mFormRepostDecisionSignal;
+ Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType mFrameRenderedSignal;
+ Dali::WebEnginePlugin::WebEngineRequestInterceptorSignalType mRequestInterceptorSignal;
+ Dali::WebEnginePlugin::WebEngineConsoleMessageSignalType mConsoleMessageSignal;
+ Dali::WebEnginePlugin::WebEnginePolicyDecisionSignalType mPolicyDecisionSignal;
+ Dali::WebEnginePlugin::WebEngineCertificateSignalType mCertificateConfirmSignal;
+ Dali::WebEnginePlugin::WebEngineCertificateSignalType mSslCertificateChangedSignal;
+ Dali::WebEnginePlugin::WebEngineHttpAuthHandlerSignalType mHttpAuthHandlerSignal;
+ Dali::WebEnginePlugin::WebEngineContextMenuCustomizedSignalType mContextMenuCustomizedSignal;
+ Dali::WebEnginePlugin::WebEngineContextMenuItemSelectedSignalType mContextMenuItemSelectedSignal;
};
} // namespace Plugin