Add some APIs into web context. 39/254839/7
authorhuayong.xu <huayong.xu@samsung.com>
Mon, 8 Mar 2021 02:06:52 +0000 (10:06 +0800)
committerhuayong.xu <huayong.xu@samsung.com>
Wed, 7 Apr 2021 06:51:42 +0000 (14:51 +0800)
This patch is to add some APIs with callbacks into web context.

Change-Id: I689741cde29cc25cb52aea73542a474c1ce06140

dali-extension/web-engine-chromium/file.list
dali-extension/web-engine-chromium/tizen-web-engine-context.cpp
dali-extension/web-engine-chromium/tizen-web-engine-context.h
dali-extension/web-engine-chromium/tizen-web-engine-security-origin.cpp [new file with mode: 0755]
dali-extension/web-engine-chromium/tizen-web-engine-security-origin.h [new file with mode: 0755]
dali-extension/web-engine-lwe/tizen-web-engine-lwe.cpp

index e5e28c1..b58f33d 100755 (executable)
@@ -12,4 +12,5 @@ web_engine_chromium_plugin_src_files = \
    $(extension_src_dir)/web-engine-chromium/tizen-web-engine-load-error.cpp \
    $(extension_src_dir)/web-engine-chromium/tizen-web-engine-policy-decision.cpp \
    $(extension_src_dir)/web-engine-chromium/tizen-web-engine-request-interceptor.cpp \
+   $(extension_src_dir)/web-engine-chromium/tizen-web-engine-security-origin.cpp \
    $(extension_src_dir)/web-engine-chromium/tizen-web-engine-settings.cpp
index a7b142d..2c050e0 100755 (executable)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ * 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.
@@ -16,6 +16,7 @@
  */
 
 #include "tizen-web-engine-context.h"
+#include "tizen-web-engine-security-origin.h"
 
 #include <ewk_context.h>
 #include <ewk_context_internal.h>
@@ -37,7 +38,7 @@ TizenWebEngineContext::~TizenWebEngineContext()
 
 Dali::WebEngineContext::CacheModel TizenWebEngineContext::GetCacheModel() const
 {
-  return static_cast<Dali::WebEngineContext::CacheModel>(ewk_context_cache_model_get(ewkContext ));
+  return static_cast<Dali::WebEngineContext::CacheModel>(ewk_context_cache_model_get(ewkContext));
 }
 
 void TizenWebEngineContext::SetCacheModel(Dali::WebEngineContext::CacheModel cacheModel)
@@ -60,16 +61,47 @@ void TizenWebEngineContext::SetCertificateFilePath(const std::string& certificat
   ewk_context_certificate_file_set(ewkContext, certificatePath.c_str());
 }
 
-void TizenWebEngineContext::DeleteWebDatabase()
+void TizenWebEngineContext::DeleteAllWebDatabase()
 {
   ewk_context_web_database_delete_all(ewkContext);
 }
 
-void TizenWebEngineContext::DeleteWebStorage()
+bool TizenWebEngineContext::GetWebDatabaseOrigins(Dali::WebEngineContext::WebEngineSecurityOriginAcquiredCallback callback)
+{
+  webSecurityOriginAcquiredCallback = callback;
+  return ewk_context_web_database_origins_get(ewkContext, &TizenWebEngineContext::OnSecurityOriginsAcquired, this);
+}
+
+bool TizenWebEngineContext::DeleteWebDatabase(WebEngineSecurityOrigin& origin)
+{
+  TizenWebEngineSecurityOrigin* engineOrigin = static_cast<TizenWebEngineSecurityOrigin*>(&origin);
+  return ewk_context_web_database_delete(ewkContext, engineOrigin->GetSecurityOrigin());
+}
+
+bool TizenWebEngineContext::GetWebStorageOrigins(Dali::WebEngineContext::WebEngineSecurityOriginAcquiredCallback callback)
+{
+  webSecurityOriginAcquiredCallback = callback;
+  return ewk_context_web_storage_origins_get(ewkContext, &TizenWebEngineContext::OnSecurityOriginsAcquired, this);
+}
+
+bool TizenWebEngineContext::GetWebStorageUsageForOrigin(WebEngineSecurityOrigin& origin, Dali::WebEngineContext::WebEngineStorageUsageAcquiredCallback callback)
+{
+  webStorageUsageAcquiredCallback = callback;
+  TizenWebEngineSecurityOrigin* engineOrigin = static_cast<TizenWebEngineSecurityOrigin*>(&origin);
+  return ewk_context_web_storage_usage_for_origin_get(ewkContext, engineOrigin->GetSecurityOrigin(), &TizenWebEngineContext::OnStorageUsageAcquired, this);
+}
+
+void TizenWebEngineContext::DeleteAllWebStorage()
 {
   ewk_context_web_storage_delete_all(ewkContext);
 }
 
