[Xfce4-commits] <midori:master> Prepare for testing extensions in normal app session

Christian Dywan noreply at xfce.org
Sat Dec 8 03:32:05 CET 2012


Updating branch refs/heads/master
         to c68a42bb658199a48710b5f276a409bfd5e756e5 (commit)
       from 9028f5c1a399fc4adf9ace0ee0f8209e343f4352 (commit)

commit c68a42bb658199a48710b5f276a409bfd5e756e5
Author: Christian Dywan <christian at twotoasts.de>
Date:   Sat Dec 8 03:30:01 2012 +0100

    Prepare for testing extensions in normal app session

 midori/midori-extension.c   |   32 ++++++++++++++++++++++++++++++++
 midori/midori-extension.h   |    5 +++++
 midori/midori-frontend.c    |    2 +-
 midori/midori-preferences.c |   16 +---------------
 midori/midori-session.c     |   14 +-------------
 midori/midori.vapi          |    2 ++
 tests/app.vala              |   18 ++++++++++++++++++
 7 files changed, 60 insertions(+), 29 deletions(-)

diff --git a/midori/midori-extension.c b/midori/midori-extension.c
index 6f1d156..0e530b6 100644
--- a/midori/midori-extension.c
+++ b/midori/midori-extension.c
@@ -537,6 +537,38 @@ midori_extension_get_property (GObject*    object,
     }
 }
 
