[M94 Migration] Load ErrorPage for HTTP Error 404 47/267547/1
authorGajendra N <gajendra.n@samsung.com>
Fri, 28 May 2021 07:33:28 +0000 (13:03 +0530)
committerGajendra N <gajendra.n@samsung.com>
Tue, 7 Dec 2021 05:13:10 +0000 (05:13 +0000)
When an URL fails to load with HTTP Error 404, no error page
was displayed; only blank page was seen. This patch overrides
necessary functions to display the required error page.

Reference: https://review.tizen.org/gerrit/258954

Change-Id: I24f42ebd37e33e48a3998afdc891d329d34db831
Signed-off-by: Gajendra N <gajendra.n@samsung.com>
(cherry picked from commit 5877ed199a4a3e3185b935f5ced45581c2313781)

tizen_src/ewk/efl_integration/content_browser_client_efl.cc
tizen_src/ewk/efl_integration/content_browser_client_efl.h
tizen_src/ewk/efl_integration/renderer/content_renderer_client_efl.cc
tizen_src/ewk/efl_integration/renderer/content_renderer_client_efl.h

index a9f8e6d..418cbd1 100644 (file)
@@ -18,6 +18,8 @@
 #include "browser/render_message_filter_efl.h"
 #include "browser/web_view_browser_message_filter.h"
 #include "common/content_switches_efl.h"
+#include "components/error_page/common/error.h"
+#include "components/error_page/common/localized_error.h"
 #include "content/browser/web_contents/web_contents_view_efl.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/render_widget_host.h"
@@ -220,6 +222,12 @@ void ContentBrowserClientEfl::DispatchPopupBlockedOnUIThread(
       target_url.spec().c_str());
 }
 
+bool ContentBrowserClientEfl::HasErrorPage(int http_status_code) {
+  // Use an internal error page, if we have one for the status code.
+  return error_page::LocalizedError::HasStrings(
+      error_page::Error::kHttpErrorDomain, http_status_code);
+}
+
 void ContentBrowserClientEfl::AllowCertificateError(
     WebContents* web_contents,
     int cert_error,
index 7832490..cc11fb1 100644 (file)
@@ -60,6 +60,7 @@ class ContentBrowserClientEfl : public ContentBrowserClient {
 
   scoped_refptr<QuotaPermissionContext> CreateQuotaPermissionContext() override;
 
+  bool HasErrorPage(int http_status_code) override;
   void AllowCertificateError(
       WebContents* web_contents,
       int cert_error,
index 9b5d558..e4067f7 100644 (file)
@@ -265,6 +265,15 @@ void ContentRendererClientEfl::PrepareErrorPage(
   content::CommonRendererClient::PrepareErrorPage(error, error_html);
 }
 
+void ContentRendererClientEfl::PrepareErrorPageForHttpStatusError(
+    content::RenderFrame* render_frame,
+    const blink::WebURLError& error,
+    const std::string& http_method,
+    int http_status,
+    std::string* error_html) {
+  content::CommonRendererClient::PrepareErrorPage(error, error_html);
+}
+
 void ContentRendererClientEfl::ApplyCustomMobileSettings(blink::WebView* webview) {
   // blink::WebViewImpl prevents auto zoom after tap if maximum legible scale is
   // too small. Blink by default sets it to 1 and needs to be enlarged to make
index fe18655..660f495 100644 (file)
@@ -76,6 +76,12 @@ class ContentRendererClientEfl : public content::ContentRendererClient {
                         const blink::WebURLError& error,
                         const std::string& http_method,
                         std::string* error_html) override;
+  void PrepareErrorPageForHttpStatusError(
+      content::RenderFrame* render_frame,
+      const blink::WebURLError& error,
+      const std::string& http_method,
+      int http_status,
+      std::string* error_html) override;
 
   uint64_t VisitedLinkHash(const char* canonical_url, size_t length) override;