+bool TizenWebEngineContext::DeleteWebStorageOrigin(WebEngineSecurityOrigin& origin)
+{
+  TizenWebEngineSecurityOrigin* engineOrigin = static_cast<TizenWebEngineSecurityOrigin*>(&origin);
+  return ewk_context_web_storage_origin_delete(ewkContext, engineOrigin->GetSecurityOrigin());
+}
+
 void TizenWebEngineContext::DeleteLocalFileSystem()
 {
   ewk_context_local_file_system_all_delete(ewkContext);
@@ -85,5 +117,96 @@ void TizenWebEngineContext::ClearCache()
   ewk_context_cache_clear(ewkContext);
 }
 
+bool TizenWebEngineContext::DeleteApplicationCache(WebEngineSecurityOrigin& origin)
+{
+  TizenWebEngineSecurityOrigin* engineOrigin = static_cast<TizenWebEngineSecurityOrigin*>(&origin);
+  return ewk_context_application_cache_delete(ewkContext, engineOrigin->GetSecurityOrigin());
+}
+
+void TizenWebEngineContext::GetFormPasswordList(Dali::WebEngineContext::WebEngineFormPasswordAcquiredCallback callback)
+{
+  webFormPasswordAcquiredCallback = callback;
+  ewk_context_form_password_data_list_get(ewkContext, &TizenWebEngineContext::OnFormPasswordsAcquired, this);
+}
+
+void TizenWebEngineContext::RegisterDownloadStartedCallback(Dali::WebEngineContext::WebEngineDownloadStartedCallback callback)
+{
+  webDownloadStartedCallback = callback;
+  ewk_context_did_start_download_callback_set(ewkContext, &TizenWebEngineContext::OnDownloadStarted, this);
+}
+
+void TizenWebEngineContext::RegisterMimeOverriddenCallback(Dali::WebEngineContext::WebEngineMimeOverriddenCallback callback)
+{
+  webMimeOverriddenCallback = callback;
+  ewk_context_mime_override_callback_set(ewkContext, &TizenWebEngineContext::OnMimeOverridden, this);
+}
+
+void TizenWebEngineContext::OnSecurityOriginsAcquired(Eina_List* origins, void* userData)
+{
+  TizenWebEngineContext* pThis = static_cast<TizenWebEngineContext*>(userData);
+  std::vector<std::unique_ptr<Dali::WebEngineSecurityOrigin>> originsList;
+
+  Eina_List* it = nullptr;
+  void* data = nullptr;
+  EINA_LIST_FOREACH(origins, it, data)
+  {
+    if (data)
+    {
+      Ewk_Security_Origin* securityOrigin = static_cast<Ewk_Security_Origin*>(data);
+      std::unique_ptr<Dali::WebEngineSecurityOrigin> origin(new TizenWebEngineSecurityOrigin(securityOrigin));
+      originsList.push_back(std::move(origin));
+    }
+  }
+
+  pThis->webSecurityOriginAcquiredCallback(originsList);
+}
+
+void TizenWebEngineContext::OnStorageUsageAcquired(uint64_t usage, void* userData)
+{
+  TizenWebEngineContext* pThis = static_cast<TizenWebEngineContext*>(userData);
+  pThis->webStorageUsageAcquiredCallback(usage);
+}
+
+void TizenWebEngineContext::OnFormPasswordsAcquired(Eina_List* list, void* userData)
+{
+  TizenWebEngineContext* pThis = static_cast<TizenWebEngineContext*>(userData);
+  std::vector<std::unique_ptr<Dali::WebEngineContext::PasswordData>> passwordDataList;
+
+  Eina_List* it = nullptr;
+  void* data = nullptr;
+  EINA_LIST_FOREACH(list, it, data)
+  {
+    if (data)
+    {
+      Ewk_Password_Data* ewkPassword = static_cast<Ewk_Password_Data*>(data);
+      std::unique_ptr<Dali::WebEngineContext::PasswordData> passwordData(new Dali::WebEngineContext::PasswordData());
+      passwordData->url = ewkPassword->url;
+      passwordData->useFingerprint = ewkPassword->useFingerprint;
+      passwordDataList.push_back(std::move(passwordData));
+    }
+  }
+
+  pThis->webFormPasswordAcquiredCallback(passwordDataList);
+}
+
+void TizenWebEngineContext::OnDownloadStarted(const char* downloadUrl, void* userData)
+{
+  TizenWebEngineContext* pThis = static_cast<TizenWebEngineContext*>(userData);
+  pThis->webDownloadStartedCallback(downloadUrl);
+}
+
+Eina_Bool TizenWebEngineContext::OnMimeOverridden(const char* url, const char* defaultMime, char** newMime, void* userData)
+{
+  TizenWebEngineContext* pThis = static_cast<TizenWebEngineContext*>(userData);
+  std::string newOverridingMime;
+  bool result = pThis->webMimeOverriddenCallback(url, defaultMime, newOverridingMime);
+  if (result)
+  {
+    // this memory would be freed by chromium-efl if mime-overridden-callback returns true.
+    *newMime = strdup(newOverridingMime.c_str());
+  }
+  return result;
+}
+
 } // namespace Plugin
 } // namespace Dali
