[Xfce4-commits] <midori:master> Don't silently discard extensions which don't load

Christian Dywan noreply at xfce.org
Mon Jan 7 20:02:03 CET 2013


Updating branch refs/heads/master
         to 776edfd44c26d888aa6a8a1ea16cb522df3fea3d (commit)
       from a01b6ee2e3335e89aacae209875372289837687c (commit)

commit 776edfd44c26d888aa6a8a1ea16cb522df3fea3d
Author: Christian Dywan <christian at twotoasts.de>
Date:   Mon Jan 7 19:52:35 2013 +0100

    Don't silently discard extensions which don't load
    
    Broken extensions result in an according description and a
    warning which aborts the test run.
    Counting the number of expected extensions needs a test case;
    a failed attempt is included together with a FIXME.
    
    Also force katze_net_load_uri to be compiled in even if unused in
    the core so that extensions (Feed Panel) can use it.
    
    Fixes: https://bugs.launchpad.net/midori/+bug/1095194

 katze/katze.vapi          |    2 +-
 midori/midori-extension.c |    2 --
 midori/midori-view.c      |    4 ++++
 tests/app.vala            |   21 ++++++++++++++++++++-
 4 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/katze/katze.vapi b/katze/katze.vapi
index 44da2cb..018893e 100644
--- a/katze/katze.vapi
+++ b/katze/katze.vapi
@@ -3,7 +3,7 @@
 
 [CCode (cprefix = "Katze", lower_case_cprefix = "katze_")]
 namespace Katze {
-    static void assert_str_equal (string input, string result, string expected);
+    static void assert_str_equal (string input, string result, string? expected);
 
     [CCode (cheader_filename = "katze/katze.h")]
     public class Array : Katze.Item {
diff --git a/midori/midori-extension.c b/midori/midori-extension.c
index 34e5826..cdda21b 100644
--- a/midori/midori-extension.c
+++ b/midori/midori-extension.c
@@ -627,8 +627,6 @@ midori_extension_activate_gracefully (MidoriApp*   app,
                                       gboolean     activate)
 {
     GObject* extension = midori_extension_load_from_file (extension_path, filename, activate, FALSE);
-    if (extension == NULL)
-        return;
 
     midori_extension_activate (extension, filename, activate, app);
     if (!extension && g_module_error () != NULL)
diff --git a/midori/midori-view.c b/midori/midori-view.c
index 8bd7459..361cc8f 100644
--- a/midori/midori-view.c
+++ b/midori/midori-view.c
@@ -3092,6 +3092,10 @@ midori_view_init (MidoriView* view)
     view->find_links = -1;
     view->alerts = 0;
 
+    /* Force the compiler to not optimize out katze_net_load_uri */
+    if (!g_strcmp0 (view->icon_uri, ""))
+        katze_net_load_uri (NULL, NULL, (KatzeNetStatusCb)NULL, (KatzeNetTransferCb)NULL, view);
+
     view->item = katze_item_new ();
 
     view->scrollh = view->scrollv = -2;
diff --git a/tests/app.vala b/tests/app.vala
index 553fbbe..f6421b6 100644
--- a/tests/app.vala
+++ b/tests/app.vala
@@ -9,6 +9,8 @@
  See the file COPYING for the full license text.
 */
 
+extern const string PACKAGE_NAME;
+
 bool check_sensible_window_size (Gtk.Window window, Midori.WebSettings settings) {
     Gdk.Rectangle monitor;
     window.screen.get_monitor_geometry (0, out monitor);
@@ -96,9 +98,26 @@ void app_extensions_load () {
     /* No extensions loaded */
     assert (app.extensions.get_length () == 0);
     Midori.Extension.load_from_folder (app, null, false);
-
     /* All extensions loaded, inactive */
     assert (app.extensions.get_length () > 0);
+
+    /* Number of expected extensions matches */
+    /* FIXME Counting .so/dll doesn't see multiple extensions in one binary
+    Dir dir;
+    try {
+        dir = Dir.open (Midori.Paths.get_lib_path (PACKAGE_NAME), 0);
+    }
+    catch (Error error) {
+        GLib.error (error.message);
+    }
+    uint count = 0;
+    string? name;
+    while ((name = dir.read_name ()) != null) {
+        if (name.has_suffix (GLib.Module.SUFFIX))
+            count++;
+    }
+    assert (app.extensions.get_length () == count); */
+
     foreach (var item in app.extensions.get_items ())
         assert (!(item as Midori.Extension).is_active ());
 


More information about the Xfce4-commits mailing list