[epiphany] web-view: Add accessor to get current error page



commit bc3579edfcaf73121a2c286a8338acd3ac590f56
Author: Michael Catanzaro <mcatanzaro igalia com>
Date:   Mon Feb 8 17:00:32 2016 -0600

    web-view: Add accessor to get current error page
    
    https://bugzilla.gnome.org/show_bug.cgi?id=761735

 embed/ephy-web-view.c |   31 ++++++++++++++++++++++++++++---
 embed/ephy-web-view.h |    3 ++-
 2 files changed, 30 insertions(+), 4 deletions(-)
---
diff --git a/embed/ephy-web-view.c b/embed/ephy-web-view.c
index 753f4b1..06d7911 100644
--- a/embed/ephy-web-view.c
+++ b/embed/ephy-web-view.c
@@ -113,6 +113,8 @@ struct _EphyWebView {
   gboolean loading_error_page;
   char *tls_error_failing_uri;
 
+  EphyWebViewErrorPage error_page;
+
   /* Web Extension */
   EphyWebExtensionProxy *web_extension;
 };
@@ -1407,10 +1409,8 @@ update_security_status_for_committed_load (EphyWebView *view,
   WebKitSecurityManager *security_manager;
   SoupURI *soup_uri;
 
-  if (view->loading_error_page) {
-    view->loading_error_page = FALSE;
+  if (view->loading_error_page)
     return;
-  }
 
   toplevel = gtk_widget_get_toplevel (GTK_WIDGET (view));
   if (EPHY_IS_EMBED_CONTAINER (toplevel))
@@ -1502,6 +1502,11 @@ load_changed_cb (WebKitWebView *web_view,
       g_free (history_uri);
     }
 
+    if (view->loading_error_page)
+        view->loading_error_page = FALSE;
+    else
+        view->error_page = EPHY_WEB_VIEW_ERROR_PAGE_NONE;
+
     break;
   }
   case WEBKIT_LOAD_FINISHED:
@@ -1686,6 +1691,22 @@ get_tls_error_page_message (EphyWebView *view, const char *hostname)
 }
 
 /**
+ * ephy_web_view_get_error_page:
+ * @view: an #EphyWebView
+ *
+ * Returns the error page currently displayed, or
+ * %EPHY_WEB_VIEW_ERROR_PAGE_NONE.
+ *
+ **/
+EphyWebViewErrorPage
+ephy_web_view_get_error_page (EphyWebView *view)
+{
+  g_return_val_if_fail (EPHY_IS_WEB_VIEW (view), EPHY_WEB_VIEW_ERROR_PAGE_NONE);
+
+  return view->error_page;
+}
+
+/**
  * ephy_web_view_load_error_page:
  * @view: an #EphyWebView
  * @uri: uri that caused the failure
@@ -1715,7 +1736,10 @@ ephy_web_view_load_error_page (EphyWebView *view,
   const char *accesskey;
   GBytes *html_file;
 
+  g_return_if_fail (page != EPHY_WEB_VIEW_ERROR_PAGE_NONE);
+
   view->loading_error_page = TRUE;
+  view->error_page = page;
 
   if (page == EPHY_WEB_VIEW_ERROR_INVALID_TLS_CERTIFICATE)
     ephy_web_view_set_security_level (view, EPHY_SECURITY_LEVEL_UNACCEPTABLE_CERTIFICATE);
@@ -1791,6 +1815,7 @@ ephy_web_view_load_error_page (EphyWebView *view,
       load_anyway_js = g_strdup_printf 
("window.webkit.messageHandlers.tlsErrorPage.postMessage(%"G_GUINT64_FORMAT");",
                                         webkit_web_view_get_page_id (WEBKIT_WEB_VIEW (view)));
       break;
+    case EPHY_WEB_VIEW_ERROR_PAGE_NONE:
     default:
       g_assert_not_reached ();
   }
diff --git a/embed/ephy-web-view.h b/embed/ephy-web-view.h
index 91480d4..4bda784 100644
--- a/embed/ephy-web-view.h
+++ b/embed/ephy-web-view.h
@@ -46,6 +46,7 @@ typedef enum
 } EphyWebViewDocumentType;
 
 typedef enum {
+  EPHY_WEB_VIEW_ERROR_PAGE_NONE,
   EPHY_WEB_VIEW_ERROR_PAGE_NETWORK_ERROR,
   EPHY_WEB_VIEW_ERROR_PAGE_CRASH,
   EPHY_WEB_VIEW_ERROR_PROCESS_CRASH,
@@ -93,7 +94,7 @@ const char *               ephy_web_view_get_display_address      (EphyWebView
 void                       ephy_web_view_set_placeholder          (EphyWebView               *view,
                                                                    const char                *uri,
                                                                    const char                *title);
-
+EphyWebViewErrorPage       ephy_web_view_get_error_page           (EphyWebView               *view);
 void                       ephy_web_view_load_error_page          (EphyWebView               *view,
                                                                    const char                *uri,
                                                                    EphyWebViewErrorPage       page,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]