Enable suppression of error page from the Java side


Design doc: https://docs.google.com/document/d/188BbgvTdhKf8bXikCL-JMduEclJOd9GxhKu79hmSVdo/edit

We wish to provide a means of optionally suppressing the display of the
webview error page so that applications that wish to display their own
error content may do so without presenting a poor user experience.

Test: run_webview_instrumentation_test_apk -f AwSettingsTest#testShouldSuppressErrorPage
Change-Id: I15c42acd7d562e7d37bb4f84d92267db49f0a55a
Reviewed-on: https://chromium-review.googlesource.com/c/1185001
Auto-Submit: Christian O. Andersson <[email protected]>
Reviewed-by: Bo <[email protected]>
Reviewed-by: Robert Sesek <[email protected]>
Reviewed-by: Changwan Ryu <[email protected]>
Reviewed-by: Nate Fischer <[email protected]>
Commit-Queue: Christian O. Andersson <[email protected]>
Cr-Commit-Position: refs/heads/master@{#626102}
diff --git a/android_webview/renderer/aw_render_frame_ext.h b/android_webview/renderer/aw_render_frame_ext.h
index 9b7698b2..93a946a 100644
--- a/android_webview/renderer/aw_render_frame_ext.h
+++ b/android_webview/renderer/aw_render_frame_ext.h
@@ -27,7 +27,11 @@
 // WebKit directly to implement (and that aren't needed in the chrome app).
 class AwRenderFrameExt : public content::RenderFrameObserver {
  public:
-  AwRenderFrameExt(content::RenderFrame* render_frame);
+  explicit AwRenderFrameExt(content::RenderFrame* render_frame);
+
+  static AwRenderFrameExt* FromRenderFrame(content::RenderFrame* render_frame);
+
+  bool GetShouldSuppressErrorPage();
 
  private:
   ~AwRenderFrameExt() override;
@@ -57,6 +61,8 @@
 
   void OnSmoothScroll(int target_x, int target_y, int duration_ms);
 
+  void OnSetShouldSuppressErrorPage(bool suppress);
+
   blink::WebView* GetWebView();
   blink::WebFrameWidget* GetWebFrameWidget();
 
@@ -64,6 +70,9 @@
 
   blink::AssociatedInterfaceRegistry registry_;
 
+  // Some WebView users might want to show their own error pages / logic
+  bool should_suppress_error_page_ = false;
+
   DISALLOW_COPY_AND_ASSIGN(AwRenderFrameExt);
 };