index 61ea1ba..c18d7db 100755 (executable)
@@ -2,7 +2,7 @@
 #define DALI_PLUGIN_WEB_ENGINE_CONTEXT_H
 
 /*
- * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ * 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.
@@ -19,8 +19,9 @@
  */
 
 // EXTERNAL INCLUDES
-#include <string>
 #include <dali/devel-api/adaptor-framework/web-engine-context.h>
+#include <eina_list.h>
+#include <string>
 
 struct Ewk_Context;
 
@@ -46,89 +47,153 @@ public:
   ~TizenWebEngineContext();
 
   /**
-   * @brief Returns the cache model type.
-   *
-   * @return #Dali::WebEngineContext::CacheModel
+   * @copydoc Dali::WebEngineContext::GetCacheModel()
    */
   CacheModel GetCacheModel() const override;
 
   /**
-   * @brief Requests to set the cache model.
-   *
-   * @param[in] cacheModel The cache model
+   * @copydoc Dali::WebEngineContext::SetCacheModel()
    */
   void SetCacheModel(CacheModel cacheModel) override;
 
   /**
-   * @brief Sets the given proxy URI to network backend of specific context.
-   *
-   * @param[in] uri, proxy URI to set
+   * @copydoc Dali::WebEngineContext::SetProxyUri()
    */
   void SetProxyUri(const std::string& uri) override;
 
   /**
-   * @brief Sets a proxy auth credential to network backend of specific context.
-   *
-   * @details Normally, proxy auth credential should be got from the callback
-   *          set by ewk_view_authentication_callback_set, once the username in
-   *          this API has been set with a non-null value, the authentication
-   *          callback will never been invoked. Try to avoid using this API.
-   *
-   * @param[in] username username to set
-   * @param[in] password password to set
+   * @copydoc Dali::WebEngineContext::SetDefaultProxyAuth()
    */
   void SetDefaultProxyAuth(const std::string& username, const std::string& password) override;
 
   /**
-   * @brief Adds CA certificates to persistent NSS certificate database
-   *
-   * Function accepts a path to a CA certificate file, a path to a directory
-   * containing CA certificate files, or a colon-seprarated list of those.
-   *
-   * Certificate files should have *.crt extension.
-   *
-   * Directories are traversed recursively.
-   *
-   * @param[in] certificatePath path to a CA certificate file(s), see above for details
+   * @copydoc Dali::WebEngineContext::SetCertificateFilePath()
    */
   void SetCertificateFilePath(const std::string& certificatePath) override;
 
   /**
-   * @brief Requests for deleting all web databases.
+   * @copydoc Dali::WebEngineContext::DeleteAllWebDatabase()
    */
