[Xfce4-commits] <midori:master> Make 'special' a property and add test cases
Christian Dywan
noreply at xfce.org
Sat Oct 6 01:42:01 CEST 2012
Updating branch refs/heads/master
to 536036283ae440447f61614816c1b7b794c3213b (commit)
from 69bcbd3d6e291248d9d26185f3e405e6a0369f82 (commit)
commit 536036283ae440447f61614816c1b7b794c3213b
Author: Christian Dywan <christian at twotoasts.de>
Date: Sat Oct 6 01:36:39 2012 +0200
Make 'special' a property and add test cases
katze/midori-paths.vala | 5 ++++
midori/midori-browser.c | 4 +-
midori/midori-tab.vala | 4 ++-
midori/midori-view.c | 29 ++++++++----------------
midori/midori.vapi | 4 +-
tests/tab.vala | 56 +++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 76 insertions(+), 26 deletions(-)
diff --git a/katze/midori-paths.vala b/katze/midori-paths.vala
index ce4c07d..e13fc93 100644
--- a/katze/midori-paths.vala
+++ b/katze/midori-paths.vala
@@ -61,6 +61,11 @@ namespace Midori {
return readonly_dir != null;
}
+ public RuntimeMode get_runtime_mode () {
+ assert (mode != RuntimeMode.UNDEFINED);
+ return mode;
+ }
+
public static void init (RuntimeMode new_mode, string? config_base) {
assert (mode == RuntimeMode.UNDEFINED);
assert (new_mode != RuntimeMode.UNDEFINED);
diff --git a/midori/midori-browser.c b/midori/midori-browser.c
index 48efcb8..c4c0f7a 100644
--- a/midori/midori-browser.c
+++ b/midori/midori-browser.c
@@ -335,9 +335,9 @@ _midori_browser_update_interface (MidoriBrowser* browser,
_action_set_sensitive (browser, "ZoomNormal",
midori_view_get_zoom_level (view) != 1.0f);
_action_set_sensitive (browser, "Encoding",
- midori_view_can_view_source (view));
+ midori_tab_can_view_source (MIDORI_TAB (view)));
_action_set_sensitive (browser, "SourceView",
- midori_view_can_view_source (view));
+ midori_tab_can_view_source (MIDORI_TAB (view)));
action = _action_by_name (browser, "NextForward");
if (midori_view_can_go_forward (view))
diff --git a/midori/midori-tab.vala b/midori/midori-tab.vala
index e4a7cd1..7e09b5d 100644
--- a/midori/midori-tab.vala
+++ b/midori/midori-tab.vala
@@ -43,6 +43,8 @@ namespace Midori {
}
}
+ /* Special is an error, blank or delayed page */
+ public bool special { get; protected set; default = false; }
/* Since: 0.4.8 */
public string mime_type { get; protected set; default = "text/plain"; }
/* Since: 0.1.2 */
@@ -72,7 +74,7 @@ namespace Midori {
}
public bool can_view_source () {
- if (is_blank ())
+ if (is_blank () || special)
return false;
string content_type = ContentType.from_mime_type (mime_type);
#if HAVE_WIN32
diff --git a/midori/midori-view.c b/midori/midori-view.c
index 150e1ec..41a0f42 100644
--- a/midori/midori-view.c
+++ b/midori/midori-view.c
@@ -90,7 +90,6 @@ struct _MidoriView
{
MidoriTab parent_instance;
- gboolean special;
gchar* title;
GdkPixbuf* icon;
gchar* icon_uri;
@@ -723,7 +722,7 @@ _midori_web_view_load_icon (MidoriView* view)
g_hash_table_insert (midori_view_get_memory (),
g_strdup (view->icon_uri), g_object_ref (pixbuf));
}
- else if (!view->special)
+ else if (!midori_tab_get_special (MIDORI_TAB (view)))
{
katze_net_load_uri (NULL, view->icon_uri,
(KatzeNetStatusCb)katze_net_icon_status_cb,
@@ -754,9 +753,6 @@ midori_view_update_load_status (MidoriView* view,
if (midori_tab_get_load_status (MIDORI_TAB (view)) == load_status)
return;
- if (load_status == MIDORI_LOAD_FINISHED)
- view->special = FALSE;
-
midori_tab_set_load_status (MIDORI_TAB (view), load_status);
#ifdef HAVE_GRANITE
@@ -805,7 +801,7 @@ midori_view_web_view_navigation_decision_cb (WebKitWebView* web_view
return TRUE;
}
#ifdef HAVE_GCR
- else if (/* view->special && */ !strncmp (uri, "https", 5))
+ else if (/* midori_tab_get_special (MIDORI_TAB (view)) && */ !strncmp (uri, "https", 5))
{
/* We show an error page if the certificate is invalid.
If a "special", unverified page loads a form, it must be that page.
@@ -851,7 +847,7 @@ midori_view_web_view_navigation_decision_cb (WebKitWebView* web_view
}
}
#endif
- view->special = FALSE;
+ midori_tab_set_special (MIDORI_TAB (view), FALSE);
if (katze_item_get_meta_integer (view->item, "delay") == MIDORI_DELAY_PENDING_UNDELAY)
katze_item_set_meta_integer (view->item, "delay", MIDORI_DELAY_UNDELAYED);
@@ -947,7 +943,7 @@ webkit_web_view_load_committed_cb (WebKitWebView* web_view,
&& soup_message_get_flags (message) & SOUP_MESSAGE_CERTIFICATE_TRUSTED)
midori_tab_set_security (MIDORI_TAB (view), MIDORI_SECURITY_TRUSTED);
#ifdef HAVE_GCR
- else if (!view->special && message != NULL)
+ else if (!midori_tab_get_special (MIDORI_TAB (view)) && message != NULL)
{
GTlsCertificate* tls_cert;
GcrCertificate* gcr_cert;
@@ -1011,7 +1007,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->special && !midori_view_is_blank (view))
+ if (!midori_tab_get_special (MIDORI_TAB (view)))
return;
if (g_str_has_prefix (uri, "res://"))
@@ -1320,7 +1316,7 @@ midori_view_load_alternate_string (MidoriView* view,
WebKitWebView* web_view = WEBKIT_WEB_VIEW (view->web_view);
if (!web_frame)
web_frame = webkit_web_view_get_main_frame (web_view);
- view->special = TRUE;
+ midori_tab_set_special (MIDORI_TAB (view), TRUE);
webkit_web_frame_load_alternate_string (
web_frame, data, uri, uri);
}
@@ -1343,8 +1339,9 @@ midori_view_display_error (MidoriView* view,
const gchar* icon;
gchar* result;
- gboolean show_button_images = katze_object_get_boolean (
- gtk_widget_get_settings (view->web_view), "gtk-button-images");
+ GtkSettings* gtk_settings = gtk_widget_get_settings (view->web_view);
+ gboolean show_button_images = gtk_settings != NULL
+ && katze_object_get_boolean (gtk_settings, "gtk-button-images");
if (uri == NULL)
uri = midori_tab_get_uri (MIDORI_TAB (view));
title_escaped = g_markup_escape_text (title ? title : view->title, -1);
@@ -3160,7 +3157,7 @@ webkit_web_view_window_object_cleared_cb (GtkWidget* web_view,
if (!midori_uri_is_http (page_uri))
return;
- if (katze_object_get_boolean (view->settings, "enable-private-browsing"))
+ if (midori_paths_get_runtime_mode () == MIDORI_RUNTIME_MODE_PRIVATE)
{
/* Mask language, architecture, no plugin list */
gchar* result = sokoke_js_script_eval (js_context,
@@ -5108,12 +5105,6 @@ midori_view_can_zoom_out (MidoriView* view)
|| !g_str_has_prefix (midori_tab_get_mime_type (MIDORI_TAB (view)), "image/"));
}
-gboolean
-midori_view_can_view_source (MidoriView* view)
-{
- return midori_tab_can_view_source (MIDORI_TAB (view));
-}
-
/**
* midori_view_can_save:
* @view: a #MidoriView
diff --git a/midori/midori.vapi b/midori/midori.vapi
index bd78501..ec45b9d 100644
--- a/midori/midori.vapi
+++ b/midori/midori.vapi
@@ -8,6 +8,7 @@ namespace Midori {
[CCode (cheader_filename = "midori/midori.h")]
public class App : GLib.Object {
public App ();
+ public static bool setup ([CCode (array_length_pos = 0.9)] ref unowned string[] args, [CCode (array_length = false)] GLib.OptionEntry[]? entries) throws GLib.Error;
public Browser create_browser ();
public GLib.List<weak Browser> get_browsers ();
@@ -146,8 +147,7 @@ namespace Midori {
public Gtk.Menu get_tab_menu ();
public Pango.EllipsizeMode get_label_ellipsize ();
public Gtk.Label get_proxy_tab_label ();
- public Katze.Item get_proxy_item ();
- public bool can_view_source ();
+ public unowned Katze.Item get_proxy_item ();
public void search_text (string text, bool case_sensitive, bool forward);
public void mark_text_matches (string text, bool case_sensitive);
public void set_highlight_text_matches (bool highlight);
diff --git a/tests/tab.vala b/tests/tab.vala
index d6f4069..b217fed 100644
--- a/tests/tab.vala
+++ b/tests/tab.vala
@@ -54,8 +54,10 @@ const TestCaseEllipsize[] titles = {
static void tab_display_title () {
foreach (var title in titles) {
string result = Midori.Tab.get_display_title (title.title, title.uri);
- unowned string? expected = title.expected_title ?? "" + title.title;
- Katze.assert_str_equal (title.title, expected, result);
+ string expected = title.expected_title ?? "" + title.title;
+ if (result != expected)
+ error ("%s expected for %s but got %s",
+ expected, title.title, result);
}
}
@@ -69,11 +71,61 @@ static void tab_display_ellipsize () {
}
}
+void tab_special () {
+ var browser = new Gtk.Window (Gtk.WindowType.TOPLEVEL);
+ /*
+ var dial = new Midori.SpeedDial ("/", null);
+ var settings = new Midori.WebSettings ();
+ var browser = new Midori.Browser ();
+ browser.set ("speed-dial", dial, "settings", settings);
+ */
+ var tab = new Midori.View.with_title ();
+ browser.add (tab);
+ /* browser.add_tab (tab); */
+ var loop = MainContext.default ();
+
+ /* tab.set_uri ("about:blank"); */
+ do { loop.iteration (true); } while (tab.load_status != Midori.LoadStatus.FINISHED);
+ assert (tab.is_blank ());
+ assert (!tab.can_view_source ());
+ /* FIXME assert (tab.special); */
+
+ tab.set_uri ("error:nodocs file:///some/docs/path");
+ do { loop.iteration (true); } while (tab.load_status != Midori.LoadStatus.FINISHED);
+ assert (!tab.is_blank ());
+ assert (tab.can_view_source ());
+ /* FIXME assert (tab.special); */
+
+ tab.set_uri ("http://.invalid");
+ do { loop.iteration (true); } while (tab.load_status != Midori.LoadStatus.FINISHED);
+ assert (!tab.is_blank ());
+ assert (!tab.can_view_source ());
+ assert (tab.special);
+
+ var item = tab.get_proxy_item ();
+ item.set_meta_integer ("delay", Midori.Delay.UNDELAYED);
+ tab.set_uri ("http://example.com");
+ do { loop.iteration (true); } while (tab.load_status != Midori.LoadStatus.FINISHED);
+ /* FIXME assert (!tab.can_view_source ()); */
+ /* FIXME assert (tab.special); */
+
+ /* FIXME use an HTTP URI that's available even offline */
+ tab.set_uri ("http://example.com");
+ do { loop.iteration (true); } while (tab.load_status != Midori.LoadStatus.FINISHED);
+ assert (!tab.is_blank ());
+ assert (tab.can_view_source ());
+ assert (!tab.special);
+}
+
void main (string[] args) {
Test.init (ref args);
+ Midori.App.setup (ref args, null);
+ Midori.Paths.init (Midori.RuntimeMode.NORMAL, null);
+ WebKit.get_default_session ().set_data<bool> ("midori-session-initialized", true);
Test.add_func ("/tab/load-title", tab_load_title);
Test.add_func ("/tab/display-title", tab_display_title);
Test.add_func ("/tab/ellipsize", tab_display_ellipsize);
+ Test.add_func ("/tab/special", tab_special);
Test.run ();
}
More information about the Xfce4-commits
mailing list