[M108 Migration][VD] Add API to for malicious page warning showing. 52/289052/3
authorfeifei08.liu <feifei08.liu@samsung.com>
Tue, 28 Feb 2023 03:37:54 +0000 (11:37 +0800)
committerfeifei liu <feifei08.liu@samsung.com>
Tue, 7 Mar 2023 09:07:03 +0000 (09:07 +0000)
Add ewk_view_html_string_override_current_entry_load to show
warning page for web browser security.
Fix issue occur in the following scenario:
1. Access www.google.com in org.tizen.browser.
2. Access malicious url, then wbs alert page is shown.
3. Press "goback" button, browser show malicious url page,
   not the previous page of www.google.com.
Treat the alert page and malicious page as the same navigation entry.
Add a new ewk API to show error page when malicious url detected.

Reference:
- https://review.tizen.org/gerrit/283452/

Change-Id: I0f9a4467a7a3d5a0af54189d9b79ced320a45188
Signed-off-by: feifei08.liu <feifei08.liu@samsung.com>
tizen_src/ewk/efl_integration/eweb_view.cc
tizen_src/ewk/efl_integration/eweb_view.h
tizen_src/ewk/efl_integration/public/ewk_view.cc

index 67e975a..909d773 100644 (file)
@@ -1152,12 +1152,21 @@ void EWebView::LoadPlainTextString(const char* plain_text) {
   LoadData(plain_text, std::string::npos, "text/plain", NULL, NULL, NULL);
 }
 
+void EWebView::LoadHTMLStringOverridingCurrentEntry(
+    const char* html,
+    const char* base_uri,
+    const char* unreachable_url) {
+  LoadData(html, std::string::npos, NULL, NULL, base_uri, unreachable_url,
+           true);
+}
+
 void EWebView::LoadData(const char* data,
                         size_t size,
                         const char* mime_type,
                         const char* encoding,
                         const char* base_uri,
-                        const char* unreachable_uri) {
+                        const char* unreachable_uri,
+                        bool should_replace_current_entry) {
   SetDefaultStringIfNull(mime_type, "text/html");
   SetDefaultStringIfNull(encoding, "utf-8");
   SetDefaultStringIfNull(base_uri, "about:blank");  // Webkit2 compatible
@@ -1184,7 +1193,7 @@ void EWebView::LoadData(const char* data,
   data_params.virtual_url_for_data_url = GURL(unreachable_uri);
 
   data_params.load_type = NavigationController::LOAD_TYPE_DATA;
-  data_params.should_replace_current_entry = false;
+  data_params.should_replace_current_entry = should_replace_current_entry;
   data_params.override_user_agent = NavigationController::UA_OVERRIDE_TRUE;
   web_contents_->GetController().LoadURLWithParams(data_params);
 }
index 43c06bf..bd71c11 100644 (file)
@@ -381,13 +381,17 @@ class EWebView {
                       const char* base_uri,
                       const char* unreachable_uri);
   void LoadPlainTextString(const char* plain_text);
+
+  void LoadHTMLStringOverridingCurrentEntry(const char* html,
+                                            const char* base_uri,
+                                            const char* unreachable_url);
   void LoadData(const char* data,
                 size_t size,
                 const char* mime_type,
                 const char* encoding,
                 const char* base_uri,
-                const char* unreachable_uri = NULL);
-
+                const char* unreachable_uri = NULL,
+                bool should_replace_current_entry = false);
   void InvokeLoadError(const GURL& url, int error_code, bool is_cancellation);
 
   void SetViewAuthCallback(Ewk_View_Authentication_Callback callback,
index 29f5697..4bf2b5a 100644 (file)
@@ -1289,8 +1289,15 @@ Evas_Object* ewk_view_favicon_get(const Evas_Object* ewkView)
 
 Eina_Bool ewk_view_html_string_override_current_entry_load(Evas_Object* view, const char* html, const char* base_uri, const char* unreachable_url)
 {
-  LOG_EWK_API_MOCKUP();
-  return false;
+#if BUILDFLAG(IS_TIZEN_TV)
+  EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
+  EINA_SAFETY_ON_NULL_RETURN_VAL(html, EINA_FALSE);
+  impl->LoadHTMLStringOverridingCurrentEntry(html, base_uri, unreachable_url);
+  return EINA_TRUE;
+#else
+  LOG_EWK_API_MOCKUP("Only for Tizen TV.");
+  return EINA_FALSE;
+#endif
 }
 
 Eina_Bool ewk_view_text_matches_count(Evas_Object* o, const char* text, Ewk_Find_Options options, unsigned max_match_count)