+void
+midori_extension_load_from_folder (MidoriApp* app,
+                                   gchar**    keys,
+                                   gboolean   activate)
+{
+    if (!g_module_supported ())
+        return;
+
+    gchar* extension_path = midori_paths_get_lib_path (PACKAGE_NAME);
+    if (!extension_path)
+        return;
+
+    if (keys)
+    {
+        gint i = 0;
+        const gchar* filename;
+        while ((filename = keys[i++]))
+            midori_extension_activate_gracefully (app, extension_path, filename, activate);
+    }
+    else
+    {
+        GDir* extension_dir = g_dir_open (extension_path, 0, NULL);
+        g_return_if_fail (extension_dir != NULL);
+        const gchar* filename;
+        while ((filename = g_dir_read_name (extension_dir)))
+            midori_extension_activate_gracefully (app, extension_path, filename, activate);
+        g_dir_close (extension_dir);
+    }
+
+    g_free (extension_path);
+}
+
 GObject*
 midori_extension_load_from_file (const gchar* extension_path,
                                  const gchar* filename,
diff --git a/midori/midori-extension.h b/midori/midori-extension.h
index 02d0a4f..5a98202 100644
--- a/midori/midori-extension.h
+++ b/midori/midori-extension.h
@@ -146,6 +146,11 @@ midori_extension_set_string_list     (MidoriExtension* extension,
                                       gchar**          value,
                                       gsize            length);
 
+void
+midori_extension_load_from_folder    (MidoriApp*       app,
+                                      gchar**          keys,
+                                      gboolean         activate);
+
 G_END_DECLS
 
 #endif /* __MIDORI_EXTENSION_H__ */
diff --git a/midori/midori-frontend.c b/midori/midori-frontend.c
index 142619d..0ad7ea3 100644
--- a/midori/midori-frontend.c
+++ b/midori/midori-frontend.c
@@ -83,7 +83,7 @@ midori_web_app_new (const gchar* config,
         g_free (tmp_uri);
     }
     else if (open_uris == NULL)
-        midori_browser_add_uri (browser, "about:private");
+        midori_browser_add_uri (browser, "about:blank");
 
     g_signal_connect (browser, "quit", G_CALLBACK (gtk_main_quit), NULL);
     g_signal_connect (browser, "destroy", G_CALLBACK (gtk_main_quit), NULL);
diff --git a/midori/midori-preferences.c b/midori/midori-preferences.c
index 3975c86..9c1db8d 100644
--- a/midori/midori-preferences.c
+++ b/midori/midori-preferences.c
@@ -583,23 +583,9 @@ midori_preferences_add_extension_category (KatzePreferences*  preferences,
     GList* children;
     GtkWidget* page;
 
-    if (!g_module_supported ())
-        return;
-
     array = katze_object_get_object (app, "extensions");
-    if ((extension_path = midori_paths_get_lib_path (PACKAGE_NAME)))
-    {
-        GDir* extension_dir = NULL;
-        if ((extension_dir = g_dir_open (extension_path, 0, NULL)))
-        {
-            const gchar* filename;
-            while ((filename = g_dir_read_name (extension_dir)))
-                midori_extension_activate_gracefully (app, extension_path, filename, FALSE);
-            g_dir_close (extension_dir);
-        }
-        g_free (extension_path);
-    }
 
+    midori_extension_load_from_folder (app, NULL, FALSE);
     /* Reset frozen list: allow active extensions to be saved */
     g_object_set_data (G_OBJECT (app), "extensions", NULL);
 
diff --git a/midori/midori-session.c b/midori/midori-session.c
index 17b5166..4042106 100644
--- a/midori/midori-session.c
+++ b/midori/midori-session.c
@@ -327,19 +327,7 @@ midori_load_extensions (gpointer data)
     extensions = katze_array_new (MIDORI_TYPE_EXTENSION);
     g_signal_connect (extensions, "update", G_CALLBACK (extensions_update_cb), app);
     g_object_set (app, "extensions", extensions, NULL);
-
-    if (g_module_supported ())
-    {
-        gchar* extension_path;
-        if (keys && (extension_path = midori_paths_get_lib_path (PACKAGE_NAME)))
-        {
-            gint i = 0;
-            const gchar* filename;
-            while ((filename = keys[i++]))
-                midori_extension_activate_gracefully (app, extension_path, filename, TRUE);
-            g_free (extension_path);
-        }
-    }
+    midori_extension_load_from_folder (app, keys, TRUE);
 
     #ifdef G_ENABLE_DEBUG
     if (startup_timer)
diff --git a/midori/midori.vapi b/midori/midori.vapi
index b3c70f6..275f0de 100644
--- a/midori/midori.vapi
+++ b/midori/midori.vapi
@@ -145,6 +145,8 @@ namespace Midori {
         public signal bool is_prepared ();
         public signal void deactivate ();
         public signal void open_preferences ();
+
+        public static void load_from_folder (Midori.App app, [CCode (array_length = false)] string[]? keys, bool activate);
     }
 
     [CCode (cheader_filename = "midori/midori.h")]
diff --git a/tests/app.vala b/tests/app.vala
index b72c982..bad74b8 100644
--- a/tests/app.vala
+++ b/tests/app.vala
@@ -52,6 +52,23 @@ void app_web () {
     do { loop.iteration (true); } while (loop.pending ());
 }
 
+void app_extensions () {
+    /*
+    Midori.Test.idle_timeouts ();
+    Midori.Test.log_set_fatal_handler_for_icons ();
+    Midori.Paths.Test.reset_runtime_mode ();
+    var app = Midori.normal_app_new (null, false, false, null, null, null, -1, null);
+    var loop = MainContext.default ();
+    do { loop.iteration (true); } while (loop.pending ());
+    Midori.Extension.load_from_folder (app, null, true);
+    for (var i = 0 ; i < 7; i++) {
+        var tab = app.browser.get_nth_tab (app.browser.add_uri ("about:blank"));
+        app.browser.close_tab (tab);
+        do { loop.iteration (true); } while (loop.pending ());
+    }
+    */
+}
+
 void main (string[] args) {
     Test.init (ref args);
     Midori.App.setup (ref args, null);
@@ -59,6 +76,7 @@ void main (string[] args) {
     Test.add_func ("/app/custom-config", app_custom_config);
     Test.add_func ("/app/private", app_private);
     Test.add_func ("/app/web", app_web);
+    Test.add_func ("/app/extensions", app_extensions);
     Test.run ();
 }
 


More information about the Xfce4-commits mailing list