]> spindle.queued.net Git - midori/commitdiff
Use a boolean 'special' to identify special pages
authorChristian Dywan <christian@twotoasts.de>
Sat, 13 Mar 2010 15:46:45 +0000 (16:46 +0100)
committerChristian Dywan <christian@twotoasts.de>
Sat, 13 Mar 2010 15:46:45 +0000 (16:46 +0100)
We used to load special pages, such as error pages as 'blank'
pages internally and try to identify them indirectly. This
breaks navigating back to and forward to such pages and makes
it difficult to allow stock icons for them.

Now a boolean 'special' is used which is reset on any
navigation attempt and any finished load. It is set only
if a special page is loaded.

This should make icons in error pages work reliably.

midori/midori-view.c

index 28f770f73a8df0bd9ea8293a70d6d6dff14e6afe..80ffe81ef01d24b36b41f424e58e0e3eb7b4ec70 100644 (file)
@@ -64,6 +64,7 @@ struct _MidoriView
     KatzeScrolled parent_instance;
 
     gchar* uri;
+    gboolean special;
     gchar* title;
     gchar* mime_type;
     GdkPixbuf* icon;
@@ -904,6 +905,9 @@ midori_view_update_load_status (MidoriView*      view,
     if (view->load_status == load_status)
         return;
 
+    if (load_status == MIDORI_LOAD_FINISHED)
+        view->special = FALSE;
+
     view->load_status = load_status;
     g_object_notify (G_OBJECT (view), "load-status");
 
@@ -931,6 +935,7 @@ midori_view_web_view_navigation_decision_cb (WebKitWebView*             web_view
         }
     }
     /* TODO: Handle more external protocols */
+    view->special = FALSE;
     return FALSE;
 }
 
@@ -1041,9 +1046,7 @@ midori_view_web_view_resource_request_cb (WebKitWebView*         web_view,
     const gchar* uri = webkit_network_request_get_uri (request);
 
     /* Only apply custom URIs to special pages for security purposes */
-    if (view->uri && *view->uri && strncmp (view->uri, "about:", 6)
-        && !webkit_web_data_source_get_unreachable_uri (
-            webkit_web_frame_get_data_source (web_frame)))
+    if (!view->special)
         return;
 
     if (g_str_has_prefix (uri, "res://"))
@@ -1143,9 +1146,10 @@ webkit_web_view_load_error_cb (WebKitWebView*  web_view,
         g_free (message);
         g_free (title);
 
+        view->special = TRUE;
         #if WEBKIT_CHECK_VERSION (1, 1, 14)
         webkit_web_frame_load_alternate_string (web_frame,
-            result, "about:blank", uri);
+            result, uri, uri);
         #else
         webkit_web_frame_load_alternate_string (web_frame,
             result, res_root, uri);
@@ -3372,6 +3376,7 @@ midori_view_set_uri (MidoriView*  view,
                 "{are_you_sure}", _("Are you sure you want to delete this shortcut?"), NULL);
 
 
+            view->special = TRUE;
             #if WEBKIT_CHECK_VERSION (1, 1, 14)
             webkit_web_frame_load_alternate_string (
                 webkit_web_view_get_main_frame (WEBKIT_WEB_VIEW (view->web_view)),