-  void DeleteWebDatabase() override;
+  void DeleteAllWebDatabase() override;
 
   /**
-   * @brief Deletes web storage.
-   *
-   * @details This function does not ensure that all data will be removed.
-   *          Should be used to extend free physical memory.
-   *
-   * @param[in] context Context object
+   * @copydoc Dali::WebEngineContext::GetWebDatabaseOrigins()
    */
-  void DeleteWebStorage() override;
+  bool GetWebDatabaseOrigins(WebEngineSecurityOriginAcquiredCallback callback) override;
 
   /**
-   * @brief Requests for deleting all local file systems.
+   * @copydoc Dali::WebEngineContext::DeleteWebDatabase()
+   */
+  bool DeleteWebDatabase(WebEngineSecurityOrigin& origin) override;
+
+  /**
+   * @copydoc Dali::WebEngineContext::GetWebStorageOrigins()
+   */
+  bool GetWebStorageOrigins(WebEngineSecurityOriginAcquiredCallback callback) override;
+
+  /**
+   * @copydoc Dali::WebEngineContext::GetWebStorageUsageForOrigin()
+   */
+  bool GetWebStorageUsageForOrigin(WebEngineSecurityOrigin& origin, WebEngineStorageUsageAcquiredCallback callback);
+
+  /**
+   * @copydoc Dali::WebEngineContext::DeleteAllWebStorage()
+   */
+  void DeleteAllWebStorage() override;
+
+  /**
+   * @copydoc Dali::WebEngineContext::DeleteWebStorageOrigin()
+   */
+  bool DeleteWebStorageOrigin(WebEngineSecurityOrigin& origin) override;
+
+  /**
+   * @copydoc Dali::WebEngineContext::DeleteLocalFileSystem()
    */
   void DeleteLocalFileSystem() override;
 
   /**
-   * @brief Toggles the cache to be enabled or disabled
-   *
-   * Function works asynchronously.
-   * By default the cache is disabled resulting in not storing network data on disk.
-   *
-   * @param[in] cacheDisabled enable or disable cache
+   * @copydoc Dali::WebEngineContext::DisableCache()
    */
   void DisableCache(bool cacheDisabled) override;
 
   /**
-   * @brief Requests to clear cache
+   * @copydoc Dali::WebEngineContext::ClearCache()
    */
   void ClearCache() override;
 
+  /**
+   * @copydoc Dali::WebEngineContext::DeleteApplicationCache()
+   */
+  bool DeleteApplicationCache(WebEngineSecurityOrigin& origin) override;
+
+  /**
+   * @copydoc Dali::WebEngineContext::GetFormPasswordList()
+   */
+  void GetFormPasswordList(WebEngineFormPasswordAcquiredCallback callback) override;
+
+  /**
+   * @copydoc Dali::WebEngineContext::RegisterDownloadStartedCallback()
+   */
+  void RegisterDownloadStartedCallback(WebEngineDownloadStartedCallback callback) override;
+
+  /**
+   * @copydoc Dali::WebEngineContext::RegisterMimeOverriddenCallback()
+   */
+  void RegisterMimeOverriddenCallback(WebEngineMimeOverriddenCallback callback) override;
+
+private:
+  /**
+   * @brief Callback for getting security origins.
+   *
+   * @param[in] origins security origins list
+   * @param[in] data data for callback
+   */
+  static void OnSecurityOriginsAcquired(Eina_List* origins, void* data);
+
+  /**
+   * @brief Callback for getting storage.
+   *
+   * @param[in] usage usage for storage
+   * @param[in] data data for callback
+   */
+  static void OnStorageUsageAcquired(uint64_t usage, void* data);
+
+  /**
+   * @brief Callback for getting form passwords.
+   *
+   * @param[in] list list for form password
+   * @param[in] data data for callback
+   */
+  static void OnFormPasswordsAcquired(Eina_List* list, void* data);
+
+  /**
+   * @brief Callback for download started.
+   *
+   * @param[in] downloadUrl url to download
+   * @param[in] data data for callback
+   */
+  static void OnDownloadStarted(const char* downloadUrl, void* data);
+
+  /**
+   * @brief Callback for overriding default mime type.
+   *
+   * @param[in] url url for which the mime type can be overridden
+   * @param[in] mime current mime type
+   * @param[out] newMime a new mime type for url
+   * @param[in] data data for callback
+   *
+   * @return true in case mime should be overridden by the contents of new mime,
+   * false otherwise.
+   */
+  static Eina_Bool OnMimeOverridden(const char* url, const char* mime, char** newMime, void* data);
+
 private:
+  WebEngineSecurityOriginAcquiredCallback webSecurityOriginAcquiredCallback;
+  WebEngineStorageUsageAcquiredCallback   webStorageUsageAcquiredCallback;
+  WebEngineFormPasswordAcquiredCallback   webFormPasswordAcquiredCallback;
+  WebEngineDownloadStartedCallback        webDownloadStartedCallback;
+  WebEngineMimeOverriddenCallback         webMimeOverriddenCallback;
+
   Ewk_Context* ewkContext;
 };
 
diff --git a/dali-extension/web-engine-chromium/tizen-web-engine-security-origin.cpp b/dali-extension/web-engine-chromium/tizen-web-engine-security-origin.cpp
new file mode 100755 (executable)
index 0000000..76a05d6
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * 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-security-origin.h"
+
+namespace Dali
+{
+namespace Plugin
+{
+
+TizenWebEngineSecurityOrigin::TizenWebEngineSecurityOrigin(Ewk_Security_Origin* origin)
+  : ewkSecurityOrigin(origin)
+{
+}
+
+TizenWebEngineSecurityOrigin::~TizenWebEngineSecurityOrigin()
+{
+}
+
+std::string TizenWebEngineSecurityOrigin::GetHost() const
+{
+  return ewk_security_origin_host_get(ewkSecurityOrigin);
+}
+
+std::string TizenWebEngineSecurityOrigin::GetProtocol() const
+{
+  return ewk_security_origin_protocol_get(ewkSecurityOrigin);
+}
+
+Ewk_Security_Origin* TizenWebEngineSecurityOrigin::GetSecurityOrigin() const
+{
+  return ewkSecurityOrigin;
+}
+
+} // namespace Plugin
+} // namespace Dali
diff --git a/dali-extension/web-engine-chromium/tizen-web-engine-security-origin.h b/dali-extension/web-engine-chromium/tizen-web-engine-security-origin.h
new file mode 100755 (executable)
index 0000000..4dc055b
--- /dev/null
@@ -0,0 +1,72 @@
+#ifndef DALI_PLUGIN_TIZEN_WEB_ENGINE_SECURITY_ORIGIN_H
+#define DALI_PLUGIN_TIZEN_WEB_ENGINE_SECURITY_ORIGIN_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 <ewk_security_origin.h>
+#include <string>
+
+#include <dali/devel-api/adaptor-framework/web-engine-security-origin.h>
+
+namespace Dali
+{
+namespace Plugin
+{
+
+/**
+ * @brief A class TizenWebEngineSecurityOrigin for security origin.
+ */
+class TizenWebEngineSecurityOrigin : public Dali::WebEngineSecurityOrigin
+{
+public:
+  /**
+   * @brief Constructor.
+   */
+  TizenWebEngineSecurityOrigin(Ewk_Security_Origin*);
+
+  /**
+   * @brief Destructor.
+   */
+  ~TizenWebEngineSecurityOrigin();
+
+  /**
+   * @copydoc Dali::WebEngineSecurityOrigin::GetHost()
+   */
+  std::string GetHost() const override;
+
+  /**
+   * @copydoc Dali::WebEngineSecurityOrigin::GetProtocol()
+   */
+  std::string GetProtocol() const override;
+
+  /**
+   * @brief Get security origin.
+   *
+   * @return origin pointer.
+   */
+  Ewk_Security_Origin* GetSecurityOrigin() const;
+
+private:
+  Ewk_Security_Origin* ewkSecurityOrigin;
+};
+
+} // namespace Plugin
+} // namespace Dali
+
+#endif // DALI_PLUGIN_TIZEN_WEB_ENGINE_SECURITY_ORIGIN_H
index 5ce13a4..4ae80c5 100755 (executable)
@@ -24,6 +24,7 @@
 #include <dali/devel-api/adaptor-framework/web-engine-back-forward-list.h>
 #include <dali/devel-api/adaptor-framework/web-engine-context.h>
 #include <dali/devel-api/adaptor-framework/web-engine-cookie-manager.h>
+#include <dali/devel-api/adaptor-framework/web-engine-security-origin.h>
 #include <dali/devel-api/adaptor-framework/web-engine-settings.h>
 #include <dali/devel-api/common/stage.h>
 #include <dali/integration-api/debug.h>
@@ -179,7 +180,8 @@ LWE::KeyValue KeyStringToKeyValue(const char* DALIKeyString, bool isShiftPressed
     {
       keyValue = LWE::KeyValue::GreaterThanSignKey;
     }
-    else {
+    else
+    {
       keyValue = LWE::KeyValue::PeriodKey;
     }
   }
@@ -189,7 +191,8 @@ LWE::KeyValue KeyStringToKeyValue(const char* DALIKeyString, bool isShiftPressed
     {
       keyValue = LWE::KeyValue::QuestionMarkKey;
     }
-    else {
+    else
+    {
       keyValue = LWE::KeyValue::SlashKey;
     }
   }
@@ -555,11 +558,38 @@ public:
   void SetProxyUri(const std::string& uri) override {}
   void SetDefaultProxyAuth(const std::string& username, const std::string& password) override {}
   void SetCertificateFilePath(const std::string& certificatePath) override {}
-  void DeleteWebDatabase() override {}
-  void DeleteWebStorage() override {}
+  void DeleteAllWebDatabase() override {}
+  bool GetWebDatabaseOrigins(WebEngineSecurityOriginAcquiredCallback callback) override
+  {
+    return false;
+  }
+  bool DeleteWebDatabase(WebEngineSecurityOrigin &origin) override
+  {
+    return false;
+  }
+  bool GetWebStorageOrigins(WebEngineSecurityOriginAcquiredCallback callback) override
+  {
+    return false;
+  }
+  bool GetWebStorageUsageForOrigin(WebEngineSecurityOrigin &origin, WebEngineStorageUsageAcquiredCallback callback) override
+  {
+    return false;
+  }
+  void DeleteAllWebStorage() override {}
+  bool DeleteWebStorageOrigin(WebEngineSecurityOrigin &origin) override
+  {
+    return false;
+  }
   void DeleteLocalFileSystem() override {}
   void DisableCache(bool cacheDisabled) override {}
   void ClearCache() override {}
+  bool DeleteApplicationCache(WebEngineSecurityOrigin &origin) override
+  {
+    return false;
+  }
+  void GetFormPasswordList(WebEngineFormPasswordAcquiredCallback callback) override {}
+  void RegisterDownloadStartedCallback(WebEngineDownloadStartedCallback callback) override {}
+  void RegisterMimeOverriddenCallback(WebEngineMimeOverriddenCallback callback) override {}
 };
 
 Dali::WebEngineContext& TizenWebEngineLWE::GetContext() const
@@ -1101,8 +1131,7 @@ bool TizenWebEngineLWE::SetVisibility(bool visible)
   return false;
 }
 
-bool TizenWebEngineLWE::HighlightText(const std::string& text, Dali::WebEnginePlugin::FindOption options,
-                                      uint32_t maxMatchCount)
+bool TizenWebEngineLWE::HighlightText(const std::string& text, Dali::WebEnginePlugin::FindOption options, uint32_t maxMatchCount)
 {
   // NOT IMPLEMENTED
   return false;
@@ -1119,8 +1148,7 @@ Dali::PixelData TizenWebEngineLWE::GetScreenshot(Dali::Rect<int> viewArea, float
   return Dali::PixelData();
 }
 
-bool TizenWebEngineLWE::GetScreenshotAsynchronously(Dali::Rect<int> viewArea, float scaleFactor,
-                                                    Dali::WebEnginePlugin::ScreenshotCapturedCallback callback)
+bool TizenWebEngineLWE::GetScreenshotAsynchronously(Dali::Rect<int> viewArea, float scaleFactor, Dali::WebEnginePlugin::ScreenshotCapturedCallback callback)
 {
   // NOT IMPLEMENTED
   return false;